1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-12-25 08:40:49 +02:00

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
This commit is contained in:
nbd 2011-09-16 07:59:51 +00:00
parent 4669033c14
commit 72225d6800
2 changed files with 40 additions and 3 deletions

View File

@ -2811,3 +2811,40 @@
ath9k_hw_start_nfcal(ah, true); ath9k_hw_start_nfcal(ah, true);
if (ah->caldata) 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; unsigned long ibss_join_req;
/* probe response/beacon for IBSS */ /* 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); void ieee80211_ibss_setup_sdata(struct ieee80211_sub_if_data *sdata);
struct sta_info *ieee80211_ibss_add_sta(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, u8 *bssid, u8 *addr, u32 supp_rates,
@ -177,7 +177,7 @@
gfp_t gfp); gfp_t gfp);
int ieee80211_ibss_join(struct ieee80211_sub_if_data *sdata, int ieee80211_ibss_join(struct ieee80211_sub_if_data *sdata,
struct cfg80211_ibss_params *params); 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, size_t ieee80211_ie_split(const u8 *ies, size_t ielen,
const u8 *ids, int n_ids, size_t offset); const u8 *ids, int n_ids, size_t offset);
size_t ieee80211_ie_split_vendor(const u8 *ies, size_t ielen, 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 */ /* internal work items */
void ieee80211_work_init(struct ieee80211_local *local); 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, bool ieee80211_set_channel_type(struct ieee80211_local *local,
struct ieee80211_sub_if_data *sdata, struct ieee80211_sub_if_data *sdata,
enum nl80211_channel_type chantype); enum nl80211_channel_type chantype);