Re: XDP requirements on the NIC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, 09 Apr 2017 19:14:06 -0700 (PDT)
David Miller <davem@xxxxxxxxxxxxx> wrote:

> From: Florian Fainelli <f.fainelli@xxxxxxxxx>
> Date: Sun, 9 Apr 2017 19:05:39 -0700
> 
> > In order for a NIC and its driver to support XDP, it sounds like we need:
> > 
> > - page-based RX  
> 
> Not exactly.

The requirement is actually that the packet-page is _writable_.
These packet-pages come from the NIC DMA engine, and this complicates
keeping them writable, in the case where a RX-page is used for
containing two (or more) packets.  Careful use of the DMA API does make
it possible to page packet sharing to co-exist with XDP (consult Alex
Duyck to review such driver changes).

> > - TX multiqueue support  
> 
> Also, not really required.
> 
> What you need to be able to do is to provide enough space in each
> RX buffer for:
> 
> 1) a full size frame
> 2) 256 bytes (XDP_PACKET_HEADROOM) of headroom
> 
> This is XDP's main set of requirements, a linear buffer and enough
> room to push XDP_PACKET_HEADROOM's worth of headers.

True.
 
> Then if you want to be able to easily wrap the RX packet into an SKB
> for XDP_PASS, you need to have enough tailroom for skb_shared_info()
> which you basically give to something like build_skb().

True this is a stack requirement.

> If you look at __build_skb() it's comment states "Caller provides
> space holding head and skb_shared_info".
> 
> For XDP_TX you just have to be able to queue up a raw skb'less packet
> into your transmit queue.  TX multiqueue is not required for this to
> work.

-- 
Best regards,
  Jesper Dangaard Brouer
  MSc.CS, Principal Kernel Engineer at Red Hat
  LinkedIn: http://www.linkedin.com/in/brouer



[Index of Archives]     [Linux Networking Development]     [Fedora Linux Users]     [Linux SCTP]     [DCCP]     [Gimp]     [Yosemite Campsites]

  Powered by Linux