summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2015-10-12 04:55:20 +0000
committeradrian <adrian@FreeBSD.org>2015-10-12 04:55:20 +0000
commitddc10d6668d00854cf056f91c44cf92010f26e7c (patch)
tree0ad5a3585c48c4d2f6705ea7eb28cc7313a8c059 /sys/dev/usb
parent5a44e8c44b09f08ee9e42d177f79640c96f4c857 (diff)
downloadFreeBSD-src-ddc10d6668d00854cf056f91c44cf92010f26e7c.zip
FreeBSD-src-ddc10d6668d00854cf056f91c44cf92010f26e7c.tar.gz
net80211: move ieee80211_free_node() call on error from ic_raw_xmit() to ieee80211_raw_output().
This doesn't free the mbuf upon error; the driver ic_raw_xmit method is still doing that. Submitted by: <s3erios@gmail.com> Differential Revision: https://reviews.freebsd.org/D3774
Diffstat (limited to 'sys/dev/usb')
-rw-r--r--sys/dev/usb/wlan/if_rsu.c3
-rw-r--r--sys/dev/usb/wlan/if_rum.c1
-rw-r--r--sys/dev/usb/wlan/if_run.c1
-rw-r--r--sys/dev/usb/wlan/if_uath.c3
-rw-r--r--sys/dev/usb/wlan/if_upgt.c3
-rw-r--r--sys/dev/usb/wlan/if_ural.c3
-rw-r--r--sys/dev/usb/wlan/if_urtw.c3
-rw-r--r--sys/dev/usb/wlan/if_urtwn.c3
-rw-r--r--sys/dev/usb/wlan/if_zyd.c3
9 files changed, 0 insertions, 23 deletions
diff --git a/sys/dev/usb/wlan/if_rsu.c b/sys/dev/usb/wlan/if_rsu.c
index 4fb9d85..6558c93 100644
--- a/sys/dev/usb/wlan/if_rsu.c
+++ b/sys/dev/usb/wlan/if_rsu.c
@@ -2793,19 +2793,16 @@ rsu_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
/* prevent management frames from being sent if we're not ready */
if (!sc->sc_running) {
m_freem(m);
- ieee80211_free_node(ni);
return (ENETDOWN);
}
RSU_LOCK(sc);
bf = rsu_getbuf(sc);
if (bf == NULL) {
- ieee80211_free_node(ni);
m_freem(m);
RSU_UNLOCK(sc);
return (ENOBUFS);
}
if (rsu_tx_start(sc, ni, m, bf) != 0) {
- ieee80211_free_node(ni);
m_freem(m);
rsu_freebuf(sc, bf);
RSU_UNLOCK(sc);
diff --git a/sys/dev/usb/wlan/if_rum.c b/sys/dev/usb/wlan/if_rum.c
index f1c9cdf..de7b880 100644
--- a/sys/dev/usb/wlan/if_rum.c
+++ b/sys/dev/usb/wlan/if_rum.c
@@ -2850,7 +2850,6 @@ rum_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
bad:
RUM_UNLOCK(sc);
m_freem(m);
- ieee80211_free_node(ni);
return ret;
}
diff --git a/sys/dev/usb/wlan/if_run.c b/sys/dev/usb/wlan/if_run.c
index be43755..3a8c020 100644
--- a/sys/dev/usb/wlan/if_run.c
+++ b/sys/dev/usb/wlan/if_run.c
@@ -3707,7 +3707,6 @@ done:
if (error != 0) {
if(m != NULL)
m_freem(m);
- ieee80211_free_node(ni);
}
return (error);
diff --git a/sys/dev/usb/wlan/if_uath.c b/sys/dev/usb/wlan/if_uath.c
index 292bb9f..ec5b54c 100644
--- a/sys/dev/usb/wlan/if_uath.c
+++ b/sys/dev/usb/wlan/if_uath.c
@@ -1781,7 +1781,6 @@ uath_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
if ((sc->sc_flags & UATH_FLAG_INVALID) ||
!(sc->sc_flags & UATH_FLAG_INITDONE)) {
m_freem(m);
- ieee80211_free_node(ni);
UATH_UNLOCK(sc);
return (ENETDOWN);
}
@@ -1789,7 +1788,6 @@ uath_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
/* grab a TX buffer */
bf = uath_getbuf(sc);
if (bf == NULL) {
- ieee80211_free_node(ni);
m_freem(m);
UATH_UNLOCK(sc);
return (ENOBUFS);
@@ -1797,7 +1795,6 @@ uath_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
sc->sc_seqnum = 0;
if (uath_tx_start(sc, m, ni, bf) != 0) {
- ieee80211_free_node(ni);
STAILQ_INSERT_HEAD(&sc->sc_tx_inactive, bf, next);
UATH_STAT_INC(sc, st_tx_inactive);
UATH_UNLOCK(sc);
diff --git a/sys/dev/usb/wlan/if_upgt.c b/sys/dev/usb/wlan/if_upgt.c
index 516caf0..2689ae0 100644
--- a/sys/dev/usb/wlan/if_upgt.c
+++ b/sys/dev/usb/wlan/if_upgt.c
@@ -798,14 +798,12 @@ upgt_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
/* prevent management frames from being sent if we're not ready */
if (!(sc->sc_flags & UPGT_FLAG_INITDONE)) {
m_freem(m);
- ieee80211_free_node(ni);
UPGT_UNLOCK(sc);
return ENETDOWN;
}
data_tx = upgt_gettxbuf(sc);
if (data_tx == NULL) {
- ieee80211_free_node(ni);
m_freem(m);
UPGT_UNLOCK(sc);
return (ENOBUFS);
@@ -814,7 +812,6 @@ upgt_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
if (upgt_tx_start(sc, m, ni, data_tx) != 0) {
STAILQ_INSERT_HEAD(&sc->sc_tx_inactive, data_tx, next);
UPGT_STAT_INC(sc, st_tx_inactive);
- ieee80211_free_node(ni);
UPGT_UNLOCK(sc);
return (EIO);
}
diff --git a/sys/dev/usb/wlan/if_ural.c b/sys/dev/usb/wlan/if_ural.c
index 6f6686f..3fb03bd 100644
--- a/sys/dev/usb/wlan/if_ural.c
+++ b/sys/dev/usb/wlan/if_ural.c
@@ -2123,13 +2123,11 @@ ural_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
if (!sc->sc_running) {
RAL_UNLOCK(sc);
m_freem(m);
- ieee80211_free_node(ni);
return ENETDOWN;
}
if (sc->tx_nfree < RAL_TX_MINFREE) {
RAL_UNLOCK(sc);
m_freem(m);
- ieee80211_free_node(ni);
return EIO;
}
@@ -2152,7 +2150,6 @@ ural_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
return 0;
bad:
RAL_UNLOCK(sc);
- ieee80211_free_node(ni);
return EIO; /* XXX */
}
diff --git a/sys/dev/usb/wlan/if_urtw.c b/sys/dev/usb/wlan/if_urtw.c
index 040ba86..a9aac3a 100644
--- a/sys/dev/usb/wlan/if_urtw.c
+++ b/sys/dev/usb/wlan/if_urtw.c
@@ -1527,20 +1527,17 @@ urtw_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
/* prevent management frames from being sent if we're not ready */
if (!(sc->sc_flags & URTW_RUNNING)) {
m_freem(m);
- ieee80211_free_node(ni);
return ENETDOWN;
}
URTW_LOCK(sc);
bf = urtw_getbuf(sc);
if (bf == NULL) {
- ieee80211_free_node(ni);
m_freem(m);
URTW_UNLOCK(sc);
return (ENOBUFS); /* XXX */
}
if (urtw_tx_start(sc, ni, m, bf, URTW_PRIORITY_LOW) != 0) {
- ieee80211_free_node(ni);
STAILQ_INSERT_HEAD(&sc->sc_tx_inactive, bf, next);
URTW_UNLOCK(sc);
return (EIO);
diff --git a/sys/dev/usb/wlan/if_urtwn.c b/sys/dev/usb/wlan/if_urtwn.c
index f680edc..cb101c6 100644
--- a/sys/dev/usb/wlan/if_urtwn.c
+++ b/sys/dev/usb/wlan/if_urtwn.c
@@ -3460,13 +3460,11 @@ urtwn_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
/* prevent management frames from being sent if we're not ready */
if (!(sc->sc_flags & URTWN_RUNNING)) {
m_freem(m);
- ieee80211_free_node(ni);
return (ENETDOWN);
}
URTWN_LOCK(sc);
bf = urtwn_getbuf(sc);
if (bf == NULL) {
- ieee80211_free_node(ni);
m_freem(m);
URTWN_UNLOCK(sc);
return (ENOBUFS);
@@ -3474,7 +3472,6 @@ urtwn_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
if (urtwn_tx_start(sc, ni, m, bf) != 0) {
m_freem(m);
- ieee80211_free_node(ni);
STAILQ_INSERT_HEAD(&sc->sc_tx_inactive, bf, next);
URTWN_UNLOCK(sc);
return (EIO);
diff --git a/sys/dev/usb/wlan/if_zyd.c b/sys/dev/usb/wlan/if_zyd.c
index ed70d19..dc7a87f 100644
--- a/sys/dev/usb/wlan/if_zyd.c
+++ b/sys/dev/usb/wlan/if_zyd.c
@@ -2590,13 +2590,11 @@ zyd_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
if (!(sc->sc_flags & ZYD_FLAG_RUNNING)) {
ZYD_UNLOCK(sc);
m_freem(m);
- ieee80211_free_node(ni);
return (ENETDOWN);
}
if (sc->tx_nfree == 0) {
ZYD_UNLOCK(sc);
m_freem(m);
- ieee80211_free_node(ni);
return (ENOBUFS); /* XXX */
}
@@ -2607,7 +2605,6 @@ zyd_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
*/
if (zyd_tx_start(sc, m, ni) != 0) {
ZYD_UNLOCK(sc);
- ieee80211_free_node(ni);
m_freem(m);
return (EIO);
}
OpenPOWER on IntegriCloud