[net-next] net: ethernet: ti: cpsw: unsync mcast entries while switch promisc mode
diff mbox series

Message ID 20181019202541.10278-1-ivan.khoronzhuk@linaro.org
State New
Headers show
Series
  • [net-next] net: ethernet: ti: cpsw: unsync mcast entries while switch promisc mode
Related show

Commit Message

Ivan Khoronzhuk Oct. 19, 2018, 8:25 p.m. UTC
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.

Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org>
---

Based on net-nex/master
and is logical continuation of the
https://lore.kernel.org/patchwork/patch/1001633/

 drivers/net/ethernet/ti/cpsw.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Grygorii Strashko Oct. 22, 2018, 6:26 p.m. UTC | #1
On 10/19/18 3:25 PM, Ivan Khoronzhuk wrote:
> 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.
> 
> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org>
> ---


So, this is follow up fix for
176b23 net: ethernet: ti: cpsw: fix lost of mcast packets while rx_mode update
because I can't reproduce it otherwise.

Could you update description and re-send pls.?

> 
> Based on net-nex/master
> and is logical continuation of the
> https://lore.kernel.org/patchwork/patch/1001633/
> 
>   drivers/net/ethernet/ti/cpsw.c | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c
> index 226be2a56c1f..f7753b240ced 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);
>
Ivan Khoronzhuk Oct. 22, 2018, 7:02 p.m. UTC | #2
On Mon, Oct 22, 2018 at 01:26:35PM -0500, Grygorii Strashko wrote:
>
>
>On 10/19/18 3:25 PM, Ivan Khoronzhuk wrote:
>>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.
>>
>>Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org>
>>---
>
>
>So, this is follow up fix for
>176b23 net: ethernet: ti: cpsw: fix lost of mcast packets while rx_mode update
>because I can't reproduce it otherwise.
>
>Could you update description and re-send pls.?

Done.

Patch
diff mbox series

diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c
index 226be2a56c1f..f7753b240ced 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);