Re: [PATCH net-next 02/13] sk_buff: add skb extension infrastructure
From: Eric Dumazet <hidden>
Date: 2018-12-13 05:40:08
On 12/12/2018 12:52 PM, Florian Westphal wrote:
Eric Dumazet [off-list ref] wrote:quoted
quoted
If you prefer that, ok, but I don't see why we can't unify them behind a single layer?Well, for a start we do not use nf_brifge or secpath.Then the extension framework isn't built and the result is exactly the same as before these patches: helpers turn into empty inline stubs. If its built, sk_buff size is reduced by up to one pointer, and the added one isn't initialised at allocation time. sk_buff layout with the extension patches is almost same as with XFRM=n BRIDGE_NF=n (because nf_bridge and sp pointers get removed), there is only one additional pointer at the end, not inited at alloc time. The other new member fills a hole.quoted
XDP is all about not unifying because unifying has a cost. Do we really want to slow down the stack just because MPTCP is coming ?I don't want to slow down the stack. All places that gain a helper call do so instead of the nf_bridge/secpath one. They only expand into code if at least one of secpath or nf_bridge are built in. Both struct secpath and nf_bridge have their refcounts removed, so no additional reference counts are added. If you still think this is proposal is a bad idea, ok, let me know and I will stop working on this.
Certainly not a bad idea.
MPTCP can then just add skb->cb2[], but neither nf_bridge nor secpath can use it. If not, I will send another iteration that just allocates the entire extension space if first extension is added, it simplifies allocation handling a little.
I am still unsure of the added extra costs, but for a start, TCP xmit clones the skbs. Does it mean an additional pair of atomic operations if the skb comes from MPTCP enabled flow ? The clone is used in the lower layers (IP , qdisc, device xmit), so I do not see why a clone should share the extdata from the master.