lkml.org 
[lkml]   [2016]   [Jun]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 4/4] mac80211: sta_info: max_peers reached falsely
Date
From: Meirav Kama <meiravk@ti.com>

Issue happened when receiving delete_sta command without
changing plink_state from ESTAB to HOLDING before.
When receiving delete_sta command for mesh interface
verify plink_state is not ESTAB and if so, decrease
plink count and update beacon.

Signed-off-by: Meirav Kama <meiravk@ti.com>
Acked-by: Yaniv Machani <yanivma@ti.com>
---
net/mac80211/sta_info.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)

diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
index 76b737d..1ce6320 100644
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -1009,11 +1009,25 @@ int sta_info_destroy_addr_bss(struct ieee80211_sub_if_data *sdata,
{
struct sta_info *sta;
int ret;
+#ifdef CONFIG_MAC80211_MESH
+ bool dec_links = false;
+#endif

mutex_lock(&sdata->local->sta_mtx);
sta = sta_info_get_bss(sdata, addr);
+#ifdef CONFIG_MAC80211_MESH
+ if (sdata->vif.type == NL80211_IFTYPE_MESH_POINT &&
+ sta->mesh->plink_state == NL80211_PLINK_ESTAB)
+ dec_links = true;
+#endif
ret = __sta_info_destroy(sta);
mutex_unlock(&sdata->local->sta_mtx);
+#ifdef CONFIG_MAC80211_MESH
+ if (dec_links) {
+ mesh_plink_dec_estab_count(sdata);
+ ieee80211_mbss_info_change_notify(sdata, BSS_CHANGED_BEACON);
+ }
+#endif

return ret;
}
--
2.9.0
\
 
 \ /
  Last update: 2016-06-28 14:01    [W:0.117 / U:1.560 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site