• Robert Hancock's avatar
    net: axienet: fix RX ring refill allocation failure handling · 7a7d340b
    Robert Hancock authored
    If a memory allocation error occurred during an attempt to refill a slot
    in the RX ring after the packet was received, the hardware tail pointer
    would still have been updated to point to or past the slot which remained
    marked as previously completed. This would likely result in the DMA engine
    raising an error when it eventually tried to use that slot again.
    
    If a slot cannot be refilled, then just stop processing and do not move
    the tail pointer past it. On the next attempt, we should skip receiving
    the packet from the empty slot and just try to refill it again.
    
    This failure mode has not actually been observed, but was found as part
    of other driver updates.
    
    Fixes: 8a3b7a25 ("drivers/net/ethernet/xilinx: added Xilinx AXI Ethernet driver")
    Signed-off-by: default avatarRobert Hancock <robert.hancock@calian.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    7a7d340b
xilinx_axienet_main.c 64.2 KB