• Vineeth Remanan Pillai's avatar
    xen-netfront: Fix Rx stall during network stress and OOM · 90c311b0
    Vineeth Remanan Pillai authored
    During an OOM scenario, request slots could not be created as skb
    allocation fails. So the netback cannot pass in packets and netfront
    wrongly assumes that there is no more work to be done and it disables
    polling. This causes Rx to stall.
    
    The issue is with the retry logic which schedules the timer if the
    created slots are less than NET_RX_SLOTS_MIN. The count of new request
    slots to be pushed are calculated as a difference between new req_prod
    and rsp_cons which could be more than the actual slots, if there are
    unconsumed responses.
    
    The fix is to calculate the count of newly created slots as the
    difference between new req_prod and old req_prod.
    Signed-off-by: default avatarVineeth Remanan Pillai <vineethp@amazon.com>
    Reviewed-by: default avatarJuergen Gross <jgross@suse.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    90c311b0
xen-netfront.c 53.9 KB