ソースを参照

qcacld-3.0: Send TDLS STA notify only when connect is success

Send TDLS STA notify only when connect is success.

This is required as incase connection, it will increment
tdls_soc_obj->set_state_info.set_state_cnt.
It that connection results in failure, then also, without
this check this count will increment.
For subsquent connections, in tdls_send_update_to_fw()
because of incremented count, it will be treated as
FW Set State is already sent and will not send it
which will result in FW crash while adding TDLS peer.

Change-Id: Ic3bedfb1357ac703f98d2d0285dcc85605bab97e
CRs-Fixed: 2955401
Utkarsh Bhatnagar 3 年 前
コミット
1169039038

+ 9 - 7
components/umac/mlme/connection_mgr/core/src/wlan_cm_vdev_connect.c

@@ -1335,18 +1335,20 @@ cm_connect_complete_ind(struct wlan_objmgr_vdev *vdev,
 		wlan_cm_roam_state_change(pdev, vdev_id, WLAN_ROAM_INIT,
 					  REASON_CONNECT);
 	cm_csr_connect_done_ind(vdev, rsp);
-	if (QDF_IS_STATUS_SUCCESS(rsp->connect_status))
-		cm_process_connect_complete(psoc, pdev, vdev, rsp);
+
 	cm_connect_info(vdev, QDF_IS_STATUS_SUCCESS(rsp->connect_status) ?
 			true : false, &rsp->bssid, &rsp->ssid,
 			rsp->freq);
 
-	if (QDF_IS_STATUS_SUCCESS(rsp->connect_status))
+	if (QDF_IS_STATUS_SUCCESS(rsp->connect_status)) {
+		cm_process_connect_complete(psoc, pdev, vdev, rsp);
 		policy_mgr_incr_active_session(psoc, op_mode, vdev_id);
-	wlan_tdls_notify_sta_connect(vdev_id,
-				     mlme_get_tdls_chan_switch_prohibited(vdev),
-				     mlme_get_tdls_prohibited(vdev), vdev);
-	wlan_p2p_status_connect(vdev);
+		wlan_tdls_notify_sta_connect(vdev_id,
+					     mlme_get_tdls_chan_switch_prohibited(vdev),
+					     mlme_get_tdls_prohibited(vdev),
+					     vdev);
+		wlan_p2p_status_connect(vdev);
+	}
 
 	return QDF_STATUS_SUCCESS;
 }