[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 04/20] net: Remove receive_raw()
From: |
Jason Wang |
Subject: |
[PULL 04/20] net: Remove receive_raw() |
Date: |
Tue, 4 Jun 2024 15:37:39 +0800 |
From: Akihiko Odaki <akihiko.odaki@daynix.com>
While netmap implements virtio-net header, it does not implement
receive_raw(). Instead of implementing receive_raw for netmap, add
virtio-net headers in the common code and use receive_iov()/receive()
instead. This also fixes the buffer size for the virtio-net header.
Fixes: fbbdbddec0 ("tap: allow extended virtio header with hash info")
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
---
include/net/net.h | 1 -
net/net.c | 18 ++++++++++++------
net/tap.c | 1 -
3 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/include/net/net.h b/include/net/net.h
index 6fe5a0aee8..c8f679761b 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -72,7 +72,6 @@ typedef struct NetClientInfo {
NetClientDriver type;
size_t size;
NetReceive *receive;
- NetReceive *receive_raw;
NetReceiveIOV *receive_iov;
NetCanReceive *can_receive;
NetStart *start;
diff --git a/net/net.c b/net/net.c
index db096765f4..6938da05e0 100644
--- a/net/net.c
+++ b/net/net.c
@@ -787,11 +787,7 @@ static ssize_t nc_sendv_compat(NetClientState *nc, const
struct iovec *iov,
offset = iov_to_buf(iov, iovcnt, 0, buf, offset);
}
- if (flags & QEMU_NET_PACKET_FLAG_RAW && nc->info->receive_raw) {
- ret = nc->info->receive_raw(nc, buffer, offset);
- } else {
- ret = nc->info->receive(nc, buffer, offset);
- }
+ ret = nc->info->receive(nc, buffer, offset);
g_free(buf);
return ret;
@@ -806,6 +802,8 @@ static ssize_t qemu_deliver_packet_iov(NetClientState
*sender,
MemReentrancyGuard *owned_reentrancy_guard;
NetClientState *nc = opaque;
int ret;
+ struct virtio_net_hdr_v1_hash vnet_hdr = { };
+ g_autofree struct iovec *iov_copy = NULL;
if (nc->link_down) {
@@ -824,7 +822,15 @@ static ssize_t qemu_deliver_packet_iov(NetClientState
*sender,
owned_reentrancy_guard->engaged_in_io = true;
}
- if (nc->info->receive_iov && !(flags & QEMU_NET_PACKET_FLAG_RAW)) {
+ if ((flags & QEMU_NET_PACKET_FLAG_RAW) && nc->vnet_hdr_len) {
+ iov_copy = g_new(struct iovec, iovcnt + 1);
+ iov_copy[0].iov_base = &vnet_hdr;
+ iov_copy[0].iov_len = nc->vnet_hdr_len;
+ memcpy(&iov_copy[1], iov, iovcnt * sizeof(*iov));
+ iov = iov_copy;
+ }
+
+ if (nc->info->receive_iov) {
ret = nc->info->receive_iov(nc, iov, iovcnt);
} else {
ret = nc_sendv_compat(nc, iov, iovcnt, flags);
diff --git a/net/tap.c b/net/tap.c
index 49edf6c2b6..99c59ee468 100644
--- a/net/tap.c
+++ b/net/tap.c
@@ -360,7 +360,6 @@ static NetClientInfo net_tap_info = {
.type = NET_CLIENT_DRIVER_TAP,
.size = sizeof(TAPState),
.receive = tap_receive,
- .receive_raw = tap_receive_raw,
.receive_iov = tap_receive_iov,
.poll = tap_poll,
.cleanup = tap_cleanup,
--
2.42.0
- [PULL 00/20] Net patches, Jason Wang, 2024/06/04
- [PULL 01/20] tap: Remove tap_probe_vnet_hdr_len(), Jason Wang, 2024/06/04
- [PULL 03/20] net: Move virtio-net header length assertion, Jason Wang, 2024/06/04
- [PULL 04/20] net: Remove receive_raw(),
Jason Wang <=
- [PULL 05/20] tap: Call tap_receive_iov() from tap_receive(), Jason Wang, 2024/06/04
- [PULL 06/20] tap: Shrink zeroed virtio-net header, Jason Wang, 2024/06/04
- [PULL 07/20] virtio-net: Do not propagate ebpf-rss-fds errors, Jason Wang, 2024/06/04
- Re: [PULL 07/20] virtio-net: Do not propagate ebpf-rss-fds errors, Daniel P . Berrangé, 2024/06/05
- Re: [PULL 07/20] virtio-net: Do not propagate ebpf-rss-fds errors, Akihiko Odaki, 2024/06/05
- Re: [PULL 07/20] virtio-net: Do not propagate ebpf-rss-fds errors, Daniel P . Berrangé, 2024/06/06
- Re: [PULL 07/20] virtio-net: Do not propagate ebpf-rss-fds errors, Akihiko Odaki, 2024/06/06
- Re: [PULL 07/20] virtio-net: Do not propagate ebpf-rss-fds errors, Daniel P . Berrangé, 2024/06/06
- Re: [PULL 07/20] virtio-net: Do not propagate ebpf-rss-fds errors, Akihiko Odaki, 2024/06/07
[PULL 08/20] virtio-net: Add only one queue pair when realizing, Jason Wang, 2024/06/04