net: ethernet: ti: ale: do not auto delete mcast super entries
authorGrygorii Strashko <grygorii.strashko@ti.com>
Fri, 26 Apr 2019 17:12:34 +0000 (20:12 +0300)
committerDavid S. Miller <davem@davemloft.net>
Sat, 27 Apr 2019 21:11:49 +0000 (17:11 -0400)
Do not delete multicast supervisory packet's (SUPER) entries while flushing
multicast addresses from ALE table cpsw_ale_flush_multicast(). Those
entries have to be added/removed only explicitly.

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/ti/cpsw_ale.c

index f77b5884c8db75ffd1a1f977dcd2163751cec05d..84025dcc78d59aea0dfad2708b49a319ad478d1e 100644 (file)
@@ -280,6 +280,9 @@ int cpsw_ale_flush_multicast(struct cpsw_ale *ale, int port_mask, int vid)
                if (cpsw_ale_get_mcast(ale_entry)) {
                        u8 addr[6];
 
+                       if (cpsw_ale_get_super(ale_entry))
+                               continue;
+
                        cpsw_ale_get_addr(ale_entry, addr);
                        if (!is_broadcast_ether_addr(addr))
                                cpsw_ale_flush_mcast(ale, ale_entry, port_mask);