]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
mac80211: remove queue stop on rate control update
authorJohannes Berg <johannes.berg@intel.com>
Wed, 28 Mar 2012 08:58:38 +0000 (10:58 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 10 Apr 2012 18:54:08 +0000 (14:54 -0400)
We currently stop the queue when changing the rate
control between 20/40 MHz in the BSS. This seems to
have been necessary when we actually changed the
channel, but now that we just update the station it
doesn't seem right any more. Remove it.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/ieee80211_i.h
net/mac80211/mlme.c

index 867b8eec1e9e8516ccf45c547808170502af0aa7..93b075e14d09f76d22f418875228ebdf37b49bc5 100644 (file)
@@ -757,7 +757,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
index 9cc5dda682191af3d66e30f7d49f18d53586087e..594af5f4079cc7558fa83d96e47eca107d68d544 100644 (file)
@@ -212,21 +212,6 @@ static u32 ieee80211_config_ht_tx(struct ieee80211_sub_if_data *sdata,
        if (sta && (!reconfig ||
                    (disable_40 != !!(sta->sta.ht_cap.cap &
                                        IEEE80211_HT_CAP_SUP_WIDTH_20_40)))) {
-               if (reconfig) {
-                       /*
-                        * Whenever the AP announces the HT mode changed
-                        * (e.g. 40 MHz intolerant) stop queues to avoid
-                        * sending out frames while the rate control is
-                        * reconfiguring.
-                        */
-                       ieee80211_stop_queues_by_reason(&sdata->local->hw,
-                               IEEE80211_QUEUE_STOP_REASON_CHTYPE_CHANGE);
-
-                       /* flush out all packets */
-                       synchronize_net();
-
-                       drv_flush(local, false);
-               }
 
                if (disable_40)
                        sta->sta.ht_cap.cap &= ~IEEE80211_HT_CAP_SUP_WIDTH_20_40;
@@ -235,10 +220,6 @@ static u32 ieee80211_config_ht_tx(struct ieee80211_sub_if_data *sdata,
 
                rate_control_rate_update(local, sband, sta,
                                         IEEE80211_RC_HT_CHANGED);
-
-               if (reconfig)
-                       ieee80211_wake_queues_by_reason(&sdata->local->hw,
-                               IEEE80211_QUEUE_STOP_REASON_CHTYPE_CHANGE);
        }
        mutex_unlock(&local->sta_mtx);