On 10/01/2023 22:59, Maxim Mikityanskiy wrote:
On Tue, Jan 03, 2023 at 05:21:53PM -0800, Jakub Kicinski wrote:
On Tue, 03 Jan 2023 16:19:49 +0100 Toke Høiland-Jørgensen wrote:
Hmm, good question! I don't think we've ever explicitly documented any
assumptions one way or the other. My own mental model has certainly
always assumed the first frag would continue to be the same size as in
non-multi-buf packets.
Interesting! :) My mental model was closer to GRO by frags
so the linear part would have no data, just headers.
A random datapoint is that bpf_xdp_adjust_head() seems
to enforce that there is at least ETH_HLEN.
Also bpf_xdp_frags_increase_tail has the following check:
if (!rxq->frag_size || rxq->frag_size > xdp->frame_sz)
return -EOPNOTSUPP;
However, I can't seem to find where the `frag_size > frame_sz` part is
actually used. Maybe this condition can be dropped? Can someone shed
some light?
BTW, Tariq, we seem to have missed setting frag_size to a non-zero
value.
Hey Maxim,
Indeed. We use xdp_rxq_info_reg, it passes 0 as frag_size.
Could you check that increasing the tail indeed doesn't work on
fragmented packets on mlx5e? I can send a oneliner to fix that.
I can test early next week, and update.