diff options
Diffstat (limited to '')
| -rw-r--r-- | net/mac80211/mlme.c | 17 | 
1 files changed, 11 insertions, 6 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index b140cc6651f4..3aa04344942b 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -1379,21 +1379,26 @@ static u32 ieee80211_handle_pwr_constr(struct ieee80211_sub_if_data *sdata,  	 */  	if (has_80211h_pwr &&  	    (!has_cisco_pwr || pwr_level_80211h <= pwr_level_cisco)) { +		new_ap_level = pwr_level_80211h; + +		if (sdata->ap_power_level == new_ap_level) +			return 0; +  		sdata_dbg(sdata,  			  "Limiting TX power to %d (%d - %d) dBm as advertised by %pM\n",  			  pwr_level_80211h, chan_pwr, pwr_reduction_80211h,  			  sdata->u.mgd.bssid); -		new_ap_level = pwr_level_80211h;  	} else {  /* has_cisco_pwr is always true here. */ +		new_ap_level = pwr_level_cisco; + +		if (sdata->ap_power_level == new_ap_level) +			return 0; +  		sdata_dbg(sdata,  			  "Limiting TX power to %d dBm as advertised by %pM\n",  			  pwr_level_cisco, sdata->u.mgd.bssid); -		new_ap_level = pwr_level_cisco;  	} -	if (sdata->ap_power_level == new_ap_level) -		return 0; -  	sdata->ap_power_level = new_ap_level;  	if (__ieee80211_recalc_txpower(sdata))  		return BSS_CHANGED_TXPOWER; @@ -3575,7 +3580,7 @@ static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata,  	if (sta && elems.opmode_notif)  		ieee80211_vht_handle_opmode(sdata, sta, *elems.opmode_notif, -					    rx_status->band, true); +					    rx_status->band);  	mutex_unlock(&local->sta_mtx);  	changed |= ieee80211_handle_pwr_constr(sdata, chan, mgmt,  | 
