Browse Source

qcacld-3.0: Dont send response to LIM during roam sync

WMA is sending response to ADD_STA and
ADD_BSS request during failure scenario.

Add conditions not to send the response to LIM
during the roam sync indication operation.

Change-Id: Iad9a8b28e1029ebd12e2022fb38d2aa01a03e9aa
CRs-fixed: 1061963
(cherry picked from commit b23176083295303da6847274120af8ab48e62730)
Sandeep Puligilla 8 năm trước cách đây
mục cha
commit
2ff3ebe4a7
1 tập tin đã thay đổi với 13 bổ sung4 xóa
  1. 13 4
      core/wma/src/wma_dev_if.c

+ 13 - 4
core/wma/src/wma_dev_if.c

@@ -2988,7 +2988,7 @@ static void wma_add_bss_sta_mode(tp_wma_handle wma, tpAddBssParams add_bss)
 	ol_txrx_pdev_handle pdev;
 	struct wma_vdev_start_req req;
 	struct wma_target_req *msg;
-	uint8_t vdev_id, peer_id;
+	uint8_t peer_id;
 	ol_txrx_peer_handle peer = NULL;
 	QDF_STATUS status;
 	struct wma_txrx_node *iface;
@@ -2998,6 +2998,7 @@ static void wma_add_bss_sta_mode(tp_wma_handle wma, tpAddBssParams add_bss)
 	struct sir_hw_mode_params hw_mode = {0};
 	bool peer_assoc_sent = false;
 	struct pdev_params param = {0};
+	uint8_t vdev_id = add_bss->staContext.smesessionId;
 
 	if (NULL == pMac) {
 		WMA_LOGE("%s: Unable to get PE context", __func__);
@@ -3011,7 +3012,6 @@ static void wma_add_bss_sta_mode(tp_wma_handle wma, tpAddBssParams add_bss)
 		goto send_fail_resp;
 	}
 
-	vdev_id = add_bss->staContext.smesessionId;
 	iface = &wma->interfaces[vdev_id];
 
 	wma_set_bss_rate_flags(iface, add_bss);
@@ -3277,7 +3277,8 @@ peer_cleanup:
 			roam_synch_in_progress);
 send_fail_resp:
 	add_bss->status = QDF_STATUS_E_FAILURE;
-	wma_send_msg(wma, WMA_ADD_BSS_RSP, (void *)add_bss, 0);
+	if (!wma_is_roam_synch_in_progress(wma, vdev_id))
+		wma_send_msg(wma, WMA_ADD_BSS_RSP, (void *)add_bss, 0);
 }
 
 /**
@@ -3723,6 +3724,12 @@ static void wma_add_sta_req_sta_mode(tp_wma_handle wma, tpAddStaParams params)
 		goto out;
 	}
 	peer = ol_txrx_find_peer_by_addr(pdev, params->bssId, &params->staIdx);
+	if (peer == NULL) {
+		WMA_LOGE("%s: Peer is not present vdev id %d for %pM", __func__,
+			params->smesessionId, params->bssId);
+		status = QDF_STATUS_E_FAILURE;
+		goto out;
+	}
 	if (params->nonRoamReassoc) {
 		ol_txrx_peer_state_update(pdev, params->bssId,
 					  OL_TXRX_PEER_STATE_AUTH);
@@ -3916,7 +3923,9 @@ out:
 		 params->staType, params->smesessionId,
 		 params->assocId, params->bssId, params->staIdx,
 		 params->status);
-	wma_send_msg(wma, WMA_ADD_STA_RSP, (void *)params, 0);
+	/* Don't send a response during roam sync operation */
+	if (!wma_is_roam_synch_in_progress(wma, params->smesessionId))
+		wma_send_msg(wma, WMA_ADD_STA_RSP, (void *)params, 0);
 }
 
 /**