mesh: Always free the station if peering failed

Previously, we would only free the station entry if a peering close
frame was received (freeing the station entry causes the kernel to
start sending peer candidate events again when suitable beacons are
received, triggering peering or authentication to restart).

The end result is the same in any case regardless of close reason:
if we leave holding state then peering has started again, so go
ahead and remove the station in all cases.

Signed-off-by: Bob Copeland <me@bobcopeland.com>
This commit is contained in:
Bob Copeland 2015-01-27 08:17:58 -05:00 committed by Jouni Malinen
parent 871ff0b746
commit 41bff862d9

View file

@ -384,14 +384,7 @@ static void mesh_mpm_fsm_restart(struct wpa_supplicant *wpa_s,
eloop_cancel_timeout(plink_timer, wpa_s, sta);
if (sta->mpm_close_reason == WLAN_REASON_MESH_CLOSE_RCVD) {
ap_free_sta(hapd, sta);
return;
}
wpa_mesh_set_plink_state(wpa_s, sta, PLINK_LISTEN);
sta->my_lid = sta->peer_lid = sta->mpm_close_reason = 0;
sta->mpm_retries = 0;
ap_free_sta(hapd, sta);
}