On a transmit FIFO overflow (err, actually an underflow...) reset

both the transmit & receive sections of the MAC.
This commit is contained in:
dyoung 2005-12-13 05:07:14 +00:00
parent ce34305905
commit 830e4be4c8

View File

@ -1,4 +1,4 @@
/* $NetBSD: rtw.c,v 1.58 2005/11/23 04:12:33 dyoung Exp $ */ /* $NetBSD: rtw.c,v 1.59 2005/12/13 05:07:14 dyoung Exp $ */
/*- /*-
* Copyright (c) 2004, 2005 David Young. All rights reserved. * Copyright (c) 2004, 2005 David Young. All rights reserved.
* *
@ -34,7 +34,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: rtw.c,v 1.58 2005/11/23 04:12:33 dyoung Exp $"); __KERNEL_RCSID(0, "$NetBSD: rtw.c,v 1.59 2005/12/13 05:07:14 dyoung Exp $");
#include "bpfilter.h" #include "bpfilter.h"
@ -2035,14 +2035,13 @@ rtw_intr_ioerror(struct rtw_softc *sc, uint16_t isr)
if ((isr & RTW_INTR_TXFOVW) != 0) { if ((isr & RTW_INTR_TXFOVW) != 0) {
printf("%s: tx fifo overflow\n", sc->sc_dev.dv_xname); printf("%s: tx fifo overflow\n", sc->sc_dev.dv_xname);
xmtr = 1; rcvr = xmtr = 1;
cr |= RTW_CR_TE; cr |= RTW_CR_TE | RTW_CR_RE;
} }
if ((isr & (RTW_INTR_RDU|RTW_INTR_RXFOVW)) != 0) { if ((isr & (RTW_INTR_RDU|RTW_INTR_RXFOVW)) != 0) {
cr = RTW_CR_RE; cr |= RTW_CR_RE;
rcvr = 1; rcvr = 1;
return;
} }
RTW_DPRINTF(RTW_DEBUG_BUGS, ("%s: restarting xmit/recv, isr %" PRIx16 RTW_DPRINTF(RTW_DEBUG_BUGS, ("%s: restarting xmit/recv, isr %" PRIx16