Re: Initial thoughts on TXDP
From: Tom Herbert <hidden>
Date: 2016-12-02 17:12:53
On Fri, Dec 2, 2016 at 6:36 AM, Edward Cree [off-list ref] wrote:
On 01/12/16 23:46, Tom Herbert wrote:quoted
The only time we _really_ to allocate an skbuf is when we need to put the packet onto a queue. All the other use cases are really just to pass a structure containing a packet from function to function. For that purpose we should be able to just pass a much smaller structure in a stack argument and only allocate an skbuff when we need to enqueue. In cases where we don't ever queue a packet we might never need to allocate any skbuffNow this intrigues me, because one of the objections to bundling (vs GRO) was the memory usage of all those SKBs. IIRC we already do a 'GRO-like' coalescing when packets reach a TCP socket anyway (or at least in some cases, not sure if all the different ways we can enqueue a TCP packet for RX do it), but if we could carry the packets from NIC to socket without SKBs, doing so in lists rather than one-at-a-time wouldn't cost any extra memory (the packet-pages are all already allocated on the NIC RX ring). Possibly combine the two, so that rather than having potentially four versions of each function (skb, skbundle, void*, void* bundle) you just have the two 'ends'.
Yep, seems like a good idea to incorporate bundling into TXDP from the get-go. Tom
-Ed