瀏覽代碼

qcacld-3.0: Send RSO stop if process roam synch indication fails

If CSR roam synch callback fails then the status is not updated
with error status code and this causes the caller to consider
roam synch indication is successful and RSO stop is not sent
to firmware leading to roam synch completion timeout at firmware

Send correct status to the caller of the api:
cm_roam_sync_event_handler_cb() if CSR roam synch processing
fails

CRs-Fixed: 3800617
Change-Id: I29214c04976498fd81cb5266738e341928af3af7
Pragaspathi Thilagaraj 1 年之前
父節點
當前提交
8be63d2a28
共有 1 個文件被更改,包括 8 次插入8 次删除
  1. 8 8
      components/umac/mlme/connection_mgr/core/src/wlan_cm_roam_offload_event.c

+ 8 - 8
components/umac/mlme/connection_mgr/core/src/wlan_cm_roam_offload_event.c

@@ -530,7 +530,6 @@ QDF_STATUS cm_roam_sync_event_handler_cb(struct wlan_objmgr_vdev *vdev,
 	uint8_t vdev_id;
 
 	sync_ind = (struct roam_offload_synch_ind *)event;
-
 	if (!sync_ind) {
 		mlme_err("Roam Sync ind ptr is NULL");
 		return QDF_STATUS_E_NULL_VALUE;
@@ -554,8 +553,7 @@ QDF_STATUS cm_roam_sync_event_handler_cb(struct wlan_objmgr_vdev *vdev,
 
 	wlan_roam_debug_log(sync_ind->roamed_vdev_id, DEBUG_ROAM_SYNCH_IND,
 			    DEBUG_INVALID_PEER_ID, sync_ind->bssid.bytes, NULL,
-			    0,
-			    0);
+			    0, 0);
 	DPTRACE(qdf_dp_trace_record_event(QDF_DP_TRACE_EVENT_RECORD,
 					  sync_ind->roamed_vdev_id,
 					  QDF_TRACE_DEFAULT_PDEV_ID,
@@ -570,8 +568,8 @@ QDF_STATUS cm_roam_sync_event_handler_cb(struct wlan_objmgr_vdev *vdev,
 		goto err;
 	}
 
-	if (!QDF_IS_STATUS_SUCCESS(cm_fw_roam_sync_start_ind(vdev,
-							     sync_ind))) {
+	status = cm_fw_roam_sync_start_ind(vdev, sync_ind);
+	if (QDF_IS_STATUS_ERROR(status)) {
 		mlme_err("LFR3: vdev:%d CSR Roam synch cb failed", vdev_id);
 		wlan_cm_free_roam_synch_frame_ind(rso_cfg);
 		goto err;
@@ -587,6 +585,7 @@ QDF_STATUS cm_roam_sync_event_handler_cb(struct wlan_objmgr_vdev *vdev,
 		} else {
 			mlme_err("LFR3: MLO: vdev:%d Invalid link Beacon Length",
 				 vdev_id);
+			status = QDF_STATUS_E_FAILURE;
 			goto err;
 		}
 	} else if (sync_ind->beacon_probe_resp_length >
@@ -612,12 +611,13 @@ QDF_STATUS cm_roam_sync_event_handler_cb(struct wlan_objmgr_vdev *vdev,
 			(QDF_IEEE80211_3ADDR_HDR_LEN + MAC_B_PR_SSID_OFFSET);
 
 	} else {
-		mlme_err("LFR3: vdev:%d Invalid Beacon Length", vdev_id);
+		mlme_err("LFR3: vdev:%d Invalid Beacon Length:%d", vdev_id,
+			 sync_ind->beacon_probe_resp_length);
+		status = QDF_STATUS_E_FAILURE;
 		goto err;
 	}
 
-	if (QDF_IS_STATUS_ERROR(cm_roam_pe_sync_callback(sync_ind,
-							 vdev_id,
+	if (QDF_IS_STATUS_ERROR(cm_roam_pe_sync_callback(sync_ind, vdev_id,
 							 ie_len))) {
 		mlme_err("LFR3: vdev:%d PE roam synch cb failed", vdev_id);
 		status = QDF_STATUS_E_BUSY;