Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d885b99 authored by Johannes Berg's avatar Johannes Berg
Browse files

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: default avatarLuis R. Rodriguez <mcgrof@do-not-panic.com>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 0ba857ad
Loading
Loading
Loading
Loading
+16 −15
Original line number Diff line number Diff line
@@ -678,28 +678,15 @@ static int freq_reg_info_regd(struct wiphy *wiphy,
			      u32 center_freq,
			      u32 desired_bw_khz,
			      const struct ieee80211_reg_rule **reg_rule,
			      const struct ieee80211_regdomain *custom_regd)
			      const struct ieee80211_regdomain *regd)
{
	int i;
	bool band_rule_found = false;
	const struct ieee80211_regdomain *regd;
	bool bw_fits = false;

	if (!desired_bw_khz)
		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)
		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,
		  const struct ieee80211_reg_rule **reg_rule)
{
	const struct ieee80211_regdomain *regd;

	assert_reg_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,
				  reg_rule, NULL);
				  reg_rule, regd);
}
EXPORT_SYMBOL(freq_reg_info);