summaryrefslogtreecommitdiffstats
path: root/drivers/net/dsa/qca/qca8k-common.c
diff options
context:
space:
mode:
authorChristian Marangi <ansuelsmth@gmail.com>2023-07-24 05:25:31 +0200
committerDavid S. Miller <davem@davemloft.net>2023-07-26 09:50:10 +0200
commitdfd739f182b00b02bd7470ed94d112684cc04fa2 (patch)
tree8490a91d39fca318521e34491d3d703e1f457790 /drivers/net/dsa/qca/qca8k-common.c
parentnet: dsa: qca8k: fix broken search_and_del (diff)
downloadlinux-dfd739f182b00b02bd7470ed94d112684cc04fa2.tar.xz
linux-dfd739f182b00b02bd7470ed94d112684cc04fa2.zip
net: dsa: qca8k: fix mdb add/del case with 0 VID
The qca8k switch doesn't support using 0 as VID and require a default VID to be always set. MDB add/del function doesn't currently handle this and are currently setting the default VID. Fix this by correctly handling this corner case and internally use the default VID for VID 0 case. Fixes: ba8f870dfa63 ("net: dsa: qca8k: add support for mdb_add/del") Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> Cc: stable@vger.kernel.org Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to '')
-rw-r--r--drivers/net/dsa/qca/qca8k-common.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/dsa/qca/qca8k-common.c b/drivers/net/dsa/qca/qca8k-common.c
index b644c05337c5..13b8452ce5b2 100644
--- a/drivers/net/dsa/qca/qca8k-common.c
+++ b/drivers/net/dsa/qca/qca8k-common.c
@@ -816,6 +816,9 @@ int qca8k_port_mdb_add(struct dsa_switch *ds, int port,
const u8 *addr = mdb->addr;
u16 vid = mdb->vid;
+ if (!vid)
+ vid = QCA8K_PORT_VID_DEF;
+
return qca8k_fdb_search_and_insert(priv, BIT(port), addr, vid,
QCA8K_ATU_STATUS_STATIC);
}
@@ -828,6 +831,9 @@ int qca8k_port_mdb_del(struct dsa_switch *ds, int port,
const u8 *addr = mdb->addr;
u16 vid = mdb->vid;
+ if (!vid)
+ vid = QCA8K_PORT_VID_DEF;
+
return qca8k_fdb_search_and_del(priv, BIT(port), addr, vid);
}