• John Fastabend's avatar
    virtio_net: xdp, add slowpath case for non contiguous buffers · 72979a6c
    John Fastabend authored
    virtio_net XDP support expects receive buffers to be contiguous.
    If this is not the case we enable a slowpath to allow connectivity
    to continue but at a significan performance overhead associated with
    linearizing data. To make it painfully aware to users that XDP is
    running in a degraded mode we throw an xdp buffer error.
    
    To linearize packets we allocate a page and copy the segments of
    the data, including the header, into it. After this the page can be
    handled by XDP code flow as normal.
    
    Then depending on the return code the page is either freed or sent
    to the XDP xmit path. There is no attempt to optimize this path.
    
    This case is being handled simple as a precaution in case some
    unknown backend were to generate packets in this form. To test this
    I had to hack qemu and force it to generate these packets. I do not
    expect this case to be generated by "real" backends.
    Signed-off-by: default avatarJohn Fastabend <john.r.fastabend@intel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    72979a6c
virtio_net.c 62.5 KB