Messages in this thread | | | Date | Mon, 28 Feb 2000 23:03:07 +1100 | From | "Andrew Morton" <> | Subject | netif_wake_queue() question |
| |
Please check my sanity here:
Jamal's softnet migration doc says that "If a device sets XOFF (due to a call to netif_stop_queue(), it MUST call netif_wake_queue at some point later".
Fair enough, but I believe this should generally happen within the Tx completion ISR, not within the device's hard_start_xmit() method. Correct?
If you call netif_wake_queue() within the hard_start_xmit() handler and if you have another skb queued then your hard_start_xmit() handler will be called again really soon by the softirq stuff (at the exit from the next irq, syscall or exception handler), often before the current packet has been sent. Your driver may well choke on this. Also correct?
If I'm sane then a number of existing drivers may not be. The following drivers call netif_wake_queue() within their hard_start_xmit() and may need looking at:
* 3c527.c * cs89x0.c (my current problem) * possibly eepro.c * fmv18x.c * ni5010.c * ni52.c * ni65.c * skeleton.c (!) * smc9194.c
and many others.
- akpm
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |