Search Linux Wireless

RE: [RFC 3/3] mac80211: remove queue stop on rate control update

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> From: Johannes Berg <johannes.berg@xxxxxxxxx>
>
> 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@xxxxxxxxx>
> ---
>  net/mac80211/ieee80211_i.h |    1 -
>  net/mac80211/mlme.c        |   19 -------------------
>  2 files changed, 20 deletions(-)
>
> --- a/net/mac80211/ieee80211_i.h        2012-03-15 16:39:21.000000000 +0100
> +++ b/net/mac80211/ieee80211_i.h        2012-03-15 16:39:47.000000000 +0100
> @@ -743,7 +743,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       2012-03-15 16:39:21.000000000 +0100
> +++ b/net/mac80211/mlme.c       2012-03-15 16:39:57.000000000 +0100
> @@ -212,21 +212,6 @@ static u32 ieee80211_config_ht_tx(struct
>         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);
> -               }

The queue stop was added to avoid sending frames while the hw reconfigure is in progress.
So that we can prevent differences b/w hw and rate control ht mode. But I doubt that hw_reconfig
removal could not affect split drivers where the rc is offloaded.
>
>                 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
>
>                 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);
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux