net: dsa: hellcreek: Fix insertion of static FDB entries
authorKurt Kanzenbach <kurt@linutronix.de>
Tue, 14 Dec 2021 13:45:05 +0000 (14:45 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jan 2022 10:03:37 +0000 (11:03 +0100)
[ Upstream commit 4db4c3ea56978086ca367a355e440de17d534827 ]

The insertion of static FDB entries ignores the pass_blocked bit. That bit is
evaluated with regards to STP. Add the missing functionality.

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 354655f9ed0036a6ddb3cf47a54265070c720414..2afd6a4f02b88271dd0fde4614affe782afe5381 100644 (file)
@@ -710,8 +710,9 @@ static int __hellcreek_fdb_add(struct hellcreek *hellcreek,
        u16 meta = 0;
 
        dev_dbg(hellcreek->dev, "Add static FDB entry: MAC=%pM, MASK=0x%02x, "
-               "OBT=%d, REPRIO_EN=%d, PRIO=%d\n", entry->mac, entry->portmask,
-               entry->is_obt, entry->reprio_en, entry->reprio_tc);
+               "OBT=%d, PASS_BLOCKED=%d, REPRIO_EN=%d, PRIO=%d\n", entry->mac,
+               entry->portmask, entry->is_obt, entry->pass_blocked,
+               entry->reprio_en, entry->reprio_tc);
 
        /* Add mac address */
        hellcreek_write(hellcreek, entry->mac[1] | (entry->mac[0] << 8), HR_FDBWDH);
@@ -722,6 +723,8 @@ static int __hellcreek_fdb_add(struct hellcreek *hellcreek,
        meta |= entry->portmask << HR_FDBWRM0_PORTMASK_SHIFT;
        if (entry->is_obt)
                meta |= HR_FDBWRM0_OBT;
+       if (entry->pass_blocked)
+               meta |= HR_FDBWRM0_PASS_BLOCKED;
        if (entry->reprio_en) {
                meta |= HR_FDBWRM0_REPRIO_EN;
                meta |= entry->reprio_tc << HR_FDBWRM0_REPRIO_TC_SHIFT;