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: Luis R. Rodriguez <mcgrof@do-not-panic.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
committed by
Johannes Berg
parent
fe7c3a1f20
commit
222ea58199
@@ -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);
|
|||||||
* 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,
|
|||||||
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;
|
||||||
|
|||||||
Reference in New Issue
Block a user