From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=none (p=none dis=none) header.from=gibson.dropbear.id.au Authentication-Results: passt.top; dkim=pass (2048-bit key; secure) header.d=gibson.dropbear.id.au header.i=@gibson.dropbear.id.au header.a=rsa-sha256 header.s=202602 header.b=h7sFNrLW; dkim-atps=neutral Received: from mail.ozlabs.org (gandalf.ozlabs.org [150.107.74.76]) by passt.top (Postfix) with ESMTPS id 448875A0274 for ; Mon, 02 Mar 2026 01:55:54 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gibson.dropbear.id.au; s=202602; t=1772412951; bh=3EBXym0kiAwlQGjozhhmg6zJEPuQi2alr1fUKxMy5DI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=h7sFNrLWr/MzjfATRnygp7JSZSUrBH5i1vSjSVu/XIpGsBzUVjb7PHj6a3SX8wr0g xcF5WUKeQndzyLciCxCcUUbtjKPgzm0Vm/6JBP+2gf4LPQrrShua/1UjHyHxe35KLM 3rD6mNpU28KddgZLK3fT7pVOYPqsegl6eXH1kNJ4gb/4dnjVYm8w0VTBPAA18vumac q/5VzQmWCbrYm7Ae/UaHGKWtoeeSP4z83ZoJKQEYppXlSSdSeq72+cMO05vaer6yDC t7leG31v1FeLuqbp08G1b920KkqwtaHn4n2wL/Ygyqzi8QoHRzocqb9dl3R6h1R9yY F7d6cnr4c1gtA== Received: by gandalf.ozlabs.org (Postfix, from userid 1007) id 4fPL8R2qDpz4w9Q; Mon, 02 Mar 2026 11:55:51 +1100 (AEDT) Date: Mon, 2 Mar 2026 11:55:47 +1100 From: David Gibson To: Laurent Vivier Subject: Re: [PATCH 10/12] vu_common: Accept explicit iovec count per element in vu_init_elem() Message-ID: References: <20260227140330.2216753-1-lvivier@redhat.com> <20260227140330.2216753-11-lvivier@redhat.com> MIME-Version: 1.0 In-Reply-To: <20260227140330.2216753-11-lvivier@redhat.com> X-MailFrom: dgibson@gandalf.ozlabs.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="fRP4JJJtnHefL63W" Content-Disposition: inline Message-ID-Hash: FL4PI2SE4KC4BGOHIQBARQTFUU56JBAQ X-Message-ID-Hash: FL4PI2SE4KC4BGOHIQBARQTFUU56JBAQ X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: passt-dev@passt.top X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: --fRP4JJJtnHefL63W Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, Feb 27, 2026 at 03:03:28PM +0100, Laurent Vivier wrote: > Extend vu_init_elem() to accept an iov_per_elem parameter specifying > how many iovec entries to assign to each virtqueue element. The iov > array is now strided by iov_per_elem rather than 1. >=20 > Update all callers to pass 1, preserving existing behavior. >=20 > No functional change. >=20 > Signed-off-by: Laurent Vivier Reviewed-by: David Gibson > --- > tcp_vu.c | 2 +- > udp_vu.c | 2 +- > vu_common.c | 19 ++++++++++--------- > vu_common.h | 2 +- > 4 files changed, 13 insertions(+), 12 deletions(-) >=20 > diff --git a/tcp_vu.c b/tcp_vu.c > index 77d6e75496a0..51f7834f0307 100644 > --- a/tcp_vu.c > +++ b/tcp_vu.c > @@ -202,7 +202,7 @@ static ssize_t tcp_vu_sock_recv(const struct ctx *c, = struct vu_virtq *vq, > =20 > =09hdrlen =3D tcp_vu_hdrlen(v6); > =20 > -=09vu_init_elem(elem, &iov_vu[DISCARD_IOV_NUM], ARRAY_SIZE(elem)); > +=09vu_init_elem(elem, &iov_vu[DISCARD_IOV_NUM], ARRAY_SIZE(elem), 1); > =20 > =09elem_cnt =3D 0; > =09*head_cnt =3D 0; > diff --git a/udp_vu.c b/udp_vu.c > index 5ae79b9bb0c5..7e486b74883e 100644 > --- a/udp_vu.c > +++ b/udp_vu.c > @@ -214,7 +214,7 @@ void udp_vu_sock_to_tap(const struct ctx *c, int s, i= nt n, flow_sidx_t tosidx) > =09=09int elem_cnt, elem_used; > =09=09ssize_t dlen; > =20 > -=09=09vu_init_elem(elem, iov_vu, ARRAY_SIZE(elem)); > +=09=09vu_init_elem(elem, iov_vu, ARRAY_SIZE(elem), 1); > =20 > =09=09elem_cnt =3D vu_collect(vdev, vq, elem, ARRAY_SIZE(elem), > =09=09=09=09 IP_MAX_MTU + ETH_HLEN + VNET_HLEN, NULL); > diff --git a/vu_common.c b/vu_common.c > index b6753a556049..e32a56d881a3 100644 > --- a/vu_common.c > +++ b/vu_common.c > @@ -54,18 +54,19 @@ int vu_packet_check_range(struct vdev_memory *memory, > } > =20 > /** > - * vu_init_elem() - initialize an array of virtqueue elements with 1 iov= in each > - * @elem:=09Array of virtqueue elements to initialize > - * @iov:=09Array of iovec to assign to virtqueue element > - * @elem_cnt:=09Number of virtqueue element > + * vu_init_elem() - Initialize an array of virtqueue elements > + * @elem:=09 Array of virtqueue elements to initialize > + * @iov:=09 Array of iovecs to assign to virtqueue elements > + * @elem_cnt:=09 Number of virtqueue elements > + * @iov_per_elem: Number of iovecs per element > */ > void vu_init_elem(struct vu_virtq_element *elem, struct iovec *iov, > -=09=09 int elem_cnt) > +=09=09 int elem_cnt, int iov_per_elem) > { > -=09int i; > +=09int i, j; > =20 > -=09for (i =3D 0; i < elem_cnt; i++) > -=09=09vu_set_element(&elem[i], 0, NULL, 1, &iov[i]); > +=09for (i =3D 0, j =3D 0; i < elem_cnt; i++, j +=3D iov_per_elem) > +=09=09vu_set_element(&elem[i], 0, NULL, iov_per_elem, &iov[j]); > } > =20 > /** > @@ -268,7 +269,7 @@ int vu_send_single(const struct ctx *c, const void *b= uf, size_t size) > =09=09return -1; > =09} > =20 > -=09vu_init_elem(elem, in_sg, ARRAY_SIZE(elem)); > +=09vu_init_elem(elem, in_sg, ARRAY_SIZE(elem), 1); > =20 > =09size +=3D VNET_HLEN; > =09elem_cnt =3D vu_collect(vdev, vq, elem, ARRAY_SIZE(elem), size, &tota= l); > diff --git a/vu_common.h b/vu_common.h > index c1d2ce888f12..51639c04df14 100644 > --- a/vu_common.h > +++ b/vu_common.h > @@ -48,7 +48,7 @@ static inline void vu_set_element(struct vu_virtq_eleme= nt *elem, > } > =20 > void vu_init_elem(struct vu_virtq_element *elem, struct iovec *iov, > -=09=09 int elem_cnt); > +=09=09 int elem_cnt, int iov_per_elem); > int vu_collect(const struct vu_dev *vdev, struct vu_virtq *vq, > =09 struct vu_virtq_element *elem, int max_elem, size_t size, > =09 size_t *collected); > --=20 > 2.53.0 >=20 --=20 David Gibson (he or they)=09| I'll have my music baroque, and my code david AT gibson.dropbear.id.au=09| minimalist, thank you, not the other way =09=09=09=09| around. http://www.ozlabs.org/~dgibson --fRP4JJJtnHefL63W Content-Type: application/pgp-signature; name=signature.asc -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEO+dNsU4E3yXUXRK2zQJF27ox2GcFAmmk4BIACgkQzQJF27ox 2GfExRAAinwPfIzUE7l7QndMWvqsYqFmlsLUrqbHMfo6Uk/EPBeoidjT+u4ntnuw ieBhHIm2S0mIW9mPUHLZ0QvPGe4qDHrS28QUeFmxzitt99UTQzAsiWBFgmKFZLbm fnGrGsjxOkT3kiffbgG0/iPdM9TOplCWjefzlPt45QClYbbEene+Q18vB1eaI4pF hdVm7V1JT9FY5zqf7KHdI5kDlH/ZcOp0UU0bBylsaUqY761PWPvOESR9VqFunEmW QIm0HwWUqR6XtNoxFboRO68++Q1KjrTfCjLDAhN7MYZ1UHB4PaYjZ5EEujj0MLQT ExO9AkUZFQNdqsifW+3Lsnd4HJ6nqFVrlNSLI4w5ut7CaJFznLmfXcUw5+4+Ntap UOtrE3YKcJryIwnr0PqRz4hE8ZxSiWJE11v3Ubuas3qPwn5ivuYq4Y02obK8Jwjj MCN9BYFq1Q9RC07bRoT9ZHiSHTXOwBWD6vjm1esAMM3FRdaLDyuJI7t7FS4tIvXm uD0w+YMysD2D3HCBoZ8NmNdewUTFWjlw55d+p7Kl3Xw0MDR/RwmLCvdO3zk6S6jY ccGyvBteZN0MrNzTHeZbsa9Tz89H7AyzBT7IZGHzeIILUJgjo6aAd+Vhs0NPVNy5 FAlhV7/ixJH3Az2KXxYB3p+LeZATgK6TuBHLtDufWSGrz9XUd6g= =z32u -----END PGP SIGNATURE----- --fRP4JJJtnHefL63W--