]> git.baikalelectronics.ru Git - kernel.git/commit
drivers: net: cpsw: Support ALLMULTI and fix IFF_PROMISC in switch mode
authorLennart Sorensen <lsorense@csclub.uwaterloo.ca>
Fri, 31 Oct 2014 17:38:52 +0000 (13:38 -0400)
committerDavid S. Miller <davem@davemloft.net>
Fri, 31 Oct 2014 20:17:56 +0000 (16:17 -0400)
commit6628b11432f9d89bde835dcd63be9a33e1eae98e
treee366c15b314faa65aef0beb63878af56157e7b2a
parentcdaaca5b9e305c661b11c0d35fcbbcf96e41caea
drivers: net: cpsw: Support ALLMULTI and fix IFF_PROMISC in switch mode

The cpsw driver did not support the IFF_ALLMULTI flag which makes dynamic
multicast routing not work.  Related to this, when enabling IFF_PROMISC
in switch mode, all registered multicast addresses are flushed, resulting
in only broadcast and unicast traffic being received.

A new cpsw_ale_set_allmulti function now scans through the ALE entry
table and adds/removes the host port from the unregistered multicast
port mask of each vlan entry depending on the state of IFF_ALLMULTI.
In promiscious mode, cpsw_ale_set_allmulti is used to force reception
of all multicast traffic in addition to the unicast and broadcast traffic.

With this change dynamic multicast and promiscious mode both work in
switch mode.

Signed-off-by: Len Sorensen <lsorense@csclub.uwaterloo.ca>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/ti/cpsw.c
drivers/net/ethernet/ti/cpsw_ale.c
drivers/net/ethernet/ti/cpsw_ale.h