diff options
| author | thorpej <thorpej@NetBSD.org> | 2022-08-22 18:09:04 +0000 |
|---|---|---|
| committer | thorpej <thorpej@NetBSD.org> | 2022-08-22 18:09:04 +0000 |
| commit | e7de74682dceb0bda74441a8ee28317f64a99173 (patch) | |
| tree | f7a1b098e068f1ff97e3907bee3d3f3468a0c7b2 /sys/dev | |
| parent | 3b275fab066bfdedefa4b420a81144a966f7066a (diff) | |
iwi_start(): Replace "IFQ_DEQUEUE() -> IF_PREPEND() on failure" with
"IFQ_POLL() -> IFQ_DEQUEUE() on success (or fatal error)".
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/pci/if_iwi.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/sys/dev/pci/if_iwi.c b/sys/dev/pci/if_iwi.c index ae5287447ac..8b3fa44d161 100644 --- a/sys/dev/pci/if_iwi.c +++ b/sys/dev/pci/if_iwi.c @@ -1,4 +1,4 @@ -/* $NetBSD: if_iwi.c,v 1.119 2022/08/22 17:07:40 thorpej Exp $ */ +/* $NetBSD: if_iwi.c,v 1.120 2022/08/22 18:09:04 thorpej Exp $ */ /* $OpenBSD: if_iwi.c,v 1.111 2010/11/15 19:11:57 damien Exp $ */ /*- @@ -19,7 +19,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_iwi.c,v 1.119 2022/08/22 17:07:40 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_iwi.c,v 1.120 2022/08/22 18:09:04 thorpej Exp $"); /*- * Intel(R) PRO/Wireless 2200BG/2225BG/2915ABG driver @@ -1781,7 +1781,7 @@ iwi_start(struct ifnet *ifp) return; for (;;) { - IFQ_DEQUEUE(&ifp->if_snd, m0); + IFQ_POLL(&ifp->if_snd, m0); if (m0 == NULL) break; @@ -1790,6 +1790,7 @@ iwi_start(struct ifnet *ifp) eh = mtod(m0, struct ether_header *); ni = ieee80211_find_txnode(ic, eh->ether_dhost); if (ni == NULL) { + IFQ_DEQUEUE(&ifp->if_snd, m0); m_freem(m0); if_statinc(ifp, if_oerrors); continue; @@ -1797,6 +1798,7 @@ iwi_start(struct ifnet *ifp) /* classify mbuf so we can find which tx ring to use */ if (ieee80211_classify(ic, m0, ni) != 0) { + IFQ_DEQUEUE(&ifp->if_snd, m0); m_freem(m0); ieee80211_free_node(ni); if_statinc(ifp, if_oerrors); @@ -1809,12 +1811,10 @@ iwi_start(struct ifnet *ifp) if (sc->txq[ac].queued > sc->txq[ac].count - 8) { /* there is no place left in this ring */ - IFQ_LOCK(&ifp->if_snd); - IF_PREPEND(&ifp->if_snd, m0); - IFQ_UNLOCK(&ifp->if_snd); ifp->if_flags |= IFF_OACTIVE; break; } + IFQ_DEQUEUE(&ifp->if_snd, m0); bpf_mtap(ifp, m0, BPF_D_OUT); |
