net: dsa: Define max num of bridges in tag8021q implementation
authorPawel Dembicki <paweldembicki@gmail.com>
Sat, 13 Jul 2024 21:16:15 +0000 (23:16 +0200)
committerJakub Kicinski <kuba@kernel.org>
Mon, 15 Jul 2024 13:55:16 +0000 (06:55 -0700)
Max number of bridges in tag8021q implementation is strictly limited
by VBID size: 3 bits. But zero is reserved and only 7 values can be used.

This patch adds define which describe maximum possible value.

Suggested-by: Vladimir Oltean <olteanv@gmail.com>
Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Link: https://patch.msgid.link/20240713211620.1125910-10-paweldembicki@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/dsa/sja1105/sja1105_main.c
include/linux/dsa/8021q.h

index ee0fb1c343f166358f926961589ccde50fd6ebb5..0c55a29d7dd39e73d29e3d6b26e8fe8d137d9dbb 100644 (file)
@@ -3167,8 +3167,7 @@ static int sja1105_setup(struct dsa_switch *ds)
        ds->vlan_filtering_is_global = true;
        ds->untag_bridge_pvid = true;
        ds->fdb_isolation = true;
-       /* tag_8021q has 3 bits for the VBID, and the value 0 is reserved */
-       ds->max_num_bridges = 7;
+       ds->max_num_bridges = DSA_TAG_8021Q_MAX_NUM_BRIDGES;
 
        /* Advertise the 8 egress queues */
        ds->num_tx_queues = SJA1105_NUM_TC;
index f3664ee121704f7436bfa5671dd3a2320be82a6d..1dda2a13b8322829d0405facca047b15b504dbfc 100644 (file)
@@ -8,6 +8,11 @@
 #include <net/dsa.h>
 #include <linux/types.h>
 
+/* VBID is limited to three bits only and zero is reserved.
+ * Only 7 bridges can be enumerated.
+ */
+#define DSA_TAG_8021Q_MAX_NUM_BRIDGES  7
+
 int dsa_tag_8021q_register(struct dsa_switch *ds, __be16 proto);
 
 void dsa_tag_8021q_unregister(struct dsa_switch *ds);