|
@@ -522,6 +522,22 @@ bool reg_is_valid_request(const char *alpha2)
|
|
|
return alpha2_equal(lr->alpha2, alpha2);
|
|
|
}
|
|
|
|
|
|
+static const struct ieee80211_regdomain *reg_get_regdomain(struct wiphy *wiphy)
|
|
|
+{
|
|
|
+ struct regulatory_request *lr = get_last_request();
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Follow the driver's regulatory domain, if present, unless a country
|
|
|
+ * IE has been processed or a user wants to help complaince further
|
|
|
+ */
|
|
|
+ if (lr->initiator != NL80211_REGDOM_SET_BY_COUNTRY_IE &&
|
|
|
+ lr->initiator != NL80211_REGDOM_SET_BY_USER &&
|
|
|
+ wiphy->regd)
|
|
|
+ return get_wiphy_regdom(wiphy);
|
|
|
+
|
|
|
+ return get_cfg80211_regdom();
|
|
|
+}
|
|
|
+
|
|
|
/* Sanity check on a regulatory rule */
|
|
|
static bool is_valid_reg_rule(const struct ieee80211_reg_rule *rule)
|
|
|
{
|
|
@@ -821,18 +837,8 @@ const struct ieee80211_reg_rule *freq_reg_info(struct wiphy *wiphy,
|
|
|
u32 center_freq)
|
|
|
{
|
|
|
const struct ieee80211_regdomain *regd;
|
|
|
- struct regulatory_request *lr = get_last_request();
|
|
|
|
|
|
- /*
|
|
|
- * Follow the driver's regulatory domain, if present, unless a country
|
|
|
- * IE has been processed or a user wants to help complaince further
|
|
|
- */
|
|
|
- if (lr->initiator != NL80211_REGDOM_SET_BY_COUNTRY_IE &&
|
|
|
- lr->initiator != NL80211_REGDOM_SET_BY_USER &&
|
|
|
- wiphy->regd)
|
|
|
- regd = get_wiphy_regdom(wiphy);
|
|
|
- else
|
|
|
- regd = get_cfg80211_regdom();
|
|
|
+ regd = reg_get_regdomain(wiphy);
|
|
|
|
|
|
return freq_reg_info_regd(wiphy, center_freq, regd);
|
|
|
}
|