diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/main.c')
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/main.c | 27 | 
1 files changed, 9 insertions, 18 deletions
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index 4de4473776a..dac1a2709e3 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c @@ -971,6 +971,15 @@ void ath_hw_pll_work(struct work_struct *work)  					    hw_pll_work.work);  	u32 pll_sqsum; +	/* +	 * ensure that the PLL WAR is executed only +	 * after the STA is associated (or) if the +	 * beaconing had started in interfaces that +	 * uses beacons. +	 */ +	if (!(sc->sc_flags & SC_OP_BEACONS)) +		return; +  	if (AR_SREV_9485(sc->sc_ah)) {  		ath9k_ps_wakeup(sc); @@ -1443,15 +1452,6 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,  		}  	} -	if ((ah->opmode == NL80211_IFTYPE_ADHOC) || -	    ((vif->type == NL80211_IFTYPE_ADHOC) && -	     sc->nvifs > 0)) { -		ath_err(common, "Cannot create ADHOC interface when other" -			" interfaces already exist.\n"); -		ret = -EINVAL; -		goto out; -	} -  	ath_dbg(common, CONFIG, "Attach a VIF of type: %d\n", vif->type);  	sc->nvifs++; @@ -1476,15 +1476,6 @@ static int ath9k_change_interface(struct ieee80211_hw *hw,  	mutex_lock(&sc->mutex);  	ath9k_ps_wakeup(sc); -	/* See if new interface type is valid. */ -	if ((new_type == NL80211_IFTYPE_ADHOC) && -	    (sc->nvifs > 1)) { -		ath_err(common, "When using ADHOC, it must be the only" -			" interface.\n"); -		ret = -EINVAL; -		goto out; -	} -  	if (ath9k_uses_beacons(new_type) &&  	    !ath9k_uses_beacons(vif->type)) {  		if (sc->nbcnvifs >= ATH_BCBUF) {  |