regulatory: simplify freq_reg_info_regd
The function itself has dual-purpose: it can retrieve from a given regdomain or from the globally installed one. Change it to have a single purpose only: to look up from a given regdomain. Pass the correct regdomain in the freq_reg_info() function instead. This also changes the locking rules for it, no locking is required any more. Acked-by: Luis R. Rodriguez <mcgrof@do-not-panic.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
0ba857ad67
commit
5d885b999c
1 changed files with 16 additions and 15 deletions
|
@ -678,28 +678,15 @@ static int freq_reg_info_regd(struct wiphy *wiphy,
|
||||||
u32 center_freq,
|
u32 center_freq,
|
||||||
u32 desired_bw_khz,
|
u32 desired_bw_khz,
|
||||||
const struct ieee80211_reg_rule **reg_rule,
|
const struct ieee80211_reg_rule **reg_rule,
|
||||||
const struct ieee80211_regdomain *custom_regd)
|
const struct ieee80211_regdomain *regd)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
bool band_rule_found = false;
|
bool band_rule_found = false;
|
||||||
const struct ieee80211_regdomain *regd;
|
|
||||||
bool bw_fits = false;
|
bool bw_fits = false;
|
||||||
|
|
||||||
if (!desired_bw_khz)
|
if (!desired_bw_khz)
|
||||||
desired_bw_khz = MHZ_TO_KHZ(20);
|
desired_bw_khz = MHZ_TO_KHZ(20);
|
||||||
|
|
||||||
regd = custom_regd ? custom_regd : cfg80211_regdomain;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Follow the driver's regulatory domain, if present, unless a country
|
|
||||||
* IE has been processed or a user wants to help complaince further
|
|
||||||
*/
|
|
||||||
if (!custom_regd &&
|
|
||||||
last_request->initiator != NL80211_REGDOM_SET_BY_COUNTRY_IE &&
|
|
||||||
last_request->initiator != NL80211_REGDOM_SET_BY_USER &&
|
|
||||||
wiphy->regd)
|
|
||||||
regd = wiphy->regd;
|
|
||||||
|
|
||||||
if (!regd)
|
if (!regd)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
@ -735,10 +722,24 @@ static int freq_reg_info_regd(struct wiphy *wiphy,
|
||||||
int freq_reg_info(struct wiphy *wiphy, u32 center_freq, u32 desired_bw_khz,
|
int freq_reg_info(struct wiphy *wiphy, u32 center_freq, u32 desired_bw_khz,
|
||||||
const struct ieee80211_reg_rule **reg_rule)
|
const struct ieee80211_reg_rule **reg_rule)
|
||||||
{
|
{
|
||||||
|
const struct ieee80211_regdomain *regd;
|
||||||
|
|
||||||
|
assert_reg_lock();
|
||||||
assert_cfg80211_lock();
|
assert_cfg80211_lock();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Follow the driver's regulatory domain, if present, unless a country
|
||||||
|
* IE has been processed or a user wants to help complaince further
|
||||||
|
*/
|
||||||
|
if (last_request->initiator != NL80211_REGDOM_SET_BY_COUNTRY_IE &&
|
||||||
|
last_request->initiator != NL80211_REGDOM_SET_BY_USER &&
|
||||||
|
wiphy->regd)
|
||||||
|
regd = wiphy->regd;
|
||||||
|
else
|
||||||
|
regd = cfg80211_regdomain;
|
||||||
|
|
||||||
return freq_reg_info_regd(wiphy, center_freq, desired_bw_khz,
|
return freq_reg_info_regd(wiphy, center_freq, desired_bw_khz,
|
||||||
reg_rule, NULL);
|
reg_rule, regd);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(freq_reg_info);
|
EXPORT_SYMBOL(freq_reg_info);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue