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:

committed by
Madan Koyyalamudi

parent
2bd5e660c5
commit
db3c1a98e5
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
@@ -31,6 +31,15 @@
|
||||
#include <target_if.h>
|
||||
|
||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||
/**
|
||||
* target_if_cm_get_roam_rx_ops() - Get CM roam rx ops registered
|
||||
* @psoc: pointer to psoc object
|
||||
*
|
||||
* Return: roam rx ops of connection mgr
|
||||
*/
|
||||
struct wlan_cm_roam_rx_ops *
|
||||
target_if_cm_get_roam_rx_ops(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
/**
|
||||
* target_if_cm_roam_sync_event() - Target IF handler for roam sync events
|
||||
* @scn: target handle
|
||||
|
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
@@ -32,4 +33,46 @@
|
||||
*/
|
||||
QDF_STATUS
|
||||
target_if_cm_roam_register_tx_ops(struct wlan_cm_roam_tx_ops *tx_ops);
|
||||
|
||||
#ifdef WLAN_FEATURE_11BE_MLO
|
||||
/**
|
||||
* target_if_stop_rso_stop_timer() - Stop the RSO_STOP timer
|
||||
* @roam_event: Roam event data
|
||||
*
|
||||
* This stops the RSO stop timer in below cases,
|
||||
* 1. If the reason is RSO_STATUS and notif is CM_ROAM_NOTIF_SCAN_MODE_SUCCESS
|
||||
* 2. If wait started already and received HO_FAIL event
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS
|
||||
target_if_stop_rso_stop_timer(struct roam_offload_roam_event *roam_event);
|
||||
#else
|
||||
static inline QDF_STATUS
|
||||
target_if_stop_rso_stop_timer(struct roam_offload_roam_event *roam_event)
|
||||
{
|
||||
roam_event->rso_timer_stopped = false;
|
||||
return QDF_STATUS_E_NOSUPPORT;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||
/**
|
||||
* target_if_cm_send_rso_stop_failure_rsp() - Send RSO_STOP failure rsp to CM
|
||||
* @psoc: psoc object
|
||||
* @vdev_id: vdev_id on which RSO stop is issued
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS
|
||||
target_if_cm_send_rso_stop_failure_rsp(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id);
|
||||
#else
|
||||
static inline QDF_STATUS
|
||||
target_if_cm_send_rso_stop_failure_rsp(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id)
|
||||
{
|
||||
return QDF_STATUS_E_NOSUPPORT;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user