summaryrefslogtreecommitdiffstats
path: root/sys/pci/if_xl.c
diff options
context:
space:
mode:
authorwpaul <wpaul@FreeBSD.org>2001-07-27 20:55:45 +0000
committerwpaul <wpaul@FreeBSD.org>2001-07-27 20:55:45 +0000
commit7e27c49b6de1aac4731b453c0d80b7002dd58bf0 (patch)
tree0939c7086ad879d018878cc8dafa4eb87b27759a /sys/pci/if_xl.c
parent9de891930762ed273b0beb8cdfd049cc6f0f5911 (diff)
downloadFreeBSD-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.c9
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);
OpenPOWER on IntegriCloud