net: ocelot: Add PGID_BLACKHOLE
authorHoratiu Vultur <horatiu.vultur@microchip.com>
Tue, 16 Mar 2021 20:10:17 +0000 (21:10 +0100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 16 Mar 2021 22:49:52 +0000 (15:49 -0700)
Add a new PGID that is used not to forward frames anywhere. It is used
by MRP to make sure that MRP Test frames will not reach CPU port.

Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mscc/ocelot.c
include/soc/mscc/ocelot.h

index 46e5c91..f74d7cf 100644 (file)
@@ -2051,6 +2051,9 @@ int ocelot_init(struct ocelot *ocelot)
 
                ocelot_write_rix(ocelot, val, ANA_PGID_PGID, i);
        }
+
+       ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_BLACKHOLE);
+
        /* Allow broadcast and unknown L2 multicast to the CPU. */
        ocelot_rmw_rix(ocelot, ANA_PGID_PGID_PGID(BIT(ocelot->num_phys_ports)),
                       ANA_PGID_PGID_PGID(BIT(ocelot->num_phys_ports)),
index 425ff29..4d10ccc 100644 (file)
@@ -51,6 +51,7 @@
  */
 
 /* Reserve some destination PGIDs at the end of the range:
+ * PGID_BLACKHOLE: used for not forwarding the frames
  * PGID_CPU: used for whitelisting certain MAC addresses, such as the addresses
  *           of the switch port net devices, towards the CPU port module.
  * PGID_UC: the flooding destinations for unknown unicast traffic.
@@ -59,6 +60,7 @@
  * PGID_MCIPV6: the flooding destinations for IPv6 multicast traffic.
  * PGID_BC: the flooding destinations for broadcast traffic.
  */
+#define PGID_BLACKHOLE                 57
 #define PGID_CPU                       58
 #define PGID_UC                                59
 #define PGID_MC                                60
@@ -73,7 +75,7 @@
 
 #define for_each_nonreserved_multicast_dest_pgid(ocelot, pgid) \
        for ((pgid) = (ocelot)->num_phys_ports + 1;             \
-            (pgid) < PGID_CPU;                                 \
+            (pgid) < PGID_BLACKHOLE;                           \
             (pgid)++)
 
 #define for_each_aggr_pgid(ocelot, pgid)                       \