qcacld-3.0: Add support of sending multiple COEX config
Add path from osif to target_if of sending multiple COEX config, and whether send with new multiple COEX WMI CMD depends on WMI capability. Optimize function hdd_send_coex_config_params() which has multiple COEX config sending to target, use new multiple COEX config path. Keep original legacy COEX function which is not included under FEATURE_COEX. Change-Id: Ibb2add908466915ad17204cb4a31a38d56446615 CRs-Fixed: 3651235
This commit is contained in:

committed by
Ravindra Konda

parent
4b57844470
commit
6d94246820
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2022-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 above
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
#ifdef FEATURE_COEX
|
||||
struct coex_config_params;
|
||||
struct coex_multi_config;
|
||||
|
||||
/**
|
||||
* tgt_send_coex_config() - invoke target_if send coex config
|
||||
@@ -39,6 +40,27 @@ struct coex_config_params;
|
||||
QDF_STATUS
|
||||
tgt_send_coex_config(struct wlan_objmgr_vdev *vdev,
|
||||
struct coex_config_params *param);
|
||||
|
||||
/**
|
||||
* tgt_send_coex_multi_config() - invoke target_if send coex multiple config
|
||||
* @vdev: vdev object
|
||||
* @param: coex multiple config parameters
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS
|
||||
tgt_send_coex_multi_config(struct wlan_objmgr_vdev *vdev,
|
||||
struct coex_multi_config *param);
|
||||
|
||||
/**
|
||||
* tgt_get_coex_multi_config_support() - invoke target_if get coex multiple
|
||||
* configure support
|
||||
* @psoc: PSOC object
|
||||
*
|
||||
* Return: true if target support coex multiple config command
|
||||
*/
|
||||
bool
|
||||
tgt_get_coex_multi_config_support(struct wlan_objmgr_psoc *psoc);
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_FEATURE_DBAM_CONFIG
|
||||
|
@@ -109,6 +109,18 @@ ucfg_coex_psoc_get_btc_chain_mode(struct wlan_objmgr_psoc *psoc,
|
||||
QDF_STATUS
|
||||
ucfg_coex_send_btc_chain_mode(struct wlan_objmgr_vdev *vdev,
|
||||
enum coex_btc_chain_mode mode);
|
||||
|
||||
/**
|
||||
* ucfg_coex_send_multi_config() - API to send coex multiple config to target
|
||||
* @vdev: pointer to vdev object
|
||||
* @param: pointer to coex multiple config parameters
|
||||
*
|
||||
* Return: status of operation
|
||||
*/
|
||||
QDF_STATUS
|
||||
ucfg_coex_send_multi_config(struct wlan_objmgr_vdev *vdev,
|
||||
struct coex_multi_config *param);
|
||||
|
||||
/**
|
||||
* ucfg_coex_send_logging_config() - API to send BT coex logging config to
|
||||
* target if
|
||||
@@ -146,6 +158,13 @@ ucfg_coex_send_btc_chain_mode(struct wlan_objmgr_vdev *vdev,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
ucfg_coex_send_multi_config(struct wlan_objmgr_vdev *vdev,
|
||||
struct coex_multi_config *param)
|
||||
{
|
||||
return QDF_STATUS_E_NOSUPPORT;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
ucfg_coex_send_logging_config(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t *apps_args)
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2022-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 above
|
||||
@@ -84,6 +84,50 @@ tgt_send_coex_config(struct wlan_objmgr_vdev *vdev,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
tgt_send_coex_multi_config(struct wlan_objmgr_vdev *vdev,
|
||||
struct coex_multi_config *param)
|
||||
{
|
||||
struct wlan_lmac_if_coex_tx_ops *coex_ops;
|
||||
struct wlan_objmgr_psoc *psoc;
|
||||
struct wlan_objmgr_pdev *pdev;
|
||||
|
||||
if (!vdev) {
|
||||
coex_err("NULL vdev");
|
||||
return QDF_STATUS_E_NULL_VALUE;
|
||||
}
|
||||
|
||||
psoc = wlan_vdev_get_psoc(vdev);
|
||||
if (!psoc) {
|
||||
coex_err("NULL psoc");
|
||||
return QDF_STATUS_E_NULL_VALUE;
|
||||
}
|
||||
|
||||
pdev = wlan_vdev_get_pdev(vdev);
|
||||
if (!pdev) {
|
||||
coex_err("NULL pdev");
|
||||
return QDF_STATUS_E_NULL_VALUE;
|
||||
}
|
||||
|
||||
coex_ops = wlan_psoc_get_coex_txops(psoc);
|
||||
if (coex_ops && coex_ops->coex_multi_config_send)
|
||||
return coex_ops->coex_multi_config_send(pdev, param);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
bool
|
||||
tgt_get_coex_multi_config_support(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
struct wlan_lmac_if_coex_tx_ops *coex_ops;
|
||||
|
||||
coex_ops = wlan_psoc_get_coex_txops(psoc);
|
||||
if (coex_ops && coex_ops->coex_get_multi_config_support)
|
||||
return coex_ops->coex_get_multi_config_support(psoc);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef WLAN_FEATURE_DBAM_CONFIG
|
||||
QDF_STATUS
|
||||
tgt_send_dbam_config(struct wlan_objmgr_vdev *vdev,
|
||||
|
@@ -23,6 +23,7 @@
|
||||
#include <wlan_coex_ucfg_api.h>
|
||||
#include "wmi_unified.h"
|
||||
#include "wlan_coex_public_structs.h"
|
||||
#include "wlan_coex_tgt_api.h"
|
||||
|
||||
QDF_STATUS
|
||||
ucfg_coex_register_cfg_updated_handler(struct wlan_objmgr_psoc *psoc,
|
||||
@@ -77,6 +78,13 @@ ucfg_coex_send_btc_chain_mode(struct wlan_objmgr_vdev *vdev,
|
||||
return wlan_coex_config_send(vdev, ¶m);
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
ucfg_coex_send_multi_config(struct wlan_objmgr_vdev *vdev,
|
||||
struct coex_multi_config *param)
|
||||
{
|
||||
return wlan_coex_multi_config_send(vdev, param);
|
||||
}
|
||||
|
||||
#ifdef WLAN_FEATURE_DBAM_CONFIG
|
||||
QDF_STATUS
|
||||
ucfg_coex_send_dbam_config(struct wlan_objmgr_vdev *vdev,
|
||||
|
Reference in New Issue
Block a user