Browse Source

qcacld-3.0: Incorrect bssid value during Roam Result logging

In the cm_roam_result_info_event() api, for roam result the
current AP bssid is sent instead of candidate AP.

Correct this to send candidate AP bssid during roam result
logging.

Change-Id: I4b1d4634faa3fbf3e7b32af8c13d4b444d26c505
CRs-Fixed: 3237021
VIJAY RAJ 2 years ago
parent
commit
bcf0e588e7
1 changed files with 15 additions and 17 deletions
  1. 15 17
      components/umac/mlme/connection_mgr/core/src/wlan_cm_roam_offload.c

+ 15 - 17
components/umac/mlme/connection_mgr/core/src/wlan_cm_roam_offload.c

@@ -5740,8 +5740,8 @@ void cm_roam_result_info_event(struct wlan_objmgr_psoc *psoc,
 			       struct wmi_roam_scan_data *scan_data,
 			       uint8_t vdev_id)
 {
-	struct qdf_mac_addr bssid = {0};
 	uint8_t i;
+	struct qdf_mac_addr bssid = {0};
 	bool ap_found_in_roam_scan = false, bmiss_skip_full_scan = false;
 	bool roam_abort = (res->fail_reason == ROAM_FAIL_REASON_SYNC ||
 			   res->fail_reason == ROAM_FAIL_REASON_DISCONNECT ||
@@ -5789,15 +5789,8 @@ void cm_roam_result_info_event(struct wlan_objmgr_psoc *psoc,
 	for (i = 0; i < scan_data->num_ap; i++) {
 		if (i >= MAX_ROAM_CANDIDATE_AP)
 			break;
-
-		if (res->status == 0 &&
-		    scan_data->ap[i].type == WLAN_ROAM_SCAN_ROAMED_AP) {
-			qdf_mem_copy(wlan_diag_event.diag_cmn.bssid,
-				     scan_data->ap[i].bssid.bytes,
-				     QDF_MAC_ADDR_SIZE);
-			break;
-		} else if (scan_data->ap[i].type ==
-			   WLAN_ROAM_SCAN_CURRENT_AP) {
+		if (scan_data->ap[i].type ==
+		    WLAN_ROAM_SCAN_CURRENT_AP) {
 			qdf_mem_copy(wlan_diag_event.diag_cmn.bssid,
 				     scan_data->ap[i].bssid.bytes,
 				     QDF_MAC_ADDR_SIZE);
@@ -5806,6 +5799,12 @@ void cm_roam_result_info_event(struct wlan_objmgr_psoc *psoc,
 		}
 	}
 
+	if (!qdf_is_macaddr_zero(&res->fail_bssid)) {
+		qdf_mem_copy(wlan_diag_event.diag_cmn.bssid,
+			     res->fail_bssid.bytes,
+			     QDF_MAC_ADDR_SIZE);
+	}
+
 	WLAN_HOST_DIAG_EVENT_REPORT(&wlan_diag_event, EVENT_WLAN_ROAM_RESULT);
 	qdf_mem_zero(&wlan_diag_event, sizeof(wlan_diag_event));
 
@@ -6027,8 +6026,8 @@ void cm_roam_result_info_event(struct wlan_objmgr_psoc *psoc,
 			       struct wmi_roam_scan_data *scan_data,
 			       uint8_t vdev_id)
 {
-	struct wlan_log_record *log_record = NULL;
 	struct qdf_mac_addr bssid = {0};
+	struct wlan_log_record *log_record = NULL;
 	uint8_t i;
 	bool ap_found_in_roam_scan = false, bmiss_skip_full_scan = false;
 	bool roam_abort = (res->fail_reason == ROAM_FAIL_REASON_SYNC ||
@@ -6080,18 +6079,17 @@ void cm_roam_result_info_event(struct wlan_objmgr_psoc *psoc,
 		if (i >= MAX_ROAM_CANDIDATE_AP)
 			break;
 
-		if (res->status == 0 &&
-		    scan_data->ap[i].type == WLAN_ROAM_SCAN_ROAMED_AP) {
-			log_record->bssid = scan_data->ap[i].bssid;
-			break;
-		} else if (scan_data->ap[i].type ==
-			   WLAN_ROAM_SCAN_CURRENT_AP) {
+		if (scan_data->ap[i].type ==
+		    WLAN_ROAM_SCAN_CURRENT_AP) {
 			log_record->bssid = scan_data->ap[i].bssid;
 			bssid = scan_data->ap[i].bssid;
 			break;
 		}
 	}
 
+	if (!qdf_is_macaddr_zero(&res->fail_bssid))
+		log_record->bssid = res->fail_bssid;
+
 	wlan_connectivity_log_enqueue(log_record);
 	qdf_mem_zero(log_record, sizeof(*log_record));