qcacmn: Trigger SAP / GO channel switch

Trigger SAP / GO channel switch on receiving
wmi_csa_ie_received_event_id from FW in STA + SAP / GO DFS SCC
concurrency.

Change-Id: Iff60dffb71b170f56c4fbee4e297b81b87632a2a
CRs-Fixed: 3431365
This commit is contained in:
Rachit Kankane
2023-02-02 00:00:58 +05:30
committed by Madan Koyyalamudi
szülő d525bc0165
commit f5820188d2
3 fájl változott, egészen pontosan 48 új sor hozzáadva és 11 régi sor törölve

Fájl megtekintése

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2023 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
@@ -34,6 +34,9 @@
#include <include/wlan_psoc_mlme.h>
#include <include/wlan_mlme_cmn.h>
#include <wlan_vdev_mgr_utils_api.h>
#ifdef WLAN_POLICY_MGR_ENABLE
#include "wlan_policy_mgr_api.h"
#endif
void
tgt_vdev_mgr_reset_response_timer_info(struct wlan_objmgr_psoc *psoc)
@@ -327,6 +330,39 @@ static void tgt_vdev_mgr_set_max_channel_switch_time(
}
}
#ifdef WLAN_POLICY_MGR_ENABLE
static QDF_STATUS
tgt_vdev_mgr_csa_received_handler(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id,
struct csa_offload_params *csa_event)
{
if (!psoc) {
mlme_err("PSOC is NULL");
return QDF_STATUS_E_INVAL;
}
if (!csa_event) {
mlme_err("CSA IE Received Event is NULL");
return QDF_STATUS_E_INVAL;
}
/* If received CSA is with no-TX mode, then only move SAP / GO */
if (!csa_event->switch_mode) {
mlme_err("CSA IE Received without no-Tx mode, ignoring 1st SAP / GO movement");
return QDF_STATUS_E_INVAL;
}
return policy_mgr_sta_sap_dfs_scc_conc_check(psoc, vdev_id, csa_event);
}
#else
static QDF_STATUS
tgt_vdev_mgr_csa_received_handler(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id,
struct csa_offload_params *csa_event)
{
return QDF_STATUS_E_NOSUPPORT;
}
#endif
#ifdef WLAN_FEATURE_11BE_MLO
static QDF_STATUS
tgt_vdev_mgr_quiet_offload_handler(struct wlan_objmgr_psoc *psoc,
@@ -370,6 +406,8 @@ void tgt_vdev_mgr_register_rx_ops(struct wlan_lmac_if_rx_ops *rx_ops)
tgt_vdev_mgr_multi_vdev_restart_resp_handler;
mlme_rx_ops->vdev_mgr_set_max_channel_switch_time =
tgt_vdev_mgr_set_max_channel_switch_time;
mlme_rx_ops->vdev_mgr_csa_received =
tgt_vdev_mgr_csa_received_handler;
tgt_psoc_reg_wakelock_info_rx_op(&rx_ops->mops);
tgt_vdev_mgr_reg_set_mac_address_response(mlme_rx_ops);
tgt_vdev_mgr_reg_quiet_offload(mlme_rx_ops);