qcacmn: Process get_cu_for_each_subbw driver command

1. Read the new service capability:
WMI_SERVICE_CCA_BUSY_INFO_FOREACH_20 MHz: Via this host knows
whether FW supports reporting of CCA busy info for each 20 MHz
subband of wideband scan channel or not.

WMI_SERVICE_VDEV_PARAM_CHWIDTH_WITH_NOTIFY_SUPPORT: Via this
host knows whether FW supports VDEV param channel width switch
with OMN/OMI notification or not

2. Register osif callback to send scan done indication to upper
layer

3. Add 2 new scan flags pause_home_channel and
report_cca_busy_for_each_20 MHz

Change-Id: I63d561a3c5f8e49a3ca42d956e6b630c63edeaf4
CRs-Fixed: 3460901
This commit is contained in:
abhinav kumar
2023-04-06 00:11:30 +05:30
committed by Madan Koyyalamudi
parent 6bc59d4929
commit df618544a3
12 changed files with 153 additions and 22 deletions

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2021 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 * Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above * purpose with or without fee is hereby granted, provided that the above
@@ -27,12 +27,15 @@
* struct osif_vdev_mgr_ops - VDEV mgr legacy callbacks * struct osif_vdev_mgr_ops - VDEV mgr legacy callbacks
* @osif_vdev_mgr_set_mac_addr_response: Callback to indicate set MAC address * @osif_vdev_mgr_set_mac_addr_response: Callback to indicate set MAC address
* response from FW * response from FW
* @osif_vdev_mgr_send_scan_done_complete_cb: send scan done indication to
* upper layer
*/ */
struct osif_vdev_mgr_ops { struct osif_vdev_mgr_ops {
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
void (*osif_vdev_mgr_set_mac_addr_response)(uint8_t vdev_id, void (*osif_vdev_mgr_set_mac_addr_response)(uint8_t vdev_id,
uint8_t resp_status); uint8_t resp_status);
#endif #endif
void (*osif_vdev_mgr_send_scan_done_complete_cb)(uint8_t vdev_id);
}; };
/** /**

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2021 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 * Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above * purpose with or without fee is hereby granted, provided that the above
@@ -38,12 +38,21 @@ static QDF_STATUS osif_vdev_mgr_set_mac_addr_response(uint8_t vdev_id,
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
} }
#endif #endif
static void osif_vdev_mgr_send_scan_done_complete_cb(uint8_t vdev_id)
{
if (osif_vdev_mgr_legacy_ops &&
osif_vdev_mgr_legacy_ops->osif_vdev_mgr_send_scan_done_complete_cb)
osif_vdev_mgr_legacy_ops->osif_vdev_mgr_send_scan_done_complete_cb(
vdev_id);
}
static struct mlme_vdev_mgr_ops vdev_mgr_ops = { static struct mlme_vdev_mgr_ops vdev_mgr_ops = {
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
.mlme_vdev_mgr_set_mac_addr_response = .mlme_vdev_mgr_set_mac_addr_response =
osif_vdev_mgr_set_mac_addr_response osif_vdev_mgr_set_mac_addr_response,
#endif #endif
.mlme_vdev_mgr_send_scan_done_complete_cb =
osif_vdev_mgr_send_scan_done_complete_cb,
}; };
/** /**

View File

@@ -175,6 +175,8 @@
* @QCA_NL80211_VENDOR_SUBCMD_AFC_EVENT_INDEX: AFC Event index * @QCA_NL80211_VENDOR_SUBCMD_AFC_EVENT_INDEX: AFC Event index
* @QCA_NL80211_VENDOR_SUBCMD_DOZED_AP_INDEX: Dozed AP event index * @QCA_NL80211_VENDOR_SUBCMD_DOZED_AP_INDEX: Dozed AP event index
* @QCA_NL80211_VENDOR_SUBCMD_ROAM_STATS_INDEX: Roam stats index index * @QCA_NL80211_VENDOR_SUBCMD_ROAM_STATS_INDEX: Roam stats index index
* @QCA_NL80211_VENDOR_SUBCMD_CONNECTED_CHANNEL_STATS_INDEX: Connected channel
* stats index
* @QCA_NL80211_VENDOR_SUBCMD_DRIVER_DISCONNECT_REASON_INDEX: * @QCA_NL80211_VENDOR_SUBCMD_DRIVER_DISCONNECT_REASON_INDEX:
* Driver disconnect reason index * Driver disconnect reason index
*/ */
@@ -303,6 +305,7 @@ enum qca_nl80211_vendor_subcmds_index {
#ifdef WLAN_FEATURE_ROAM_INFO_STATS #ifdef WLAN_FEATURE_ROAM_INFO_STATS
QCA_NL80211_VENDOR_SUBCMD_ROAM_STATS_INDEX, QCA_NL80211_VENDOR_SUBCMD_ROAM_STATS_INDEX,
#endif #endif
QCA_NL80211_VENDOR_SUBCMD_CONNECTED_CHANNEL_STATS_INDEX,
}; };
#if !defined(SUPPORT_WDEV_CFG80211_VENDOR_EVENT_ALLOC) && \ #if !defined(SUPPORT_WDEV_CFG80211_VENDOR_EVENT_ALLOC) && \

View File

@@ -451,6 +451,15 @@ static int init_deinit_service_ready_event_handler(ol_scn_t scn_handle,
init_deinit_update_vendor_handoff_control_caps(wmi_handle, psoc); init_deinit_update_vendor_handoff_control_caps(wmi_handle, psoc);
if (wmi_service_enabled(wmi_handle,
wmi_service_cca_busy_info_for_each_20mhz))
wlan_psoc_nif_fw_ext2_cap_set(psoc,
WLAN_CCA_BUSY_INFO_FOREACH_20MHZ);
if (wmi_service_enabled(wmi_handle,
wmi_service_vdev_param_chwidth_with_notify_support))
wlan_psoc_nif_fw_ext2_cap_set(psoc,
WLAN_VDEV_PARAM_CHWIDTH_WITH_NOTIFY_SUPPORT);
if (wmi_service_enabled(wmi_handle, wmi_service_ext_msg)) { if (wmi_service_enabled(wmi_handle, wmi_service_ext_msg)) {
target_if_debug("Wait for EXT message"); target_if_debug("Wait for EXT message");
} else { } else {

View File

@@ -259,6 +259,11 @@
/* 11AZ Trigger based ranging Responder support */ /* 11AZ Trigger based ranging Responder support */
#define WLAN_RTT_11AZ_TB_RSTA_SUPPORT 0x00000200 #define WLAN_RTT_11AZ_TB_RSTA_SUPPORT 0x00000200
/* CCA busy info for each 20Mhz subband of wideband scan channel support */
#define WLAN_CCA_BUSY_INFO_FOREACH_20MHZ 0x00000400
/* ch width notify support */
#define WLAN_VDEV_PARAM_CHWIDTH_WITH_NOTIFY_SUPPORT 0x00000800
/* PSOC op flags */ /* PSOC op flags */
/* Invalid VHT cap */ /* Invalid VHT cap */

View File

@@ -156,12 +156,15 @@ struct mlme_cm_ops {
* struct mlme_vdev_mgr_ops - MLME VDEV mgr osif callbacks * struct mlme_vdev_mgr_ops - MLME VDEV mgr osif callbacks
* @mlme_vdev_mgr_set_mac_addr_response: Callback to indicate set MAC address * @mlme_vdev_mgr_set_mac_addr_response: Callback to indicate set MAC address
* response to osif * response to osif
* @mlme_vdev_mgr_send_scan_done_complete_cb: Callback to indicate scan done
* complete to osif
*/ */
struct mlme_vdev_mgr_ops { struct mlme_vdev_mgr_ops {
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
QDF_STATUS (*mlme_vdev_mgr_set_mac_addr_response)(uint8_t vdev_id, QDF_STATUS (*mlme_vdev_mgr_set_mac_addr_response)(uint8_t vdev_id,
uint8_t resp_status); uint8_t resp_status);
#endif #endif
void (*mlme_vdev_mgr_send_scan_done_complete_cb)(uint8_t vdev_id);
}; };
/** /**
@@ -310,6 +313,8 @@ struct mlme_twt_ops {
* @mlme_cm_ext_rso_stop_cb: callback to send rso stop to FW * @mlme_cm_ext_rso_stop_cb: callback to send rso stop to FW
* @mlme_cm_ext_reassoc_req_cb: callback for reassoc request to * @mlme_cm_ext_reassoc_req_cb: callback for reassoc request to
* VDEV/PEER SM * VDEV/PEER SM
* @mlme_psoc_ext_hdl_enable: to enable mlme ext param handler
* @mlme_psoc_ext_hdl_disable: to disable mlme ext param handler
* @mlme_vdev_send_set_mac_addr: callback to send set MAC address * @mlme_vdev_send_set_mac_addr: callback to send set MAC address
* request to FW * request to FW
* @mlme_ext_get_acs_inprogress: callback to determine if ACS is * @mlme_ext_get_acs_inprogress: callback to determine if ACS is
@@ -385,6 +390,8 @@ struct mlme_ext_ops {
QDF_STATUS (*mlme_cm_ext_reassoc_req_cb)( QDF_STATUS (*mlme_cm_ext_reassoc_req_cb)(
struct wlan_objmgr_vdev *vdev, struct wlan_objmgr_vdev *vdev,
struct wlan_cm_vdev_reassoc_req *req); struct wlan_cm_vdev_reassoc_req *req);
QDF_STATUS (*mlme_psoc_ext_hdl_enable)(struct wlan_objmgr_psoc *psoc);
QDF_STATUS (*mlme_psoc_ext_hdl_disable)(struct wlan_objmgr_psoc *psoc);
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
QDF_STATUS (*mlme_vdev_send_set_mac_addr)( QDF_STATUS (*mlme_vdev_send_set_mac_addr)(
struct qdf_mac_addr mac_addr, struct qdf_mac_addr mac_addr,
@@ -447,6 +454,22 @@ QDF_STATUS mlme_psoc_ops_ext_hdl_create(struct psoc_mlme_obj *psoc_mlme);
*/ */
QDF_STATUS mlme_psoc_ops_ext_hdl_destroy(struct psoc_mlme_obj *psoc_mlme); QDF_STATUS mlme_psoc_ops_ext_hdl_destroy(struct psoc_mlme_obj *psoc_mlme);
/**
* mlme_psoc_ext_enable_cb() - to enable mlme ext param handler callback
* @psoc: psoc common object
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_psoc_ext_enable_cb(struct wlan_objmgr_psoc *psoc);
/**
* mlme_psoc_ext_disable_cb() - to disable mlme ext param handler callback
* @psoc: psoc common object
*
* Return: QDF_STATUS
*/
QDF_STATUS mlme_psoc_ext_disable_cb(struct wlan_objmgr_psoc *psoc);
/** /**
* mlme_pdev_ops_ext_hdl_create - Alloc PDEV mlme ext handle * mlme_pdev_ops_ext_hdl_create - Alloc PDEV mlme ext handle
* @pdev_mlme: PDEV MLME comp object * @pdev_mlme: PDEV MLME comp object
@@ -1059,6 +1082,14 @@ void mlme_set_osif_twt_cb(osif_twt_get_global_ops_cb twt_osif_ops);
*/ */
bool mlme_max_chan_switch_is_set(struct wlan_objmgr_psoc *psoc); bool mlme_max_chan_switch_is_set(struct wlan_objmgr_psoc *psoc);
/**
* mlme_send_scan_done_complete_cb() - send scan done indication to upper layer
* @vdev_id: vdev id
*
* Return: none
*/
void mlme_send_scan_done_complete_cb(uint8_t vdev_id);
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
/** /**
* mlme_vdev_ops_send_set_mac_address() - Send set MAC address request to FW * mlme_vdev_ops_send_set_mac_address() - Send set MAC address request to FW

View File

@@ -140,6 +140,26 @@ QDF_STATUS mlme_psoc_ops_ext_hdl_create(struct psoc_mlme_obj *psoc_mlme)
return ret; return ret;
} }
QDF_STATUS mlme_psoc_ext_enable_cb(struct wlan_objmgr_psoc *psoc)
{
QDF_STATUS ret = QDF_STATUS_SUCCESS;
if (glbl_ops && glbl_ops->mlme_psoc_ext_hdl_enable)
ret = glbl_ops->mlme_psoc_ext_hdl_enable(psoc);
return ret;
}
QDF_STATUS mlme_psoc_ext_disable_cb(struct wlan_objmgr_psoc *psoc)
{
QDF_STATUS ret = QDF_STATUS_SUCCESS;
if (glbl_ops && glbl_ops->mlme_psoc_ext_hdl_disable)
ret = glbl_ops->mlme_psoc_ext_hdl_disable(psoc);
return ret;
}
QDF_STATUS mlme_psoc_ops_ext_hdl_destroy(struct psoc_mlme_obj *psoc_mlme) QDF_STATUS mlme_psoc_ops_ext_hdl_destroy(struct psoc_mlme_obj *psoc_mlme)
{ {
QDF_STATUS ret = QDF_STATUS_SUCCESS; QDF_STATUS ret = QDF_STATUS_SUCCESS;
@@ -674,6 +694,14 @@ void mlme_set_ops_register_cb(mlme_get_global_ops_cb ops_cb)
glbl_ops_cb = ops_cb; glbl_ops_cb = ops_cb;
} }
void mlme_send_scan_done_complete_cb(uint8_t vdev_id)
{
if (glbl_vdev_mgr_ops &&
glbl_vdev_mgr_ops->mlme_vdev_mgr_send_scan_done_complete_cb)
glbl_vdev_mgr_ops->mlme_vdev_mgr_send_scan_done_complete_cb(
vdev_id);
}
bool mlme_max_chan_switch_is_set(struct wlan_objmgr_psoc *psoc) bool mlme_max_chan_switch_is_set(struct wlan_objmgr_psoc *psoc)
{ {
struct psoc_mlme_obj *mlme_psoc_obj; struct psoc_mlme_obj *mlme_psoc_obj;

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2018-2021 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 * Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above * purpose with or without fee is hereby granted, provided that the above
@@ -230,13 +230,20 @@ QDF_STATUS wlan_mlme_psoc_enable(struct wlan_objmgr_psoc *psoc)
QDF_STATUS status; QDF_STATUS status;
struct wlan_lmac_if_mlme_tx_ops *tx_ops; struct wlan_lmac_if_mlme_tx_ops *tx_ops;
status = mlme_psoc_ext_enable_cb(psoc);
if (QDF_IS_STATUS_ERROR(status)) {
mlme_err("Failed to register enable mlme ext param handler cb");
return status;
}
status = wlan_serialization_register_comp_info_cb status = wlan_serialization_register_comp_info_cb
(psoc, (psoc,
WLAN_UMAC_COMP_MLME, WLAN_UMAC_COMP_MLME,
WLAN_SER_CMD_SCAN, WLAN_SER_CMD_SCAN,
mlme_scan_serialization_comp_info_cb); mlme_scan_serialization_comp_info_cb);
if (status != QDF_STATUS_SUCCESS) { if (QDF_IS_STATUS_ERROR(status)) {
mlme_err("Serialize scan cmd register failed"); mlme_err("Serialize scan cmd register failed");
mlme_psoc_ext_disable_cb(psoc);
return status; return status;
} }
@@ -245,7 +252,7 @@ QDF_STATUS wlan_mlme_psoc_enable(struct wlan_objmgr_psoc *psoc)
if (tx_ops && tx_ops->vdev_mlme_attach) if (tx_ops && tx_ops->vdev_mlme_attach)
tx_ops->vdev_mlme_attach(psoc); tx_ops->vdev_mlme_attach(psoc);
return QDF_STATUS_SUCCESS; return status;
} }
QDF_STATUS wlan_mlme_psoc_disable(struct wlan_objmgr_psoc *psoc) QDF_STATUS wlan_mlme_psoc_disable(struct wlan_objmgr_psoc *psoc)
@@ -253,21 +260,23 @@ QDF_STATUS wlan_mlme_psoc_disable(struct wlan_objmgr_psoc *psoc)
QDF_STATUS status; QDF_STATUS status;
struct wlan_lmac_if_mlme_tx_ops *tx_ops; struct wlan_lmac_if_mlme_tx_ops *tx_ops;
status = wlan_serialization_deregister_comp_info_cb
(psoc,
WLAN_UMAC_COMP_MLME,
WLAN_SER_CMD_SCAN);
if (status != QDF_STATUS_SUCCESS) {
mlme_err("Serialize scan cmd deregister failed");
return status;
}
/* Unregister WMI events */ /* Unregister WMI events */
tx_ops = wlan_mlme_get_lmac_tx_ops(psoc); tx_ops = wlan_mlme_get_lmac_tx_ops(psoc);
if (tx_ops && tx_ops->vdev_mlme_detach) if (tx_ops && tx_ops->vdev_mlme_detach)
tx_ops->vdev_mlme_detach(psoc); tx_ops->vdev_mlme_detach(psoc);
return QDF_STATUS_SUCCESS; status = wlan_serialization_deregister_comp_info_cb
(psoc,
WLAN_UMAC_COMP_MLME,
WLAN_SER_CMD_SCAN);
if (QDF_IS_STATUS_ERROR(status))
mlme_err("Serialize scan cmd deregister failed");
status = mlme_psoc_ext_disable_cb(psoc);
if (QDF_IS_STATUS_ERROR(status))
mlme_err("Failed to unregister enable mlme ext param hdl cb");
return status;
} }
QDF_STATUS wlan_vdev_mlme_init(void) QDF_STATUS wlan_vdev_mlme_init(void)

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2017-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2017-2021 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 * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -607,8 +607,15 @@ static void scm_req_update_concurrency_params(struct wlan_objmgr_vdev *vdev,
if (!req->scan_req.scan_f_passive) if (!req->scan_req.scan_f_passive)
req->scan_req.dwell_time_active = req->scan_req.dwell_time_active =
scan_obj->scan_def.conc_active_dwell; scan_obj->scan_def.conc_active_dwell;
req->scan_req.dwell_time_passive = /*
scan_obj->scan_def.conc_passive_dwell; * Irrespective of any concurrency, if a scan request is
* triggered to get channel utilization for the current
* connected channel, passive scan dwell time should be
* MLME_GET_CHAN_STATS_PASSIVE_SCAN_TIME
*/
if (!req->scan_req.scan_f_pause_home_channel)
req->scan_req.dwell_time_passive =
scan_obj->scan_def.conc_passive_dwell;
req->scan_req.max_rest_time = req->scan_req.max_rest_time =
scan_obj->scan_def.conc_max_rest_time; scan_obj->scan_def.conc_max_rest_time;
req->scan_req.min_rest_time = req->scan_req.min_rest_time =
@@ -797,7 +804,14 @@ static void scm_req_update_concurrency_params(struct wlan_objmgr_vdev *vdev,
if (sta_active) { if (sta_active) {
req->scan_req.dwell_time_active_6g = req->scan_req.dwell_time_active_6g =
scan_obj->scan_def.active_dwell_time_6g_conc; scan_obj->scan_def.active_dwell_time_6g_conc;
req->scan_req.dwell_time_passive_6g = /*
* Irrespective of any concurrency, if a scan request is
* triggered to get channel utilization for the current
* connected channel, 6g passive scan dwell time should be
* MLME_GET_CHAN_STATS_WIDE_BAND_PASSIVE_SCAN_TIME
*/
if (!req->scan_req.scan_f_pause_home_channel)
req->scan_req.dwell_time_passive_6g =
scan_obj->scan_def.passive_dwell_time_6g_conc; scan_obj->scan_def.passive_dwell_time_6g_conc;
} }
} }

View File

@@ -1048,6 +1048,10 @@ enum scan_request_type {
* @scan_f_2ghz: scan 2.4 GHz channels * @scan_f_2ghz: scan 2.4 GHz channels
* @scan_f_5ghz: scan 5 GHz channels * @scan_f_5ghz: scan 5 GHz channels
* @scan_f_wide_band: scan in 40 MHz or higher bandwidth * @scan_f_wide_band: scan in 40 MHz or higher bandwidth
* @scan_f_pause_home_channel: To pause home channel in FW when scan channel is
* same as home channel
* @scan_f_report_cca_busy_for_each_20mhz: Allow FW to report CCA busy for each
* possible 20Mhz subbands of the wideband scan channel
* @scan_flags: variable to read and set scan_f_* flags in one shot * @scan_flags: variable to read and set scan_f_* flags in one shot
* can be used to dump all scan_f_* flags for debug * can be used to dump all scan_f_* flags for debug
* @scan_policy_high_accuracy: * @scan_policy_high_accuracy:
@@ -1074,7 +1078,6 @@ enum scan_request_type {
* @hint_s_ssid: short SSID hints * @hint_s_ssid: short SSID hints
* @hint_bssid: BSSID hints * @hint_bssid: BSSID hints
*/ */
struct scan_req_params { struct scan_req_params {
uint32_t scan_id; uint32_t scan_id;
uint32_t scan_req_id; uint32_t scan_req_id;
@@ -1140,7 +1143,9 @@ struct scan_req_params {
scan_f_forced:1, scan_f_forced:1,
scan_f_2ghz:1, scan_f_2ghz:1,
scan_f_5ghz:1, scan_f_5ghz:1,
scan_f_wide_band:1; scan_f_wide_band:1,
scan_f_pause_home_channel:1,
scan_f_report_cca_busy_for_each_20mhz:1;
}; };
uint32_t scan_flags; uint32_t scan_flags;
}; };

View File

@@ -5980,6 +5980,8 @@ typedef enum {
VDEV_PARAM_SET_DISABLED_SCHED_MODES), VDEV_PARAM_SET_DISABLED_SCHED_MODES),
VDEV_PARAM(vdev_param_set_sap_ps_with_twt, VDEV_PARAM(vdev_param_set_sap_ps_with_twt,
VDEV_PARAM_SET_SAP_PS_WITH_TWT), VDEV_PARAM_SET_SAP_PS_WITH_TWT),
VDEV_PARAM(vdev_param_chwidth_with_notify,
VDEV_PARAM_CHWIDTH_WITH_NOTIFY),
vdev_param_max, vdev_param_max,
} wmi_conv_vdev_param_id; } wmi_conv_vdev_param_id;
@@ -6345,6 +6347,9 @@ typedef enum {
#ifdef QCA_STANDALONE_SOUNDING_TRIGGER #ifdef QCA_STANDALONE_SOUNDING_TRIGGER
wmi_service_standalone_sound, wmi_service_standalone_sound,
#endif #endif
wmi_service_cca_busy_info_for_each_20mhz,
wmi_service_vdev_param_chwidth_with_notify_support,
wmi_services_max, wmi_services_max,
} wmi_conv_service_ids; } wmi_conv_service_ids;
#define WMI_SERVICE_UNAVAILABLE 0xFFFF #define WMI_SERVICE_UNAVAILABLE 0xFFFF

View File

@@ -3816,6 +3816,12 @@ static inline void copy_scan_event_cntrl_flags(
if (param->scan_f_en_ie_allowlist_in_probe) if (param->scan_f_en_ie_allowlist_in_probe)
cmd->scan_ctrl_flags |= cmd->scan_ctrl_flags |=
WMI_SCAN_ENABLE_IE_WHTELIST_IN_PROBE_REQ; WMI_SCAN_ENABLE_IE_WHTELIST_IN_PROBE_REQ;
if (param->scan_f_pause_home_channel)
cmd->scan_ctrl_flags |=
WMI_SCAN_FLAG_PAUSE_HOME_CHANNEL;
if (param->scan_f_report_cca_busy_for_each_20mhz)
cmd->scan_ctrl_flags |=
WMI_SCAN_FLAG_REPORT_CCA_BUSY_FOREACH_20MHZ;
/* for adaptive scan mode using 3 bits (21 - 23 bits) */ /* for adaptive scan mode using 3 bits (21 - 23 bits) */
WMI_SCAN_SET_DWELL_MODE(cmd->scan_ctrl_flags, WMI_SCAN_SET_DWELL_MODE(cmd->scan_ctrl_flags,
@@ -22202,6 +22208,10 @@ static void populate_tlv_service(uint32_t *wmi_service)
wmi_service[wmi_service_standalone_sound] = wmi_service[wmi_service_standalone_sound] =
WMI_SERVICE_STANDALONE_SOUND; WMI_SERVICE_STANDALONE_SOUND;
#endif #endif
wmi_service[wmi_service_cca_busy_info_for_each_20mhz] =
WMI_SERVICE_CCA_BUSY_INFO_FOREACH_20MHZ;
wmi_service[wmi_service_vdev_param_chwidth_with_notify_support] =
WMI_SERVICE_VDEV_PARAM_CHWIDTH_WITH_NOTIFY_SUPPORT;
} }
/** /**