• Jason Wang's avatar
    tuntap: XDP transmission · fc72d1d5
    Jason Wang authored
    This patch implements XDP transmission for TAP. Since we can't create
    new queues for TAP during XDP set, exist ptr_ring was reused for
    queuing XDP buffers. To differ xdp_buff from sk_buff, TUN_XDP_FLAG
    (0x1UL) was encoded into lowest bit of xpd_buff pointer during
    ptr_ring_produce, and was decoded during consuming. XDP metadata was
    stored in the headroom of the packet which should work in most of
    cases since driver usually reserve enough headroom. Very minor changes
    were done for vhost_net: it just need to peek the length depends on
    the type of pointer.
    
    Tests were done on two Intel E5-2630 2.40GHz machines connected back
    to back through two 82599ES. Traffic were generated/received through
    MoonGen/testpmd(rxonly). It reports ~20% improvements when
    xdp_redirect_map is doing redirection from ixgbe to TAP (from 2.50Mpps
    to 3.05Mpps)
    
    Cc: Jesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    fc72d1d5
tun.c 77.7 KB