]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Move xl_reset() to xl_init_locked(). This will make driver
authorPyun YongHyeon <yongari@FreeBSD.org>
Mon, 23 Aug 2010 18:51:31 +0000 (18:51 +0000)
committerPyun YongHyeon <yongari@FreeBSD.org>
Mon, 23 Aug 2010 18:51:31 +0000 (18:51 +0000)
commitac681091791454cb975c64d553904a95cdff65da
tree009db2044ff03308e264f6b1c86c1c8757397f5e
parentde563149f58a4cdad8a5493b7d9a6a0ac415d1b1
Move xl_reset() to xl_init_locked(). This will make driver
initialize controller from a known good state. Previously driver
used to issue controller reset while TX/RX DMA are in progress.
I guess resetting controller in active TX/RX DMA cycle is to ensure
stopping I/Os in xl_shutdown(). I remember some buggy controllers
didn't respond with stop command if controller is under high
network load at the time of shutdown so resetting controller was
the only safe way to stop the I/Os. However, from my experiments,
controller always responded with stop command under high network
load so I think it's okay to remove the xl_reset() in
device_shutdown handler.
Resetting controller also will clear configured RX filter which
in turn will make WOL support hard because driver have to reprogram
RX filter in WOL handler as well as setting station address.
sys/dev/xl/if_xl.c