summaryrefslogtreecommitdiff
path: root/sys/dev/ic/ar9003.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/ic/ar9003.c')
-rw-r--r--sys/dev/ic/ar9003.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/sys/dev/ic/ar9003.c b/sys/dev/ic/ar9003.c
index 69ade5ade5a..ca4a71dbeaa 100644
--- a/sys/dev/ic/ar9003.c
+++ b/sys/dev/ic/ar9003.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ar9003.c,v 1.48 2019/02/19 10:17:09 stsp Exp $ */
+/* $OpenBSD: ar9003.c,v 1.49 2019/09/12 12:55:06 stsp Exp $ */
/*-
* Copyright (c) 2010 Damien Bergamini <damien.bergamini@free.fr>
@@ -83,7 +83,7 @@ void ar9003_reset_txsring(struct athn_softc *);
void ar9003_rx_enable(struct athn_softc *);
void ar9003_rx_radiotap(struct athn_softc *, struct mbuf *,
struct ar_rx_status *);
-int ar9003_rx_process(struct athn_softc *, int);
+int ar9003_rx_process(struct athn_softc *, int, struct mbuf_list *);
void ar9003_rx_intr(struct athn_softc *, int);
int ar9003_tx_process(struct athn_softc *);
void ar9003_tx_intr(struct athn_softc *);
@@ -916,7 +916,7 @@ ar9003_rx_radiotap(struct athn_softc *sc, struct mbuf *m,
#endif
int
-ar9003_rx_process(struct athn_softc *sc, int qid)
+ar9003_rx_process(struct athn_softc *sc, int qid, struct mbuf_list *ml)
{
struct ieee80211com *ic = &sc->sc_ic;
struct ifnet *ifp = &ic->ic_if;
@@ -1036,7 +1036,7 @@ ar9003_rx_process(struct athn_softc *sc, int qid)
rxi.rxi_flags = 0; /* XXX */
rxi.rxi_rssi = MS(ds->ds_status5, AR_RXS5_RSSI_COMBINED);
rxi.rxi_tstamp = ds->ds_status3;
- ieee80211_input(ifp, m, ni, &rxi);
+ ieee80211_inputm(ifp, m, ni, &rxi, ml);
/* Node is no longer needed. */
ieee80211_release_node(ic, ni);
@@ -1066,7 +1066,13 @@ ar9003_rx_process(struct athn_softc *sc, int qid)
void
ar9003_rx_intr(struct athn_softc *sc, int qid)
{
- while (ar9003_rx_process(sc, qid) == 0);
+ struct mbuf_list ml = MBUF_LIST_INITIALIZER();
+ struct ieee80211com *ic = &sc->sc_ic;
+ struct ifnet *ifp = &ic->ic_if;
+
+ while (ar9003_rx_process(sc, qid, &ml) == 0);
+
+ if_input(ifp, &ml);
}
int