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. Could you check that increasing the tail indeed doesn't work on fragmented packets on mlx5e? I can send a oneliner to fix that.