Re: [PATCH v2 1/9] virtio_net: disable the hole mechanism for xdp
From: Jason Wang <jasowang@redhat.com>
Date: 2022-12-28 06:29:22
Also in:
bpf
在 2022/12/27 15:32, Heng Qi 写道:
在 2022/12/27 下午2:30, Jason Wang 写道:quoted
在 2022/12/20 22:14, Heng Qi 写道:quoted
XDP core assumes that the frame_size of xdp_buff and the length of the frag are PAGE_SIZE. The hole may cause the processing of xdp to fail, so we disable the hole mechanism when xdp is set. Signed-off-by: Heng Qi <redacted> Reviewed-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com> --- drivers/net/virtio_net.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 9cce7dec7366..443aa7b8f0ad 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c@@ -1419,8 +1419,11 @@ static int add_recvbuf_mergeable(structvirtnet_info *vi, /* To avoid internal fragmentation, if there is very likely not * enough space for another buffer, add the remaining space to * the current buffer. + * XDP core assumes that frame_size of xdp_buff and the length + * of the frag are PAGE_SIZE, so we disable the hole mechanism. */ - len += hole; + if (!headroom) + len += hole;Is this only a requirement of multi-buffer XDP? If not, it need to be backported to stable.It applies to single buffer xdp and multi-buffer xdp, but even if single buffer xdp has a hole mechanism, there will be no problem (limiting mtu and turning off GUEST GSO), so there is no need to backport it.
Let's add this in the changelog. With that, Acked-by: Jason Wang <jasowang@redhat.com> Thanks
Thanks.quoted
Thanksquoted
alloc_frag->offset += hole; }