Re: [PATCH v2 1/9] virtio_net: disable the hole mechanism for xdp

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




在 2022/12/27 15:32, Heng Qi 写道:


在 2022/12/27 下午2:30, Jason Wang 写道:

在 2022/12/20 22:14, Heng Qi 写道:
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 <hengqi@xxxxxxxxxxxxxxxxx>
Reviewed-by: Xuan Zhuo <xuanzhuo@xxxxxxxxxxxxxxxxx>
---
  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@xxxxxxxxxx>

Thanks



Thanks.


Thanks


          alloc_frag->offset += hole;
      }





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux