qcacmn: Enable spectral registration to direct dma
Enable registration of spectral feature to direct dma CRs-Fixed: 2219121 Change-Id: I483e87b9a6c7dcd297bc8b88d24c49e8d80ed547
This commit is contained in:

committed by
nshrivas

parent
24a08f2ad9
commit
01b4921127
@@ -93,6 +93,7 @@ struct wmi_spectral_cmd_ops;
|
||||
* @sptrlc_register_netlink_cb: Register Netlink callbacks
|
||||
* @sptrlc_use_nl_bcast: Check whether to use Netlink broadcast/unicast
|
||||
* @sptrlc_deregister_netlink_cb: De-register Netlink callbacks
|
||||
* @sptrlc_process_spectral_report: Process spectral report
|
||||
*/
|
||||
struct spectral_context {
|
||||
struct wlan_objmgr_psoc *psoc_obj;
|
||||
@@ -130,6 +131,9 @@ struct spectral_context {
|
||||
struct spectral_nl_cb *nl_cb);
|
||||
bool (*sptrlc_use_nl_bcast)(struct wlan_objmgr_pdev *pdev);
|
||||
void (*sptrlc_deregister_netlink_cb)(struct wlan_objmgr_pdev *pdev);
|
||||
int (*sptrlc_process_spectral_report)(
|
||||
struct wlan_objmgr_pdev *pdev,
|
||||
void *payload);
|
||||
};
|
||||
|
||||
#endif /* _SPECTRAL_DEFS_I_H_ */
|
||||
|
@@ -45,4 +45,5 @@ spectral_ctx_init_da(struct spectral_context *sc)
|
||||
sc->sptrlc_register_netlink_cb = tgt_spectral_register_nl_cb;
|
||||
sc->sptrlc_use_nl_bcast = tgt_spectral_use_nl_bcast;
|
||||
sc->sptrlc_deregister_netlink_cb = tgt_spectral_deregister_nl_cb;
|
||||
sc->sptrlc_process_spectral_report = tgt_spectral_process_report;
|
||||
}
|
||||
|
@@ -46,4 +46,5 @@ spectral_ctx_init_ol(struct spectral_context *sc)
|
||||
sc->sptrlc_register_netlink_cb = tgt_spectral_register_nl_cb;
|
||||
sc->sptrlc_use_nl_bcast = tgt_spectral_use_nl_bcast;
|
||||
sc->sptrlc_deregister_netlink_cb = tgt_spectral_deregister_nl_cb;
|
||||
sc->sptrlc_process_spectral_report = tgt_spectral_process_report;
|
||||
}
|
||||
|
@@ -219,4 +219,33 @@ bool tgt_spectral_use_nl_bcast(struct wlan_objmgr_pdev *pdev);
|
||||
* Return: void
|
||||
*/
|
||||
void tgt_spectral_deregister_nl_cb(struct wlan_objmgr_pdev *pdev);
|
||||
|
||||
/**
|
||||
* tgt_spectral_process_report() - Process spectral report
|
||||
* @pdev: Pointer to pdev object
|
||||
* @payload: Pointer to spectral report buffer
|
||||
*
|
||||
* Return: status
|
||||
*/
|
||||
int
|
||||
tgt_spectral_process_report(struct wlan_objmgr_pdev *pdev,
|
||||
void *payload);
|
||||
|
||||
/**
|
||||
* tgt_spectral_register_to_dbr() - Register to direct dma
|
||||
* @pdev: Pointer to pdev object
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS
|
||||
tgt_spectral_register_to_dbr(struct wlan_objmgr_pdev *pdev);
|
||||
|
||||
/**
|
||||
* tgt_spectral_get_target_type() - Get target type
|
||||
* @psoc: Pointer to psoc object
|
||||
*
|
||||
* Return: target type
|
||||
*/
|
||||
uint32_t
|
||||
tgt_spectral_get_target_type(struct wlan_objmgr_psoc *psoc);
|
||||
#endif /* _WLAN_SPECTRAL_TGT_API_H_ */
|
||||
|
@@ -23,6 +23,9 @@
|
||||
#include <wlan_objmgr_cmn.h>
|
||||
#include <wlan_lmac_if_def.h>
|
||||
|
||||
/* Forward declaration */
|
||||
struct direct_buf_rx_data;
|
||||
|
||||
/**
|
||||
* wlan_spectral_init() - API to init spectral component
|
||||
*
|
||||
@@ -142,4 +145,17 @@ spectral_vdev_get_ch_width(struct wlan_objmgr_vdev *vdev);
|
||||
*/
|
||||
QDF_STATUS spectral_pdev_open(struct wlan_objmgr_pdev *pdev);
|
||||
|
||||
#ifdef DIRECT_BUF_RX_ENABLE
|
||||
/**
|
||||
* spectral_dbr_event_handler() - Spectral dbr event handler
|
||||
* @pdev: pointer to pdev object
|
||||
* @payload: dbr event buffer
|
||||
*
|
||||
* API to handle spectral dbr event
|
||||
*
|
||||
* Return: status
|
||||
*/
|
||||
int spectral_dbr_event_handler(struct wlan_objmgr_pdev *pdev,
|
||||
struct direct_buf_rx_data *payload);
|
||||
#endif
|
||||
#endif /* _WLAN_SPECTRAL_UTILS_API_H_*/
|
||||
|
@@ -18,6 +18,8 @@
|
||||
*/
|
||||
|
||||
#include <wlan_spectral_tgt_api.h>
|
||||
#include <wlan_spectral_utils_api.h>
|
||||
#include <target_type.h>
|
||||
|
||||
void *
|
||||
tgt_get_target_handle(struct wlan_objmgr_pdev *pdev)
|
||||
@@ -245,3 +247,57 @@ void tgt_spectral_deregister_nl_cb(struct wlan_objmgr_pdev *pdev)
|
||||
|
||||
psptrl_tx_ops->sptrlto_deregister_netlink_cb(pdev);
|
||||
}
|
||||
|
||||
int
|
||||
tgt_spectral_process_report(struct wlan_objmgr_pdev *pdev,
|
||||
void *payload)
|
||||
{
|
||||
struct wlan_objmgr_psoc *psoc = NULL;
|
||||
struct wlan_lmac_if_sptrl_tx_ops *psptrl_tx_ops = NULL;
|
||||
|
||||
psoc = wlan_pdev_get_psoc(pdev);
|
||||
|
||||
psptrl_tx_ops = &psoc->soc_cb.tx_ops.sptrl_tx_ops;
|
||||
|
||||
return psptrl_tx_ops->sptrlto_process_spectral_report(pdev, payload);
|
||||
}
|
||||
|
||||
uint32_t
|
||||
tgt_spectral_get_target_type(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
uint32_t target_type = 0;
|
||||
struct wlan_lmac_if_target_tx_ops *target_type_tx_ops;
|
||||
|
||||
target_type_tx_ops = &psoc->soc_cb.tx_ops.target_tx_ops;
|
||||
|
||||
if (target_type_tx_ops->tgt_get_tgt_type)
|
||||
target_type = target_type_tx_ops->tgt_get_tgt_type(psoc);
|
||||
|
||||
return target_type;
|
||||
}
|
||||
|
||||
#ifdef DIRECT_BUF_RX_ENABLE
|
||||
QDF_STATUS
|
||||
tgt_spectral_register_to_dbr(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
struct wlan_objmgr_psoc *psoc;
|
||||
struct wlan_lmac_if_direct_buf_rx_tx_ops *dbr_tx_ops = NULL;
|
||||
|
||||
psoc = wlan_pdev_get_psoc(pdev);
|
||||
dbr_tx_ops = &psoc->soc_cb.tx_ops.dbr_tx_ops;
|
||||
|
||||
if (tgt_spectral_get_target_type(psoc) == TARGET_TYPE_QCA8074)
|
||||
if (dbr_tx_ops->direct_buf_rx_module_register)
|
||||
return dbr_tx_ops->direct_buf_rx_module_register
|
||||
(pdev, 0,
|
||||
spectral_dbr_event_handler);
|
||||
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
#else
|
||||
QDF_STATUS
|
||||
tgt_spectral_register_to_dbr(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
@@ -191,15 +191,31 @@ wlan_register_wmi_spectral_cmd_ops(struct wlan_objmgr_pdev *pdev,
|
||||
}
|
||||
qdf_export_symbol(wlan_register_wmi_spectral_cmd_ops);
|
||||
|
||||
#ifdef DIRECT_BUF_RX_ENABLE
|
||||
int spectral_dbr_event_handler(struct wlan_objmgr_pdev *pdev,
|
||||
struct direct_buf_rx_data *payload)
|
||||
{
|
||||
struct spectral_context *sc;
|
||||
|
||||
if (!pdev) {
|
||||
spectral_err("PDEV is NULL!");
|
||||
return -EINVAL;
|
||||
}
|
||||
sc = spectral_get_spectral_ctx_from_pdev(pdev);
|
||||
if (!sc) {
|
||||
spectral_err("spectral context is NULL!");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return sc->sptrlc_process_spectral_report(pdev, payload);
|
||||
}
|
||||
#endif
|
||||
|
||||
QDF_STATUS spectral_pdev_open(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
struct wlan_objmgr_psoc *psoc;
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
QDF_STATUS status;
|
||||
|
||||
psoc = wlan_pdev_get_psoc(pdev);
|
||||
status = tgt_spectral_register_to_dbr(pdev);
|
||||
|
||||
/* Enable the registartion once FW supports this */
|
||||
spectral_debug("Enable registration to direct dma once FW supports it");
|
||||
|
||||
return status;
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
Reference in New Issue
Block a user