mirror of
https://github.com/torvalds/linux.git
synced 2024-10-30 08:42:47 +00:00
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>
This commit is contained in:
parent
f55ea3d932
commit
5688714977
@ -1103,7 +1103,7 @@ static inline void cpsw_add_dual_emac_def_ale_entries(
|
||||
cpsw_ale_add_mcast(priv->ale, priv->ndev->broadcast,
|
||||
port_mask, ALE_VLAN, slave->port_vlan, 0);
|
||||
cpsw_ale_add_ucast(priv->ale, priv->mac_addr,
|
||||
priv->host_port, ALE_VLAN, slave->port_vlan);
|
||||
priv->host_port, ALE_VLAN | ALE_SECURE, slave->port_vlan);
|
||||
}
|
||||
|
||||
static void soft_reset_slave(struct cpsw_slave *slave)
|
||||
|
Loading…
Reference in New Issue
Block a user