Thread (13 messages) 13 messages, 5 authors, 2004-08-22

Re: [RFR] gianfar ethernet driver

From: Jeff Garzik <hidden>
Date: 2004-07-07 03:29:13

Possibly related (same subject, not in this thread)

On Tue, Jul 06, 2004 at 11:18:02PM -0400, jamal wrote:
You dont return a 1 anywhere.
That OK in one model.

Heres what i mean (substitute your code):
if no more descriptors
netif_stop_queue(dev)
unlock
return 1
process packet and stash on ring
return 0
When you are not dealing with fragments, the most optimal model
eliminates the overflow case completely, so your ->hard_start_xmit looks
like

	lock
	queue packet to DMA ring
	if (DMA ring full)
		netif_stop_queue()
	unlock

	return 0

If you can be sure -- by design -- that room is always available when
the queue is not stopped, then that's fine.

With fragments, you cannot be sure of this, if you do not wish to
reserve MY_HW_MAX_FRAGMENTS slots on the DMA.  Such a case would require
moving the "if no more descriptors" check up, and returning 1 when the
ring is empty.

But ideally, you should write the driver where such a condition does not
occur at all.

	Jeff
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help