public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: Ammar Yasser <aerosound161@gmail.com>
Cc: passt-dev@passt.top, eperezma@redhat.com
Subject: Re: [RFC v3 4/8] virtio: Define the pasta vhost interface
Date: Mon, 17 Aug 2026 10:30:59 +1000	[thread overview]
Message-ID: <aoJWKqHmFeYBEWZe@zatzit> (raw)
In-Reply-To: <DKQJVS33DTA0.23SG2ARN7TLWQ@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3588 bytes --]

On Sun, Aug 16, 2026 at 08:39:29PM +0300, Ammar Yasser wrote:
> On Thu Aug 13, 2026 at 4:16 AM EEST, David Gibson wrote:
> > On Wed, Aug 12, 2026 at 08:17:19PM +0300, Ammar Yasser wrote:
> >> On Mon Aug 10, 2026 at 5:06 AM EEST, David Gibson wrote:
> >> >>  
> >> >>  /* Large enough for ~128 maximum size frames */
> >> >> -#define PKT_BUF_BYTES		(8UL << 20)
> >> >> +#define PKT_BUF_BYTES		((8UL << 20) + 1536)	/* 128 * sizeof(virtio_net_hdr_mrg_rxbuf) */
> >> >
> >> > I think the rationale for this change needs to be clearer (granted,
> >> > the comment here beforehand is also kind of confusing).  IIRC - and
> >> > based on the "~" in the comment, I don't think there's a strict
> >> > requirement that this can hold 128 full frames - that's just setting a
> >> > reasonable sense of scale, and then a round number was picked near it:
> >> > ~64kiB * ~64 ~= 8MiB
> >> >
> >> > So, I'm not sure if this change is necessary - if it really is, we
> >> > need a clearer analysis of why.
> >> 
> >> Because pkt_buf is now going to be the buffer where vhost guest->pasta
> >> data but with the added size of the virtio_net_hdr_mrg_rxbuf for every
> >> frame. So this is accounting for the worst case where the guest wants to
> >> send a full 128 frames at maximum size at a time.
> >
> > Right, but that's not enough.  AFAICT pkt_buf is sized to allow
> > *roughly* 128 full packets, but it doesn't strictly have to be able to
> > contain that many.  If there's a reason it *must* have room for 128
> > full frames with vhost-kernel, that needs to be pointed out
> > explicitly.
> 
> Are you saying the size is not enough or the explanation is not ?

Sorry, I meant the explanation.

> Also no, there's no explicit reason why it needs to have that many
> packets in vhost-kernel. I saw that this was how pkt_buf was sized
> before the vhost-kernel changes so i only added acounting for the virtio
> net header

Right, that's the point I'm making.  I think having an aligned size
fot the whole buffer is probably more valuable than being able to
contain exactly 128 frames.

> >> >> +#define VHOST_NDESCS (PKT_BUF_BYTES / 65520)
> >> >
> >> > I'm not sure 65520 is the right number here.  That's the max MTU at
> >> > the IP level, but the packet buffer will also hold the 14 byte L2
> >> > header.  I think you probably want one of the L2_MAX_LEN_* constants
> >> > (or to define a new one for vhost-kernel).
> >> 
> >> My line of reasoning here is that "we typically expect, in the majority
> >> of cases for an ethernet frame to span a single descriptor". evident by
> >> how we eventually consume descriptors as we return the pointer into the
> >> pkt_buf past the virtio_net header as the beginning of an ethernet
> >> header. and this buffer should handle 128 frames (from the definition 
> >> of PKT_BUF_BYTES) and so we want a denominator that yields a value as
> >> close as possible to 128. Let me know if this isn't very sound. I will
> >> investiagate the constants you mentioned anyways
> >
> > If the fundamental property you want is that you can fit 128
> > descriptors, then you should just define NDESCS as 128, and derive the
> > buffer size and other things from that.  If the basic property you
> > want is something else, define that first and the rest in terms of it.
> 
> Fair enough, can do that 
> 

-- 
David Gibson (he or they)	| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you, not the other way
				| around.
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2026-08-17  0:39 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-02 13:21 [RFC v3 0/8] Add vhost-net kernel support to pasta Ammar Yasser
2026-08-02 13:21 ` [RFC v3 1/8] tap: Move the tap_hdr file to a separate file Ammar Yasser
2026-08-07  5:40   ` David Gibson
2026-08-02 13:21 ` [RFC v3 2/8] udp,tcp: Make protocol specific buffers public Ammar Yasser
2026-08-07  5:56   ` David Gibson
2026-08-12 16:29     ` Ammar Yasser
2026-08-02 13:21 ` [RFC v3 3/8] conf: Add context fields, epoll types and the --vhost flag to pasta Ammar Yasser
2026-08-10  1:11   ` David Gibson
2026-08-12 16:36     ` Ammar Yasser
2026-08-02 13:21 ` [RFC v3 4/8] virtio: Define the pasta vhost interface Ammar Yasser
2026-08-10  2:06   ` David Gibson
2026-08-12 17:17     ` Ammar Yasser
2026-08-13  1:16       ` David Gibson
2026-08-16 17:39         ` Ammar Yasser
2026-08-17  0:30           ` David Gibson [this message]
2026-08-02 13:21 ` [RFC v3 5/8] virtio: Implement the pasta vhost functions Ammar Yasser
2026-08-10  6:34   ` David Gibson
2026-08-12 17:57     ` Ammar Yasser
2026-08-13  1:26       ` David Gibson
2026-08-16 17:48         ` Ammar Yasser
2026-08-02 13:21 ` [RFC v3 6/8] virtio: Implement pasta vhost acceleration guest->pasta path Ammar Yasser
2026-08-10  7:34   ` David Gibson
2026-08-12 18:17     ` Ammar Yasser
2026-08-13  1:35       ` David Gibson
2026-08-02 13:21 ` [RFC v3 7/8] pasta: Implement pasta vhost TX (pasta->guest) prerequisites Ammar Yasser
2026-08-10  9:01   ` David Gibson
2026-08-12 18:39     ` Ammar Yasser
2026-08-13  2:01       ` David Gibson
2026-08-16 17:55         ` Ammar Yasser
2026-08-02 13:21 ` [RFC v3 8/8] tap: Implement pasta vhost TX Ammar Yasser
2026-08-10  9:18   ` David Gibson
2026-08-12 18:45     ` Ammar Yasser
2026-08-13  2:09       ` David Gibson

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=aoJWKqHmFeYBEWZe@zatzit \
    --to=david@gibson.dropbear.id.au \
    --cc=aerosound161@gmail.com \
    --cc=eperezma@redhat.com \
    --cc=passt-dev@passt.top \
    /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).