Hi, Bob What is the consequence if we don't handle this case? Is the peer going to do the re-auth again? Regards, Chun-Yeow On Sun, Jun 29, 2014 at 4:54 AM, Bob Copeland <me@xxxxxxxxxxxxxxx> wrote: > [oops, +linux-wireless] > On Sat, Jun 28, 2014 at 04:35:25PM -0400, Bob Copeland wrote: >> The 802.11 standard says when processing a plink confirm >> frame: >> >> "If the peerLinkID in the mesh peering instance has not been >> set, the Local Link ID field of the Mesh Peering Confirm >> request shall be copied into the peerLinkID in the mesh >> peering instance." >> >> We were only doing this when receiving an open peering frame, >> but it could happen that the open frame gets lost and so we >> should handle this case rather than rejecting the confirm and >> failing the whole peering process. >> >> Reported-by: Yu Niiro <yu.niiro@xxxxxxxxx> >> Signed-off-by: Bob Copeland <me@xxxxxxxxxxxxxxx> >> --- >> net/mac80211/mesh_plink.c | 7 ++++++- >> 1 file changed, 6 insertions(+), 1 deletion(-) >> >> diff --git a/net/mac80211/mesh_plink.c b/net/mac80211/mesh_plink.c >> index 63b8741..c47194d 100644 >> --- a/net/mac80211/mesh_plink.c >> +++ b/net/mac80211/mesh_plink.c >> @@ -959,7 +959,8 @@ mesh_plink_get_event(struct ieee80211_sub_if_data *sdata, >> if (!matches_local) >> event = CNF_RJCT; >> if (!mesh_plink_free_count(sdata) || >> - (sta->llid != llid || sta->plid != plid)) >> + sta->llid != llid || >> + (sta->plid && sta->plid != plid)) >> event = CNF_IGNR; >> else >> event = CNF_ACPT; >> @@ -1080,6 +1081,10 @@ mesh_process_plink_frame(struct ieee80211_sub_if_data *sdata, >> goto unlock_rcu; >> } >> >> + /* 802.11-2012 13.3.7.2 - update plid on CNF if not set */ >> + if (!sta->plid && event == CNF_ACPT) >> + sta->plid = plid; >> + >> changed |= mesh_plink_fsm(sdata, sta, event); >> >> unlock_rcu: >> -- >> 2.0.0.rc2 >> > > -- > Bob Copeland %% www.bobcopeland.com > _______________________________________________ > Devel mailing list > Devel@xxxxxxxxxxxxxxxxxxxx > http://lists.open80211s.org/cgi-bin/mailman/listinfo/devel -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html