Browse Source

qcacld-3.0: Initiate WLAN_VDEV_SM_EV_START only in init state

Initiate WLAN_VDEV_SM_EV_START for connect only in INIT state
as if its not in init state the VDEV SM is not cleaned up, which
needs to be debugged.

Sending WLAN_VDEV_SM_EV_START can cause pe session leak if the
event is handled by VDEV SM and return success. This can eventually
lead to all the pe session in used state.

Change-Id: I8245a7985bb08b04008b4f833f9474947c1bf57b
CRs-Fixed: 2982070
Abhishek Singh 3 years ago
parent
commit
99707d6ae9
1 changed files with 9 additions and 0 deletions
  1. 9 0
      core/mac/src/pe/lim/lim_process_sme_req_messages.c

+ 9 - 0
core/mac/src/pe/lim/lim_process_sme_req_messages.c

@@ -1176,6 +1176,15 @@ static QDF_STATUS lim_send_join_req(struct pe_session *session,
 {
 	QDF_STATUS status;
 
+	/* Continue connect only if Vdev is in INIT state */
+	status = wlan_vdev_mlme_is_init_state(session->vdev);
+	if (QDF_IS_STATUS_ERROR(status)) {
+		pe_err("Vdev %d not in int state cur state %d substate %d",
+			session->vdev_id,
+			wlan_vdev_mlme_get_state(session->vdev),
+			wlan_vdev_mlme_get_substate(session->vdev));
+		return status;
+	}
 	status = mlme_set_assoc_type(session->vdev, VDEV_ASSOC);
 	if (QDF_IS_STATUS_ERROR(status))
 		return status;