David S. Miller wrote:
From: Thomas Graf <[EMAIL PROTECTED]>
Date: Tue, 23 Aug 2005 19:00:54 +0200
Setting txqlen of the device to 2*MAX_CHAINLEN should be sufficient
in most cases. We'd probably have to modify the kick/watchdog a bit
to actually get the packets out faster because the enqueue()s would
happen less frequently, would have to look into this.
Oh yes, that's the other problem with this idea.
Currently NETIF_F_SG drivers do not wake up the TX queue
until MAX_SKB_FRAGS descriptors are ready, now they'll
have to defer until (N * MAX_SKB_FRAGS) are available.
And even for a low value of "N" like 3 this is a whopping _54_ TX
descriptors on 4K PAGE_SIZE platforms. Heck, many drivers do not come
up with that many TX descriptors available, in total!
And it's unthinkable to put this TX queue emptyness knowledge
into the generic queueing layer. Poor man's TSO is definitely
not worth this.
Would it help to have a call-back, perhaps triggered by the
netif_wake_queue method in netdevice.h?
This helped me get another 30% of traffic out of my application
on realtek NICs (with a pitiful 4 packet transmit queue).
Threads trying to write to the adapter could register themselves
as interested in the callbacks when the write fails due to tx buffer
full, for instance.
Ben
--
Ben Greear <[EMAIL PROTECTED]>
Candela Technologies Inc http://www.candelatech.com
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html