• Ben Hutchings's avatar
    sh_eth: Fix RX recovery on R-Car in case of RX ring underrun · 6ded2865
    Ben Hutchings authored
    In case of RX ring underrun (RDE), we attempt to reset the software
    descriptor pointers (dirty_rx and cur_rx) to match where the hardware
    will read the next descriptor from, as that might not be the first
    dirty descriptor.  This relies on reading RDFAR, but that register
    doesn't exist on all supported chips - specifically, not on the R-Car
    chips.  This will result in unpredictable behaviour on those chips
    after an RDE.
    
    Make this pointer reset conditional and assume that it isn't needed on
    the R-Car chips.  This fix also assumes that RDFAR is never exposed at
    offset 0 in the memory map - this is currently true, and a subsequent
    commit will fix the ambiguity between offset 0 and no-offset in the
    register offset maps.
    
    Fixes: 79fba9f5 ("net: sh_eth: fix the rxdesc pointer when rx ...")
    Signed-off-by: default avatarBen Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    6ded2865
sh_eth.c 73.7 KB