• Wei Liu's avatar
    xen-netback: improve ring effeciency for guest RX · 4f0581d2
    Wei Liu authored
    There was a bug that netback routines netbk/xenvif_skb_count_slots and
    netbk/xenvif_gop_frag_copy disagreed with each other, which caused
    netback to push wrong number of responses to netfront, which caused
    netfront to eventually crash. The bug was fixed in 6e43fc04
    ("xen-netback: count number required slots for an skb more carefully").
    
    Commit 6e43fc04 focused on backport-ability. The drawback with the
    existing packing scheme is that the ring is not used effeciently, as
    stated in 6e43fc04.
    
    skb->data like:
        |        1111|222222222222|3333        |
    
    is arranged as:
        |1111        |222222222222|3333        |
    
    If we can do this:
        |111122222222|22223333    |
    That would save one ring slot, which improves ring effeciency.
    
    This patch effectively reverts 6e43fc04. That patch made count_slots
    agree with gop_frag_copy, while this patch goes the other way around --
    make gop_frag_copy agree with count_slots. The end result is that they
    still agree with each other, and the ring is now arranged like:
        |111122222222|22223333    |
    
    The patch that improves packing was first posted by Xi Xong and Matt
    Wilson. I only rebase it on top of net-next and rewrite commit message,
    so I retain all their SoBs. For more infomation about the original bug
    please refer to email listed below and commit message of 6e43fc04.
    
    Original patch:
    http://lists.xen.org/archives/html/xen-devel/2013-07/msg00760.htmlSigned-off-by: default avatarXi Xiong <xixiong@amazon.com>
    Reviewed-by: default avatarMatt Wilson <msw@amazon.com>
    [ msw: minor code cleanups, rewrote commit message, adjusted code
      to count RX slots instead of meta structures ]
    Signed-off-by: default avatarMatt Wilson <msw@amazon.com>
    Cc: Annie Li <annie.li@oracle.com>
    Cc: Wei Liu <wei.liu2@citrix.com>
    Cc: Ian Campbell <Ian.Campbell@citrix.com>
    [ liuw: rebased on top of net-next tree, rewrote commit message, coding
      style cleanup. ]
    Signed-off-by: default avatarWei Liu <wei.liu2@citrix.com>
    Cc: David Vrabel <david.vrabel@citrix.com>
    Acked-by: default avatarIan Campbell <Ian.Campbell@citrix.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    4f0581d2
netback.c 41.6 KB