public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: Stefano Brivio <sbrivio@redhat.com>
Cc: Laurent Vivier <lvivier@redhat.com>, passt-dev@passt.top
Subject: Re: [PATCH 1/7] tcp: Pass TCP header and payload separately to tcp_update_check_tcp[46]()
Date: Tue, 29 Oct 2024 14:02:25 +1100	[thread overview]
Message-ID: <ZyBQQYseKGS7mr11@zatzit> (raw)
In-Reply-To: <20241028194254.71df8d2f@elisabeth>

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

On Mon, Oct 28, 2024 at 07:42:54PM +0100, Stefano Brivio wrote:
> On Mon, 28 Oct 2024 20:40:44 +1100
> David Gibson <david@gibson.dropbear.id.au> wrote:
> 
> > Currently these expects both the TCP header and payload in a single IOV,
> > and goes to some trouble to locate the checksum field within it.  In the
> > current caller we've already know where the TCP header is, so we might as
> > well just pass it in.  This will need to work a bit differently for
> > vhost-user, but that code already needs to locate the TCP header for other
> > reasons, so again we can just pass it in.
> 
> We couldn't do this, and also what you're now doing in 5/7, because
> with vhost-user the TCP header is not aligned, so we can't pass it
> around as a pointer, see:
> 
>   <ZeUpxEY-sn64NLE5@zatzit>
>   https://archives.passt.top/passt-dev/ZeUpxEY-sn64NLE5@zatzit/
> 
> and following. That one is about IP headers, but the same applies to
> TCP and UDP headers.

Hrm.  I'm aware it theoretically need not be aligned, but I thought it
was in practice.. and that we were already relying on that.

In fact, I'm pretty sure the second part is true, although more subtly
than here.  v8 of the vhost-user patches calls tcp_fill_headers[46]()
with the bp parameter set to the offset of the TCP header.  If
creating a tcphdr * there is a problem, then creating a tcp_payload_t
* can't be any better.

> Of course the current solution is not elegant and it would be nice to
> find another way to deal with it, but we couldn't come up with anything
> better back then.
> 
> The rest of the series looks good to me, but I'm afraid that without
> this one and 5/7 the other changes will be a bit more complicated to
> implement (if at all possible).

Definitely.  I have so ideas for approaches more robust to
misalignment, but they're substantially more complicated.  I was
hoping we could avoid it at least for now.

-- 
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:[~2024-10-29  4:02 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-28  9:40 [PATCH 0/7] Rework some IOV handling in TCP code David Gibson
2024-10-28  9:40 ` [PATCH 1/7] tcp: Pass TCP header and payload separately to tcp_update_check_tcp[46]() David Gibson
2024-10-28 18:42   ` Stefano Brivio
2024-10-29  3:02     ` David Gibson [this message]
2024-10-29  4:07       ` David Gibson
2024-10-29  9:09         ` Stefano Brivio
2024-10-29  9:26           ` David Gibson
2024-10-29 10:32             ` Stefano Brivio
2024-10-28  9:40 ` [PATCH 2/7] tcp: Move tcp_l2_buf_fill_headers() to tcp_buf.c David Gibson
2024-10-28  9:40 ` [PATCH 3/7] tcp: Rework tcp_l2_buf_fill_headers() into tcp_buf_make_frame() David Gibson
2024-10-28  9:40 ` [PATCH 4/7] tcp: Don't use return value from tcp_fill_headers[46] to adjust iov_len David Gibson
2024-10-28  9:40 ` [PATCH 5/7] tcp: Pass TCP header and payload separately to tcp_fill_headers[46]() David Gibson
2024-10-28  9:40 ` [PATCH 6/7] tcp: Merge tcp_update_check_tcp[46]() David Gibson
2024-10-28  9:40 ` [PATCH 7/7] tcp: Fold tcp_update_csum() into tcp_fill_header() 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=ZyBQQYseKGS7mr11@zatzit \
    --to=david@gibson.dropbear.id.au \
    --cc=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).