qcacld-3.0: Send correct value of roam result info

As per requirement send ROAM or NO ROAM connectivity
log event to upper layer based on below conditions:
Print ROAM If,
1.FW sends res->status == 0 on successful roaming to AP
2.FW sends res->status == 1 if FW triggered roaming but
  failed due to reason other than below reason

Print NO_ROAM for below reasons where either candidate
AP is not found or we roamed to current AP itself
irrespective of the res->status value:
1.ROAM_FAIL_REASON_NO_AP_FOUND
2.ROAM_FAIL_REASON_NO_CAND_AP_FOUND
3.ROAM_FAIL_REASON_NO_AP_FOUND_AND_FINAL_BMISS_SENT
4.ROAM_FAIL_REASON_NO_CAND_AP_FOUND_AND_FINAL_BMISS_SENT
5.ROAM_FAIL_REASON_CURR_AP_STILL_OK

Change-Id: Ia2e07dcdacb78a22af9ae6b66c18c2c716161bf3
CRs-Fixed: 3653702
This commit is contained in:
Abhinav Kumar
2023-11-06 02:38:07 -08:00
committed by Ravindra Konda
vanhempi dda17ba73b
commit 6d594c749b

Näytä tiedosto

@@ -6460,7 +6460,6 @@ void cm_roam_result_info_event(struct wlan_objmgr_psoc *psoc,
{
uint8_t i;
struct qdf_mac_addr bssid = {0};
bool ap_found_in_roam_scan = false;
bool roam_abort = (res->fail_reason == ROAM_FAIL_REASON_SYNC ||
res->fail_reason == ROAM_FAIL_REASON_DISCONNECT ||
res->fail_reason == ROAM_FAIL_REASON_HOST ||
@@ -6479,30 +6478,33 @@ void cm_roam_result_info_event(struct wlan_objmgr_psoc *psoc,
populate_diag_cmn(&wlan_diag_event.diag_cmn, vdev_id,
(uint64_t)res->timestamp, NULL);
for (i = 0; i < scan_data->num_ap && scan_data->present; i++) {
if (i >= MAX_ROAM_CANDIDATE_AP)
break;
if (scan_data->ap[i].type == WLAN_ROAM_SCAN_ROAMED_AP ||
scan_data->ap[i].type == WLAN_ROAM_SCAN_CANDIDATE_AP) {
ap_found_in_roam_scan = true;
break;
}
}
wlan_diag_event.version = DIAG_ROAM_RESULT_VERSION;
wlan_diag_event.roam_fail_reason = res->fail_reason;
/*
* Print ROAM if:
* 1. Roaming is successful to AP
* 2. Atleast one candidate AP found during scan
* Print ROAM if,
* 1. FW sends res->status == 0 on successful roaming to AP
* 2. FW sends res->status == 1 if FW triggered roaming but failed due
* to the reason other than below reasons
*
* Print NO_ROAM only if:
* 1. No candidate AP found(even though other APs are found in scan)
* Print NO_ROAM for below reasons where either candidate AP is not
* found or we roamed to current AP itself irrespective of the
* res->status value:
* ROAM_FAIL_REASON_NO_AP_FOUND
* ROAM_FAIL_REASON_NO_CAND_AP_FOUND
* ROAM_FAIL_REASON_NO_AP_FOUND_AND_FINAL_BMISS_SENT
* ROAM_FAIL_REASON_NO_CAND_AP_FOUND_AND_FINAL_BMISS_SENT
* ROAM_FAIL_REASON_CURR_AP_STILL_OK
*/
wlan_diag_event.is_roam_successful = (res->status == 0) ||
(ap_found_in_roam_scan &&
res->fail_reason != ROAM_FAIL_REASON_NO_CAND_AP_FOUND);
wlan_diag_event.is_roam_successful = true;
if (res->fail_reason == ROAM_FAIL_REASON_NO_AP_FOUND ||
res->fail_reason == ROAM_FAIL_REASON_NO_CAND_AP_FOUND ||
res->fail_reason == ROAM_FAIL_REASON_CURR_AP_STILL_OK ||
res->fail_reason ==
ROAM_FAIL_REASON_NO_CAND_AP_FOUND_AND_FINAL_BMISS_SENT ||
res->fail_reason ==
ROAM_FAIL_REASON_NO_AP_FOUND_AND_FINAL_BMISS_SENT)
wlan_diag_event.is_roam_successful = false;
for (i = 0; i < scan_data->num_ap; i++) {
if (i >= MAX_ROAM_CANDIDATE_AP)