Re: using software TSO on non-TSO capable netdevices
From: David Miller <davem@davemloft.net>
Date: 2008-08-07 22:44:53
From: Rick Jones <redacted> Date: Thu, 07 Aug 2008 13:32:05 -0700
David Miller wrote:quoted
So I had this idea. My goal is to minimize the number of DMA mappings the driver has to make. We don't touch anything in the original TSO skb. However we expand the headroom (if necessary) and in the area in front of skb->data we build the header areas for the sub-TSO frames, one by one. We give the driver some iterator functions that walk through the header areas and compute offset/length pairs into the skb_shared_info() page list.Is that like Solaris Multi Data Transmit?
No, it's slightly different. Solaris just accumulates a list of packets and gives them all to the device at once. It doesn't do anything interesting to optimize the DMA mappings or anything clever like we'll be doing here. Here, the TCP stack will be working with TSO frames, which cuts down per-packet overhead and whatnot. Solaris works with just normal MSS sized frames when it does it's batching thing. And that's all it is, batching.