Re: [PATCH] virtio-net: introduce TSO limit feature
Jason Wang <[email protected]> Thu, 16 Oct 2025 14:22:53 +0800
| Newsgroups | dev.linux.lists.virtio-comment |
|---|---|
| Message-ID | <CACGkMEtJUhH2CTbUfF08=tv0kQGZa3R_KdvwyXZKtxDWgVsHPg@mail.gmail.com> |
On Thu, Oct 16, 2025 at 2:19 PM Michael S. Tsirkin <[email protected]> wrote: > > On Thu, Oct 16, 2025 at 01:46:58PM +0800, Jason Wang wrote: > > On Wed, Oct 15, 2025 at 3:02 PM Michael S. Tsirkin <[email protected]> wrote: > > > > > > On Wed, Oct 15, 2025 at 12:29:13PM +0800, Jason Wang wrote: > > > > On Tue, Oct 14, 2025 at 4:59 PM Michael S. Tsirkin <[email protected]> wrote: > > > > > > > > > > thanks for the patch! yet something to improve. > > > > > I note issues only when encountered 1st time but please > > > > > do go and check all patch for each issue. > > > > > > > > > > > > > > > On Tue, Oct 14, 2025 at 12:22:43PM +0800, Jason Wang wrote: > > > > > > This patch introduces TSO limit feature which allows the device to > > > > > > advertise: > > > > > > > > > > > > - Maximum TCP length of a TSO packet or inner TSO packet when UDP > > > > > > tunnel is support > > > > > > - Maximum number of segment that can be produced by the device after > > > > > > segmentation of TSO or inner TSO packet of a UDP tunnel > > > > > > > > > > > > This is a must to implement TCP jumbogram, as networking stack needs > > > > > > to know the limitation of the device in order to produce TSO packet as > > > > > > large as possible. > > > > > > > > > Maybe you can provide an overview of how this all is used? > > > > Sure, this feature does not implement BIG TCP (jumbogram) itself. BIG > > TCP requires a little bit more to be implemented: > > > > 1) new gso_type for jumbogram > > 2) when TCP length exceeds 64K, we should mandate ip->tot_len to be > > zero and device can judge from the length of the buffer > > 3) other stuffs > > > > I guess this is something that Viet wants to work on. > > > > But before BIG TCP, the driver needs to know the device limitation of > > TSO packets. That is what this patch did. BIG TCP is not the only > > user, it could be used in the software datapath as well. Consider a > > simple datapath: > > > > virtio-net -> TAP -> bridge -> eth0 > > > > If eth0's tso_max_size is less than 64K, we need to advertise this to > > virtio-net otherwise 64K gso packets will be segmented by software run > > xmit in eth0. We've encountered this in collaboration with mana and > > virtio-net/vhost. > > > Wait a second this does not make any sense. Bridge disables tso, > it only works with gso. > I don't understand here, we have used similar setups for a very long time and TSO works well? Maybe my statement is not clear enough, I meant the forwarding path of the bridge. > > So what is the actual motivation? Thanks > > > > I am looking at tcp_fragment and I just do not see > > > where it looks at any device limits. > > > > > > > It works like a device advertising tso_max_size/segs, and it is capped > > by gso_max_size/segs. The gso_max_size/segs were the ones that are > > used by the stack to determine the skb->len. > > > > Thanks > > > > > -- > > > MST > > > >