diff options
author | Chun-Yeow Yeoh <yeohchunyeow@gmail.com> | 2012-07-24 07:52:35 +0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-07-31 18:10:55 +0400 |
commit | bae35d92b6a1b6fd8c699415ab90aeeea2a56bc3 (patch) | |
tree | dbdc9b9626dfce07340530051fa123f2eb6cdd99 /net/mac80211/mesh_plink.c | |
parent | 173f8654746c138a08f51a8a0db7747763a896a2 (diff) | |
download | linux-bae35d92b6a1b6fd8c699415ab90aeeea2a56bc3.tar.xz |
mac80211: don't re-init rate control when receiving mesh beacon
Rate control is re-initialized whenever a beacon from a mesh
peer received, breaking the algorithms and resulting in low
performance. Return early from mesh_peer_init if we already
established a link with this peer to avoid this.
Signed-off-by: Chun-Yeow Yeoh <yeohchunyeow@gmail.com>
[clarify commit message]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/mesh_plink.c')
-rw-r--r-- | net/mac80211/mesh_plink.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/net/mac80211/mesh_plink.c b/net/mac80211/mesh_plink.c index af671b984df3..fa642c794719 100644 --- a/net/mac80211/mesh_plink.c +++ b/net/mac80211/mesh_plink.c @@ -362,6 +362,11 @@ static struct sta_info *mesh_peer_init(struct ieee80211_sub_if_data *sdata, spin_lock_bh(&sta->lock); sta->last_rx = jiffies; + if (sta->plink_state == NL80211_PLINK_ESTAB) { + spin_unlock_bh(&sta->lock); + return sta; + } + sta->sta.supp_rates[band] = rates; if (elems->ht_cap_elem && sdata->local->_oper_channel_type != NL80211_CHAN_NO_HT) |