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

Heng Qi
2022-12-28T08:24:51Z

在 2022/12/28 下午2:28, Jason Wang 写道:
>
> 在 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.

Ok, thanks for your energy.

>
> With that,
>
> Acked-by: Jason Wang <jasowang@redhat.com>
>
> Thanks
>
>
>>
>> Thanks.
>>
>>>
>>> Thanks
>>>
>>>
>>>>           alloc_frag->offset += hole;
>>>>       }
>>