Thread (35 messages) 35 messages, 6 authors, 2008-09-12

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help