public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
From: Stefano Brivio <sbrivio@redhat.com>
To: Laurent Vivier <lvivier@redhat.com>
Cc: David Gibson <david@gibson.dropbear.id.au>, passt-dev@passt.top
Subject: Re: [PATCH v8 7/8] vhost-user: add vhost-user
Date: Wed, 16 Oct 2024 18:26:33 +0200	[thread overview]
Message-ID: <20241016182633.659b4933@elisabeth> (raw)
In-Reply-To: <45e1f806-7516-41df-a11f-028516bfd513@redhat.com>

On Wed, 16 Oct 2024 12:07:21 +0200
Laurent Vivier <lvivier@redhat.com> wrote:

> On 15/10/2024 05:23, David Gibson wrote:
> >> +/**
> >> + * tcp_vu_update_check() - Calculate TCP checksum
> >> + * @tapside:	Address information for one side of the flow
> >> + * @iov:	Pointer to the array of IO vectors
> >> + * @iov_used:	Length of the array
> >> + */
> >> +static void tcp_vu_update_check(const struct flowside *tapside,
> >> +			        struct iovec *iov, int iov_used)  
> > AFAICT this is only used for the pcap path.  Rather than filling in
> > the checksum at a different point from normal, I think it would be
> > easier to just clear the no_tcp_csum flag when pcap is enabled.  That
> > would, AFAICT, remove the need for this function entirely.  
> 
> To do that is a little bit complicated because we need to pass the iov array to 
> tcp_fill_headers4()/tcp_fill_headers6() to be able to compute the checksum of the TCP part.
> 
> In tcp_buf, the TCP header and TCP payload are in the same iovec but with tcp_vu they can 
> be split on several iovecs. And if we provide the iovec , theoretically we should not 
> provide the TAP, IP and TCP headers via the parameters as they are in the iovec, but for 
> tcp_buf they have one iovec each, and with tcp_vu they are probably all in the same iovec 
> (the first one). So, again, it can be complicated to extract headers to update them.
> 
> In conclusion, I update the checksum only for VU and in the case of pcap because it is 
> simpler (the same logic applies for udp_update_hdr4()/udp_update_hdr6()).
> 
> I'm open to any suggestion that could do the checksum in 
> udp_update_hdr4()/udp_update_hdr6() (I agree with you, it should be the place to do it) 
> but I don't see an easy and nice way to implement it.

I don't really have a suggestion here, but this is probably the first
use case we met where switching to the pcapng format would make sense,
as we could just mark the checksum as "offloaded" in this case:

  https://ietf-opsawg-wg.github.io/draft-ietf-opsawg-pcap/draft-ietf-opsawg-pcapng.html#section-4.3.1 

On the other hand, it comes with a lot of complexity in my opinion so I
still think that it wouldn't make sense in general.

-- 
Stefano


  reply	other threads:[~2024-10-16 16:26 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-10 12:28 [PATCH v8 0/8] Add vhost-user support to passt. (part 3) Laurent Vivier
2024-10-10 12:28 ` [PATCH v8 1/8] packet: replace struct desc by struct iovec Laurent Vivier
2024-10-10 12:28 ` [PATCH v8 2/8] vhost-user: introduce virtio API Laurent Vivier
2024-10-10 12:28 ` [PATCH v8 3/8] vhost-user: introduce vhost-user API Laurent Vivier
2024-10-10 12:28 ` [PATCH v8 4/8] udp: Prepare udp.c to be shared with vhost-user Laurent Vivier
2024-10-14  4:29   ` David Gibson
2024-10-10 12:28 ` [PATCH v8 5/8] tcp: Export headers functions Laurent Vivier
2024-10-14  4:29   ` David Gibson
2024-10-10 12:29 ` [PATCH v8 6/8] passt: rename tap_sock_init() to tap_backend_init() Laurent Vivier
2024-10-14  4:30   ` David Gibson
2024-10-14 22:38   ` Stefano Brivio
2024-10-10 12:29 ` [PATCH v8 7/8] vhost-user: add vhost-user Laurent Vivier
2024-10-15  3:23   ` David Gibson
2024-10-16 10:07     ` Laurent Vivier
2024-10-16 16:26       ` Stefano Brivio [this message]
2024-10-15 19:54   ` Stefano Brivio
2024-10-16  0:41     ` David Gibson
2024-10-17  0:10       ` Stefano Brivio
2024-10-17 11:25         ` Stefano Brivio
2024-10-17 11:54           ` Laurent Vivier
2024-10-17 17:18           ` Laurent Vivier
2024-10-17 17:25             ` Laurent Vivier
2024-10-17 17:33             ` Stefano Brivio
2024-10-17 21:21               ` Stefano Brivio
2024-10-22 12:59         ` Laurent Vivier
2024-10-22 13:19           ` Stefano Brivio
2024-10-22 18:19             ` Stefano Brivio
2024-10-22 18:22               ` Stefano Brivio
2024-10-23 15:27           ` Laurent Vivier
2024-10-23 16:23             ` Stefano Brivio
2024-10-17  0:10   ` Stefano Brivio
2024-10-17  7:28     ` Laurent Vivier
2024-10-17  8:33       ` Stefano Brivio
2024-11-14 10:20     ` Laurent Vivier
2024-11-14 14:23       ` Stefano Brivio
2024-11-14 15:16         ` Laurent Vivier
2024-11-14 15:38           ` Stefano Brivio
2024-11-14 10:23     ` Laurent Vivier
2024-11-14 14:23       ` Stefano Brivio
2024-11-15  8:30         ` Laurent Vivier
2024-11-15 10:08           ` Stefano Brivio
2024-11-14 10:29     ` Laurent Vivier
2024-11-14 14:23       ` Stefano Brivio
2024-11-15 11:13         ` Laurent Vivier
2024-11-15 11:23           ` Stefano Brivio
2024-10-10 12:29 ` [PATCH v8 8/8] test: Add tests for passt in vhost-user mode Laurent Vivier
2024-10-15  3:40   ` David Gibson
2024-10-15 19:54   ` Stefano Brivio
2024-10-16  8:06     ` Laurent Vivier
2024-10-16  9:47       ` 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=20241016182633.659b4933@elisabeth \
    --to=sbrivio@redhat.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=lvivier@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).