|
@@ -891,7 +891,21 @@ static void handle_channel(struct wiphy *wiphy,
|
|
|
chan->max_antenna_gain = min(chan->orig_mag,
|
|
|
(int) MBI_TO_DBI(power_rule->max_antenna_gain));
|
|
|
chan->max_reg_power = (int) MBM_TO_DBM(power_rule->max_eirp);
|
|
|
- chan->max_power = min(chan->max_power, chan->max_reg_power);
|
|
|
+ if (chan->orig_mpwr) {
|
|
|
+ /*
|
|
|
+ * Devices that have their own custom regulatory domain
|
|
|
+ * but also use WIPHY_FLAG_STRICT_REGULATORY will follow the
|
|
|
+ * passed country IE power settings.
|
|
|
+ */
|
|
|
+ if (initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE &&
|
|
|
+ wiphy->flags & WIPHY_FLAG_CUSTOM_REGULATORY &&
|
|
|
+ wiphy->flags & WIPHY_FLAG_STRICT_REGULATORY)
|
|
|
+ chan->max_power = chan->max_reg_power;
|
|
|
+ else
|
|
|
+ chan->max_power = min(chan->orig_mpwr,
|
|
|
+ chan->max_reg_power);
|
|
|
+ } else
|
|
|
+ chan->max_power = chan->max_reg_power;
|
|
|
}
|
|
|
|
|
|
static void handle_band(struct wiphy *wiphy,
|