• Paul Durrant's avatar
    xen-netback: stop vif thread spinning if frontend is unresponsive · 11b57f90
    Paul Durrant authored
    The recent patch to improve guest receive side flow control (ca2f09f2) had a
    slight flaw in the wait condition for the vif thread in that any remaining
    skbs in the guest receive side netback internal queue would prevent the
    thread from sleeping. An unresponsive frontend can lead to a permanently
    non-empty internal queue and thus the thread will spin. In this case the
    thread should really sleep until the frontend becomes responsive again.
    
    This patch adds an extra flag to the vif which is set if the shared ring
    is full and cleared when skbs are drained into the shared ring. Thus,
    if the thread runs, finds the shared ring full and can make no progress the
    flag remains set. If the flag remains set then the thread will sleep,
    regardless of a non-empty queue, until the next event from the frontend.
    Signed-off-by: default avatarPaul Durrant <paul.durrant@citrix.com>
    Cc: Wei Liu <wei.liu2@citrix.com>
    Cc: Ian Campbell <ian.campbell@citrix.com>
    Cc: David Vrabel <david.vrabel@citrix.com>
    Acked-by: default avatarWei Liu <wei.liu2@citrix.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    11b57f90
netback.c 45.5 KB