cvs commit: src/sys/dev/sk if_sk.c
yongari at FreeBSD.org
Wed Jun 7 10:00:44 UTC 2006
yongari 2006-06-07 09:05:20 UTC
FreeBSD src repository
Fix watchdog timeout errors seen on a few systems.
SK-NET GENESIS document says reading SK_ISSR should stop generating
further interrupts(Since we drop a driver lock before invoking
ifp->if_input handler we should disable interrupts in ISR in order
to protect integrity of softc from subsequent interrupts). But it
seems that there is possibility of loosing interrupts between
reading SK_ISSR and determining which interrupts are reported.
To cope with the situation we continuously read SK_ISSR register
until there are no interrupts. However, it seems that the above
work around doesn't fix all cases. To protect watchdog handler
from triggering false alarm add a work around code which try to
reclaim pending Tx descriptors before resetting hardware. This
should fix occasional watchdog timeout errors seen on this driver.
Reported by: Frank Behrens <frank AT pinky dot sax dot de >
Tested by: Frank Behrens <frank AT pinky dot sax dot de >
Revision Changes Path
1.125 +13 -6 src/sys/dev/sk/if_sk.c
More information about the cvs-src