2
0
Эх сурвалжийг харах

cfg80211: do not overwrite the hardware max power setting in the regulatory code, fixes reported tx power values

SVN-Revision: 25238
Felix Fietkau 15 жил өмнө
parent
commit
e146d9b386

+ 35 - 0
package/mac80211/patches/560-cfg80211_max_power.patch

@@ -0,0 +1,35 @@
+--- a/net/wireless/reg.c
++++ b/net/wireless/reg.c
+@@ -839,6 +839,12 @@ static void handle_channel(struct wiphy 
+ 	if (freq_range->max_bandwidth_khz < MHZ_TO_KHZ(40))
+ 		bw_flags = IEEE80211_CHAN_NO_HT40;
+ 
++	if (chan->orig_mpwr)
++		chan->max_power = min(chan->orig_mpwr,
++			(int) MBM_TO_DBM(power_rule->max_eirp));
++	else
++		chan->max_power = (int) MBM_TO_DBM(power_rule->max_eirp);
++
+ 	if (last_request->initiator == NL80211_REGDOM_SET_BY_DRIVER &&
+ 	    request_wiphy && request_wiphy == wiphy &&
+ 	    request_wiphy->flags & WIPHY_FLAG_STRICT_REGULATORY) {
+@@ -851,19 +857,12 @@ static void handle_channel(struct wiphy 
+ 			map_regdom_flags(reg_rule->flags) | bw_flags;
+ 		chan->max_antenna_gain = chan->orig_mag =
+ 			(int) MBI_TO_DBI(power_rule->max_antenna_gain);
+-		chan->max_power = chan->orig_mpwr =
+-			(int) MBM_TO_DBM(power_rule->max_eirp);
+ 		return;
+ 	}
+ 
+ 	chan->flags = flags | bw_flags | map_regdom_flags(reg_rule->flags);
+ 	chan->max_antenna_gain = min(chan->orig_mag,
+ 		(int) MBI_TO_DBI(power_rule->max_antenna_gain));
+-	if (chan->orig_mpwr)
+-		chan->max_power = min(chan->orig_mpwr,
+-			(int) MBM_TO_DBM(power_rule->max_eirp));
+-	else
+-		chan->max_power = (int) MBM_TO_DBM(power_rule->max_eirp);
+ }
+ 
+ static void handle_band(struct wiphy *wiphy,