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

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

ath: move common dynamic regulatory domain setting to a helper



This moves the dynamic regulatory domain selection code into
a helper.

Signed-off-by: default avatarLuis R. Rodriguez <mcgrof@do-not-panic.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 03f27120
Loading
Loading
Loading
Loading
+37 −18
Original line number Original line Diff line number Diff line
@@ -356,14 +356,48 @@ static u16 ath_regd_find_country_by_name(char *alpha2)
	return -1;
	return -1;
}
}


static int __ath_reg_dyn_country(struct wiphy *wiphy,
				 struct ath_regulatory *reg,
				 struct regulatory_request *request)
{
	u16 country_code;

	if (!ath_is_world_regd(reg))
		return -EINVAL;

	country_code = ath_regd_find_country_by_name(request->alpha2);
	if (country_code == (u16) -1)
		return -EINVAL;

	reg->current_rd = COUNTRY_ERD_FLAG;
	reg->current_rd |= country_code;

	__ath_regd_init(reg);

	ath_reg_apply_world_flags(wiphy, request->initiator, reg);

	return 0;
}

static void ath_reg_dyn_country(struct wiphy *wiphy,
				struct ath_regulatory *reg,
				struct regulatory_request *request)
{
	if (__ath_reg_dyn_country(wiphy, reg, request))
		return;

	printk(KERN_DEBUG "ath: regdomain 0x%0x "
			  "dynamically updated by %s\n",
	       reg->current_rd,
	       reg_initiator_name(request->initiator));
}

void ath_reg_notifier_apply(struct wiphy *wiphy,
void ath_reg_notifier_apply(struct wiphy *wiphy,
			    struct regulatory_request *request,
			    struct regulatory_request *request,
			    struct ath_regulatory *reg)
			    struct ath_regulatory *reg)
{
{
	struct ath_common *common = container_of(reg, struct ath_common,
	struct ath_common *common = container_of(reg, struct ath_common,
						 regulatory);
						 regulatory);
	u16 country_code;

	/* We always apply this */
	/* We always apply this */
	ath_reg_apply_radar_flags(wiphy);
	ath_reg_apply_radar_flags(wiphy);


@@ -391,22 +425,7 @@ void ath_reg_notifier_apply(struct wiphy *wiphy,
	case NL80211_REGDOM_SET_BY_USER:
	case NL80211_REGDOM_SET_BY_USER:
		break;
		break;
	case NL80211_REGDOM_SET_BY_COUNTRY_IE:
	case NL80211_REGDOM_SET_BY_COUNTRY_IE:
		if (!ath_is_world_regd(reg))
		ath_reg_dyn_country(wiphy, reg, request);
			break;

		country_code = ath_regd_find_country_by_name(request->alpha2);
		if (country_code == (u16) -1)
			break;

		reg->current_rd = COUNTRY_ERD_FLAG;
		reg->current_rd |= country_code;

		printk(KERN_DEBUG "ath: regdomain 0x%0x updated by CountryIE\n",
			reg->current_rd);
		__ath_regd_init(reg);

		ath_reg_apply_world_flags(wiphy, request->initiator, reg);

		break;
		break;
	}
	}
}
}