David Miller [off-list ref] 07/03/2012 07:11 AM
quoted
quoted
As per your comments, TX ring full is not expected behavior? All I
can think of increasing the TX queue to 1024 and clean-up in timer
instead of interrupt?
Your transmit function should never be invoked when the queue is
full, logic elsewhere in your driver should have stopped the queue
therefore preventing further invocations of your transmit function
until you wake the queue when space is liberated in the TX ring.
BTW, did it even occur to you that there is a kernel log message here
in this code path for a reason?
That log message is there because this event is unexpected and a
driver error.
Correctly coded drivers check for this condition:
"atomic_read(&tx_ring->tx_count) < 2" (without the
unlikely) once again at the end of the xmit and stop
the queue if required. Also, the message should be changed
to show that reaching here is an error.
thanks,
- KK