| To: | jamal <hadi@xxxxxxxxxx> |
|---|---|
| Subject: | Re: [RFR] gianfar ethernet driver |
| From: | Jeff Garzik <jgarzik@xxxxxxxxx> |
| Date: | Tue, 6 Jul 2004 23:29:13 -0400 |
| Cc: | Andy Fleming <afleming@xxxxxxxxxxxxx>, Kumar Gala <kumar.gala@xxxxxxxxxxxxx>, netdev@xxxxxxxxxxx, dwmw2@xxxxxxxxxxxxx |
| In-reply-to: | <1089170282.1038.80.camel@xxxxxxxxxxxxxxxx> |
| References: | <C681B01E-CEA9-11D8-931F-000393DBC2E8@xxxxxxxxxxxxx> <89563A5C-CFAE-11D8-BA44-000393C30512@xxxxxxxxxxxxx> <1089170282.1038.80.camel@xxxxxxxxxxxxxxxx> |
| Sender: | netdev-bounce@xxxxxxxxxxx |
| User-agent: | Mutt/1.4.1i |
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
|
| Previous by Date: | Re: [PATCH] Add nl_open to libnetlink, Masahide NAKAMURA |
|---|---|
| Next by Date: | Re: [PATCH Linux-2.6.7-bk19] prism54 freq to channel incorrect for 5GHz, Jeff Garzik |
| Previous by Thread: | Re: [RFR] gianfar ethernet driver, jamal |
| Next by Thread: | Re: [RFR] gianfar ethernet driver, jamal |
| Indexes: | [Date] [Thread] [Top] [All Lists] |