From 7bc770a2546e8a5f93ee931634d4064b3b6e08f2 Mon Sep 17 00:00:00 2001 From: mlaier Date: Fri, 2 Jul 2004 12:16:02 +0000 Subject: Bring in the first chunk of altq driver modifications. This covers the following drivers: bfe(4), em(4), fxp(4), lnc(4), tun(4), de(4) rl(4), sis(4) and xl(4) More patches are pending on: http://peoples.freebsd.org/~mlaier/ Please take a look and tell me if "your" driver is missing, so I can fix this. Tested-by: many No-objection: -current, -net --- sys/dev/de/if_de.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'sys/dev/de') diff --git a/sys/dev/de/if_de.c b/sys/dev/de/if_de.c index a56f1b8..6c3592e 100644 --- a/sys/dev/de/if_de.c +++ b/sys/dev/de/if_de.c @@ -4619,15 +4619,17 @@ tulip_ifstart( if ((sc->tulip_flags & (TULIP_WANTSETUP|TULIP_TXPROBE_ACTIVE)) == TULIP_WANTSETUP) tulip_txput_setup(sc); - while (sc->tulip_if.if_snd.ifq_head != NULL) { + while (!IFQ_DRV_IS_EMPTY(&sc->tulip_if.if_snd)) { struct mbuf *m; - IF_DEQUEUE(&sc->tulip_if.if_snd, m); + IFQ_DRV_DEQUEUE(&sc->tulip_if.if_snd, m); + if(m == NULL) + break; if ((m = tulip_txput(sc, m)) != NULL) { - IF_PREPEND(&sc->tulip_if.if_snd, m); + IFQ_DRV_PREPEND(&sc->tulip_if.if_snd, m); break; } } - if (sc->tulip_if.if_snd.ifq_head == NULL) + if (IFQ_DRV_IS_EMPTY(&sc->tulip_if.if_snd)) sc->tulip_if.if_start = tulip_ifstart_one; } @@ -4642,11 +4644,12 @@ tulip_ifstart_one( tulip_softc_t * const sc = (tulip_softc_t *)ifp->if_softc; if ((sc->tulip_if.if_flags & IFF_RUNNING) - && sc->tulip_if.if_snd.ifq_head != NULL) { + && !IFQ_DRV_IS_EMPTY(&sc->tulip_if.if_snd)) { struct mbuf *m; - IF_DEQUEUE(&sc->tulip_if.if_snd, m); - if ((m = tulip_txput(sc, m)) != NULL) - IF_PREPEND(&sc->tulip_if.if_snd, m); + IFQ_DRV_DEQUEUE(&sc->tulip_if.if_snd, m); + if(m == NULL); + else if((m = tulip_txput(sc, m)) != NULL) + IFQ_DRV_PREPEND(&sc->tulip_if.if_snd, m); } TULIP_PERFEND(ifstart_one); } @@ -4788,7 +4791,9 @@ tulip_attach( tulip_reset(sc); ether_ifattach(&(sc)->tulip_if, sc->tulip_enaddr); - ifp->if_snd.ifq_maxlen = ifqmaxlen; + IFQ_SET_MAXLEN(&ifp->if_snd, ifqmaxlen); + ifp->if_snd.ifq_drv_maxlen = ifqmaxlen; + IFQ_SET_READY(&ifp->if_snd); } #if defined(TULIP_BUS_DMA) -- cgit v1.1