drivers: net: cpsw: Set SECURE for dual_emac ucast
authorGeorge McCollister <george.mccollister@gmail.com>
Thu, 26 Feb 2015 21:19:30 +0000 (15:19 -0600)
committerDavid S. Miller <davem@davemloft.net>
Sat, 28 Feb 2015 19:49:31 +0000 (14:49 -0500)
commit5688714977ebefa92e6dad8bd94bffaeaadc303d
tree9e1a62d8fb029227f11d844110bf78e7e3228a8c
parentf55ea3d932df06d82f37de5826063caf938c06f2
drivers: net: cpsw: Set SECURE for dual_emac ucast

Prior to this patch, sending a packet with the source MAC address of one
of the CPSW interfaces to one of the CPSW slave ports while it's configured in
dual_emac mode would update the port_num field of the VLAN/Unicast Address
Table Entry. This would cause it to discard all incoming traffic addressed to
that MAC address, essentially rendering the port useless until the ALE table is
cleared (by starting and stopping the interface or rebooting.)

For example, if eth0 has a MAC address of 90:59:af:8f:43:e9 it will have
an ALE table entry:

00 00 00 00 59 90 02 30 e9 43 8f af
(VLAN Addr vlan_id=2 unicast type=0 port_num=0 addr=90:59:af:8f:43:e9)

If you configure another device with the same MAC address and connect it
to the first CPSW slave port and send some traffic the ALE table entry
becomes:

04 00 00 00 59 90 02 30 e9 43 8f af
(VLAN Addr vlan_id=2 unicast type=0 port_num=1 addr=90:59:af:8f:43:e9)

>From this point forward all incoming traffic addressed to
90:59:af:8f:43:e9 will be dropped.

Setting the SECURE bit for the VLAN/Unicast address table entry for each
interface's MAC address corrects the problem.

Signed-off-by: George McCollister <george.mccollister@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/ti/cpsw.c