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:

committed by
Ravindra Konda

vanhempi
dda17ba73b
commit
6d594c749b
@@ -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)
|
||||
|
Viittaa uudesa ongelmassa
Block a user