From OpenBSD, rev 1.72:
In nfe_start() do a fast return if IFF_OACTIVE is set, in this case we need a Tx interrupt to clean up the DMA ring before if_start can be properly called.
This commit is contained in:
parent
d32ed98975
commit
5b396aa2c0
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: if_nfe.c,v 1.17 2007/09/01 07:32:30 dyoung Exp $ */
|
||||
/* $NetBSD: if_nfe.c,v 1.18 2007/09/24 13:11:08 cube Exp $ */
|
||||
/* $OpenBSD: if_nfe.c,v 1.52 2006/03/02 09:04:00 jsg Exp $ */
|
||||
|
||||
/*-
|
||||
@ -21,7 +21,7 @@
|
||||
/* Driver for NVIDIA nForce MCP Fast Ethernet and Gigabit Ethernet */
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: if_nfe.c,v 1.17 2007/09/01 07:32:30 dyoung Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: if_nfe.c,v 1.18 2007/09/24 13:11:08 cube Exp $");
|
||||
|
||||
#include "opt_inet.h"
|
||||
#include "bpfilter.h"
|
||||
@ -1090,6 +1090,9 @@ nfe_start(struct ifnet *ifp)
|
||||
int old = sc->txq.queued;
|
||||
struct mbuf *m0;
|
||||
|
||||
if ((ifp->if_flags & (IFF_OACTIVE | IFF_RUNNING)) != IFF_RUNNING)
|
||||
return;
|
||||
|
||||
for (;;) {
|
||||
IFQ_POLL(&ifp->if_snd, m0);
|
||||
if (m0 == NULL)
|
||||
|
Loading…
Reference in New Issue
Block a user