summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Khoronzhuk <ivan.khoronzhuk@linaro.org>2018-10-22 21:51:36 +0300
committerDavid S. Miller <davem@davemloft.net>2018-10-22 20:20:14 -0700
commit9737cc99dd14b5b8b9d267618a6061feade8ea68 (patch)
tree6f69e80e6a0b0f4bc68550b0e9ff16e408c7ad14
parent1fad1fe40e1636f2acd87468b6ee3a3748b4a588 (diff)
downloadlinux-9737cc99dd14b5b8b9d267618a6061feade8ea68.tar.gz
linux-9737cc99dd14b5b8b9d267618a6061feade8ea68.tar.bz2
linux-9737cc99dd14b5b8b9d267618a6061feade8ea68.zip
net: ethernet: ti: cpsw: unsync mcast entries while switch promisc mode
After flushing all mcast entries from the table, the ones contained in mc list of ndev are not restored when promisc mode is toggled off, because they are considered as synched with ALE, thus, in order to restore them after promisc mode - reset syncing info. This fix touches only switch mode devices, including single port boards like Beagle Bone. Fixes: commit 5da1948969bc ("net: ethernet: ti: cpsw: fix lost of mcast packets while rx_mode update") Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org> Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/ti/cpsw.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c
index 6cf4d4cb152e..500f7ed8c58c 100644
--- a/drivers/net/ethernet/ti/cpsw.c
+++ b/drivers/net/ethernet/ti/cpsw.c
@@ -640,6 +640,7 @@ static void cpsw_set_promiscious(struct net_device *ndev, bool enable)
/* Clear all mcast from ALE */
cpsw_ale_flush_multicast(ale, ALE_ALL_PORTS, -1);
+ __dev_mc_unsync(ndev, NULL);
/* Flood All Unicast Packets to Host port */
cpsw_ale_control_set(ale, 0, ALE_P0_UNI_FLOOD, 1);