1 |
tmb |
1329221 |
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 |
|
|
|