diff options
author | yongari <yongari@FreeBSD.org> | 2011-05-07 00:18:58 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2011-05-07 00:18:58 +0000 |
commit | 3a014bc50fc152226a313ec5ce203034b68f1d96 (patch) | |
tree | ce3997a835fb4e045a7d297f0b3ab64731fcb86a /sys/dev/xl | |
parent | 091c72cf13ccb4e7622eded8e54e781bf5832119 (diff) | |
download | FreeBSD-src-3a014bc50fc152226a313ec5ce203034b68f1d96.zip FreeBSD-src-3a014bc50fc152226a313ec5ce203034b68f1d96.tar.gz |
Rearm watchdog timer if driver kick controller to recover from TX
underrun error.
While here, prepend 0x to status code to show TX status is hex
number.
Diffstat (limited to 'sys/dev/xl')
-rw-r--r-- | sys/dev/xl/if_xl.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/dev/xl/if_xl.c b/sys/dev/xl/if_xl.c index a63a314..03a7114 100644 --- a/sys/dev/xl/if_xl.c +++ b/sys/dev/xl/if_xl.c @@ -2207,7 +2207,7 @@ xl_txeoc(struct xl_softc *sc) txstat & XL_TXSTATUS_JABBER || txstat & XL_TXSTATUS_RECLAIM) { device_printf(sc->xl_dev, - "transmission error: %x\n", txstat); + "transmission error: 0x%02x\n", txstat); CSR_WRITE_2(sc, XL_COMMAND, XL_CMD_TX_RESET); xl_wait(sc); if (sc->xl_type == XL_TYPE_905B) { @@ -2220,11 +2220,14 @@ xl_txeoc(struct xl_softc *sc) CSR_WRITE_4(sc, XL_DOWNLIST_PTR, c->xl_phys); CSR_WRITE_1(sc, XL_DOWN_POLL, 64); + sc->xl_wdog_timer = 5; } } else { - if (sc->xl_cdata.xl_tx_head != NULL) + if (sc->xl_cdata.xl_tx_head != NULL) { CSR_WRITE_4(sc, XL_DOWNLIST_PTR, sc->xl_cdata.xl_tx_head->xl_phys); + sc->xl_wdog_timer = 5; + } } /* * Remember to set this for the |