vBulletin Search Engine Optimization
| |||||||
| Register | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| 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. |