From: Laurent Vivier <lvivier@redhat.com>
To: Stefano Brivio <sbrivio@redhat.com>
Cc: passt-dev@passt.top
Subject: Re: [PATCH v5 29/29] packet: use buf to store iovec array
Date: Tue, 27 May 2025 15:16:04 +0200 [thread overview]
Message-ID: <e254f79a-43b6-4e8e-a993-dd2ba7ede6be@redhat.com> (raw)
In-Reply-To: <20250526162146.52d68c66@elisabeth>
On 26/05/2025 16:21, Stefano Brivio wrote:
> On Thu, 17 Apr 2025 18:51:36 +0200
> Laurent Vivier <lvivier@redhat.com> wrote:
>
>> When we use vhost-user we don't use the memory buffer
>> of the pool to store the packet, so we can use it to
>> store iovec array that points to the memory provided
>> by vhost-user.
>>
>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
>> ---
>> packet.c | 163 +++++++++++++++++++++++++++++++++++++++++++++++++------
>> 1 file changed, 147 insertions(+), 16 deletions(-)
>...
>> +/**
>> + * packet_iov_next_idx() - Give the the next available iovec index
>> + * @p: Pointer to packet pool
>> + * @idx: Index of packet descriptor in pool
>> + * @func: For tracing: name of calling function
>> + * @line: For tracing: caller line of function call
>> + *
>> + * Return: the next available iovec index
>> + */
>> +static size_t packet_iov_next_idx(const struct pool *p, size_t idx,
>> + const char *func, int line)
>> +{
>> + size_t iov_idx, iov_cnt;
>> +
>> + if (idx == 0)
>> + return 0;
>
> I'm a bit lost here. Why is 0 a special value now?
See below: we use "idx - 1"
>
>> +
>> + iov_idx = packet_iov_idx(p, idx - 1, &iov_cnt, func, line);
>> +
>> + return iov_idx + iov_cnt;
>> +}
>> +
The next available iovec index for a given packet index is computed using the information
from the previous packet index:
We take first available iovec index after the iovecs used by the previous packet.
The next available iovec index is the iovec index base of the previous packet plus all the
iovecs used by the previous packet:
next available iovec index = (base iovec index of previous packet) + (number of iovec used
by previous packet)
So, for the first packet (packet index 0), the first available iovec index is 0, we can't
compute it from the previous packet because it doesn't exist (and all the iovec are free
and available)
Thanks,
Laurent
next prev parent reply other threads:[~2025-05-27 13:16 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-17 16:51 [PATCH v5 00/29] Introduce discontiguous frames management Laurent Vivier
2025-04-17 16:51 ` [PATCH v5 01/29] arp: Don't mix incoming and outgoing buffers Laurent Vivier
2025-05-26 14:18 ` Stefano Brivio
2025-04-17 16:51 ` [PATCH v5 02/29] iov: Introduce iov_slice(), iov_tail_slice() and iov_tail_drop() Laurent Vivier
2025-05-26 14:19 ` Stefano Brivio
2025-05-26 15:20 ` Laurent Vivier
2025-06-02 13:35 ` Stefano Brivio
2025-04-17 16:51 ` [PATCH v5 03/29] iov: Update IOV_REMOVE_HEADER() and IOV_PEEK_HEADER() Laurent Vivier
2025-05-26 14:19 ` Stefano Brivio
2025-06-02 15:36 ` Laurent Vivier
2025-06-03 8:42 ` Stefano Brivio
2025-04-17 16:51 ` [PATCH v5 04/29] tap: Use iov_tail with tap_add_packet() Laurent Vivier
2025-04-17 16:51 ` [PATCH v5 05/29] packet: Use iov_tail with packet_add() Laurent Vivier
2025-05-26 14:19 ` Stefano Brivio
2025-04-17 16:51 ` [PATCH v5 06/29] packet: Add packet_data() Laurent Vivier
2025-05-26 14:19 ` Stefano Brivio
2025-04-17 16:51 ` [PATCH v5 07/29] arp: Convert to iov_tail Laurent Vivier
2025-05-26 14:19 ` Stefano Brivio
2025-04-17 16:51 ` [PATCH v5 08/29] ndp: " Laurent Vivier
2025-04-17 16:51 ` [PATCH v5 09/29] icmp: " Laurent Vivier
2025-05-26 14:20 ` Stefano Brivio
2025-04-17 16:51 ` [PATCH v5 10/29] udp: " Laurent Vivier
2025-05-26 14:20 ` Stefano Brivio
2025-05-26 15:47 ` Laurent Vivier
2025-04-17 16:51 ` [PATCH v5 11/29] tcp: Convert tcp_tap_handler() to use iov_tail Laurent Vivier
2025-05-26 14:20 ` Stefano Brivio
2025-04-17 16:51 ` [PATCH v5 12/29] tcp: Convert tcp_data_from_tap() " Laurent Vivier
2025-04-17 16:51 ` [PATCH v5 13/29] dhcpv6: move offset initialization out of dhcpv6_opt() Laurent Vivier
2025-04-17 16:51 ` [PATCH v5 14/29] dhcpv6: Extract sending of NotOnLink status Laurent Vivier
2025-04-17 16:51 ` [PATCH v5 15/29] dhcpv6: Convert to iov_tail Laurent Vivier
2025-05-26 14:20 ` Stefano Brivio
2025-04-17 16:51 ` [PATCH v5 16/29] dhcpv6: Use iov_tail in dhcpv6_opt() Laurent Vivier
2025-05-26 14:20 ` Stefano Brivio
2025-04-17 16:51 ` [PATCH v5 17/29] dhcp: Convert to iov_tail Laurent Vivier
2025-05-26 14:20 ` Stefano Brivio
2025-04-17 16:51 ` [PATCH v5 18/29] ip: Use iov_tail in ipv6_l4hdr() Laurent Vivier
2025-05-26 14:21 ` Stefano Brivio
2025-04-17 16:51 ` [PATCH v5 19/29] tap: Convert tap4_handler() to iov_tail Laurent Vivier
2025-04-17 16:51 ` [PATCH v5 20/29] tap: Convert tap6_handler() " Laurent Vivier
2025-04-17 16:51 ` [PATCH v5 21/29] arp: use iov_tail rather than pool Laurent Vivier
2025-04-17 16:51 ` [PATCH v5 22/29] dhcp: " Laurent Vivier
2025-04-17 16:51 ` [PATCH v5 23/29] dhcpv6: " Laurent Vivier
2025-05-26 14:21 ` Stefano Brivio
2025-04-17 16:51 ` [PATCH v5 24/29] icmp: " Laurent Vivier
2025-05-26 14:21 ` Stefano Brivio
2025-04-17 16:51 ` [PATCH v5 25/29] ndp: " Laurent Vivier
2025-05-26 14:21 ` Stefano Brivio
2025-04-17 16:51 ` [PATCH v5 26/29] packet: remove PACKET_POOL() and PACKET_POOL_P() Laurent Vivier
2025-04-17 16:51 ` [PATCH v5 27/29] packet: remove unused parameter from PACKET_POOL_DECL() Laurent Vivier
2025-04-17 16:51 ` [PATCH v5 28/29] packet: add memory regions information into pool Laurent Vivier
2025-05-26 14:21 ` Stefano Brivio
2025-04-17 16:51 ` [PATCH v5 29/29] packet: use buf to store iovec array Laurent Vivier
2025-05-26 14:21 ` Stefano Brivio
2025-05-27 13:16 ` Laurent Vivier [this message]
2025-06-02 13:35 ` Stefano Brivio
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=e254f79a-43b6-4e8e-a993-dd2ba7ede6be@redhat.com \
--to=lvivier@redhat.com \
--cc=passt-dev@passt.top \
--cc=sbrivio@redhat.com \
/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.
Code repositories for project(s) associated with this public inbox
https://passt.top/passt
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 IMAP folder(s).