On Wed, 6 Dec 2006, Bruce Evans wrote:
On Wed, 6 Dec 2006, Marius Strobl wrote:
...
While at it relax the watchdog a bit by reloading it in xl_txeof()/
xl_txeof_90xB() if there are still packets enqueued.
Er, xl_txeof_90xB() was one of the 20-30% of txeof() routines that
handled this correctly. The timeout shouldn't be touched in xx_txeof()
except to clear it when all descriptors have been handled.
...
xl_txeof_90xB() now reloads the timeout without checking anything
except that there are still some unhandled descriptors. ISTR that
this bug has been fixed in a few drivers, mainly ones that support
DEVICE_POLLING. Grepping for "0 : 5" shows the bug in the following
drivers: dc, pcn, sis, xl. All of these except pcn support
Reference for a previous fix: if_rl.c 1.134. This actually reloads
the timeout to 5 if it is 0 AND there is an unhandled tx descriptor.
I think this case shouldn't happen (the watchdog should have handled
it), and if it does it should be handled by resetting. Maybe it only
happened due to the race decrementing if_timer.
Bruce
_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"