diff --git a/sys/dev/an/if_an.c b/sys/dev/an/if_an.c index fb08f7023704..c3487386e14f 100644 --- a/sys/dev/an/if_an.c +++ b/sys/dev/an/if_an.c @@ -760,7 +760,9 @@ an_attach(sc, unit, flags) ifp->if_watchdog = an_watchdog; ifp->if_init = an_init; ifp->if_baudrate = 10000000; - ifp->if_snd.ifq_maxlen = IFQ_MAXLEN; + IFQ_SET_MAXLEN(&ifp->if_snd, IFQ_MAXLEN); + ifp->if_snd.ifq_drv_maxlen = IFQ_MAXLEN; + IFQ_SET_READY(&ifp->if_snd); bzero(sc->an_config.an_nodename, sizeof(sc->an_config.an_nodename)); bcopy(AN_DEFAULT_NODENAME, sc->an_config.an_nodename, @@ -1254,7 +1256,7 @@ an_intr(xsc) /* Re-enable interrupts. */ CSR_WRITE_2(sc, AN_INT_EN(sc->mpi350), AN_INTRS(sc->mpi350)); - if ((ifp->if_flags & IFF_UP) && (ifp->if_snd.ifq_head != NULL)) + if ((ifp->if_flags & IFF_UP) && !IFQ_DRV_IS_EMPTY(&ifp->if_snd)) an_start(ifp); AN_UNLOCK(sc); @@ -2655,7 +2657,7 @@ an_start(ifp) /* We can't send in monitor mode so toss any attempts. */ if (sc->an_monitor && (ifp->if_flags & IFF_PROMISC)) { for (;;) { - IF_DEQUEUE(&ifp->if_snd, m0); + IFQ_DRV_DEQUEUE(&ifp->if_snd, m0); if (m0 == NULL) break; m_freem(m0); @@ -2669,7 +2671,7 @@ an_start(ifp) bzero((char *)&tx_frame_802_3, sizeof(tx_frame_802_3)); while (sc->an_rdata.an_tx_ring[idx] == 0) { - IF_DEQUEUE(&ifp->if_snd, m0); + IFQ_DRV_DEQUEUE(&ifp->if_snd, m0); if (m0 == NULL) break; @@ -2730,7 +2732,7 @@ an_start(ifp) while (sc->an_rdata.an_tx_empty || idx != sc->an_rdata.an_tx_cons) { - IF_DEQUEUE(&ifp->if_snd, m0); + IFQ_DRV_DEQUEUE(&ifp->if_snd, m0); if (m0 == NULL) { break; } diff --git a/sys/dev/ath/if_ath.c b/sys/dev/ath/if_ath.c index 0ecddee0d15a..b8761e637b25 100644 --- a/sys/dev/ath/if_ath.c +++ b/sys/dev/ath/if_ath.c @@ -304,7 +304,9 @@ ath_attach(u_int16_t devid, struct ath_softc *sc) ifp->if_watchdog = ath_watchdog; ifp->if_ioctl = ath_ioctl; ifp->if_init = ath_init; - ifp->if_snd.ifq_maxlen = IFQ_MAXLEN; + IFQ_SET_MAXLEN(&ifp->if_snd, IFQ_MAXLEN); + ifp->if_snd.ifq_drv_maxlen = IFQ_MAXLEN; + IFQ_SET_READY(&ifp->if_snd); ic->ic_softc = sc; ic->ic_newassoc = ath_newassoc; @@ -662,7 +664,7 @@ ath_stop(struct ifnet *ifp) ath_stoprecv(sc); else sc->sc_rxlink = NULL; - IF_DRAIN(&ifp->if_snd); + IFQ_DRV_PURGE(&ifp->if_snd); ath_beacon_free(sc); ieee80211_new_state(ic, IEEE80211_S_INIT, -1); if (!sc->sc_invalid) @@ -759,7 +761,7 @@ ath_start(struct ifnet *ifp) ATH_TXBUF_UNLOCK(sc); break; } - IF_DEQUEUE(&ifp->if_snd, m); + IFQ_DRV_DEQUEUE(&ifp->if_snd, m); /* XXX: LOCK */ if (m == NULL) { ATH_TXBUF_LOCK(sc); TAILQ_INSERT_TAIL(&sc->sc_txbuf, bf, bf_list); diff --git a/sys/dev/hme/if_hme.c b/sys/dev/hme/if_hme.c index cd9e61771fdf..7144799a973e 100644 --- a/sys/dev/hme/if_hme.c +++ b/sys/dev/hme/if_hme.c @@ -276,7 +276,9 @@ hme_config(struct hme_softc *sc) ifp->if_ioctl = hme_ioctl; ifp->if_init = hme_init; ifp->if_watchdog = hme_watchdog; - ifp->if_snd.ifq_maxlen = HME_NTXQ; + IFQ_SET_MAXLEN(&ifp->if_snd, HME_NTXQ); + ifp->if_snd.ifq_drv_maxlen = HME_NTXQ; + IFQ_SET_READY(&ifp->if_snd); hme_mifinit(sc); @@ -1002,14 +1004,14 @@ hme_start(struct ifnet *ifp) error = 0; for (;;) { - IF_DEQUEUE(&ifp->if_snd, m); + IFQ_DRV_DEQUEUE(&ifp->if_snd, m); if (m == NULL) break; error = hme_load_txmbuf(sc, m); if (error == -1) { ifp->if_flags |= IFF_OACTIVE; - IF_PREPEND(&ifp->if_snd, m); + IFQ_DRV_PREPEND(&ifp->if_snd, m); break; } else if (error > 0) { printf("hme_start: error %d while loading mbuf\n", diff --git a/sys/dev/if_ndis/if_ndis.c b/sys/dev/if_ndis/if_ndis.c index ae0821d9b381..e1b8d9861c9b 100644 --- a/sys/dev/if_ndis/if_ndis.c +++ b/sys/dev/if_ndis/if_ndis.c @@ -490,7 +490,13 @@ ndis_attach(dev) ifp->if_watchdog = ndis_watchdog; ifp->if_init = ndis_init; ifp->if_baudrate = 10000000; +#if __FreeBSD_version < 502114 ifp->if_snd.ifq_maxlen = 50; +#else + IFQ_SET_MAXLEN(&ifp->if_snd, 50); + ifp->if_snd.ifq_drv_maxlen = 25; + IFQ_SET_READY(&ifp->if_snd); +#endif ifp->if_capenable = ifp->if_capabilities; ifp->if_hwassist = sc->ndis_hwassist; @@ -1151,7 +1157,11 @@ ndis_starttask(arg) struct ifnet *ifp; ifp = arg; +#if __FreeBSD_version < 502114 if (ifp->if_snd.ifq_head != NULL) +#else + if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) +#endif ndis_start(ifp); return; } @@ -1191,15 +1201,24 @@ ndis_start(ifp) p0 = &sc->ndis_txarray[sc->ndis_txidx]; while(sc->ndis_txpending) { +#if __FreeBSD_version < 502114 IF_DEQUEUE(&ifp->if_snd, m); +#else + IFQ_DRV_DEQUEUE(&ifp->if_snd, m); +#endif if (m == NULL) break; sc->ndis_txarray[sc->ndis_txidx] = NULL; if (ndis_mtop(m, &sc->ndis_txarray[sc->ndis_txidx])) { +#if __FreeBSD_version >= 502114 + IFQ_DRV_PREPEND(&ifp->if_snd, m); +#endif NDIS_UNLOCK(sc); +#if __FreeBSD_version < 502114 IF_PREPEND(&ifp->if_snd, m); +#endif return; } diff --git a/sys/dev/vr/if_vr.c b/sys/dev/vr/if_vr.c index 945388c71325..b89e76fad013 100644 --- a/sys/dev/vr/if_vr.c +++ b/sys/dev/vr/if_vr.c @@ -736,7 +736,9 @@ vr_attach(dev) ifp->if_watchdog = vr_watchdog; ifp->if_init = vr_init; ifp->if_baudrate = 10000000; + IFQ_SET_MAXLEN(&ifp->if_snd, VR_TX_LIST_CNT - 1); ifp->if_snd.ifq_maxlen = VR_TX_LIST_CNT - 1; + IFQ_SET_READY(&ifp->if_snd); #ifdef DEVICE_POLLING ifp->if_capabilities |= IFCAP_POLLING; #endif @@ -1167,7 +1169,7 @@ vr_poll_locked(struct ifnet *ifp, enum poll_cmd cmd, int count) sc->rxcycles = count; vr_rxeof(sc); vr_txeof(sc); - if (ifp->if_snd.ifq_head != NULL) + if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) { vr_start_locked(ifp); if (cmd == POLL_AND_CHECK_STATUS) { @@ -1310,7 +1312,7 @@ vr_intr(void *arg) /* Re-enable interrupts. */ CSR_WRITE_2(sc, VR_IMR, VR_INTRS); - if (_IF_QLEN(&ifp->if_snd) != 0) + if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) vr_start_locked(ifp); done_locked: @@ -1389,14 +1391,14 @@ vr_start_locked(struct ifnet *ifp) cur_tx = sc->vr_cdata.vr_tx_prod; while (cur_tx->vr_mbuf == NULL) { - IF_DEQUEUE(&ifp->if_snd, m_head); + IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head); if (m_head == NULL) break; /* Pack the data into the descriptor. */ if (vr_encap(sc, cur_tx, m_head)) { /* Rollback, send what we were able to encap. */ - IF_PREPEND(&ifp->if_snd, m_head); + IFQ_DRV_PREPEND(&ifp->if_snd, m_head); break; } @@ -1621,7 +1623,7 @@ vr_watchdog(struct ifnet *ifp) vr_reset(sc); vr_init_locked(sc); - if (ifp->if_snd.ifq_head != NULL) + if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) vr_start_locked(ifp); VR_UNLOCK(sc); diff --git a/sys/dev/wi/if_wi.c b/sys/dev/wi/if_wi.c index 70cff596bb71..486df5234321 100644 --- a/sys/dev/wi/if_wi.c +++ b/sys/dev/wi/if_wi.c @@ -114,12 +114,6 @@ __FBSDID("$FreeBSD$"); #include #include -#if 0 /* ALTQ */ -#define IF_POLL(ifq, m) ((m) = (ifq)->ifq_head) -#define IFQ_POLL(ifq, m) IF_POLL((ifq), (m)) -#define IFQ_DEQUEUE(ifq, m) IF_DEQUEUE((ifq), (m)) -#endif - static void wi_start(struct ifnet *); static int wi_reset(struct wi_softc *); static void wi_watchdog(struct ifnet *); @@ -308,7 +302,9 @@ wi_attach(device_t dev) ifp->if_start = wi_start; ifp->if_watchdog = wi_watchdog; ifp->if_init = wi_init; - ifp->if_snd.ifq_maxlen = IFQ_MAXLEN; + IFQ_SET_MAXLEN(&ifp->if_snd, IFQ_MAXLEN); + ifp->if_snd.ifq_drv_maxlen = IFQ_MAXLEN; + IFQ_SET_READY(&ifp->if_snd); ic->ic_phytype = IEEE80211_T_DS; ic->ic_opmode = IEEE80211_M_STA; @@ -616,7 +612,7 @@ wi_intr(void *arg) wi_info_intr(sc); if ((ifp->if_flags & IFF_OACTIVE) == 0 && (sc->sc_flags & WI_FLAGS_OUTRANGE) == 0 && - _IF_QLEN(&ifp->if_snd) != 0) + !IFQ_DRV_IS_EMPTY(&ifp->if_snd)) wi_start(ifp); /* Re-enable interrupts. */ @@ -906,14 +902,14 @@ wi_start(struct ifnet *ifp) } else { if (ic->ic_state != IEEE80211_S_RUN) break; - IFQ_POLL(&ifp->if_snd, m0); + IFQ_DRV_DEQUEUE(&ifp->if_snd, m0); if (m0 == NULL) break; if (sc->sc_txd[cur].d_len != 0) { + IFQ_DRV_PREPEND(&ifp->if_snd, m0); ifp->if_flags |= IFF_OACTIVE; break; } - IFQ_DEQUEUE(&ifp->if_snd, m0); ifp->if_opackets++; m_copydata(m0, 0, ETHER_HDR_LEN, (caddr_t)&frmhdr.wi_ehdr); diff --git a/sys/pci/if_vr.c b/sys/pci/if_vr.c index 945388c71325..b89e76fad013 100644 --- a/sys/pci/if_vr.c +++ b/sys/pci/if_vr.c @@ -736,7 +736,9 @@ vr_attach(dev) ifp->if_watchdog = vr_watchdog; ifp->if_init = vr_init; ifp->if_baudrate = 10000000; + IFQ_SET_MAXLEN(&ifp->if_snd, VR_TX_LIST_CNT - 1); ifp->if_snd.ifq_maxlen = VR_TX_LIST_CNT - 1; + IFQ_SET_READY(&ifp->if_snd); #ifdef DEVICE_POLLING ifp->if_capabilities |= IFCAP_POLLING; #endif @@ -1167,7 +1169,7 @@ vr_poll_locked(struct ifnet *ifp, enum poll_cmd cmd, int count) sc->rxcycles = count; vr_rxeof(sc); vr_txeof(sc); - if (ifp->if_snd.ifq_head != NULL) + if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) { vr_start_locked(ifp); if (cmd == POLL_AND_CHECK_STATUS) { @@ -1310,7 +1312,7 @@ vr_intr(void *arg) /* Re-enable interrupts. */ CSR_WRITE_2(sc, VR_IMR, VR_INTRS); - if (_IF_QLEN(&ifp->if_snd) != 0) + if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) vr_start_locked(ifp); done_locked: @@ -1389,14 +1391,14 @@ vr_start_locked(struct ifnet *ifp) cur_tx = sc->vr_cdata.vr_tx_prod; while (cur_tx->vr_mbuf == NULL) { - IF_DEQUEUE(&ifp->if_snd, m_head); + IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head); if (m_head == NULL) break; /* Pack the data into the descriptor. */ if (vr_encap(sc, cur_tx, m_head)) { /* Rollback, send what we were able to encap. */ - IF_PREPEND(&ifp->if_snd, m_head); + IFQ_DRV_PREPEND(&ifp->if_snd, m_head); break; } @@ -1621,7 +1623,7 @@ vr_watchdog(struct ifnet *ifp) vr_reset(sc); vr_init_locked(sc); - if (ifp->if_snd.ifq_head != NULL) + if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) vr_start_locked(ifp); VR_UNLOCK(sc);