Thread (2 messages) 2 messages, 2 authors, 2023-02-27

Re: [PATCH v2] virtio-net: Fix probe of virtio-net on kvmtool

From: Jason Wang <jasowang@redhat.com>
Date: 2023-02-27 04:13:30
Also in: lkml, netdev

On Fri, Feb 24, 2023 at 4:25 PM Michael S. Tsirkin [off-list ref] wrote:
On Thu, Feb 23, 2023 at 07:38:25PM +0000, Rob Bradford via B4 Relay wrote:
quoted
From: Rob Bradford <redacted>

kvmtool does not support the VIRTIO_NET_F_CTRL_GUEST_OFFLOADS feature
but does advertise the VIRTIO_NET_F_GUEST_TSO{4,6} features. Check that
the VIRTIO_NET_F_CTRL_GUEST_OFFLOADS feature is present before setting
the NETIF_F_GRO_HW feature bit as otherwise an attempt will be made to
program the virtio-net device using the ctrl queue which will fail.

This resolves the following error when running on kvmtool:

[    1.865992] net eth0: Fail to set guest offload.
[    1.872491] virtio_net virtio2 eth0: set_features() failed (-22); wanted 0x0000000000134829, left 0x0080000000134829

Signed-off-by: Rob Bradford <redacted>
---
Changes in v2:
- Use parentheses to group logical OR of features
- Link to v1:
  https://lore.kernel.org/r/20230223-virtio-net-kvmtool-v1-1-fc23d29b9d7a@rivosinc.com (local)
---
 drivers/net/virtio_net.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 61e33e4dd0cd..f8341d1a4ccd 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -3780,10 +3780,9 @@ static int virtnet_probe(struct virtio_device *vdev)
      }
      if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_CSUM))
              dev->features |= NETIF_F_RXCSUM;
-     if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO4) ||
-         virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO6))
-             dev->features |= NETIF_F_GRO_HW;
-     if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_GUEST_OFFLOADS))
+     if ((virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO4) ||
+         virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO6)) &&
+         virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_GUEST_OFFLOADS))
              dev->hw_features |= NETIF_F_GRO_HW;
This will disable GRO/LRO on kvmtool completely causing a significant
performance regression.

Jason, isn't this what
        commit dbcf24d153884439dad30484a0e3f02350692e4c
        Author: Jason Wang [off-list ref]
        Date:   Tue Aug 17 16:06:59 2021 +0800

            virtio-net: use NETIF_F_GRO_HW instead of NETIF_F_LRO

was supposed to address?
Yes, I've asked a similar question in another thread.
And apropos this:

    Fix this by using NETIF_F_GRO_HW instead. Though the spec does not
    guarantee packets to be re-segmented as the original ones,
    we can add that to the spec, possibly with a flag for devices to
    differentiate between GRO and LRO.

this never happened. What's the plan exactly?
It's in the backlog, but I'm out of bandwidth for doing that now.

Thanks


quoted
      dev->vlan_features = dev->features;

---
base-commit: c39cea6f38eefe356d64d0bc1e1f2267e282cdd3
change-id: 20230223-virtio-net-kvmtool-87f37515be22

Best regards,
--
Rob Bradford [off-list ref]
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help