From: Akihiko Odaki <akihiko.odaki@daynix.com>
To: Jason Wang <jasowang@redhat.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
Jonathan Corbet <corbet@lwn.net>,
Willem de Bruijn <willemdebruijn.kernel@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Xuan Zhuo <xuanzhuo@linux.alibaba.com>,
Shuah Khan <shuah@kernel.org>,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
netdev@vger.kernel.org, kvm@vger.kernel.org,
virtualization@lists.linux-foundation.org,
linux-kselftest@vger.kernel.org,
Yuri Benditovich <yuri.benditovich@daynix.com>,
Andrew Melnychenko <andrew@daynix.com>,
Stephen Hemminger <stephen@networkplumber.org>,
gur.stavi@huawei.com, devel@daynix.com
Subject: Re: [PATCH v2 3/3] tun: Set num_buffers for virtio 1.0
Date: Thu, 16 Jan 2025 14:30:16 +0900 [thread overview]
Message-ID: <cc79bef1-c24e-448d-bc20-f8302e341b2c@daynix.com> (raw)
In-Reply-To: <CACGkMEvBU3mLbW+-nOscriR-SeDvPSm1mtwwgznYFOocuao5MQ@mail.gmail.com>
On 2025/01/16 10:06, Jason Wang wrote:
> On Wed, Jan 15, 2025 at 1:07 PM Akihiko Odaki <akihiko.odaki@daynix.com> wrote:
>>
>> On 2025/01/13 12:04, Jason Wang wrote:
>>> On Fri, Jan 10, 2025 at 7:12 PM Akihiko Odaki <akihiko.odaki@daynix.com> wrote:
>>>>
>>>> On 2025/01/10 19:23, Michael S. Tsirkin wrote:
>>>>> On Fri, Jan 10, 2025 at 11:27:13AM +0800, Jason Wang wrote:
>>>>>> On Thu, Jan 9, 2025 at 2:59 PM Akihiko Odaki <akihiko.odaki@daynix.com> wrote:
>>>>>>>
>>>>>>> The specification says the device MUST set num_buffers to 1 if
>>>>>>> VIRTIO_NET_F_MRG_RXBUF has not been negotiated.
>>>>>>
>>>>>> Have we agreed on how to fix the spec or not?
>>>>>>
>>>>>> As I replied in the spec patch, if we just remove this "MUST", it
>>>>>> looks like we are all fine?
>>>>>>
>>>>>> Thanks
>>>>>
>>>>> We should replace MUST with SHOULD but it is not all fine,
>>>>> ignoring SHOULD is a quality of implementation issue.
>>>>>
>>>
>>> So is this something that the driver should notice?
>>>
>>>>
>>>> Should we really replace it? It would mean that a driver conformant with
>>>> the current specification may not be compatible with a device conformant
>>>> with the future specification.
>>>
>>> I don't get this. We are talking about devices and we want to relax so
>>> it should compatibile.
>>
>>
>> The problem is:
>> 1) On the device side, the num_buffers can be left uninitialized due to bugs
>> 2) On the driver side, the specification allows assuming the num_buffers
>> is set to one.
>>
>> Relaxing the device requirement will replace "due to bugs" with
>> "according to the specification" in 1). It still contradicts with 2) so
>> does not fix compatibility.
>
> Just to clarify I meant we can simply remove the following:
>
> """
> The device MUST use only a single descriptor if VIRTIO_NET_F_MRG_RXBUF
> was not negotiated. Note: This means that num_buffers will always be 1
> if VIRTIO_NET_F_MRG_RXBUF is not negotiated.
> """
>
> And
>
> """
> If VIRTIO_NET_F_MRG_RXBUF has not been negotiated, the device MUST set
> num_buffers to 1.
> """
>
> This seems easier as it reflects the fact where some devices don't set
> it. And it eases the transitional device as it doesn't need to have
> any special care.
That can potentially break existing drivers that are compliant with the
current and assumes the num_buffers is set to 1.
Regards,
Akihiko Odaki
>
> Then we don't need any driver normative so I don't see any conflict.
>
> Michael suggests we use "SHOULD", but if this is something that the
> driver needs to be aware of I don't know how "SHOULD" can help a lot
> or not.
>
>>
>> Instead, we should make the driver requirement stricter to change 2).
>> That is what "[PATCH v3] virtio-net: Ignore num_buffers when unused" does:
>> https://lore.kernel.org/r/20250110-reserved-v3-1-2ade0a5d2090@daynix.com
>>
>>>
>>>>
>>>> We are going to fix all implementations known to buggy (QEMU and Linux)
>>>> anyway so I think it's just fine to leave that part of specification as is.
>>>
>>> I don't think we can fix it all.
>>
>> It essentially only requires storing 16 bits. There are details we need
>> to work out, but it should be possible to fix.
>
> I meant it's not realistic to fix all the hypervisors. Note that
> modern devices have been implemented for about a decade so we may have
> too many versions of various hypervisors. (E.g DPDK seems to stick
> with the same behaviour of the current kernel).
> >>
>> Regards,
>> Akihiko Odaki
>>
>
> Thanks
>
next prev parent reply other threads:[~2025-01-16 5:30 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-09 6:58 [PATCH v2 0/3] tun: Unify vnet implementation and fill full vnet header Akihiko Odaki
2025-01-09 6:58 ` [PATCH v2 1/3] tun: Unify vnet implementation Akihiko Odaki
2025-01-09 14:06 ` Willem de Bruijn
2025-01-10 8:28 ` Akihiko Odaki
2025-01-10 3:24 ` Jason Wang
2025-01-09 6:58 ` [PATCH v2 2/3] tun: Pad virtio header with zero Akihiko Odaki
2025-01-09 7:31 ` Michael S. Tsirkin
2025-01-09 7:41 ` Akihiko Odaki
2025-01-09 7:43 ` Michael S. Tsirkin
2025-01-09 9:36 ` Akihiko Odaki
2025-01-09 10:37 ` Jan Kara
2025-01-09 12:46 ` Willem de Bruijn
2025-01-10 4:38 ` Akihiko Odaki
2025-01-10 8:33 ` Michael S. Tsirkin
2025-01-10 10:45 ` Akihiko Odaki
2025-01-10 11:32 ` Willem de Bruijn
2025-01-09 7:42 ` Michael S. Tsirkin
2025-01-10 3:27 ` Jason Wang
2025-01-10 10:25 ` Akihiko Odaki
2025-01-09 6:58 ` [PATCH v2 3/3] tun: Set num_buffers for virtio 1.0 Akihiko Odaki
2025-01-09 7:32 ` Michael S. Tsirkin
2025-01-09 7:40 ` Michael S. Tsirkin
2025-01-09 9:38 ` Akihiko Odaki
2025-01-09 10:54 ` Michael S. Tsirkin
2025-01-09 11:10 ` Akihiko Odaki
2025-01-10 3:27 ` Jason Wang
2025-01-10 10:04 ` Akihiko Odaki
2025-01-10 10:23 ` Michael S. Tsirkin
2025-01-10 11:12 ` Akihiko Odaki
2025-01-13 3:04 ` Jason Wang
2025-01-15 5:07 ` Akihiko Odaki
2025-01-16 1:06 ` Jason Wang
2025-01-16 5:30 ` Akihiko Odaki [this message]
2025-01-20 0:40 ` Jason Wang
2025-01-20 4:57 ` Akihiko Odaki
2025-01-09 13:46 ` [PATCH v2 0/3] tun: Unify vnet implementation and fill full vnet header Willem de Bruijn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cc79bef1-c24e-448d-bc20-f8302e341b2c@daynix.com \
--to=akihiko.odaki@daynix.com \
--cc=andrew@daynix.com \
--cc=corbet@lwn.net \
--cc=davem@davemloft.net \
--cc=devel@daynix.com \
--cc=edumazet@google.com \
--cc=gur.stavi@huawei.com \
--cc=jasowang@redhat.com \
--cc=kuba@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=mst@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=shuah@kernel.org \
--cc=stephen@networkplumber.org \
--cc=virtualization@lists.linux-foundation.org \
--cc=willemdebruijn.kernel@gmail.com \
--cc=xuanzhuo@linux.alibaba.com \
--cc=yuri.benditovich@daynix.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®