| From foo@baz Tue Nov 28 10:58:31 CET 2017 |
| From: Masashi Honma <masashi.honma@gmail.com> |
| Date: Wed, 30 Nov 2016 09:06:04 +0900 |
| Subject: mac80211: Suppress NEW_PEER_CANDIDATE event if no room |
| |
| From: Masashi Honma <masashi.honma@gmail.com> |
| |
| |
| [ Upstream commit 11197d006bcfabf0173a7820a163fcaac420d10e ] |
| |
| Previously, kernel sends NEW_PEER_CANDIDATE event to user land even if |
| the found peer does not have any room to accept other peer. This causes |
| continuous connection trials. |
| |
| Signed-off-by: Masashi Honma <masashi.honma@gmail.com> |
| Signed-off-by: Johannes Berg <johannes.berg@intel.com> |
| Signed-off-by: Sasha Levin <alexander.levin@verizon.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/mac80211/mesh_plink.c | 14 ++++++++------ |
| 1 file changed, 8 insertions(+), 6 deletions(-) |
| |
| --- a/net/mac80211/mesh_plink.c |
| +++ b/net/mac80211/mesh_plink.c |
| @@ -448,12 +448,14 @@ mesh_sta_info_alloc(struct ieee80211_sub |
| |
| /* Userspace handles station allocation */ |
| if (sdata->u.mesh.user_mpm || |
| - sdata->u.mesh.security & IEEE80211_MESH_SEC_AUTHED) |
| - cfg80211_notify_new_peer_candidate(sdata->dev, addr, |
| - elems->ie_start, |
| - elems->total_len, |
| - GFP_KERNEL); |
| - else |
| + sdata->u.mesh.security & IEEE80211_MESH_SEC_AUTHED) { |
| + if (mesh_peer_accepts_plinks(elems) && |
| + mesh_plink_availables(sdata)) |
| + cfg80211_notify_new_peer_candidate(sdata->dev, addr, |
| + elems->ie_start, |
| + elems->total_len, |
| + GFP_KERNEL); |
| + } else |
| sta = __mesh_sta_info_alloc(sdata, addr); |
| |
| return sta; |