Searched hist:"1 a4c69406cc1c3c42bb7391c8eb544e93fe9b320" (Results 1 – 2 of 2) sorted by relevance
/openbmc/linux/drivers/net/dsa/sja1105/ |
H A D | sja1105_spi.c | diff 1a4c69406cc1c3c42bb7391c8eb544e93fe9b320 Thu May 02 15:23:37 CDT 2019 Vladimir Oltean <olteanv@gmail.com> net: dsa: sja1105: Prevent PHY jabbering during switch reset
Resetting the switch at runtime is currently done while changing the vlan_filtering setting (due to the required TPID change).
But reset is asynchronous with packet egress, and the switch core will not wait for egress to finish before carrying on with the reset operation.
As a result, a connected PHY such as the BCM5464 would see an unterminated Ethernet frame and start to jabber (repeat the last seen Ethernet symbols - jabber is by definition an oversized Ethernet frame with bad FCS). This behavior is strange in itself, but it also causes the MACs of some link partners (such as the FRDM-LS1012A) to completely lock up.
So as a remedy for this situation, when switch reset is required, simply inhibit Tx on all ports, and wait for the necessary time for the eventual one frame left in the egress queue (not even the Tx inhibit command is instantaneous) to be flushed.
Signed-off-by: Vladimir Oltean <olteanv@gmail.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
|
H A D | sja1105.h | diff 1a4c69406cc1c3c42bb7391c8eb544e93fe9b320 Thu May 02 15:23:37 CDT 2019 Vladimir Oltean <olteanv@gmail.com> net: dsa: sja1105: Prevent PHY jabbering during switch reset
Resetting the switch at runtime is currently done while changing the vlan_filtering setting (due to the required TPID change).
But reset is asynchronous with packet egress, and the switch core will not wait for egress to finish before carrying on with the reset operation.
As a result, a connected PHY such as the BCM5464 would see an unterminated Ethernet frame and start to jabber (repeat the last seen Ethernet symbols - jabber is by definition an oversized Ethernet frame with bad FCS). This behavior is strange in itself, but it also causes the MACs of some link partners (such as the FRDM-LS1012A) to completely lock up.
So as a remedy for this situation, when switch reset is required, simply inhibit Tx on all ports, and wait for the necessary time for the eventual one frame left in the egress queue (not even the Tx inhibit command is instantaneous) to be flushed.
Signed-off-by: Vladimir Oltean <olteanv@gmail.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
|