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 63b874101b27..c47194d27149 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:  |