[PATCH 02/12] mesh: Cancel previous dot11MeshConfirmTimeout before registering

Masashi Honma masashi.honma
Mon Nov 3 21:36:43 PST 2014


Signed-off-by: Kazuyuki Sakoda <KazuyukiA.Sakoda at jp.sony.com>
Signed-off-by: Masashi Honma <masashi.honma at gmail.com>
---
 wpa_supplicant/mesh_mpm.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/wpa_supplicant/mesh_mpm.c b/wpa_supplicant/mesh_mpm.c
index 322c96c..4a11d88 100644
--- a/wpa_supplicant/mesh_mpm.c
+++ b/wpa_supplicant/mesh_mpm.c
@@ -633,6 +633,7 @@ static void mesh_mpm_fsm(struct wpa_supplicant *wpa_s, struct sta_info *sta,
 	struct hostapd_data *hapd = wpa_s->ifmsh->bss[0];
 	struct mesh_conf *conf = wpa_s->ifmsh->mconf;
 	u16 reason = 0;
+	struct os_reltime remaining;
 
 	wpa_msg(wpa_s, MSG_DEBUG, "MPM " MACSTR " state %s event %s",
 		MAC2STR(sta->addr), mplstate[sta->plink_state],
@@ -663,6 +664,8 @@ static void mesh_mpm_fsm(struct wpa_supplicant *wpa_s, struct sta_info *sta,
 			wpa_mesh_set_plink_state(wpa_s, sta, PLINK_HOLDING);
 			if (!reason)
 				reason = WLAN_REASON_MESH_CLOSE_RCVD;
+			eloop_cancel_timeout_one(plink_timer, wpa_s, sta,
+						 &remaining);
 			eloop_register_timeout(dot11MeshHoldingTimeout, 0,
 					       plink_timer, wpa_s, sta);
 			mesh_mpm_send_plink_action(wpa_s, sta,
@@ -676,6 +679,8 @@ static void mesh_mpm_fsm(struct wpa_supplicant *wpa_s, struct sta_info *sta,
 			break;
 		case CNF_ACPT:
 			wpa_mesh_set_plink_state(wpa_s, sta, PLINK_CNF_RCVD);
+			eloop_cancel_timeout_one(plink_timer, wpa_s, sta,
+						 &remaining);
 			eloop_register_timeout(dot11MeshConfirmTimeout, 0,
 					       plink_timer, wpa_s, sta);
 			break;
@@ -693,6 +698,8 @@ static void mesh_mpm_fsm(struct wpa_supplicant *wpa_s, struct sta_info *sta,
 			wpa_mesh_set_plink_state(wpa_s, sta, PLINK_HOLDING);
 			if (!reason)
 				reason = WLAN_REASON_MESH_CLOSE_RCVD;
+			eloop_cancel_timeout_one(plink_timer, wpa_s, sta,
+						 &remaining);
 			eloop_register_timeout(dot11MeshHoldingTimeout, 0,
 					       plink_timer, wpa_s, sta);
 			sta->mpm_close_reason = reason;
@@ -722,6 +729,8 @@ static void mesh_mpm_fsm(struct wpa_supplicant *wpa_s, struct sta_info *sta,
 			wpa_mesh_set_plink_state(wpa_s, sta, PLINK_HOLDING);
 			if (!reason)
 				reason = WLAN_REASON_MESH_CLOSE_RCVD;
+			eloop_cancel_timeout_one(plink_timer, wpa_s, sta,
+						 &remaining);
 			eloop_register_timeout(dot11MeshHoldingTimeout, 0,
 					       plink_timer, wpa_s, sta);
 			sta->mpm_close_reason = reason;
@@ -743,6 +752,8 @@ static void mesh_mpm_fsm(struct wpa_supplicant *wpa_s, struct sta_info *sta,
 			wpa_mesh_set_plink_state(wpa_s, sta, PLINK_HOLDING);
 			reason = WLAN_REASON_MESH_CLOSE_RCVD;
 
+			eloop_cancel_timeout_one(plink_timer, wpa_s, sta,
+						 &remaining);
 			eloop_register_timeout(dot11MeshHoldingTimeout, 0,
 					       plink_timer, wpa_s, sta);
 			sta->mpm_close_reason = reason;
-- 
1.9.1




More information about the Hostap mailing list