From: nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Fri, 16 Sep 2011 07:59:51 +0000 (+0000)
Subject: mac80211/ath9k: fix excessive "Failed to stop TX DMA" logspam in client mode
X-Git-Url: https://git.rohieb.name/openwrt.git/commitdiff_plain/72225d6800d48bc70fc60cb8369c84536f727d43

mac80211/ath9k: fix excessive "Failed to stop TX DMA" logspam in client mode

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@28247 3c298f89-4303-0410-b956-a3cf2f4a3e73
---

diff --git a/package/mac80211/patches/300-pending_work.patch b/package/mac80211/patches/300-pending_work.patch
index 596ef67a7..7a8e1b1e6 100644
--- a/package/mac80211/patches/300-pending_work.patch
+++ b/package/mac80211/patches/300-pending_work.patch
@@ -2811,3 +2811,40 @@
  	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 */
diff --git a/package/mac80211/patches/310-ibss_ht.patch b/package/mac80211/patches/310-ibss_ht.patch
index 1acd253f0..6e0de5b46 100644
--- a/package/mac80211/patches/310-ibss_ht.patch
+++ b/package/mac80211/patches/310-ibss_ht.patch
@@ -169,7 +169,7 @@
  
  	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,
@@ -177,7 +177,7 @@
  					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);
@@ -190,7 +190,7 @@
  
  /* 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);