summaryrefslogtreecommitdiffstats
path: root/target/linux/generic/files/drivers/net/phy/mvsw61xx.h
diff options
context:
space:
mode:
authorImre Kaloz <kaloz@openwrt.org>2015-08-21 08:09:52 +0000
committerImre Kaloz <kaloz@openwrt.org>2015-08-21 08:09:52 +0000
commit9cca6c5ad90330115ad3e550abf515c029e931fa (patch)
tree28e97aeac49c16b1738b267fb88daefd6056e738 /target/linux/generic/files/drivers/net/phy/mvsw61xx.h
parentf57484c4afb169625ce67e595a0d9a379d03caaa (diff)
downloadmaster-31e0f0ae-9cca6c5ad90330115ad3e550abf515c029e931fa.tar.gz
master-31e0f0ae-9cca6c5ad90330115ad3e550abf515c029e931fa.tar.bz2
master-31e0f0ae-9cca6c5ad90330115ad3e550abf515c029e931fa.zip
Previously, all VLANs (port-based or 802.1q) were sharing a single database in the ATU. This created problems in the case of a system where two ports/devices share a MAC address (e.g. Linksys WRT1900AC eth0/eth1).
This also clears any bootloader-set FDB defaults. This had caused issues creating port-based VLANs when mappings overlapped previous VLANs. Packets destined to a port not in the default port group flooded all ports. Tested on a 88E6171 (Linksys EA4500) and 88E6172 ('1900AC) Signed-off-by: Claudio Leite <leitec@staticky.com> Signed-off-by: Imre Kaloz <kaloz@openwrt.org> SVN-Revision: 46699
Diffstat (limited to 'target/linux/generic/files/drivers/net/phy/mvsw61xx.h')
-rw-r--r--target/linux/generic/files/drivers/net/phy/mvsw61xx.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/target/linux/generic/files/drivers/net/phy/mvsw61xx.h b/target/linux/generic/files/drivers/net/phy/mvsw61xx.h
index 61e134ce91..dbc6c92a44 100644
--- a/target/linux/generic/files/drivers/net/phy/mvsw61xx.h
+++ b/target/linux/generic/files/drivers/net/phy/mvsw61xx.h
@@ -224,6 +224,11 @@ enum {
#define MV_PVID_MASK 0x0fff
+#define MV_FDB_HI_MASK 0x00ff
+#define MV_FDB_LO_MASK 0xf000
+#define MV_FDB_HI_SHIFT 4
+#define MV_FDB_LO_SHIFT 12
+
struct mvsw61xx_state {
struct switch_dev dev;
struct mii_bus *bus;
@@ -238,6 +243,7 @@ struct mvsw61xx_state {
int vlan_enabled;
struct port_state {
+ u16 fdb;
u16 pvid;
u16 mask;
u8 qmode;