Ok, here you go; the explanation is below. This is from net-2.6.24 of early this AM. I saw a patch you posted that is derived from Krishna; although it hasnt showed up in the tree - i have considered those changes and this patch adds a little more optimization in case of errors. I will send you a patch to kill LLTX the sooner this shows up somewhere. cheers, jamal On Wed, 2007-03-10 at 09:18 -0400, jamal wrote: > The cleanup is to break up the code so it is functionally more readable > from a perspective of the 4 distinct parts in ->hard_start_xmit(): > > a) packet formatting (example: vlan, mss, descriptor counting, etc.) > b) chip-specific formatting > c) enqueueing the packet on a DMA ring > d) IO operations to complete packet transmit, tell DMA engine to chew > on, tx completion interrupts, set last tx time, etc. > > Each of those steps sitting in different functions accumulates state > that is used in the next steps. cb stores this state because it a > scratchpad the driver owns. You could create some other structure and > pass it around the iteration, but why waste more bytes.