Thread (41 messages) 41 messages, 3 authors, 2022-12-28

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(struct 
virtnet_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
Thanks

quoted
          alloc_frag->offset += hole;
      }
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help