qcacld-3.0: Wait for RSO stop response from firmware

Firmware doesn't expect any vdev commands from host while RSO stop
is happening. It sends a response to the RSO_STOP command once
it's done with cleanup. Host needs to run a timer after sending
RSO stop command to firmware and wait for a maximum of 6 seconds
for the response. Host can stop the timer and allow the commands
to firmware in the below cases,
1. RSO_STOP response with success status
2. RSO_STOP response with HO_FAIL status followed by
   HO_FAIL event: Host needs to wait till HO_FAIL event is received

If firmware doesn't send any response in the 6 seconds wait, issue
a recovery to help to check the firmware state.

Also, set WMI_ROAM_SCAN_MODE_FLAG_REPORT_STATUS always when MLO is
supported while sending RSO_STOP to firmware. It's sent only
in case of wpa_supplicant disabled roaming currently.

Change-Id: I8182e60beb9288dba23cc72e978dc781c8ab1707
CRs-Fixed: 3106023
This commit is contained in:
Srinivas Dasari
2021-12-21 16:28:34 +05:30
committed by Madan Koyyalamudi
parent 2bd5e660c5
commit db3c1a98e5
16 changed files with 429 additions and 43 deletions

View File

@@ -2575,6 +2575,8 @@ wmi_convert_fw_notif_to_cm_notif(uint32_t fw_notif)
return CM_ROAM_NOTIF_DEAUTH_RECV;
case WMI_ROAM_NOTIF_DISASSOC_RECV:
return CM_ROAM_NOTIF_DISASSOC_RECV;
case WMI_ROAM_NOTIF_SCAN_MODE_SUCCESS_WITH_HO_FAIL:
return CM_ROAM_NOTIF_HO_FAIL;
case WMI_ROAM_NOTIF_SCAN_END:
return CM_ROAM_NOTIF_SCAN_END;
default:
@@ -4032,6 +4034,23 @@ wmi_fill_rso_start_scan_tlv(struct wlan_roam_scan_offload_params *rso_req,
return QDF_STATUS_SUCCESS;
}
#ifdef WLAN_FEATURE_11BE_MLO
static void
wmi_set_rso_stop_report_status(wmi_roam_scan_mode_fixed_param *rso_fp)
{
/**
* Set the REPORT status flag always, so that firmware sends RSO stop
* status always
*/
rso_fp->flags |= WMI_ROAM_SCAN_MODE_FLAG_REPORT_STATUS;
}
#else
static void
wmi_set_rso_stop_report_status(wmi_roam_scan_mode_fixed_param *rso_fp)
{
}
#endif
/**
* send_roam_scan_offload_mode_cmd_tlv() - send roam scan mode request to fw
* @wmi_handle: wmi handle
@@ -4101,6 +4120,8 @@ send_roam_scan_offload_mode_cmd_tlv(
roam_scan_mode_fp->flags |=
WMI_ROAM_SCAN_MODE_FLAG_REPORT_STATUS;
goto send_roam_scan_mode_cmd;
} else {
wmi_set_rso_stop_report_status(roam_scan_mode_fp);
}
/* Fill in scan parameters suitable for roaming scan */