From: Akihiko Odaki <akihiko.odaki@daynix.com>
To: Jason Wang <jasowang@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>
Cc: qemu-devel@nongnu.org, devel@daynix.com,
Akihiko Odaki <akihiko.odaki@daynix.com>
Subject: [PATCH v3 3/6] virtio-net: Do not check for the queue before RSS
Date: Fri, 22 Nov 2024 14:03:09 +0900 [thread overview]
Message-ID: <20241122-queue-v3-3-f2ff03b8dbfd@daynix.com> (raw)
In-Reply-To: <20241122-queue-v3-0-f2ff03b8dbfd@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 a2a8d6b07bcc..d4aaf362b70f 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -1911,10 +1911,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) {
@@ -1924,6 +1920,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.47.0
next prev parent reply other threads:[~2024-11-22 5:04 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-22 5:03 [PATCH v3 0/6] virtio-net fixes Akihiko Odaki
2024-11-22 5:03 ` [PATCH v3 1/6] net: checksum: Convert data to void * Akihiko Odaki
2024-11-22 7:09 ` Philippe Mathieu-Daudé
2024-11-22 5:03 ` [PATCH v3 2/6] virtio-net: Fix size check in dhclient workaround Akihiko Odaki
2024-11-22 5:03 ` Akihiko Odaki [this message]
2024-11-22 5:03 ` [PATCH v3 4/6] virtio-net: Fix hash reporting when the queue changes Akihiko Odaki
2024-11-22 5:03 ` [PATCH v3 5/6] virtio-net: Initialize hash reporting values Akihiko Odaki
2024-11-22 7:15 ` Philippe Mathieu-Daudé
2024-11-22 5:03 ` [PATCH v3 6/6] virtio-net: Copy received header to buffer Akihiko Odaki
2024-11-26 3:02 ` [PATCH v3 0/6] virtio-net fixes Lei Yang
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=20241122-queue-v3-3-f2ff03b8dbfd@daynix.com \
--to=akihiko.odaki@daynix.com \
--cc=devel@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).