mac80211/ath9k: fix excessive "Failed to stop TX DMA" logspam in client mode
authorFelix Fietkau <nbd@openwrt.org>
Fri, 16 Sep 2011 07:59:51 +0000 (07:59 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Fri, 16 Sep 2011 07:59:51 +0000 (07:59 +0000)
SVN-Revision: 28247

package/mac80211/patches/300-pending_work.patch
package/mac80211/patches/310-ibss_ht.patch

index 596ef67a78fbc6ca81ad3e11f956985e0c15adca..7a8e1b1e6a2eeb6ebe4af0783647152d8125451d 100644 (file)
        ath9k_hw_start_nfcal(ah, true);
  
        if (ah->caldata)
+--- a/net/mac80211/ieee80211_i.h
++++ b/net/mac80211/ieee80211_i.h
+@@ -671,7 +671,6 @@ enum queue_stop_reason {
+       IEEE80211_QUEUE_STOP_REASON_AGGREGATION,
+       IEEE80211_QUEUE_STOP_REASON_SUSPEND,
+       IEEE80211_QUEUE_STOP_REASON_SKB_ADD,
+-      IEEE80211_QUEUE_STOP_REASON_CHTYPE_CHANGE,
+ };
+ #ifdef CONFIG_MAC80211_LEDS
+--- a/net/mac80211/mlme.c
++++ b/net/mac80211/mlme.c
+@@ -1921,24 +1921,8 @@ static void ieee80211_rx_mgmt_beacon(str
+               rcu_read_unlock();
+-              /*
+-               * Whenever the AP announces the HT mode change that can be
+-               * 40MHz intolerant or etc., it would be safer to stop tx
+-               * queues before doing hw config to avoid buffer overflow.
+-               */
+-              ieee80211_stop_queues_by_reason(&sdata->local->hw,
+-                              IEEE80211_QUEUE_STOP_REASON_CHTYPE_CHANGE);
+-
+-              /* flush out all packets */
+-              synchronize_net();
+-
+-              drv_flush(local, false);
+-
+               changed |= ieee80211_enable_ht(sdata, elems.ht_info_elem,
+                                              bssid, ap_ht_cap_flags);
+-
+-              ieee80211_wake_queues_by_reason(&sdata->local->hw,
+-                              IEEE80211_QUEUE_STOP_REASON_CHTYPE_CHANGE);
+       }
+       /* Note: country IE parsing is done for us by cfg80211 */
index 1acd253f02af3d24d332b31c9ec507acb1cfff43..6e0de5b467db587374b0980b8f9a5977ec56296b 100644 (file)
  
        unsigned long ibss_join_req;
        /* probe response/beacon for IBSS */
-@@ -1091,6 +1092,7 @@ void ieee80211_ibss_notify_scan_complete
+@@ -1090,6 +1091,7 @@ void ieee80211_ibss_notify_scan_complete
  void ieee80211_ibss_setup_sdata(struct ieee80211_sub_if_data *sdata);
  struct sta_info *ieee80211_ibss_add_sta(struct ieee80211_sub_if_data *sdata,
                                        u8 *bssid, u8 *addr, u32 supp_rates,
                                        gfp_t gfp);
  int ieee80211_ibss_join(struct ieee80211_sub_if_data *sdata,
                        struct cfg80211_ibss_params *params);
-@@ -1344,6 +1346,12 @@ void ieee80211_recalc_smps(struct ieee80
+@@ -1343,6 +1345,12 @@ void ieee80211_recalc_smps(struct ieee80
  size_t ieee80211_ie_split(const u8 *ies, size_t ielen,
                          const u8 *ids, int n_ids, size_t offset);
  size_t ieee80211_ie_split_vendor(const u8 *ies, size_t ielen, size_t offset);
  
  /* internal work items */
  void ieee80211_work_init(struct ieee80211_local *local);
-@@ -1372,6 +1380,8 @@ ieee80211_get_channel_mode(struct ieee80
+@@ -1371,6 +1379,8 @@ ieee80211_get_channel_mode(struct ieee80
  bool ieee80211_set_channel_type(struct ieee80211_local *local,
                                struct ieee80211_sub_if_data *sdata,
                                enum nl80211_channel_type chantype);