-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
generic: 6.1: add patch enabling assisted learning for qca8k
Add patch enabling assisted learning for qca8k to fix roaming issue between BSS and BSS on the same L2 broadcast domain. Signed-off-by: Christian Marangi <[email protected]>
- Loading branch information
Showing
1 changed file
with
57 additions
and
0 deletions.
There are no files selected for viewing
57 changes: 57 additions & 0 deletions
57
...et/linux/generic/pending-6.1/712-net-dsa-qca8k-enable-assisted-learning-on-CPU-port.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
From 0f6599167c126ce32c85d4f8a1f3d1775a268572 Mon Sep 17 00:00:00 2001 | ||
From: Christian Marangi <[email protected]> | ||
Date: Fri, 6 Oct 2023 12:44:00 +0200 | ||
Subject: [PATCH] net: dsa: qca8k: enable assisted learning on CPU port | ||
|
||
Enable assisted learning on CPU port. | ||
|
||
It has been verified that there is a problem in packet roaming | ||
from one BSS to another in the same security settings from one | ||
physical R7800 to another physical R7800 where they are in the | ||
same L2 broadcast domain backhauled/linked together via one | ||
of the ethernet ports. | ||
DHCP will fail to complete and traffic cannot flow for around 300 | ||
seconds. | ||
|
||
Signed-off-by: Christian Marangi <[email protected]> | ||
--- | ||
drivers/net/dsa/qca/qca8k-8xxx.c | 14 +++++++++----- | ||
1 file changed, 9 insertions(+), 5 deletions(-) | ||
|
||
--- a/drivers/net/dsa/qca/qca8k-8xxx.c | ||
+++ b/drivers/net/dsa/qca/qca8k-8xxx.c | ||
@@ -1991,6 +1991,12 @@ qca8k_setup(struct dsa_switch *ds) | ||
dev_err(priv->dev, "failed enabling QCA header mode on port %d", dp->index); | ||
return ret; | ||
} | ||
+ | ||
+ /* Disable learning by default on all ports */ | ||
+ ret = regmap_clear_bits(priv->regmap, QCA8K_PORT_LOOKUP_CTRL(dp->index), | ||
+ QCA8K_PORT_LOOKUP_LEARN); | ||
+ if (ret) | ||
+ return ret; | ||
} | ||
|
||
/* Forward all unknown frames to CPU port for Linux processing */ | ||
@@ -2020,11 +2026,6 @@ qca8k_setup(struct dsa_switch *ds) | ||
if (ret) | ||
return ret; | ||
|
||
- ret = regmap_clear_bits(priv->regmap, QCA8K_PORT_LOOKUP_CTRL(port), | ||
- QCA8K_PORT_LOOKUP_LEARN); | ||
- if (ret) | ||
- return ret; | ||
- | ||
/* For port based vlans to work we need to set the | ||
* default egress vid | ||
*/ | ||
@@ -2076,6 +2077,9 @@ qca8k_setup(struct dsa_switch *ds) | ||
/* Set max number of LAGs supported */ | ||
ds->num_lag_ids = QCA8K_NUM_LAGS; | ||
|
||
+ /* HW learn on CPU port is limited and require manual setting */ | ||
+ ds->assisted_learning_on_cpu_port = true; | ||
+ | ||
return 0; | ||
} | ||
|