Эх сурвалжийг харах

qcacmn: Use seperate event for HO/roaming disconnect for old AP

Use seperate event for HO/roaming disconnect for old AP, as
if a disconnect is received during roaming, the state is moved
to disconnect and thus WLAN_CM_SM_EV_DISCONNECT_DONE is handled
as a normal disconnect and does not clean up the roaming
contexts in VDEV and peer.

Change-Id: I10e616be435b16e1cff6666940171fef6b2b4065
CRs-Fixed: 2994558
Huashan Qu 4 жил өмнө
parent
commit
3c98d7456d

+ 1 - 1
umac/mlme/connection_mgr/core/src/wlan_cm_host_roam.c

@@ -972,7 +972,7 @@ QDF_STATUS cm_roam_disconnect_rsp(struct wlan_objmgr_vdev *vdev,
 	}
 	}
 	qdf_status =
 	qdf_status =
 		cm_sm_deliver_event(vdev,
 		cm_sm_deliver_event(vdev,
-				    WLAN_CM_SM_EV_DISCONNECT_DONE,
+				    WLAN_CM_SM_EV_HO_ROAM_DISCONNECT_DONE,
 				    sizeof(*resp), resp);
 				    sizeof(*resp), resp);
 	if (QDF_IS_STATUS_SUCCESS(qdf_status))
 	if (QDF_IS_STATUS_SUCCESS(qdf_status))
 		return qdf_status;
 		return qdf_status;

+ 1 - 1
umac/mlme/connection_mgr/core/src/wlan_cm_roam_sm.c

@@ -323,7 +323,7 @@ bool cm_subst_reassoc_event(void *ctx, uint16_t event,
 		}
 		}
 		cm_reassoc_active(cm_ctx, data);
 		cm_reassoc_active(cm_ctx, data);
 		break;
 		break;
-	case WLAN_CM_SM_EV_DISCONNECT_DONE:
+	case WLAN_CM_SM_EV_HO_ROAM_DISCONNECT_DONE:
 		cm_reassoc_disconnect_complete(cm_ctx, data);
 		cm_reassoc_disconnect_complete(cm_ctx, data);
 		break;
 		break;
 	case WLAN_CM_SM_EV_BSS_CREATE_PEER_SUCCESS:
 	case WLAN_CM_SM_EV_BSS_CREATE_PEER_SUCCESS:

+ 1 - 0
umac/mlme/connection_mgr/core/src/wlan_cm_sm.c

@@ -1012,6 +1012,7 @@ static const char *cm_sm_event_names[] = {
 	"EV_PREAUTH_ACTIVE",
 	"EV_PREAUTH_ACTIVE",
 	"EV_PREAUTH_RESP",
 	"EV_PREAUTH_RESP",
 	"EV_REASSOC_TIMER",
 	"EV_REASSOC_TIMER",
+	"EV_HO_ROAM_DISCONNECT_DONE",
 };
 };
 
 
 enum wlan_cm_sm_state cm_get_state(struct cnx_mgr *cm_ctx)
 enum wlan_cm_sm_state cm_get_state(struct cnx_mgr *cm_ctx)

+ 2 - 0
umac/mlme/connection_mgr/core/src/wlan_cm_sm.h

@@ -66,6 +66,7 @@
  * @WLAN_CM_SM_EV_PREAUTH_ACTIVE:         Preauth active
  * @WLAN_CM_SM_EV_PREAUTH_ACTIVE:         Preauth active
  * @WLAN_CM_SM_EV_PREAUTH_RESP:           Preauth response
  * @WLAN_CM_SM_EV_PREAUTH_RESP:           Preauth response
  * @WLAN_CM_SM_EV_REASSOC_TIMER:         Reassoc timer expired
  * @WLAN_CM_SM_EV_REASSOC_TIMER:         Reassoc timer expired
+ * @WLAN_CM_SM_EV_HO_ROAM_DISCONNECT_DONE: Disconnect done for hands off/roaming
  * @WLAN_CM_SM_EV_MAX:                    Max event
  * @WLAN_CM_SM_EV_MAX:                    Max event
  */
  */
 enum wlan_cm_sm_evt {
 enum wlan_cm_sm_evt {
@@ -105,6 +106,7 @@ enum wlan_cm_sm_evt {
 	WLAN_CM_SM_EV_PREAUTH_ACTIVE = 33,
 	WLAN_CM_SM_EV_PREAUTH_ACTIVE = 33,
 	WLAN_CM_SM_EV_PREAUTH_RESP = 34,
 	WLAN_CM_SM_EV_PREAUTH_RESP = 34,
 	WLAN_CM_SM_EV_REASSOC_TIMER = 35,
 	WLAN_CM_SM_EV_REASSOC_TIMER = 35,
+	WLAN_CM_SM_EV_HO_ROAM_DISCONNECT_DONE = 36,
 	WLAN_CM_SM_EV_MAX,
 	WLAN_CM_SM_EV_MAX,
 };
 };