qcacmn: IPA changes to support SDX+Pine
IPA changes to support SDX+Pine. Change-Id: I66ad2a2c3e2f142c54df3e35c867ee827ac1d687 CRs-Fixed: 3079952
This commit is contained in:

committad av
Madan Koyyalamudi

förälder
db8e2c1604
incheckning
78fb9d70d7
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2018-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021 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
|
||||
@@ -96,12 +97,4 @@ struct ipa_intrabss_control_params {
|
||||
uint32_t vdev_id;
|
||||
uint32_t enable;
|
||||
};
|
||||
|
||||
/* fp to send IPA UC offload cmd */
|
||||
typedef QDF_STATUS (*ipa_uc_offload_control_req)(struct wlan_objmgr_psoc *psoc,
|
||||
struct ipa_uc_offload_control_params *req);
|
||||
/* fp to send IPA intrabss cmd */
|
||||
typedef QDF_STATUS (*ipa_intrabss_control_req)(struct wlan_objmgr_psoc *psoc,
|
||||
struct ipa_intrabss_control_params *req);
|
||||
|
||||
#endif /* end of _WLAN_IPA_PUBLIC_STRUCT_H_ */
|
||||
|
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021 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
|
||||
@@ -194,6 +195,17 @@ void ucfg_ipa_reg_rps_enable_cb(struct wlan_objmgr_pdev *pdev,
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* ucfg_ipa_reg_is_driver_unloading_cb() - Register cb to check if driver
|
||||
* is unloading
|
||||
* @pdev: pdev obj
|
||||
* @cb: callback
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void ucfg_ipa_reg_is_driver_unloading_cb(struct wlan_objmgr_pdev *pdev,
|
||||
wlan_ipa_driver_unloading cb);
|
||||
|
||||
/**
|
||||
* ucfg_ipa_set_mcc_mode() - Set MCC mode
|
||||
* @pdev: pdev obj
|
||||
@@ -519,6 +531,12 @@ void ucfg_ipa_reg_rps_enable_cb(struct wlan_objmgr_pdev *pdev,
|
||||
{
|
||||
}
|
||||
|
||||
static inline
|
||||
void ucfg_ipa_reg_is_driver_unloading_cb(struct wlan_objmgr_pdev *pdev,
|
||||
wlan_ipa_driver_unloading cb)
|
||||
{
|
||||
}
|
||||
|
||||
static inline
|
||||
void ucfg_ipa_set_mcc_mode(struct wlan_objmgr_pdev *pdev, bool mcc_mode)
|
||||
{
|
||||
|
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2018, 2020-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021 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
|
||||
@@ -25,6 +26,7 @@
|
||||
#include "target_if_ipa.h"
|
||||
#include "wlan_ipa_ucfg_api.h"
|
||||
#include "qdf_platform.h"
|
||||
#include "qdf_module.h"
|
||||
|
||||
static bool g_ipa_is_ready;
|
||||
static qdf_mutex_t g_init_deinit_lock;
|
||||
@@ -39,6 +41,8 @@ void ipa_disable_register_cb(void)
|
||||
g_ipa_is_ready = false;
|
||||
}
|
||||
|
||||
qdf_export_symbol(ipa_disable_register_cb);
|
||||
|
||||
void ipa_init_deinit_lock(void)
|
||||
{
|
||||
qdf_mutex_acquire(&g_init_deinit_lock);
|
||||
@@ -124,8 +128,6 @@ ipa_pdev_obj_create_notification(struct wlan_objmgr_pdev *pdev,
|
||||
}
|
||||
|
||||
ipa_obj->pdev = pdev;
|
||||
target_if_ipa_register_tx_ops(&ipa_obj->ipa_tx_op);
|
||||
target_if_ipa_register_intrabss_ops(&ipa_obj->ipa_intrabss_op);
|
||||
|
||||
ipa_debug("ipa pdev attached");
|
||||
|
||||
@@ -222,6 +224,8 @@ QDF_STATUS ipa_register_is_ipa_ready(struct wlan_objmgr_pdev *pdev)
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
qdf_export_symbol(ipa_register_is_ipa_ready);
|
||||
|
||||
QDF_STATUS ipa_init(void)
|
||||
{
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
|
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2018, 2020-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021 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
|
||||
@@ -24,26 +25,29 @@
|
||||
#include "wlan_ipa_public_struct.h"
|
||||
#include <wlan_objmgr_global_obj.h>
|
||||
#include <wlan_objmgr_pdev_obj.h>
|
||||
#include <wlan_lmac_if_def.h>
|
||||
|
||||
QDF_STATUS tgt_ipa_uc_offload_enable_disable(struct wlan_objmgr_pdev *pdev,
|
||||
struct ipa_uc_offload_control_params *req)
|
||||
{
|
||||
struct wlan_ipa_priv *ipa_obj;
|
||||
struct wlan_objmgr_psoc *psoc;
|
||||
struct wlan_lmac_if_tx_ops *tx_ops;
|
||||
QDF_STATUS status = QDF_STATUS_E_FAILURE;
|
||||
|
||||
IPA_ENTER();
|
||||
|
||||
ipa_obj = ipa_pdev_get_priv_obj(pdev);
|
||||
if (!ipa_obj) {
|
||||
ipa_err("IPA object is NULL");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
psoc = wlan_pdev_get_psoc(pdev);
|
||||
if (!psoc) {
|
||||
ipa_err("NULL psoc");
|
||||
return QDF_STATUS_E_NULL_VALUE;
|
||||
}
|
||||
|
||||
psoc = wlan_pdev_get_psoc(pdev);
|
||||
tx_ops = wlan_psoc_get_lmac_if_txops(psoc);
|
||||
if (!tx_ops)
|
||||
return QDF_STATUS_E_NULL_VALUE;
|
||||
|
||||
if (ipa_obj->ipa_tx_op)
|
||||
status = ipa_obj->ipa_tx_op(psoc, req);
|
||||
if (tx_ops->ipa_ops.ipa_uc_offload_control_req)
|
||||
status = tx_ops->ipa_ops.ipa_uc_offload_control_req(psoc, req);
|
||||
|
||||
IPA_EXIT();
|
||||
return status;
|
||||
@@ -53,22 +57,24 @@ QDF_STATUS
|
||||
tgt_ipa_intrabss_enable_disable(struct wlan_objmgr_pdev *pdev,
|
||||
struct ipa_intrabss_control_params *req)
|
||||
{
|
||||
struct wlan_ipa_priv *ipa_obj;
|
||||
struct wlan_objmgr_psoc *psoc;
|
||||
struct wlan_lmac_if_tx_ops *tx_ops;
|
||||
QDF_STATUS status = QDF_STATUS_E_FAILURE;
|
||||
|
||||
IPA_ENTER();
|
||||
|
||||
ipa_obj = ipa_pdev_get_priv_obj(pdev);
|
||||
if (!ipa_obj) {
|
||||
ipa_err("IPA object is NULL");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
psoc = wlan_pdev_get_psoc(pdev);
|
||||
if (!psoc) {
|
||||
ipa_err("NULL psoc");
|
||||
return QDF_STATUS_E_NULL_VALUE;
|
||||
}
|
||||
|
||||
psoc = wlan_pdev_get_psoc(pdev);
|
||||
tx_ops = wlan_psoc_get_lmac_if_txops(psoc);
|
||||
if (!tx_ops)
|
||||
return QDF_STATUS_E_NULL_VALUE;
|
||||
|
||||
if (ipa_obj->ipa_intrabss_op)
|
||||
status = ipa_obj->ipa_intrabss_op(psoc, req);
|
||||
if (tx_ops->ipa_ops.ipa_intrabss_control_req)
|
||||
status = tx_ops->ipa_ops.ipa_intrabss_control_req(psoc, req);
|
||||
|
||||
IPA_EXIT();
|
||||
return status;
|
||||
|
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021 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
|
||||
@@ -22,156 +23,216 @@
|
||||
#include "wlan_ipa_ucfg_api.h"
|
||||
#include "wlan_ipa_main.h"
|
||||
#include "cfg_ucfg_api.h"
|
||||
|
||||
#include "qdf_module.h"
|
||||
|
||||
bool ucfg_ipa_is_present(void)
|
||||
{
|
||||
return ipa_is_hw_support();
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_is_present);
|
||||
|
||||
bool ucfg_ipa_is_ready(void)
|
||||
{
|
||||
return ipa_cb_is_ready();
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_is_ready);
|
||||
|
||||
bool ucfg_ipa_is_enabled(void)
|
||||
{
|
||||
return ipa_config_is_enabled();
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_is_enabled);
|
||||
|
||||
bool ucfg_ipa_uc_is_enabled(void)
|
||||
{
|
||||
return ipa_config_is_uc_enabled();
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_uc_is_enabled);
|
||||
|
||||
void ucfg_ipa_set_pdev_id(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t pdev_id)
|
||||
{
|
||||
return ipa_set_pdev_id(psoc, pdev_id);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_set_pdev_id);
|
||||
|
||||
void ucfg_ipa_set_dp_handle(struct wlan_objmgr_psoc *psoc,
|
||||
void *dp_soc)
|
||||
{
|
||||
return ipa_set_dp_handle(psoc, dp_soc);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_set_dp_handle);
|
||||
|
||||
QDF_STATUS ucfg_ipa_set_perf_level(struct wlan_objmgr_pdev *pdev,
|
||||
uint64_t tx_packets, uint64_t rx_packets)
|
||||
{
|
||||
return ipa_rm_set_perf_level(pdev, tx_packets, rx_packets);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_set_perf_level);
|
||||
|
||||
void ucfg_ipa_uc_info(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
return ipa_uc_info(pdev);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_uc_info);
|
||||
|
||||
void ucfg_ipa_uc_stat(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
return ipa_uc_stat(pdev);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_uc_stat);
|
||||
|
||||
void ucfg_ipa_uc_rt_debug_host_dump(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
return ipa_uc_rt_debug_host_dump(pdev);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_uc_rt_debug_host_dump);
|
||||
|
||||
void ucfg_ipa_dump_info(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
return ipa_dump_info(pdev);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_dump_info);
|
||||
|
||||
void ucfg_ipa_uc_stat_request(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t reason)
|
||||
{
|
||||
return ipa_uc_stat_request(pdev, reason);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_uc_stat_request);
|
||||
|
||||
void ucfg_ipa_uc_stat_query(struct wlan_objmgr_pdev *pdev,
|
||||
uint32_t *ipa_tx_diff, uint32_t *ipa_rx_diff)
|
||||
{
|
||||
return ipa_uc_stat_query(pdev, ipa_tx_diff, ipa_rx_diff);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_uc_stat_query);
|
||||
|
||||
void ucfg_ipa_reg_sap_xmit_cb(struct wlan_objmgr_pdev *pdev,
|
||||
wlan_ipa_softap_xmit cb)
|
||||
{
|
||||
return ipa_reg_sap_xmit_cb(pdev, cb);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_reg_sap_xmit_cb);
|
||||
|
||||
void ucfg_ipa_reg_send_to_nw_cb(struct wlan_objmgr_pdev *pdev,
|
||||
wlan_ipa_send_to_nw cb)
|
||||
{
|
||||
return ipa_reg_send_to_nw_cb(pdev, cb);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_reg_send_to_nw_cb);
|
||||
|
||||
#ifdef QCA_CONFIG_RPS
|
||||
void ucfg_ipa_reg_rps_enable_cb(struct wlan_objmgr_pdev *pdev,
|
||||
wlan_ipa_rps_enable cb)
|
||||
{
|
||||
return ipa_reg_rps_enable_cb(pdev, cb);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_reg_rps_enable_cb);
|
||||
#endif
|
||||
|
||||
void ucfg_ipa_reg_is_driver_unloading_cb(struct wlan_objmgr_pdev *pdev,
|
||||
wlan_ipa_driver_unloading cb)
|
||||
{
|
||||
return ipa_reg_is_driver_unloading_cb(pdev, cb);
|
||||
}
|
||||
|
||||
void ucfg_ipa_set_mcc_mode(struct wlan_objmgr_pdev *pdev, bool mcc_mode)
|
||||
{
|
||||
return ipa_set_mcc_mode(pdev, mcc_mode);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_set_mcc_mode);
|
||||
|
||||
void ucfg_ipa_set_dfs_cac_tx(struct wlan_objmgr_pdev *pdev, bool tx_block)
|
||||
{
|
||||
return ipa_set_dfs_cac_tx(pdev, tx_block);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_set_dfs_cac_tx);
|
||||
|
||||
void ucfg_ipa_set_ap_ibss_fwd(struct wlan_objmgr_pdev *pdev, uint8_t session_id,
|
||||
bool intra_bss)
|
||||
{
|
||||
return ipa_set_ap_ibss_fwd(pdev, session_id, intra_bss);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_set_ap_ibss_fwd);
|
||||
|
||||
void ucfg_ipa_uc_force_pipe_shutdown(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
return ipa_uc_force_pipe_shutdown(pdev);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_uc_force_pipe_shutdown);
|
||||
|
||||
void ucfg_ipa_flush(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
return ipa_flush(pdev);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_flush);
|
||||
|
||||
QDF_STATUS ucfg_ipa_suspend(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
return ipa_suspend(pdev);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_suspend);
|
||||
|
||||
QDF_STATUS ucfg_ipa_resume(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
return ipa_resume(pdev);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_resume);
|
||||
|
||||
QDF_STATUS ucfg_ipa_uc_ol_init(struct wlan_objmgr_pdev *pdev,
|
||||
qdf_device_t osdev)
|
||||
{
|
||||
return ipa_uc_ol_init(pdev, osdev);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_uc_ol_init);
|
||||
|
||||
QDF_STATUS ucfg_ipa_uc_ol_deinit(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
return ipa_uc_ol_deinit(pdev);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_uc_ol_deinit);
|
||||
|
||||
bool ucfg_ipa_is_tx_pending(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
return ipa_is_tx_pending(pdev);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_is_tx_pending);
|
||||
|
||||
QDF_STATUS ucfg_ipa_send_mcc_scc_msg(struct wlan_objmgr_pdev *pdev,
|
||||
bool mcc_mode)
|
||||
{
|
||||
return ipa_send_mcc_scc_msg(pdev, mcc_mode);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_send_mcc_scc_msg);
|
||||
|
||||
QDF_STATUS ucfg_ipa_wlan_evt(struct wlan_objmgr_pdev *pdev,
|
||||
qdf_netdev_t net_dev, uint8_t device_mode,
|
||||
uint8_t session_id,
|
||||
@@ -182,67 +243,93 @@ QDF_STATUS ucfg_ipa_wlan_evt(struct wlan_objmgr_pdev *pdev,
|
||||
ipa_event_type, mac_addr, is_2g_iface);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_wlan_evt);
|
||||
|
||||
int ucfg_ipa_uc_smmu_map(bool map, uint32_t num_buf, qdf_mem_info_t *buf_arr)
|
||||
{
|
||||
return ipa_uc_smmu_map(map, num_buf, buf_arr);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_uc_smmu_map);
|
||||
|
||||
bool ucfg_ipa_is_fw_wdi_activated(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
return ipa_is_fw_wdi_activated(pdev);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_is_fw_wdi_activated);
|
||||
|
||||
void ucfg_ipa_uc_cleanup_sta(struct wlan_objmgr_pdev *pdev,
|
||||
qdf_netdev_t net_dev)
|
||||
{
|
||||
return ipa_uc_cleanup_sta(pdev, net_dev);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_uc_cleanup_sta);
|
||||
|
||||
QDF_STATUS ucfg_ipa_uc_disconnect_ap(struct wlan_objmgr_pdev *pdev,
|
||||
qdf_netdev_t net_dev)
|
||||
{
|
||||
return ipa_uc_disconnect_ap(pdev, net_dev);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_uc_disconnect_ap);
|
||||
|
||||
void ucfg_ipa_cleanup_dev_iface(struct wlan_objmgr_pdev *pdev,
|
||||
qdf_netdev_t net_dev)
|
||||
{
|
||||
return ipa_cleanup_dev_iface(pdev, net_dev);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_cleanup_dev_iface);
|
||||
|
||||
void ucfg_ipa_uc_ssr_cleanup(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
return ipa_uc_ssr_cleanup(pdev);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_uc_ssr_cleanup);
|
||||
|
||||
void ucfg_ipa_fw_rejuvenate_send_msg(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
return ipa_fw_rejuvenate_send_msg(pdev);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_fw_rejuvenate_send_msg);
|
||||
|
||||
void ucfg_ipa_component_config_update(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
ipa_component_config_update(psoc);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_component_config_update);
|
||||
|
||||
void ucfg_ipa_component_config_free(void)
|
||||
{
|
||||
ipa_component_config_free();
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_component_config_free);
|
||||
|
||||
uint32_t ucfg_ipa_get_tx_buf_count(void)
|
||||
{
|
||||
return ipa_get_tx_buf_count();
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_get_tx_buf_count);
|
||||
|
||||
void ucfg_ipa_update_tx_stats(struct wlan_objmgr_pdev *pdev, uint64_t sta_tx,
|
||||
uint64_t ap_tx)
|
||||
{
|
||||
ipa_update_tx_stats(pdev, sta_tx, ap_tx);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_update_tx_stats);
|
||||
|
||||
void ucfg_ipa_flush_pending_vdev_events(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t vdev_id)
|
||||
{
|
||||
ipa_flush_pending_vdev_events(pdev, vdev_id);
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_ipa_flush_pending_vdev_events);
|
||||
|
Referens i nytt ärende
Block a user