iwn(4): various simple fixes

- Fix mbuf leaks in iwn_raw_xmit() and iwn_xmit_task()
(regression since r288178).
- Check IWN_FLAG_RUNNING flag under lock.
- Remove m->m_pkthdr.rcvif initialization (fixed in r283994).
- Enclose some values in return statements into parentheses.

Approved by:	adrian (mentor)
Differential Revision:	https://reviews.freebsd.org/D4069
This commit is contained in:
Andriy Voskoboinyk 2015-11-05 22:44:36 +00:00
parent 0e9c4ca8b1
commit 502b7052ee

View File

@ -4852,6 +4852,7 @@ iwn_xmit_task(void *arg0, int pending)
if_inc_counter(ni->ni_vap->iv_ifp,
IFCOUNTER_OERRORS, 1);
ieee80211_free_node(ni);
m_freem(m);
}
}
@ -4872,16 +4873,13 @@ iwn_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
DPRINTF(sc, IWN_DEBUG_XMIT | IWN_DEBUG_TRACE, "->%s begin\n", __func__);
IWN_LOCK(sc);
if ((sc->sc_flags & IWN_FLAG_RUNNING) == 0) {
m_freem(m);
return ENETDOWN;
IWN_UNLOCK(sc);
return (ENETDOWN);
}
/* XXX? net80211 doesn't set this on xmit'ed raw frames? */
m->m_pkthdr.rcvif = (void *) ni;
IWN_LOCK(sc);
/* queue frame if we have to */
if (sc->sc_beacon_wait) {
if (iwn_xmit_queue_enqueue(sc, m) != 0) {
@ -4909,12 +4907,14 @@ iwn_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
}
if (error == 0)
sc->sc_tx_timer = 5;
else
m_freem(m);
IWN_UNLOCK(sc);
DPRINTF(sc, IWN_DEBUG_TRACE | IWN_DEBUG_XMIT, "->%s: end\n",__func__);
return error;
return (error);
}
/*