On 12/12/2018 12:52 PM, Florian Westphal wrote:
> Eric Dumazet <eric.duma...@gmail.com> wrote:
>>> 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.
>
>> 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.