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.
|
||||
*
|
||||
|
@ -34,7 +34,7 @@
|
|||
*/
|
||||
|
||||
#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"
|
||||
|
||||
|
@ -2035,14 +2035,13 @@ rtw_intr_ioerror(struct rtw_softc *sc, uint16_t isr)
|
|||
|
||||
if ((isr & RTW_INTR_TXFOVW) != 0) {
|
||||
printf("%s: tx fifo overflow\n", sc->sc_dev.dv_xname);
|
||||
xmtr = 1;
|
||||
cr |= RTW_CR_TE;
|
||||
rcvr = xmtr = 1;
|
||||
cr |= RTW_CR_TE | RTW_CR_RE;
|
||||
}
|
||||
|
||||
if ((isr & (RTW_INTR_RDU|RTW_INTR_RXFOVW)) != 0) {
|
||||
cr = RTW_CR_RE;
|
||||
cr |= RTW_CR_RE;
|
||||
rcvr = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
RTW_DPRINTF(RTW_DEBUG_BUGS, ("%s: restarting xmit/recv, isr %" PRIx16
|
||||
|
|
Loading…
Reference in New Issue