Search Linux Wireless

Re: [PATCH] mac80211: add extra checking for RC init upon receiving mesh beacon

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

 



Hi Chun-Yeow,

On Fri, Jul 20, 2012 at 5:36 AM, Chun-Yeow Yeoh <yeohchunyeow@xxxxxxxxx> wrote:
> Rate control statistic is flushed whenever the mesh beacon
> is received.

That's terrible! Thanks for catching this.

> This may not optimizes the performance of rate
> control algorithm. This patch ensures that <rate_control_
> rate_init> is called only if the peer's channel type is
> changed.
>
> Signed-off-by: Chun-Yeow Yeoh <yeohchunyeow@xxxxxxxxx>
> ---
>  net/mac80211/mesh_plink.c |   10 +++++++++-
>  net/mac80211/sta_info.h   |    4 ++++
>  2 files changed, 13 insertions(+), 1 deletions(-)
>
> diff --git a/net/mac80211/mesh_plink.c b/net/mac80211/mesh_plink.c
> index 4256859..a3fce28 100644
> --- a/net/mac80211/mesh_plink.c
> +++ b/net/mac80211/mesh_plink.c
> @@ -357,6 +357,7 @@ static struct sta_info *mesh_peer_init(struct ieee80211_sub_if_data *sdata,
>                 if (!sta)
>                         return NULL;
>                 insert = true;
> +               sta->mesh_rate_init = false;
>         }
>
>         spin_lock_bh(&sta->lock);
> @@ -377,9 +378,16 @@ static struct sta_info *mesh_peer_init(struct ieee80211_sub_if_data *sdata,
>                                             ~IEEE80211_HT_CAP_SUP_WIDTH_20_40;
>                 sta->ch_type =
>                         ieee80211_ht_oper_to_channel_type(elems->ht_operation);
> +       } else {
> +               sta->ch_type = NL80211_CHAN_NO_HT;
> +       }
> +
> +       if (!sta->mesh_rate_init || sta->pre_ch_type != sta->ch_type) {
> +               rate_control_rate_init(sta);
> +               sta->mesh_rate_init = true;
> +               sta->pre_ch_type = sta->ch_type;
>         }

I think right now there is an assumption that the peer's ch_type and
other capabilities won't change while a peering is established. In
that case, it seems simpler to just return early if sta->plink_state
== NL80211_PLINK_ESTAB. The sta->last_rx should probably still be
updated though.

Thomas
--
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