• Alexander Kochetkov's avatar
    net: arc_emac: restart stalled EMAC · 78aa0975
    Alexander Kochetkov authored
    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_radiationSigned-off-by: default avatarAlexander Kochetkov <al.kochet@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    78aa0975
emac_main.c 26.2 KB