Subject: Re: Does skb_metadata_differs really need to stop GRO aggregation?

From: Toke Høiland-Jørgensen <[email-masked]>
Date: Thu, 30 Nov 2023 14:55:50 +0100

Daniel Borkmann <[email-masked]> writes:

> On 11/29/23 10:52 PM, Toke Høiland-Jørgensen wrote:
>> Edward Cree <[email-masked]> writes:
>>> On 28/11/2023 14:39, Toke Høiland-Jørgensen wrote:
>>>> I'm not quite sure what should be the semantics of that, though. I.e.,
>>>> if you are trying to aggregate two packets that have the flag set, which
>>>> packet do you take the value from? What if only one packet has the flag
>
> It would probably make sense if both packets have it set.

Right, so "aggregate only if both packets have the flag set, keeping the
metadata area from the first packet", then?

>>>> set? Or should we instead have a "metadata_xdp_only" flag that just
>>>> prevents the skb metadata field from being set entirely?
>
> What would be the use case compared to resetting meta data right before
> we return with XDP_PASS?

I was thinking it could save a call to xdp_adjust_meta() to reset it
back to zero before PASSing the packet. But okay, that may be of
marginal utility.

>>> Sounds like what's actually needed is bpf progs inside the GRO engine
>>>   to implement the metadata "protocol" prepare and coalesce callbacks?
>> 
>> Hmm, yes, I guess that would be the most general solution :)
>
> Feels like a potential good fit, agree, although for just solving the
> above sth not requiring extra BPF might be nice as well.

Yeah, I agree that just the flag makes sense on its own.

-Toke