aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/rtwn/if_rtwn.c
diff options
context:
space:
mode:
authorAndriy Voskoboinyk <avos@FreeBSD.org>2016-11-06 23:13:13 +0000
committerAndriy Voskoboinyk <avos@FreeBSD.org>2016-11-06 23:13:13 +0000
commitd067ef0f0d92d1c39f68fbd48f276b529176bf12 (patch)
treeac335d3d65175ded450d66eb4df6787596d4d257 /sys/dev/rtwn/if_rtwn.c
parentfafbeccf90d23d757c550096ea9e67f7bc1e2d74 (diff)
Notes
Diffstat (limited to 'sys/dev/rtwn/if_rtwn.c')
-rw-r--r--sys/dev/rtwn/if_rtwn.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/sys/dev/rtwn/if_rtwn.c b/sys/dev/rtwn/if_rtwn.c
index 0c9e81f8cbd5f..7b92b5cdaae36 100644
--- a/sys/dev/rtwn/if_rtwn.c
+++ b/sys/dev/rtwn/if_rtwn.c
@@ -628,10 +628,10 @@ rtwn_vap_delete(struct ieee80211vap *vap)
ieee80211_draintask(ic, &ic->ic_parent_task);
RTWN_LOCK(sc);
- if (uvp->bcn_mbuf != NULL)
- m_freem(uvp->bcn_mbuf);
/* Cancel any unfinished Tx. */
rtwn_reset_lists(sc, vap);
+ if (uvp->bcn_mbuf != NULL)
+ m_freem(uvp->bcn_mbuf);
rtwn_vap_decrement_counters(sc, vap->iv_opmode, uvp->id);
rtwn_set_ic_opmode(sc);
if (sc->sc_flags & RTWN_RUNNING)
@@ -822,8 +822,10 @@ rtwn_push_nulldata(struct rtwn_softc *sc, struct ieee80211vap *vap)
rtwn_setbits_1_shift(sc, R92C_FWHW_TXQ_CTRL,
R92C_FWHW_TXQ_CTRL_REAL_BEACON, 0, 2);
- if (uvp->bcn_mbuf != NULL)
+ if (uvp->bcn_mbuf != NULL) {
+ rtwn_beacon_unload(sc, uvp->id);
m_freem(uvp->bcn_mbuf);
+ }
m->m_pkthdr.len = m->m_len = required_size - sc->txdesc_len;
uvp->bcn_mbuf = m;
@@ -1268,6 +1270,9 @@ rtwn_run(struct rtwn_softc *sc, struct ieee80211vap *vap)
}
#endif
+ /* Enable TSF synchronization. */
+ rtwn_tsf_sync_enable(sc, vap);
+
if (vap->iv_opmode == IEEE80211_M_HOSTAP ||
vap->iv_opmode == IEEE80211_M_IBSS) {
error = rtwn_setup_beacon(sc, ni);
@@ -1282,9 +1287,6 @@ rtwn_run(struct rtwn_softc *sc, struct ieee80211vap *vap)
/* Set ACK preamble type. */
rtwn_set_ack_preamble(sc);
- /* Enable TSF synchronization. */
- rtwn_tsf_sync_enable(sc, vap);
-
/* Set basic rates mask. */
rtwn_calc_basicrates(sc);