diff options
author | wpaul <wpaul@FreeBSD.org> | 2001-07-27 20:55:45 +0000 |
---|---|---|
committer | wpaul <wpaul@FreeBSD.org> | 2001-07-27 20:55:45 +0000 |
commit | 7e27c49b6de1aac4731b453c0d80b7002dd58bf0 (patch) | |
tree | 0939c7086ad879d018878cc8dafa4eb87b27759a /sys/pci/if_xl.c | |
parent | 9de891930762ed273b0beb8cdfd049cc6f0f5911 (diff) | |
download | FreeBSD-src-7e27c49b6de1aac4731b453c0d80b7002dd58bf0.zip FreeBSD-src-7e27c49b6de1aac4731b453c0d80b7002dd58bf0.tar.gz |
Pacify users who get all bent out of shape when they see the "xl%d: command
never completed" message. The RX reset takes longer complete than it
used to, a lot longer in fact than xl_wait() is prepared to wait.
When we do the RX reset in xl_reset(), this cases xl_wait() to time out
and whine. We wait a little extra time now after the RX reset, which
should silence the warning.
Thanks to obrien for finally getting me a box with a NIC that
causes this problem for me to tinker with.
Diffstat (limited to 'sys/pci/if_xl.c')
-rw-r--r-- | sys/pci/if_xl.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/pci/if_xl.c b/sys/pci/if_xl.c index 06c4423..76fdc2f 100644 --- a/sys/pci/if_xl.c +++ b/sys/pci/if_xl.c @@ -1033,10 +1033,15 @@ static void xl_reset(sc) if (i == XL_TIMEOUT) printf("xl%d: reset didn't complete\n", sc->xl_unit); - DELAY(100000); - /* Reset TX and RX. */ + /* Note: the RX reset takes an absurd amount of time + * on newer versions of the Tornado chips such as those + * on the 3c905CX and newer 3c908C cards. We wait an + * extra amount of time so that xl_wait() doesn't complain + * and annoy the users. + */ CSR_WRITE_2(sc, XL_COMMAND, XL_CMD_RX_RESET); + DELAY(100000); xl_wait(sc); CSR_WRITE_2(sc, XL_COMMAND, XL_CMD_TX_RESET); xl_wait(sc); |