summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2015-10-11 02:00:08 +0000
committeradrian <adrian@FreeBSD.org>2015-10-11 02:00:08 +0000
commitaf6f5eeeefdc32f07b534e75a8fe2b814fd610f8 (patch)
tree8b4c23df35855fe28954218c379f338932906c11
parent56e02901251551809447a36ed0e9c08541b67f2f (diff)
downloadFreeBSD-src-af6f5eeeefdc32f07b534e75a8fe2b814fd610f8.zip
FreeBSD-src-af6f5eeeefdc32f07b534e75a8fe2b814fd610f8.tar.gz
wpi(4): do not count failures twice for ic_raw_xmit().
Tested: * Tested with Intel 3945BG, STA mode Submitted by: <s3erios@gmail.com> Differential Revision: https://reviews.freebsd.org/D3768
-rw-r--r--sys/dev/wpi/if_wpi.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/sys/dev/wpi/if_wpi.c b/sys/dev/wpi/if_wpi.c
index 48691bb..dfd6424 100644
--- a/sys/dev/wpi/if_wpi.c
+++ b/sys/dev/wpi/if_wpi.c
@@ -3001,14 +3001,6 @@ wpi_tx_ring_is_full(struct wpi_softc *sc, uint16_t ac)
return retval;
}
-static __inline void
-wpi_handle_tx_failure(struct ieee80211_node *ni)
-{
- /* NB: m is reclaimed on tx failure */
- if_inc_counter(ni->ni_vap->iv_ifp, IFCOUNTER_OERRORS, 1);
- ieee80211_free_node(ni);
-}
-
static int
wpi_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
const struct ieee80211_bpf_params *params)
@@ -3046,8 +3038,8 @@ wpi_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
unlock: WPI_TX_UNLOCK(sc);
if (error != 0) {
- wpi_handle_tx_failure(ni);
m_freem(m);
+ ieee80211_free_node(ni);
DPRINTF(sc, WPI_DEBUG_TRACE, TRACE_STR_END_ERR, __func__);
return error;
@@ -3085,7 +3077,8 @@ wpi_transmit(struct ieee80211com *ic, struct mbuf *m)
error = 0;
ni = (struct ieee80211_node *)m->m_pkthdr.rcvif;
if (wpi_tx_data(sc, m, ni) != 0) {
- wpi_handle_tx_failure(ni);
+ if_inc_counter(ni->ni_vap->iv_ifp, IFCOUNTER_OERRORS, 1);
+ ieee80211_free_node(ni);
m_freem(m);
}
OpenPOWER on IntegriCloud