diff options
author | Laurent Vivier <lvivier@redhat.com> | 2025-09-05 17:49:34 +0200 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2025-09-09 21:14:32 +0200 |
commit | ed18d4c7ee69140723754ae8fe381927dfaab075 (patch) | |
tree | fdabd51fd93956b7bf8d02701524bfa0c334dd37 | |
parent | 62399155319479f86b07d259b284f6a2991aaba7 (diff) | |
download | passt-ed18d4c7ee69140723754ae8fe381927dfaab075.tar passt-ed18d4c7ee69140723754ae8fe381927dfaab075.tar.gz passt-ed18d4c7ee69140723754ae8fe381927dfaab075.tar.bz2 passt-ed18d4c7ee69140723754ae8fe381927dfaab075.tar.lz passt-ed18d4c7ee69140723754ae8fe381927dfaab075.tar.xz passt-ed18d4c7ee69140723754ae8fe381927dfaab075.tar.zst passt-ed18d4c7ee69140723754ae8fe381927dfaab075.zip |
udp_vu: Pass virtqueue pointer to udp_vu_sock_recv()
Pass the virtqueue pointer to udp_vu_sock_recv() to enable proper
queue selection for multiqueue support. This ensures that received
packets are processed on the same virtqueue as the caller.
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
-rw-r--r-- | udp_vu.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -60,16 +60,17 @@ static size_t udp_vu_hdrlen(bool v6) /** * udp_vu_sock_recv() - Receive datagrams from socket into vhost-user buffers * @c: Execution context + * @vq: virtqueue to use to receive data * @s: Socket to receive from * @v6: Set for IPv6 connections * @dlen: Size of received data (output) * * Return: number of iov entries used to store the datagram */ -static int udp_vu_sock_recv(const struct ctx *c, int s, bool v6, ssize_t *dlen) +static int udp_vu_sock_recv(const struct ctx *c, struct vu_virtq *vq, int s, + bool v6, ssize_t *dlen) { - struct vu_dev *vdev = c->vdev; - struct vu_virtq *vq = &vdev->vq[VHOST_USER_RX_QUEUE]; + const struct vu_dev *vdev = c->vdev; int iov_cnt, idx, iov_used; struct msghdr msg = { 0 }; size_t off, hdrlen; @@ -210,7 +211,7 @@ void udp_vu_sock_to_tap(const struct ctx *c, int s, int n, flow_sidx_t tosidx) ssize_t dlen; int iov_used; - iov_used = udp_vu_sock_recv(c, s, v6, &dlen); + iov_used = udp_vu_sock_recv(c, vq, s, v6, &dlen); if (iov_used <= 0) break; |