VIRTIO_NET_F_MTU not negotiated

Michael S. Tsirkin
Wed, 20 Jul 2022 10:14:52 -0000

On Wed, Jul 20, 2022 at 08:17:29AM +0000, Eli Cohen
wrote:
> > From: Eugenio Perez Martin <eperezma at redhat.com>
> > Sent: Wednesday, July 20, 2022 10:47 AM
> > To: Eli Cohen <elic at nvidia.com>
> > Cc: Michael S. Tsirkin <mst at redhat.com>; Jason Wang
<jasowang at redhat.com>; virtualization at lists.linux-foundation.org
> > Subject: Re: VIRTIO_NET_F_MTU not negotiated
> >
> > On Wed, Jul 20, 2022 at 8:30 AM Eli Cohen <elic at nvidia.com>
wrote:
> > >
> > >
> > >
> > > > -----Original Message-----
> > > > From: Eugenio Perez Martin <eperezma at redhat.com>
> > > > Sent: Tuesday, July 19, 2022 5:51 PM
> > > > To: Eli Cohen <elic at nvidia.com>
> > > > Cc: Michael S. Tsirkin <mst at redhat.com>; Jason Wang
<jasowang at redhat.com>; virtualization at lists.linux-foundation.org
> > > > Subject: Re: VIRTIO_NET_F_MTU not negotiated
> > > >
> > > > On Tue, Jul 19, 2022 at 4:02 PM Eli Cohen <elic at
nvidia.com> wrote:
> > > > >
> > > > > > From: Eli Cohen
> > > > > > Sent: Tuesday, July 19, 2022 4:53 PM
> > > > > > To: Michael S. Tsirkin <mst at redhat.com>
> > > > > > Cc: Jason Wang <jasowang at redhat.com>;
Eugenio Perez Martin <eperezma at redhat.com>; virtualization at
lists.linux-
> > > > foundation.org
> > > > > > Subject: RE: VIRTIO_NET_F_MTU not negotiated
> > > > > >
> > > > > > >
> > > > > > > On Tue, Jul 19, 2022 at 01:25:42PM +0000, Eli
Cohen wrote:
> > > > > > > > Hi,
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > mlx5_vdpa is offering VIRTIO_NET_F_MTU.
However the driver (is it qemu
> > > > > > > > responsibility?) does not accept and it
ends up not negotiated.
> > > > > > >
> > > > > > > qemu is responsible for passing features to
driver.
> > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > I don't see how can the driver
refuse to negotiate this. What if the hardware
> > > > > > > > has a limitation with respect to mtu?
> > > > > > >
> > > > > > > Then it can fail FEATURES_OK
> > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > I noticed this when I created the device
with mtu of 1000. I expected the
> > > > > > > > netdev at the vm to have mtu of 1000 and
any attempt to go beyond should fail
> > > > > > > > but that's not the case.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Comments?
> > > > > > >
> > > > > > >
> > > > > > > Any chance mtu is too small?
> > > > > > >
> > > > > >
> > > > > > MIN_MTU is 68 bytes and I was trying 1000. I tried
also 1300 but same thing.
> > > > > >
> > > > > > >         if (virtio_has_feature(vdev,
VIRTIO_NET_F_MTU)) {
> > > > > > >                 int mtu =
virtio_cread16(vdev,
> > > > > > >
offsetof(struct virtio_net_config,
> > > > > > >
mtu));
> > > > > > >                 if (mtu < MIN_MTU)
> > > > > > >
__virtio_clear_bit(vdev, VIRTIO_NET_F_MTU);
> > > > > > >         }
> > > > > > >
> > > > > > > any chance it's on power or another BE
system?
> > > > > > >
> > > > > >
> > > > > > No, it's x86_64.
> > > > > >
> > > > > > I will test also vdpa device running on the host.
> > > > >
> > > > > vdpa running on the host (using virtio_vdpa) behaves as
expected.
> > > > > Is there a quick way to check if qemu fails to pass the
information to the driver on the guest?
> > > > >
> > > >
> > > > Can you trace with "-trace
'vhost_vdpa_set_features' -trace
> > > > 'vhost_vdpa_set_features'"? They're
parameters of qemu.
> > >
> > > I get this:
> > > vhost_vdpa_set_features dev: 0x5595ae9751a0 features: 0x3008b1803
> > >
> > > VIRTIO_NET_F_MTU is bit 3 and it seems to be off.
> > >
> >
> > Sorry, I put trace on vhost_vdpa *_set_* features twice in my message.
> >
> > Could you try tracing vhost_vdpa_get_features too? That way we know if
> > qemu offers it to the guest.
> >
>
> Sure.
> I get these two successive prints right as the VM starts booting:
> vhost_vdpa_get_features dev: 0x55c87e4651e0 features: 0x300cb182b
> vhost_vdpa_get_features dev: 0x55c87e4627a0 features: 0x300cb182b
>
> Later on I get this:
> vhost_vdpa_set_features dev: 0x55c87e4651e0 features: 0x3008b1803
>
> # qemu-system-x86_64 --version
> QEMU emulator version 7.0.0 (v7.0.0)
> Copyright (c) 2003-2022 Fabrice Bellard and the QEMU Project developers
>
>
>
> > Thanks!
>

so it's there but driver does not ack it.

--
MST