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

Commit 7db90f4a authored by Luis R. Rodriguez's avatar Luis R. Rodriguez Committed by John W. Linville
Browse files

cfg80211: move enum reg_set_by to nl80211.h



We do this so we can later inform userspace who set the
regulatory domain and provide details of the request.

Signed-off-by: default avatarLuis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 0fee54ca
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1670,7 +1670,7 @@ int ath_attach(u16 devid, struct ath_softc *sc)
	}
	wiphy_apply_custom_regulatory(hw->wiphy, regd);
	ath9k_reg_apply_radar_flags(hw->wiphy);
	ath9k_reg_apply_world_flags(hw->wiphy, REGDOM_SET_BY_DRIVER);
	ath9k_reg_apply_world_flags(hw->wiphy, NL80211_REGDOM_SET_BY_DRIVER);

	INIT_WORK(&sc->chan_work, ath9k_wiphy_chan_work);
	INIT_DELAYED_WORK(&sc->wiphy_work, ath9k_wiphy_work);
+17 −14
Original line number Diff line number Diff line
@@ -168,8 +168,9 @@ static bool ath9k_is_radar_freq(u16 center_freq)
 *   received a beacon on a channel we can enable active scan and
 *   adhoc (or beaconing).
 */
static void ath9k_reg_apply_beaconing_flags(struct wiphy *wiphy,
					     enum reg_set_by setby)
static void ath9k_reg_apply_beaconing_flags(
	struct wiphy *wiphy,
	enum nl80211_reg_initiator initiator)
{
	enum ieee80211_band band;
	struct ieee80211_supported_band *sband;
@@ -194,7 +195,7 @@ static void ath9k_reg_apply_beaconing_flags(struct wiphy *wiphy,
			    (ch->flags & IEEE80211_CHAN_RADAR))
				continue;

			if (setby == REGDOM_SET_BY_COUNTRY_IE) {
			if (initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE) {
				r = freq_reg_info(wiphy, ch->center_freq,
					&bandwidth, &reg_rule);
				if (r)
@@ -226,8 +227,9 @@ static void ath9k_reg_apply_beaconing_flags(struct wiphy *wiphy,
}

/* Allows active scan scan on Ch 12 and 13 */
static void ath9k_reg_apply_active_scan_flags(struct wiphy *wiphy,
					      enum reg_set_by setby)
static void ath9k_reg_apply_active_scan_flags(
	struct wiphy *wiphy,
	enum nl80211_reg_initiator initiator)
{
	struct ieee80211_supported_band *sband;
	struct ieee80211_channel *ch;
@@ -241,7 +243,7 @@ static void ath9k_reg_apply_active_scan_flags(struct wiphy *wiphy,
	 * If no country IE has been received always enable active scan
	 * on these channels. This is only done for specific regulatory SKUs
	 */
	if (setby != REGDOM_SET_BY_COUNTRY_IE) {
	if (initiator != NL80211_REGDOM_SET_BY_COUNTRY_IE) {
		ch = &sband->channels[11]; /* CH 12 */
		if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN)
			ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN;
@@ -308,7 +310,8 @@ void ath9k_reg_apply_radar_flags(struct wiphy *wiphy)
	}
}

void ath9k_reg_apply_world_flags(struct wiphy *wiphy, enum reg_set_by setby)
void ath9k_reg_apply_world_flags(struct wiphy *wiphy,
				 enum nl80211_reg_initiator initiator)
{
	struct ieee80211_hw *hw = wiphy_to_ieee80211_hw(wiphy);
	struct ath_wiphy *aphy = hw->priv;
@@ -320,11 +323,11 @@ void ath9k_reg_apply_world_flags(struct wiphy *wiphy, enum reg_set_by setby)
	case 0x63:
	case 0x66:
	case 0x67:
		ath9k_reg_apply_beaconing_flags(wiphy, setby);
		ath9k_reg_apply_beaconing_flags(wiphy, initiator);
		break;
	case 0x68:
		ath9k_reg_apply_beaconing_flags(wiphy, setby);
		ath9k_reg_apply_active_scan_flags(wiphy, setby);
		ath9k_reg_apply_beaconing_flags(wiphy, initiator);
		ath9k_reg_apply_active_scan_flags(wiphy, initiator);
		break;
	}
	return;
@@ -340,11 +343,11 @@ int ath9k_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request)
	ath9k_reg_apply_radar_flags(wiphy);

	switch (request->initiator) {
	case REGDOM_SET_BY_DRIVER:
	case REGDOM_SET_BY_CORE:
	case REGDOM_SET_BY_USER:
	case NL80211_REGDOM_SET_BY_DRIVER:
	case NL80211_REGDOM_SET_BY_CORE:
	case NL80211_REGDOM_SET_BY_USER:
		break;
	case REGDOM_SET_BY_COUNTRY_IE:
	case NL80211_REGDOM_SET_BY_COUNTRY_IE:
		if (ath9k_is_world_regd(sc->sc_ah))
			ath9k_reg_apply_world_flags(wiphy, request->initiator);
		break;
+2 −1
Original line number Diff line number Diff line
@@ -236,7 +236,8 @@ enum CountryCode {
bool ath9k_is_world_regd(struct ath_hw *ah);
const struct ieee80211_regdomain *ath9k_world_regdomain(struct ath_hw *ah);
const struct ieee80211_regdomain *ath9k_default_world_regdomain(void);
void ath9k_reg_apply_world_flags(struct wiphy *wiphy, enum reg_set_by setby);
void ath9k_reg_apply_world_flags(struct wiphy *wiphy,
				 enum nl80211_reg_initiator initiator);
void ath9k_reg_apply_radar_flags(struct wiphy *wiphy);
int ath9k_regd_init(struct ath_hw *ah);
bool ath9k_regd_is_eeprom_valid(struct ath_hw *ah);
+19 −0
Original line number Diff line number Diff line
@@ -672,6 +672,25 @@ enum nl80211_bitrate_attr {
	NL80211_BITRATE_ATTR_MAX = __NL80211_BITRATE_ATTR_AFTER_LAST - 1
};

/**
 * enum nl80211_initiator - Indicates the initiator of a reg domain request
 * @NL80211_REGDOM_SET_BY_CORE: Core queried CRDA for a dynamic world
 * 	regulatory domain.
 * @NL80211_REGDOM_SET_BY_USER: User asked the wireless core to set the
 * 	regulatory domain.
 * @NL80211_REGDOM_SET_BY_DRIVER: a wireless drivers has hinted to the
 * 	wireless core it thinks its knows the regulatory domain we should be in.
 * @NL80211_REGDOM_SET_BY_COUNTRY_IE: the wireless core has received an
 * 	802.11 country information element with regulatory information it
 * 	thinks we should consider.
 */
enum nl80211_reg_initiator {
	NL80211_REGDOM_SET_BY_CORE,
	NL80211_REGDOM_SET_BY_USER,
	NL80211_REGDOM_SET_BY_DRIVER,
	NL80211_REGDOM_SET_BY_COUNTRY_IE,
};

/**
 * enum nl80211_reg_rule_attr - regulatory rule attributes
 * @NL80211_ATTR_REG_RULE_FLAGS: a set of flags which specify additional
+3 −21
Original line number Diff line number Diff line
@@ -348,24 +348,6 @@ struct bss_parameters {
	u8 basic_rates_len;
};

/**
 * enum reg_set_by - Indicates who is trying to set the regulatory domain
 * @REGDOM_SET_BY_CORE: Core queried CRDA for a dynamic world regulatory domain.
 * @REGDOM_SET_BY_USER: User asked the wireless core to set the
 * 	regulatory domain.
 * @REGDOM_SET_BY_DRIVER: a wireless drivers has hinted to the wireless core
 *	it thinks its knows the regulatory domain we should be in.
 * @REGDOM_SET_BY_COUNTRY_IE: the wireless core has received an 802.11 country
 *	information element with regulatory information it thinks we
 *	should consider.
 */
enum reg_set_by {
	REGDOM_SET_BY_CORE,
	REGDOM_SET_BY_USER,
	REGDOM_SET_BY_DRIVER,
	REGDOM_SET_BY_COUNTRY_IE,
};

/**
 * enum environment_cap - Environment parsed from country IE
 * @ENVIRON_ANY: indicates country IE applies to both indoor and
@@ -388,7 +370,7 @@ enum environment_cap {
 * 	and potentially inform users of which devices specifically
 * 	cased the conflicts.
 * @initiator: indicates who sent this request, could be any of
 * 	of those set in reg_set_by, %REGDOM_SET_BY_*
 * 	of those set in nl80211_reg_initiator (%NL80211_REGDOM_SET_BY_*)
 * @alpha2: the ISO / IEC 3166 alpha2 country code of the requested
 * 	regulatory domain. We have a few special codes:
 * 	00 - World regulatory domain
@@ -405,7 +387,7 @@ enum environment_cap {
 */
struct regulatory_request {
	int wiphy_idx;
	enum reg_set_by initiator;
	enum nl80211_reg_initiator initiator;
	char alpha2[2];
	bool intersect;
	u32 country_ie_checksum;
Loading