On a transmit FIFO overflow (err, actually an underflow...) reset
both the transmit & receive sections of the MAC.
This commit is contained in:
parent
ce34305905
commit
830e4be4c8
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user