Re: 8139_tx_interrupt - Tx time

From: Zwane Mwaikambo
Date: Fri Oct 10 2003 - 13:57:49 EST


On Fri, 10 Oct 2003, Adam Flizikowski wrote:

> Hi,
>
> I am trying to find out how long it takes to push packet off the NIC in
> 8139_tx_interrupt(){} (kernel 2.4.20)
>
> but i don't know how to identify packet in this loop - i know that "entry"
> stands for the packet but in the loop underneath:
> /* code snippet for 8139_tx_interrupt(){}*/
>
> 1726 while (tx_left > 0) {
> 1727 int entry = dirty_tx % NUM_TX_DESC;
> 1728 int txstatus;
>
> ...
>
> 1762
> 1763 dirty_tx++;
> 1764 tx_left--; // <- is single packet sent just
> here??????
> 1765 }
>
> what "tx_left" and "dirty_tx" variables stand for? Is single iteration
> through the loop (lines 1726-1765) related to SINGLE packet transmission?

No, that simply checks tx status, the transmission is done elsewhere.

> I wanted to put some probes inside tx_interrupt but not sure where it should
> start/stop measuring to show single packet transmission time.

tx_interrupt is normally triggered on transmission completion, you
probably want to sample from;

rtl8139_start_xmit {
...
RTL_W32_F (TxStatus0 + (entry * sizeof (u32)),
tp->tx_flag | max(len, (unsigned int)ETH_ZLEN));
...
}

That is when the packet hits the hardware, you could keep per tx
descriptor start/end timestamps with end being in tx_interrupt.

Hope that gets you somewhere.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/