assembly of packets

Craig Jackson cjackson at
Mon Jun 3 12:15:48 EDT 2013

In my experience, the second paragraph isn't quite true. What you see with TSO is the pre-segmentation "packet", up to 65k. (By this I mean the set of data which is given to the offload hardware to segment.) So you need to make sure that your "-s" value is big enough to see everything.

(Speaking as someone who was bitten by bugs in the early versions of TSO.)


-----Original Message-----
From: at [ at] On Behalf Of Valdis.Kletnieks at
Sent: Monday, June 03, 2013 12:03 PM
To: Varun Sharma
Cc: kernelnewbies at
Subject: Re: assembly of packets

On Mon, 03 Jun 2013 14:48:41 +0530, Varun Sharma said:

> If TSO(tcp segmentation offload ) is enabled then nic card handle 
> segmentation then where is assembly of packets happens ? Is it 
> tcp_rcv_established function ?

The whole *point* of TSO is so the NIC does all the segmentation reassembly and DMA, and wake the kernel up when all the data is already stashed in buffers fully processed.

Incidentally, this is why if you run tcpdump on an interface that has TSO enabled, you'll only see the first 3 handshaking packets and the final FIN packets - the other packets wake up the TCP stack at a point after where tcpdump's tap would have seen the packet.

More information about the Kernelnewbies mailing list