diff options
Diffstat (limited to 'net/mac80211/mesh_plink.c')
-rw-r--r-- | net/mac80211/mesh_plink.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/mac80211/mesh_plink.c b/net/mac80211/mesh_plink.c index 8f0887fc7128..b488e1859b18 100644 --- a/net/mac80211/mesh_plink.c +++ b/net/mac80211/mesh_plink.c | |||
@@ -957,7 +957,8 @@ mesh_plink_get_event(struct ieee80211_sub_if_data *sdata, | |||
957 | if (!matches_local) | 957 | if (!matches_local) |
958 | event = CNF_RJCT; | 958 | event = CNF_RJCT; |
959 | if (!mesh_plink_free_count(sdata) || | 959 | if (!mesh_plink_free_count(sdata) || |
960 | (sta->llid != llid || sta->plid != plid)) | 960 | sta->llid != llid || |
961 | (sta->plid && sta->plid != plid)) | ||
961 | event = CNF_IGNR; | 962 | event = CNF_IGNR; |
962 | else | 963 | else |
963 | event = CNF_ACPT; | 964 | event = CNF_ACPT; |
@@ -1074,6 +1075,10 @@ mesh_process_plink_frame(struct ieee80211_sub_if_data *sdata, | |||
1074 | goto unlock_rcu; | 1075 | goto unlock_rcu; |
1075 | } | 1076 | } |
1076 | 1077 | ||
1078 | /* 802.11-2012 13.3.7.2 - update plid on CNF if not set */ | ||
1079 | if (!sta->plid && event == CNF_ACPT) | ||
1080 | sta->plid = plid; | ||
1081 | |||
1077 | changed |= mesh_plink_fsm(sdata, sta, event); | 1082 | changed |= mesh_plink_fsm(sdata, sta, event); |
1078 | 1083 | ||
1079 | unlock_rcu: | 1084 | unlock_rcu: |