|
@@ -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;
|