From: Luis R. Rodriguez Date: Fri, 13 Jul 2012 19:26:44 +0000 (-0700) Subject: compat-wireless: remove linux-next-pending/ onus patches X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=b7dd236be3fce50d1ccc4931deee7c2d71047fb1;p=openwrt%2Fstaging%2Fblogic.git compat-wireless: remove linux-next-pending/ onus patches These required an update, I'll provide the updated versions next. Signed-off-by: Luis R. Rodriguez --- diff --git a/linux-next-pending/0001-cfg80211-add-CONFIG_CFG80211_CERTIFICATION_ONUS.patch b/linux-next-pending/0001-cfg80211-add-CONFIG_CFG80211_CERTIFICATION_ONUS.patch deleted file mode 100644 index 07c863ca90a0..000000000000 --- a/linux-next-pending/0001-cfg80211-add-CONFIG_CFG80211_CERTIFICATION_ONUS.patch +++ /dev/null @@ -1,60 +0,0 @@ -From f67b7a8fd4fed5e28018588c91a262481b62da67 Mon Sep 17 00:00:00 2001 -From: "Luis R. Rodriguez" -Date: Wed, 20 Jun 2012 07:57:40 -0700 -Subject: [PATCH 1/7] cfg80211: add CONFIG_CFG80211_CERTIFICATION_ONUS - -This adds CONFIG_CFG80211_CERTIFICATION_ONUS which is to -be used for features / code which require a bit of work on -the system integrator's part to ensure that the system will -still pass 802.11 regulatory certification. This option is -also usable for researchers and experimenters looking to add -code in the kernel without impacting compliant code. - -We'd use CONFIG_EXPERT alone but it seems that most standard -Linux distributions are enabling CONFIG_EXPERT already. This -allows us to define 802.11 specific kernel features under a -flag that is intended by design to be disabled by standard -Linux distributions, and only enabled by system integrators -or distributions that have done work to ensure regulatory -certification on the system with the enabled features. - -Signed-off-by: Luis R. Rodriguez ---- - net/wireless/Kconfig | 21 +++++++++++++++++++++ - 1 file changed, 21 insertions(+) - -diff --git a/net/wireless/Kconfig b/net/wireless/Kconfig -index 4d2b1ec..fe4adb1 100644 ---- a/net/wireless/Kconfig -+++ b/net/wireless/Kconfig -@@ -74,6 +74,27 @@ config CFG80211_REG_DEBUG - - If unsure, say N. - -+config CFG80211_CERTIFICATION_ONUS -+ bool "cfg80211 certification onus" -+ depends on CFG80211 && EXPERT -+ default n -+ ---help--- -+ You should disable this option unless you are both capable -+ and willing to ensure your system will remain regulatory -+ compliant with the features available under this option. -+ Some options may still be under heavy development and -+ for whatever reason regulatory compliance has not or -+ cannot yet be verified. Regulatory verification may at -+ times only be possible until you have the final system -+ in place. -+ -+ This option should only be enabled by system integrators -+ or distributions that have done work necessary to ensure -+ regulatory certification on the system with the enabled -+ features. Alternatively you can enable this option if -+ you are a wireless researcher and are working in a controlled -+ and approved environment by your local regulatory agency. -+ - config CFG80211_DEFAULT_PS - bool "enable powersave by default" - depends on CFG80211 --- -1.7.10.rc1.22.gf5241 - diff --git a/linux-next-pending/0002-cfg80211-add-cellular-base-station-regulatory-hint-s.patch b/linux-next-pending/0002-cfg80211-add-cellular-base-station-regulatory-hint-s.patch deleted file mode 100644 index 55e15b32f6fe..000000000000 --- a/linux-next-pending/0002-cfg80211-add-cellular-base-station-regulatory-hint-s.patch +++ /dev/null @@ -1,420 +0,0 @@ -From 5b5eda71c5e7f3862914d6add4917acca524cd19 Mon Sep 17 00:00:00 2001 -From: "Luis R. Rodriguez" -Date: Wed, 20 Jun 2012 16:30:42 -0700 -Subject: [PATCH 2/7] cfg80211: add cellular base station regulatory hint - support - -Cellular base stations can provide hints to cfg80211 about -where they think we are. This can be done for example on -a cell phone. To enable these hints we simply allow them -through as user regulatory hints but we allow userspace -to clasify the hint as either coming directly from the -user or coming from a cellular base station. This option -is only available when you enable -CONFIG_CFG80211_CERTIFICATION_ONUS. - -The base station hints themselves will not be processed -by the core unless at least one device on the system -supports this feature. - -Signed-off-by: Luis R. Rodriguez ---- - include/linux/nl80211.h | 32 +++++++++++++ - include/net/regulatory.h | 5 ++ - net/wireless/core.c | 1 + - net/wireless/nl80211.c | 23 +++++++++- - net/wireless/reg.c | 113 +++++++++++++++++++++++++++++++++++++++++++--- - net/wireless/reg.h | 5 +- - 6 files changed, 171 insertions(+), 8 deletions(-) - -diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h -index db961a5..23c45cc 100644 ---- a/include/linux/nl80211.h -+++ b/include/linux/nl80211.h -@@ -1242,6 +1242,12 @@ enum nl80211_commands { - * @NL80211_ATTR_BG_SCAN_PERIOD: Background scan period in seconds - * or 0 to disable background scan. - * -+ * @NL80211_ATTR_USER_REG_HINT_TYPE: type of regulatory hint passed from -+ * userspace. If unset it is assumed the hint comes directly from -+ * a user. If set code could specify exactly what type of source -+ * was used to provide the hint. For the different types of -+ * allowed user regulatory hints see nl80211_user_reg_hint_type. -+ * - * @NL80211_ATTR_MAX: highest attribute number currently defined - * @__NL80211_ATTR_AFTER_LAST: internal use - */ -@@ -1493,6 +1499,8 @@ enum nl80211_attrs { - - NL80211_ATTR_BG_SCAN_PERIOD, - -+ NL80211_ATTR_USER_REG_HINT_TYPE, -+ - /* add attributes here, update the policy in nl80211.c */ - - __NL80211_ATTR_AFTER_LAST, -@@ -2054,6 +2062,26 @@ enum nl80211_dfs_regions { - }; - - /** -+ * enum nl80211_user_reg_hint_type - type of user regulatory hint -+ * -+ * @NL80211_USER_REG_HINT_USER: a user sent the hint. This is always -+ * assumed if the attribute is not set. -+ * @NL80211_USER_REG_HINT_CELL_BASE: the hint comes from a cellular -+ * base station. Device drivers that have been tested to work -+ * properly to support this type of hint can enable these hints -+ * by setting the NL80211_FEATURE_CELL_BASE_REG_HINTS feature -+ * capability on the struct wiphy. The wireless core will -+ * ignore all cell base station hints until at least one device -+ * present has been registered with the wireless core that -+ * has listed NL80211_FEATURE_CELL_BASE_REG_HINTS as a -+ * supported feature. -+ */ -+enum nl80211_user_reg_hint_type { -+ NL80211_USER_REG_HINT_USER = 0, -+ NL80211_USER_REG_HINT_CELL_BASE = 1, -+}; -+ -+/** - * enum nl80211_survey_info - survey information - * - * These attribute types are used with %NL80211_ATTR_SURVEY_INFO -@@ -2942,11 +2970,15 @@ enum nl80211_ap_sme_features { - * @NL80211_FEATURE_HT_IBSS: This driver supports IBSS with HT datarates. - * @NL80211_FEATURE_INACTIVITY_TIMER: This driver takes care of freeing up - * the connected inactive stations in AP mode. -+ * @NL80211_FEATURE_CELL_BASE_REG_HINTS: This driver has been tested -+ * to work properly to suppport receiving regulatory hints from -+ * cellular base stations. - */ - enum nl80211_feature_flags { - NL80211_FEATURE_SK_TX_STATUS = 1 << 0, - NL80211_FEATURE_HT_IBSS = 1 << 1, - NL80211_FEATURE_INACTIVITY_TIMER = 1 << 2, -+ NL80211_FEATURE_CELL_BASE_REG_HINTS = 1 << 3, - }; - - /** -diff --git a/include/net/regulatory.h b/include/net/regulatory.h -index a5f7993..7dcaa27 100644 ---- a/include/net/regulatory.h -+++ b/include/net/regulatory.h -@@ -52,6 +52,10 @@ enum environment_cap { - * DFS master operation on a known DFS region (NL80211_DFS_*), - * dfs_region represents that region. Drivers can use this and the - * @alpha2 to adjust their device's DFS parameters as required. -+ * @user_reg_hint_type: if the @initiator was of type -+ * %NL80211_REGDOM_SET_BY_USER, this classifies the type -+ * of hint passed. This could be any of the %NL80211_USER_REG_HINT_* -+ * types. - * @intersect: indicates whether the wireless core should intersect - * the requested regulatory domain with the presently set regulatory - * domain. -@@ -70,6 +74,7 @@ enum environment_cap { - struct regulatory_request { - int wiphy_idx; - enum nl80211_reg_initiator initiator; -+ enum nl80211_user_reg_hint_type user_reg_hint_type; - char alpha2[2]; - u8 dfs_region; - bool intersect; -diff --git a/net/wireless/core.c b/net/wireless/core.c -index eb60410..2003dcf 100644 ---- a/net/wireless/core.c -+++ b/net/wireless/core.c -@@ -537,6 +537,7 @@ int wiphy_register(struct wiphy *wiphy) - } - - /* set up regulatory info */ -+ wiphy_regulatory_register(wiphy); - regulatory_update(wiphy, NL80211_REGDOM_SET_BY_CORE); - - list_add_rcu(&rdev->list, &cfg80211_rdev_list); -diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c -index 2a5cdb6..a58cf76 100644 ---- a/net/wireless/nl80211.c -+++ b/net/wireless/nl80211.c -@@ -294,6 +294,7 @@ static const struct nla_policy nl80211_policy[NL80211_ATTR_MAX+1] = { - [NL80211_ATTR_NOACK_MAP] = { .type = NLA_U16 }, - [NL80211_ATTR_INACTIVITY_TIMEOUT] = { .type = NLA_U16 }, - [NL80211_ATTR_BG_SCAN_PERIOD] = { .type = NLA_U16 }, -+ [NL80211_ATTR_USER_REG_HINT_TYPE] = { .type = NLA_U32 }, - }; - - /* policy for the key attributes */ -@@ -3485,6 +3486,7 @@ static int nl80211_req_set_reg(struct sk_buff *skb, struct genl_info *info) - { - int r; - char *data = NULL; -+ enum nl80211_user_reg_hint_type user_reg_hint_type; - - /* - * You should only get this when cfg80211 hasn't yet initialized -@@ -3504,7 +3506,21 @@ static int nl80211_req_set_reg(struct sk_buff *skb, struct genl_info *info) - - data = nla_data(info->attrs[NL80211_ATTR_REG_ALPHA2]); - -- r = regulatory_hint_user(data); -+ if (info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE]) -+ user_reg_hint_type = -+ nla_get_u32(info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE]); -+ else -+ user_reg_hint_type = NL80211_USER_REG_HINT_USER; -+ -+ switch (user_reg_hint_type) { -+ case NL80211_USER_REG_HINT_USER: -+ case NL80211_USER_REG_HINT_CELL_BASE: -+ break; -+ default: -+ return -EINVAL; -+ } -+ -+ r = regulatory_hint_user(data, user_reg_hint_type); - - return r; - } -@@ -3874,6 +3890,11 @@ static int nl80211_get_reg(struct sk_buff *skb, struct genl_info *info) - cfg80211_regdomain->dfs_region))) - goto nla_put_failure; - -+ if (reg_last_request_cell_base() && -+ nla_put_u32(msg, NL80211_ATTR_USER_REG_HINT_TYPE, -+ NL80211_USER_REG_HINT_CELL_BASE)) -+ goto nla_put_failure; -+ - nl_reg_rules = nla_nest_start(msg, NL80211_ATTR_REG_RULES); - if (!nl_reg_rules) - goto nla_put_failure; -diff --git a/net/wireless/reg.c b/net/wireless/reg.c -index b2b3222..05af62d 100644 ---- a/net/wireless/reg.c -+++ b/net/wireless/reg.c -@@ -97,9 +97,16 @@ const struct ieee80211_regdomain *cfg80211_regdomain; - * - cfg80211_world_regdom - * - cfg80211_regdom - * - last_request -+ * - reg_num_devs_support_basehint - */ - static DEFINE_MUTEX(reg_mutex); - -+/* -+ * Number of devices that registered to the core -+ * that support cellular base station regulatory hints -+ */ -+static int reg_num_devs_support_basehint; -+ - static inline void assert_reg_lock(void) - { - lockdep_assert_held(®_mutex); -@@ -911,6 +918,59 @@ static void handle_band(struct wiphy *wiphy, - handle_channel(wiphy, initiator, band, i); - } - -+static bool reg_request_cell_base(struct regulatory_request *request) -+{ -+ if (request->initiator != NL80211_REGDOM_SET_BY_USER) -+ return false; -+ if (request->user_reg_hint_type != NL80211_USER_REG_HINT_CELL_BASE) -+ return false; -+ return true; -+} -+ -+bool reg_last_request_cell_base(void) -+{ -+ assert_cfg80211_lock(); -+ -+ mutex_lock(®_mutex); -+ return reg_request_cell_base(last_request); -+ mutex_unlock(®_mutex); -+} -+ -+#ifdef CONFIG_CFG80211_CERTIFICATION_ONUS -+ -+/* Core specific check */ -+static int reg_ignore_cell_hint(struct regulatory_request *pending_request) -+{ -+ if (!reg_num_devs_support_basehint) -+ return -EOPNOTSUPP; -+ -+ if (reg_request_cell_base(last_request)) { -+ if (!regdom_changes(pending_request->alpha2)) -+ return -EALREADY; -+ return 0; -+ } -+ return 0; -+} -+ -+/* Device specific check */ -+static bool reg_dev_ignore_cell_hint(struct wiphy *wiphy) -+{ -+ if (!(wiphy->features & NL80211_FEATURE_CELL_BASE_REG_HINTS)) -+ return true; -+ return false; -+} -+#else -+static int reg_ignore_cell_hint(struct regulatory_request *pending_request) -+{ -+ return -EOPNOTSUPP; -+} -+static int reg_dev_ignore_cell_hint(struct wiphy *wiphy) -+{ -+ return true; -+} -+#endif -+ -+ - static bool ignore_reg_update(struct wiphy *wiphy, - enum nl80211_reg_initiator initiator) - { -@@ -944,6 +1004,9 @@ static bool ignore_reg_update(struct wiphy *wiphy, - return true; - } - -+ if (reg_request_cell_base(last_request)) -+ return reg_dev_ignore_cell_hint(wiphy); -+ - return false; - } - -@@ -1307,6 +1370,13 @@ static int ignore_request(struct wiphy *wiphy, - return 0; - case NL80211_REGDOM_SET_BY_COUNTRY_IE: - -+ if (reg_request_cell_base(last_request)) { -+ /* Trust a Cell base station over the AP's country IE */ -+ if (regdom_changes(pending_request->alpha2)) -+ return -EOPNOTSUPP; -+ return -EALREADY; -+ } -+ - last_wiphy = wiphy_idx_to_wiphy(last_request->wiphy_idx); - - if (unlikely(!is_an_alpha2(pending_request->alpha2))) -@@ -1351,6 +1421,12 @@ static int ignore_request(struct wiphy *wiphy, - - return REG_INTERSECT; - case NL80211_REGDOM_SET_BY_USER: -+ if (reg_request_cell_base(pending_request)) -+ return reg_ignore_cell_hint(pending_request); -+ -+ if (reg_request_cell_base(last_request)) -+ return -EOPNOTSUPP; -+ - if (last_request->initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE) - return REG_INTERSECT; - /* -@@ -1640,7 +1716,8 @@ static int regulatory_hint_core(const char *alpha2) - } - - /* User hints */ --int regulatory_hint_user(const char *alpha2) -+int regulatory_hint_user(const char *alpha2, -+ enum nl80211_user_reg_hint_type user_reg_hint_type) - { - struct regulatory_request *request; - -@@ -1654,6 +1731,7 @@ int regulatory_hint_user(const char *alpha2) - request->alpha2[0] = alpha2[0]; - request->alpha2[1] = alpha2[1]; - request->initiator = NL80211_REGDOM_SET_BY_USER; -+ request->user_reg_hint_type = user_reg_hint_type; - - queue_regulatory_request(request); - -@@ -1906,7 +1984,7 @@ static void restore_regulatory_settings(bool reset_user) - * settings, user regulatory settings takes precedence. - */ - if (is_an_alpha2(alpha2)) -- regulatory_hint_user(user_alpha2); -+ regulatory_hint_user(user_alpha2, NL80211_USER_REG_HINT_USER); - - if (list_empty(&tmp_reg_req_list)) - return; -@@ -2081,9 +2159,16 @@ static void print_regdomain(const struct ieee80211_regdomain *rd) - else { - if (is_unknown_alpha2(rd->alpha2)) - pr_info("Regulatory domain changed to driver built-in settings (unknown country)\n"); -- else -- pr_info("Regulatory domain changed to country: %c%c\n", -- rd->alpha2[0], rd->alpha2[1]); -+ else { -+ if (reg_request_cell_base(last_request)) -+ pr_info("Regulatory domain changed " -+ "to country: %c%c by Cell Station\n", -+ rd->alpha2[0], rd->alpha2[1]); -+ else -+ pr_info("Regulatory domain changed " -+ "to country: %c%c\n", -+ rd->alpha2[0], rd->alpha2[1]); -+ } - } - print_dfs_region(rd->dfs_region); - print_rd_rules(rd); -@@ -2290,6 +2375,18 @@ int reg_device_uevent(struct device *dev, struct kobj_uevent_env *env) - } - #endif /* CONFIG_HOTPLUG */ - -+void wiphy_regulatory_register(struct wiphy *wiphy) -+{ -+ assert_cfg80211_lock(); -+ -+ mutex_lock(®_mutex); -+ -+ if (!reg_dev_ignore_cell_hint(wiphy)) -+ reg_num_devs_support_basehint++; -+ -+ mutex_unlock(®_mutex); -+} -+ - /* Caller must hold cfg80211_mutex */ - void reg_device_remove(struct wiphy *wiphy) - { -@@ -2299,6 +2396,9 @@ void reg_device_remove(struct wiphy *wiphy) - - mutex_lock(®_mutex); - -+ if (!reg_dev_ignore_cell_hint(wiphy)) -+ reg_num_devs_support_basehint--; -+ - kfree(wiphy->regd); - - if (last_request) -@@ -2364,7 +2464,8 @@ int __init regulatory_init(void) - * as a user hint. - */ - if (!is_world_regdom(ieee80211_regdom)) -- regulatory_hint_user(ieee80211_regdom); -+ regulatory_hint_user(ieee80211_regdom, -+ NL80211_USER_REG_HINT_USER); - - return 0; - } -diff --git a/net/wireless/reg.h b/net/wireless/reg.h -index e2aaaf5..519492f 100644 ---- a/net/wireless/reg.h -+++ b/net/wireless/reg.h -@@ -22,9 +22,11 @@ bool is_world_regdom(const char *alpha2); - bool reg_is_valid_request(const char *alpha2); - bool reg_supported_dfs_region(u8 dfs_region); - --int regulatory_hint_user(const char *alpha2); -+int regulatory_hint_user(const char *alpha2, -+ enum nl80211_user_reg_hint_type user_reg_hint_type); - - int reg_device_uevent(struct device *dev, struct kobj_uevent_env *env); -+void wiphy_regulatory_register(struct wiphy *wiphy); - void reg_device_remove(struct wiphy *wiphy); - - int __init regulatory_init(void); -@@ -33,6 +35,7 @@ void regulatory_exit(void); - int set_regdom(const struct ieee80211_regdomain *rd); - - void regulatory_update(struct wiphy *wiphy, enum nl80211_reg_initiator setby); -+bool reg_last_request_cell_base(void); - - /** - * regulatory_hint_found_beacon - hints a beacon was found on a channel --- -1.7.10.rc1.22.gf5241 - diff --git a/linux-next-pending/0003-cfg80211-rename-reg_device_remove-to-wiphy_regulator.patch b/linux-next-pending/0003-cfg80211-rename-reg_device_remove-to-wiphy_regulator.patch deleted file mode 100644 index 6420f0177fb5..000000000000 --- a/linux-next-pending/0003-cfg80211-rename-reg_device_remove-to-wiphy_regulator.patch +++ /dev/null @@ -1,66 +0,0 @@ -From d43e15fc8fac569d65ccca877e81c362673ac49f Mon Sep 17 00:00:00 2001 -From: "Luis R. Rodriguez" -Date: Fri, 6 Jul 2012 15:14:38 -0700 -Subject: [PATCH 3/7] cfg80211: rename reg_device_remove() to - wiphy_regulatory_deregister() - -This makes it clearer what we're doing. This now makes a bit -more sense given that regardless of the wiphy if the cell -base station hint feature is supported we will be modifying the -way the regulatory core behaves. - -Signed-off-by: Luis R. Rodriguez ---- - net/wireless/core.c | 8 +++++--- - net/wireless/reg.c | 2 +- - net/wireless/reg.h | 2 +- - 3 files changed, 7 insertions(+), 5 deletions(-) - -diff --git a/net/wireless/core.c b/net/wireless/core.c -index 2003dcf..5b4463e 100644 ---- a/net/wireless/core.c -+++ b/net/wireless/core.c -@@ -648,9 +648,11 @@ void wiphy_unregister(struct wiphy *wiphy) - /* nothing */ - cfg80211_unlock_rdev(rdev); - -- /* If this device got a regulatory hint tell core its -- * free to listen now to a new shiny device regulatory hint */ -- reg_device_remove(wiphy); -+ /* -+ * If this device got a regulatory hint tell core its -+ * free to listen now to a new shiny device regulatory hint -+ */ -+ wiphy_regulatory_deregister(wiphy); - - cfg80211_rdev_list_generation++; - device_del(&rdev->wiphy.dev); -diff --git a/net/wireless/reg.c b/net/wireless/reg.c -index 05af62d..43b7750 100644 ---- a/net/wireless/reg.c -+++ b/net/wireless/reg.c -@@ -2388,7 +2388,7 @@ void wiphy_regulatory_register(struct wiphy *wiphy) - } - - /* Caller must hold cfg80211_mutex */ --void reg_device_remove(struct wiphy *wiphy) -+void wiphy_regulatory_deregister(struct wiphy *wiphy) - { - struct wiphy *request_wiphy = NULL; - -diff --git a/net/wireless/reg.h b/net/wireless/reg.h -index 519492f..f36b15f 100644 ---- a/net/wireless/reg.h -+++ b/net/wireless/reg.h -@@ -27,7 +27,7 @@ int regulatory_hint_user(const char *alpha2, - - int reg_device_uevent(struct device *dev, struct kobj_uevent_env *env); - void wiphy_regulatory_register(struct wiphy *wiphy); --void reg_device_remove(struct wiphy *wiphy); -+void wiphy_regulatory_deregister(struct wiphy *wiphy); - - int __init regulatory_init(void); - void regulatory_exit(void); --- -1.7.10.rc1.22.gf5241 - diff --git a/linux-next-pending/0004-cfg80211-make-regulatory_update-static.patch b/linux-next-pending/0004-cfg80211-make-regulatory_update-static.patch deleted file mode 100644 index 68e39dad214e..000000000000 --- a/linux-next-pending/0004-cfg80211-make-regulatory_update-static.patch +++ /dev/null @@ -1,67 +0,0 @@ -From d2d3cf42db0fdf0189d1d7f2c377a4a8b34e9f54 Mon Sep 17 00:00:00 2001 -From: "Luis R. Rodriguez" -Date: Tue, 10 Jul 2012 10:04:02 -0700 -Subject: [PATCH 4/7] cfg80211: make regulatory_update() static - -Now that we have wiphy_regulatory_register() we can -tuck away the core's regulatory_update() call there -and make it static. - -Signed-off-by: Luis R. Rodriguez ---- - net/wireless/core.c | 1 - - net/wireless/reg.c | 6 ++++-- - net/wireless/reg.h | 1 - - 3 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/net/wireless/core.c b/net/wireless/core.c -index 5b4463e..b7dc646 100644 ---- a/net/wireless/core.c -+++ b/net/wireless/core.c -@@ -538,7 +538,6 @@ int wiphy_register(struct wiphy *wiphy) - - /* set up regulatory info */ - wiphy_regulatory_register(wiphy); -- regulatory_update(wiphy, NL80211_REGDOM_SET_BY_CORE); - - list_add_rcu(&rdev->list, &cfg80211_rdev_list); - cfg80211_rdev_list_generation++; -diff --git a/net/wireless/reg.c b/net/wireless/reg.c -index 43b7750..b0a09b2 100644 ---- a/net/wireless/reg.c -+++ b/net/wireless/reg.c -@@ -1232,8 +1232,8 @@ static void wiphy_update_regulatory(struct wiphy *wiphy, - wiphy->reg_notifier(wiphy, last_request); - } - --void regulatory_update(struct wiphy *wiphy, -- enum nl80211_reg_initiator setby) -+static void regulatory_update(struct wiphy *wiphy, -+ enum nl80211_reg_initiator setby) - { - mutex_lock(®_mutex); - wiphy_update_regulatory(wiphy, setby); -@@ -2385,6 +2385,8 @@ void wiphy_regulatory_register(struct wiphy *wiphy) - reg_num_devs_support_basehint++; - - mutex_unlock(®_mutex); -+ -+ regulatory_update(wiphy, NL80211_REGDOM_SET_BY_CORE); - } - - /* Caller must hold cfg80211_mutex */ -diff --git a/net/wireless/reg.h b/net/wireless/reg.h -index f36b15f..f023c8a 100644 ---- a/net/wireless/reg.h -+++ b/net/wireless/reg.h -@@ -34,7 +34,6 @@ void regulatory_exit(void); - - int set_regdom(const struct ieee80211_regdomain *rd); - --void regulatory_update(struct wiphy *wiphy, enum nl80211_reg_initiator setby); - bool reg_last_request_cell_base(void); - - /** --- -1.7.10.rc1.22.gf5241 - diff --git a/linux-next-pending/0005-cfg80211-remove-regulatory_update.patch b/linux-next-pending/0005-cfg80211-remove-regulatory_update.patch deleted file mode 100644 index 13abdf73af96..000000000000 --- a/linux-next-pending/0005-cfg80211-remove-regulatory_update.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 6edd094772d86e2f89ec81146df4a20971d1deb7 Mon Sep 17 00:00:00 2001 -From: "Luis R. Rodriguez" -Date: Tue, 10 Jul 2012 10:07:50 -0700 -Subject: [PATCH 5/7] cfg80211: remove regulatory_update() - -regulatory_update() just calls wiphy_update_regulatory(). -wiphy_update_regulatory() assumes you already have -the reg_mutex held so just move the call within locking -context and kill the superfluous regulatory_update(). - -Signed-off-by: Luis R. Rodriguez ---- - net/wireless/reg.c | 12 ++---------- - 1 file changed, 2 insertions(+), 10 deletions(-) - -diff --git a/net/wireless/reg.c b/net/wireless/reg.c -index b0a09b2..6d57e18 100644 ---- a/net/wireless/reg.c -+++ b/net/wireless/reg.c -@@ -1232,14 +1232,6 @@ static void wiphy_update_regulatory(struct wiphy *wiphy, - wiphy->reg_notifier(wiphy, last_request); - } - --static void regulatory_update(struct wiphy *wiphy, -- enum nl80211_reg_initiator setby) --{ -- mutex_lock(®_mutex); -- wiphy_update_regulatory(wiphy, setby); -- mutex_unlock(®_mutex); --} -- - static void update_all_wiphy_regulatory(enum nl80211_reg_initiator initiator) - { - struct cfg80211_registered_device *rdev; -@@ -2384,9 +2376,9 @@ void wiphy_regulatory_register(struct wiphy *wiphy) - if (!reg_dev_ignore_cell_hint(wiphy)) - reg_num_devs_support_basehint++; - -- mutex_unlock(®_mutex); -+ wiphy_update_regulatory(wiphy, NL80211_REGDOM_SET_BY_CORE); - -- regulatory_update(wiphy, NL80211_REGDOM_SET_BY_CORE); -+ mutex_unlock(®_mutex); - } - - /* Caller must hold cfg80211_mutex */ --- -1.7.10.rc1.22.gf5241 - diff --git a/linux-next-pending/0007-ath9k-make-CONFIG_ATH9K_DFS_CERTIFIED-depend-on-CFG8.patch b/linux-next-pending/0007-ath9k-make-CONFIG_ATH9K_DFS_CERTIFIED-depend-on-CFG8.patch deleted file mode 100644 index 10a145643d84..000000000000 --- a/linux-next-pending/0007-ath9k-make-CONFIG_ATH9K_DFS_CERTIFIED-depend-on-CFG8.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 2d3d45bf352e5749a0c5ff396d629f46f539bf4c Mon Sep 17 00:00:00 2001 -From: "Luis R. Rodriguez" -Date: Wed, 20 Jun 2012 07:57:41 -0700 -Subject: [PATCH 7/7] ath9k: make CONFIG_ATH9K_DFS_CERTIFIED depend on - CFG80211_CERTIFICATION_ONUS - -Turns out every most standard Linux distributions enable -CONFIG_EXPERT, so use the shiny new CFG80211_CERTIFICATION_ONUS -which is meant by design to not be enabled by all Linux -distributions. - -Signed-off-by: Luis R. Rodriguez ---- - drivers/net/wireless/ath/ath9k/Kconfig | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/net/wireless/ath/ath9k/Kconfig b/drivers/net/wireless/ath/ath9k/Kconfig -index e507e78..c7aa664 100644 ---- a/drivers/net/wireless/ath/ath9k/Kconfig -+++ b/drivers/net/wireless/ath/ath9k/Kconfig -@@ -64,7 +64,7 @@ config ATH9K_DEBUGFS - - config ATH9K_DFS_CERTIFIED - bool "Atheros DFS support for certified platforms" -- depends on ATH9K && EXPERT -+ depends on ATH9K && CFG80211_CERTIFICATION_ONUS - default n - ---help--- - This option enables DFS support for initiating radiation on --- -1.7.10.rc1.22.gf5241 -