From b966dd66ee93918265e355e6ace3035cf53bdda2 Mon Sep 17 00:00:00 2001 From: Bob Copeland Date: Tue, 2 Jun 2009 23:03:06 -0400 Subject: [PATCH] --- yaml --- r: 150693 b: refs/heads/master c: 72828b1b3cabecfce4321877aa526a2bd21acf0c h: refs/heads/master i: 150691: 38a281bdfbb92471d1368359636673eeecec1402 v: v3 --- [refs] | 2 +- trunk/drivers/net/wireless/ath/ath5k/base.c | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 638804542f78..85a6e1146dd9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 894df1cbc376310163d41c50c891db41296056bf +refs/heads/master: 72828b1b3cabecfce4321877aa526a2bd21acf0c diff --git a/trunk/drivers/net/wireless/ath/ath5k/base.c b/trunk/drivers/net/wireless/ath/ath5k/base.c index ab2048b2fa92..85a00db4867d 100644 --- a/trunk/drivers/net/wireless/ath/ath5k/base.c +++ b/trunk/drivers/net/wireless/ath/ath5k/base.c @@ -2070,6 +2070,13 @@ ath5k_beacon_setup(struct ath5k_softc *sc, struct ath5k_buf *bf) return ret; } +static void ath5k_beacon_disable(struct ath5k_softc *sc) +{ + sc->imask &= ~(AR5K_INT_BMISS | AR5K_INT_SWBA); + ath5k_hw_set_imr(sc->ah, sc->imask); + ath5k_hw_stop_tx_dma(sc->ah, sc->bhalq); +} + /* * Transmit a beacon frame at SWBA. Dynamic updates to the * frame contents are done as needed and the slot time is @@ -2757,6 +2764,7 @@ ath5k_remove_interface(struct ieee80211_hw *hw, goto end; ath5k_hw_set_lladdr(sc->ah, mac); + ath5k_beacon_disable(sc); sc->vif = NULL; end: mutex_unlock(&sc->lock); @@ -3060,7 +3068,14 @@ ath5k_beacon_update(struct ieee80211_hw *hw, struct ieee80211_vif *vif) { int ret; struct ath5k_softc *sc = hw->priv; - struct sk_buff *skb = ieee80211_beacon_get(hw, vif); + struct sk_buff *skb; + + if (WARN_ON(!vif)) { + ret = -EINVAL; + goto out; + } + + skb = ieee80211_beacon_get(hw, vif); if (!skb) { ret = -ENOMEM;