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

Jason Wang
2022-12-28T06:29:22Z

在 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@linux.alibaba.com>
>>> 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.
>
>>
>> Thanks
>>
>>
>>>           alloc_frag->offset += hole;
>>>       }
>