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

SVN-Revision: 28247
This commit is contained in:
Felix Fietkau 2011-09-16 07:59:51 +00:00
parent 22be36418e
commit dbde8f805e
2 changed files with 40 additions and 3 deletions

View file

@ -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 */

View file

@ -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);