Commit e79d2308 authored by Ivan Khoronzhuk's avatar Ivan Khoronzhuk Committed by Greg Kroah-Hartman

net: ethernet: ti: cpsw: unsync mcast entries while switch promisc mode

[ Upstream commit 9737cc99 ]

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 5da19489
("net: ethernet: ti: cpsw: fix lost of mcast packets while rx_mode update")
Signed-off-by: default avatarIvan Khoronzhuk <ivan.khoronzhuk@linaro.org>
Reviewed-by: default avatarGrygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 7c011435
...@@ -642,6 +642,7 @@ static void cpsw_set_promiscious(struct net_device *ndev, bool enable) ...@@ -642,6 +642,7 @@ static void cpsw_set_promiscious(struct net_device *ndev, bool enable)
/* Clear all mcast from ALE */ /* Clear all mcast from ALE */
cpsw_ale_flush_multicast(ale, ALE_ALL_PORTS, -1); cpsw_ale_flush_multicast(ale, ALE_ALL_PORTS, -1);
__dev_mc_unsync(ndev, NULL);
/* Flood All Unicast Packets to Host port */ /* Flood All Unicast Packets to Host port */
cpsw_ale_control_set(ale, 0, ALE_P0_UNI_FLOOD, 1); cpsw_ale_control_set(ale, 0, ALE_P0_UNI_FLOOD, 1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment