1 |
From 4a47440955f78b8d1254c8fcae79f49df44ae393 Mon Sep 17 00:00:00 2001 |
2 |
From: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org> |
3 |
Date: Mon, 22 Oct 2018 21:51:36 +0300 |
4 |
Subject: [PATCH 002/145] net: ethernet: ti: cpsw: unsync mcast entries while |
5 |
switch promisc mode |
6 |
|
7 |
[ Upstream commit 9737cc99dd14b5b8b9d267618a6061feade8ea68 ] |
8 |
|
9 |
After flushing all mcast entries from the table, the ones contained in |
10 |
mc list of ndev are not restored when promisc mode is toggled off, |
11 |
because they are considered as synched with ALE, thus, in order to |
12 |
restore them after promisc mode - reset syncing info. This fix |
13 |
touches only switch mode devices, including single port boards |
14 |
like Beagle Bone. |
15 |
|
16 |
Fixes: commit 5da1948969bc |
17 |
("net: ethernet: ti: cpsw: fix lost of mcast packets while rx_mode update") |
18 |
|
19 |
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org> |
20 |
Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com> |
21 |
Signed-off-by: David S. Miller <davem@davemloft.net> |
22 |
Signed-off-by: Sasha Levin <sashal@kernel.org> |
23 |
--- |
24 |
drivers/net/ethernet/ti/cpsw.c | 1 + |
25 |
1 file changed, 1 insertion(+) |
26 |
|
27 |
diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c |
28 |
index 832bce07c385..5dd838a67417 100644 |
29 |
--- a/drivers/net/ethernet/ti/cpsw.c |
30 |
+++ b/drivers/net/ethernet/ti/cpsw.c |
31 |
@@ -642,6 +642,7 @@ static void cpsw_set_promiscious(struct net_device *ndev, bool enable) |
32 |
|
33 |
/* Clear all mcast from ALE */ |
34 |
cpsw_ale_flush_multicast(ale, ALE_ALL_PORTS, -1); |
35 |
+ __dev_mc_unsync(ndev, NULL); |
36 |
|
37 |
/* Flood All Unicast Packets to Host port */ |
38 |
cpsw_ale_control_set(ale, 0, ALE_P0_UNI_FLOOD, 1); |
39 |
-- |
40 |
2.19.1 |
41 |
|