Search Linux Wireless

Re: [PATCH 1/2] mac80211: mesh_plink: handle confirm frames with new plid

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux