linux/drivers/net/ethernet/arc
Alexander Kochetkov 78aa09754d net: arc_emac: restart stalled EMAC
Under certain conditions EMAC stop reception of incoming packets and
continuously increment R_MISS register instead of saving data into
provided buffer. The commit implement workaround for such situation.
Then the stall detected EMAC will be restarted.

On device the stall looks like the device lost it's dynamic IP address.
ifconfig shows that interface error counter rapidly increments.
At the same time on the DHCP server we can see continues DHCP-requests
from device.

In real network stalls happen really rarely. To make them frequent the
broadcast storm[1] should be simulated. For simulation it is necessary
to make following connections:
    1. connect radxarock to 1st port of switch
    2. connect some PC to 2nd port of switch
    3. connect two other free ports together using standard ethernet cable,
       in order to make a switching loop.

After that, is necessary to make a broadcast storm. For example, running on
PC 'ping' to some IP address triggers ARP-request storm. After some
time (~10sec), EMAC on rk3188 will stall.

Observed and tested on rk3188 radxarock.

[1] https://en.wikipedia.org/wiki/Broadcast_radiation

Signed-off-by: Alexander Kochetkov <al.kochet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-12-19 13:25:52 -05:00
..
emac_arc.c net: arc: Fix module autoload for OF platform driver 2015-09-21 16:08:20 -07:00
emac_main.c net: arc_emac: restart stalled EMAC 2017-12-19 13:25:52 -05:00
emac_mdio.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
emac_rockchip.c net: ethernet: arc: fix error handling in emac_rockchip_probe 2017-12-13 13:57:06 -05:00
emac.h net: arc_emac: restart stalled EMAC 2017-12-19 13:25:52 -05:00
Kconfig net: arc_emac: add dependencies on associated arches and compile test 2016-11-29 18:57:36 -05:00
Makefile ethernet: arc: Add support for Rockchip SoC layer device tree bindings 2014-09-09 17:29:59 -07:00