Commit 222ea581 authored by Luis R. Rodriguez's avatar Luis R. Rodriguez Committed by Johannes Berg

cfg80211: force WIPHY_FLAG_CUSTOM_REGULATORY on wiphy_apply_custom_regulatory()

wiphy_apply_custom_regulatory() implies WIPHY_FLAG_CUSTOM_REGULATORY
but we never enforced it, do that now and warn if the driver
didn't set it. All drivers should be following this today already.

Having WIPHY_FLAG_CUSTOM_REGULATORY does not however mean you will
use wiphy_apply_custom_regulatory() though, you may have your own
_orig value set up tools / helpers. The intel drivers are examples
of this type of driver.
Signed-off-by: default avatarLuis R. Rodriguez <mcgrof@do-not-panic.com>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent fe7c3a1f
...@@ -2441,7 +2441,9 @@ struct cfg80211_ops { ...@@ -2441,7 +2441,9 @@ struct cfg80211_ops {
* has its own custom regulatory domain and cannot identify the * has its own custom regulatory domain and cannot identify the
* ISO / IEC 3166 alpha2 it belongs to. When this is enabled * ISO / IEC 3166 alpha2 it belongs to. When this is enabled
* we will disregard the first regulatory hint (when the * we will disregard the first regulatory hint (when the
* initiator is %REGDOM_SET_BY_CORE). * initiator is %REGDOM_SET_BY_CORE). Drivers that use
* wiphy_apply_custom_regulatory() should have this flag set
* or the regulatory core will set it for wiphy.
* @WIPHY_FLAG_STRICT_REGULATORY: tells us the driver for this device will * @WIPHY_FLAG_STRICT_REGULATORY: tells us the driver for this device will
* ignore regulatory domain settings until it gets its own regulatory * ignore regulatory domain settings until it gets its own regulatory
* domain via its regulatory_hint() unless the regulatory hint is * domain via its regulatory_hint() unless the regulatory hint is
...@@ -3471,6 +3473,9 @@ int regulatory_hint(struct wiphy *wiphy, const char *alpha2); ...@@ -3471,6 +3473,9 @@ int regulatory_hint(struct wiphy *wiphy, const char *alpha2);
* custom regulatory domain will be trusted completely and as such previous * custom regulatory domain will be trusted completely and as such previous
* default channel settings will be disregarded. If no rule is found for a * default channel settings will be disregarded. If no rule is found for a
* channel on the regulatory domain the channel will be disabled. * channel on the regulatory domain the channel will be disabled.
* Drivers using this for a wiphy should also set the wiphy flag
* WIPHY_FLAG_CUSTOM_REGULATORY or cfg80211 will set it for the wiphy
* that called this helper.
*/ */
void wiphy_apply_custom_regulatory(struct wiphy *wiphy, void wiphy_apply_custom_regulatory(struct wiphy *wiphy,
const struct ieee80211_regdomain *regd); const struct ieee80211_regdomain *regd);
......
...@@ -1292,6 +1292,10 @@ void wiphy_apply_custom_regulatory(struct wiphy *wiphy, ...@@ -1292,6 +1292,10 @@ void wiphy_apply_custom_regulatory(struct wiphy *wiphy,
enum ieee80211_band band; enum ieee80211_band band;
unsigned int bands_set = 0; unsigned int bands_set = 0;
WARN(!(wiphy->flags & WIPHY_FLAG_CUSTOM_REGULATORY),
"wiphy should have WIPHY_FLAG_CUSTOM_REGULATORY\n");
wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY;
for (band = 0; band < IEEE80211_NUM_BANDS; band++) { for (band = 0; band < IEEE80211_NUM_BANDS; band++) {
if (!wiphy->bands[band]) if (!wiphy->bands[band])
continue; continue;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment