| gem(4) diff needs testing |
|
 |
|
 |
|
 |
|
 |
Group: mailing.openbsd.tech · Group Profile
Author: BradBrad Date: May 9, 2008 15:55
The following diff fixes the gem(4) driver to properly set and clear
the IFF_OACTIVE flag as appropriate to indicate to the upper layer
that the adapter has run out of TX descriptors.
Please test with any gem(4) adapters.
Index: gem.c
===================================================================
RCS file: /cvs/src/sys/dev/ic/gem.c,v
retrieving revision 1.73
diff -u -p -r1.73 gem.c
--- gem.c 10 Feb 2008 16:54:23 -0000 1.73
+++ gem.c 1 Apr 2008 21:32:46 -0000
@@ -807,7 +807,6 @@ gem_init(struct ifnet *ifp)
ifp->if_flags |= IFF_RUNNING;
ifp->if_flags &= ~IFF_OACTIVE;
- ifp->if_timer = 0;
splx(s);
return (0);
@@ -1667,11 +1666,13 @@ gem_tint(struct gem_softc *sc, u_int32_t
}
sc->sc_tx_cons = cons;
- gem_start(ifp);
-
+ if (sc->sc_tx_cnt < GEM_NTXDESC - 2)
+ ifp->if_flags &= ~IFF_OACTIVE;
if (sc->sc_tx_cnt == 0)
ifp->if_timer = 0;
+ gem_start(ifp);
+
return (1);
}
@@ -1705,7 +1706,7 @@ gem_start(struct ifnet *ifp)
* or fail...
*/
if (gem_encap(sc, m, &bix)) {
- ifp->if_timer = 2;
+ ifp->if_flags |= IFF_OACTIVE;
break;
}
--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
|