From: Chun-Yeow Yeoh Date: Tue, 24 Jul 2012 03:52:35 +0000 (+0800) Subject: mac80211: don't re-init rate control when receiving mesh beacon X-Git-Tag: v3.7-rc1~70^2~42^2~2^2~51 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bae35d92b6a1b6fd8c699415ab90aeeea2a56bc3;p=platform%2Fkernel%2Flinux-exynos.git 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 [clarify commit message] Signed-off-by: Johannes Berg --- diff --git a/net/mac80211/mesh_plink.c b/net/mac80211/mesh_plink.c index af671b9..fa642c7 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)