cfg80211: revert upstream regdomain handling breakage
authorFelix Fietkau <nbd@openwrt.org>
Mon, 25 Apr 2011 18:21:28 +0000 (18:21 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Mon, 25 Apr 2011 18:21:28 +0000 (18:21 +0000)
SVN-Revision: 26752

package/mac80211/patches/300-revert_regd_breakage.patch [new file with mode: 0644]
package/mac80211/patches/406-regd_no_assoc_hints.patch

diff --git a/package/mac80211/patches/300-revert_regd_breakage.patch b/package/mac80211/patches/300-revert_regd_breakage.patch
new file mode 100644 (file)
index 0000000..03dd926
--- /dev/null
@@ -0,0 +1,63 @@
+--- a/net/wireless/reg.c
++++ b/net/wireless/reg.c
+@@ -107,9 +107,6 @@ struct reg_beacon {
+ static void reg_todo(struct work_struct *work);
+ static DECLARE_WORK(reg_work, reg_todo);
+-static void reg_timeout_work(struct work_struct *work);
+-static DECLARE_DELAYED_WORK(reg_timeout, reg_timeout_work);
+-
+ /* We keep a static world regulatory domain in case of the absence of CRDA */
+ static const struct ieee80211_regdomain world_regdom = {
+       .n_reg_rules = 5,
+@@ -1334,9 +1331,6 @@ static void reg_set_request_processed(vo
+               need_more_processing = true;
+       spin_unlock(&reg_requests_lock);
+-      if (last_request->initiator == NL80211_REGDOM_SET_BY_USER)
+-              cancel_delayed_work_sync(&reg_timeout);
+-
+       if (need_more_processing)
+               schedule_work(&reg_work);
+ }
+@@ -1447,17 +1441,8 @@ static void reg_process_hint(struct regu
+       r = __regulatory_hint(wiphy, reg_request);
+       /* This is required so that the orig_* parameters are saved */
+       if (r == -EALREADY && wiphy &&
+-          wiphy->flags & WIPHY_FLAG_STRICT_REGULATORY) {
++          wiphy->flags & WIPHY_FLAG_STRICT_REGULATORY)
+               wiphy_update_regulatory(wiphy, initiator);
+-              return;
+-      }
+-
+-      /*
+-       * We only time out user hints, given that they should be the only
+-       * source of bogus requests.
+-       */
+-      if (reg_request->initiator == NL80211_REGDOM_SET_BY_USER)
+-              schedule_delayed_work(&reg_timeout, msecs_to_jiffies(3142));
+ }
+ /*
+@@ -2185,13 +2170,6 @@ out:
+       mutex_unlock(&reg_mutex);
+ }
+-static void reg_timeout_work(struct work_struct *work)
+-{
+-      REG_DBG_PRINT("Timeout while waiting for CRDA to reply, "
+-                    "restoring regulatory settings");
+-      restore_regulatory_settings(true);
+-}
+-
+ int __init regulatory_init(void)
+ {
+       int err = 0;
+@@ -2245,7 +2223,6 @@ void /* __init_or_exit */ regulatory_exi
+       struct reg_beacon *reg_beacon, *btmp;
+       cancel_work_sync(&reg_work);
+-      cancel_delayed_work_sync(&reg_timeout);
+       mutex_lock(&cfg80211_mutex);
+       mutex_lock(&reg_mutex);
index 839ce67b0ac983f5bf702047a61aaf991d270b3f..71affe68869756f4418935ee8cf2cf445d5bb2b4 100644 (file)
@@ -1,6 +1,6 @@
 --- a/net/wireless/reg.c
 +++ b/net/wireless/reg.c
-@@ -1644,6 +1644,8 @@ void regulatory_hint_11d(struct wiphy *w
+@@ -1629,6 +1629,8 @@ void regulatory_hint_11d(struct wiphy *w
        enum environment_cap env = ENVIRON_ANY;
        struct regulatory_request *request;
  
@@ -9,7 +9,7 @@
        mutex_lock(&reg_mutex);
  
        if (unlikely(!last_request))
-@@ -1850,6 +1852,8 @@ static void restore_regulatory_settings(
+@@ -1835,6 +1837,8 @@ static void restore_regulatory_settings(
  
  void regulatory_hint_disconnect(void)
  {