net: dsa: hellcreek: Add STP forwarding rule
authorKurt Kanzenbach <kurt@linutronix.de>
Tue, 14 Dec 2021 13:45:06 +0000 (14:45 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jan 2022 10:03:37 +0000 (11:03 +0100)
[ Upstream commit b7ade35eb53a2455f737a623c24e4b24455b2271 ]

Treat STP as management traffic. STP traffic is designated for the CPU port
only. In addition, STP traffic has to pass blocked ports.

Fixes: e4b27ebc780f ("net: dsa: Add DSA driver for Hirschmann Hellcreek switches")
Signed-off-by: Kurt Kanzenbach <kurt@linutronix.de>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Acked-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/dsa/hirschmann/hellcreek.c

index 2afd6a4f02b88271dd0fde4614affe782afe5381..1469e41f2045ab4462d143c7cabdd66f1438b7bf 100644 (file)
@@ -1074,6 +1074,17 @@ static int hellcreek_setup_fdb(struct hellcreek *hellcreek)
                .reprio_tc    = 6,      /* TC: 6 as per IEEE 802.1AS */
                .reprio_en    = 1,
        };
+       static struct hellcreek_fdb_entry stp = {
+               /* MAC: 01-80-C2-00-00-00 */
+               .mac          = { 0x01, 0x80, 0xc2, 0x00, 0x00, 0x00 },
+               .portmask     = 0x03,   /* Management ports */
+               .age          = 0,
+               .is_obt       = 0,
+               .pass_blocked = 1,
+               .is_static    = 1,
+               .reprio_tc    = 6,
+               .reprio_en    = 1,
+       };
        int ret;
 
        mutex_lock(&hellcreek->reg_lock);
@@ -1081,6 +1092,9 @@ static int hellcreek_setup_fdb(struct hellcreek *hellcreek)
        if (ret)
                goto out;
        ret = __hellcreek_fdb_add(hellcreek, &p2p);
+       if (ret)
+               goto out;
+       ret = __hellcreek_fdb_add(hellcreek, &stp);
 out:
        mutex_unlock(&hellcreek->reg_lock);