qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Akihiko Odaki <akihiko.odaki@daynix.com>
To: Jason Wang <jasowang@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>
Cc: qemu-devel@nongnu.org, Akihiko Odaki <akihiko.odaki@daynix.com>
Subject: [PATCH 3/7] virtio-net: Do not check for the queue before RSS
Date: Sun, 15 Sep 2024 10:06:41 +0900	[thread overview]
Message-ID: <20240915-queue-v1-3-b49bd49b926d@daynix.com> (raw)
In-Reply-To: <20240915-queue-v1-0-b49bd49b926d@daynix.com>

virtio_net_can_receive() checks if the queue is ready, but RSS will
change the queue to use so, strictly speaking, we may still be able to
receive the packet even if the queue initially provided is not ready.
Perform RSS before virtio_net_can_receive() to cover such a case.

Fixes: 4474e37a5b3a ("virtio-net: implement RX RSS processing")
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
---
 hw/net/virtio-net.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index 755530c035e4..3ee1ebd88daa 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -1901,10 +1901,6 @@ static ssize_t virtio_net_receive_rcu(NetClientState *nc, const uint8_t *buf,
     size_t offset, i, guest_offset, j;
     ssize_t err;
 
-    if (!virtio_net_can_receive(nc)) {
-        return -1;
-    }
-
     if (!no_rss && n->rss_data.enabled && n->rss_data.enabled_software_rss) {
         int index = virtio_net_process_rss(nc, buf, size, &extra_hdr);
         if (index >= 0) {
@@ -1913,6 +1909,10 @@ static ssize_t virtio_net_receive_rcu(NetClientState *nc, const uint8_t *buf,
         }
     }
 
+    if (!virtio_net_can_receive(nc)) {
+        return -1;
+    }
+
     /* hdr_len refers to the header we supply to the guest */
     if (!virtio_net_has_buffers(q, size + n->guest_hdr_len - n->host_hdr_len)) {
         return 0;

-- 
2.46.0



  parent reply	other threads:[~2024-09-15  1:07 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-15  1:06 [PATCH 0/7] virtio-net fixes Akihiko Odaki
2024-09-15  1:06 ` [PATCH 1/7] net: checksum: Convert data to void * Akihiko Odaki
2024-09-15  1:06 ` [PATCH 2/7] virtio-net: Fix size check in dhclient workaround Akihiko Odaki
2024-09-15  1:06 ` Akihiko Odaki [this message]
2024-10-21  8:23   ` [PATCH 3/7] virtio-net: Do not check for the queue before RSS Jason Wang
2024-09-15  1:06 ` [PATCH 4/7] virtio-net: Fix hash reporting when the queue changes Akihiko Odaki
2024-09-15  1:06 ` [PATCH 5/7] virtio-net: Initialize hash reporting values Akihiko Odaki
2024-09-15  1:06 ` [PATCH 6/7] virtio-net: Copy received header to buffer Akihiko Odaki
2024-10-21  8:21   ` Jason Wang
2024-10-21  8:22     ` Jason Wang
2024-10-22  6:37       ` Akihiko Odaki
2024-09-15  1:06 ` [PATCH 7/7] virtio-net: Fix num_buffers for version 1 Akihiko Odaki
2024-10-15 17:58 ` [PATCH 0/7] virtio-net fixes Michael Tokarev
2024-10-17  6:52   ` Jason Wang

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=20240915-queue-v1-3-b49bd49b926d@daynix.com \
    --to=akihiko.odaki@daynix.com \
    --cc=jasowang@redhat.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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;
as well as URLs for NNTP newsgroup(s).