qcacld-3.0: Implement DP component infra support
Implement DP component infra support, So that DP component gets allocated and initialiazed. Change-Id: Icdcbf92956dcf0984dd14262f3c7f29554b4eba8 CRs-Fixed: 3164965
This commit is contained in:

committed by
Madan Koyyalamudi

parent
c3269eb28d
commit
6b43ef6a50
@@ -26,7 +26,6 @@
|
||||
#include "wlan_cmn.h"
|
||||
#include "wlan_objmgr_cmn.h"
|
||||
#include "wlan_objmgr_global_obj.h"
|
||||
#include "wmi_unified.h"
|
||||
#include "qdf_status.h"
|
||||
|
||||
/**
|
||||
@@ -39,10 +38,18 @@ struct wlan_dp_psoc_callbacks {
|
||||
bool flush_gro);
|
||||
};
|
||||
|
||||
/**
|
||||
* struct wlan_dp_psoc_sb_ops - struct containing callback
|
||||
* to south bound APIs. callbacks to call traget_if APIs
|
||||
*/
|
||||
struct wlan_dp_psoc_sb_ops {
|
||||
/*TODO to add target if TX ops*/
|
||||
};
|
||||
|
||||
/**
|
||||
* struct wlan_dp_psoc_nb_ops - struct containing callback
|
||||
* to north bound APIs. callbacks APIs to be called by target_if APIs
|
||||
*/
|
||||
struct wlan_dp_psoc_nb_ops {
|
||||
/*TODO to add target if RX ops*/
|
||||
};
|
||||
|
@@ -32,19 +32,36 @@
|
||||
#include <wlan_objmgr_vdev_obj.h>
|
||||
#include <wlan_dp_public_struct.h>
|
||||
|
||||
/**
|
||||
* ucfg_dp_create_intf() - update DP interface MAC address
|
||||
* @psoc: psoc handle
|
||||
* @cur_mac: Curent MAC address
|
||||
* @new_mac: new MAC address
|
||||
*
|
||||
*/
|
||||
void ucfg_dp_update_inf_mac(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *cur_mac,
|
||||
struct qdf_mac_addr *new_mac);
|
||||
|
||||
/**
|
||||
* ucfg_dp_destroy_intf() - DP module interface deletion
|
||||
* @psoc: psoc handle
|
||||
* @intf_addr: Interface MAC address
|
||||
*
|
||||
*/
|
||||
QDF_STATUS ucfg_dp_destroy_intf(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *intf_addr);
|
||||
|
||||
/**
|
||||
* ucfg_dp_create_intf() - DP module interface creation
|
||||
* @psoc: psoc handle
|
||||
* @intf_addr: Interface MAC address
|
||||
* @ndev : netdev object
|
||||
*
|
||||
*/
|
||||
QDF_STATUS ucfg_dp_create_intf(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *intf_addr);
|
||||
struct qdf_mac_addr *intf_addr,
|
||||
qdf_netdev_t ndev);
|
||||
|
||||
/**
|
||||
* ucfg_dp_init() - DP module initialization API
|
||||
@@ -60,8 +77,42 @@ QDF_STATUS ucfg_dp_init(void);
|
||||
*/
|
||||
QDF_STATUS ucfg_dp_deinit(void);
|
||||
|
||||
/**
|
||||
* ucfg_dp_psoc_open() - DP component Open
|
||||
* @psoc: pointer to psoc object
|
||||
*
|
||||
* Return: QDF Status
|
||||
*/
|
||||
QDF_STATUS ucfg_dp_psoc_open(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
/**
|
||||
* ucfg_dp_psoc_close() - DP component Close
|
||||
* @psoc: pointer to psoc object
|
||||
*
|
||||
* Return: QDF Status
|
||||
*/
|
||||
QDF_STATUS ucfg_dp_psoc_close(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
/**
|
||||
* ucfg_dp_suspend_wlan() - update suspend state in DP component
|
||||
* @psoc: pointer to psoc object
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void ucfg_dp_suspend_wlan(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
/**
|
||||
* ucfg_dp_resume_wlan() - update resume state in DP component
|
||||
* @psoc: pointer to psoc object
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void ucfg_dp_resume_wlan(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
/**
|
||||
* ucfg_dp_update_config() - DP module config update
|
||||
* @psoc: pointer to psoc object
|
||||
* @req : user config
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
@@ -69,6 +120,12 @@ QDF_STATUS
|
||||
ucfg_dp_update_config(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_dp_user_config *req);
|
||||
|
||||
/**
|
||||
* ucfg_dp_get_rx_softirq_yield_duration() - Get rx soft IRQ yield duration
|
||||
* @psoc: pointer to psoc object
|
||||
*
|
||||
* Return: soft IRQ yield duration
|
||||
*/
|
||||
uint64_t
|
||||
ucfg_dp_get_rx_softirq_yield_duration(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
|
@@ -25,17 +25,57 @@
|
||||
#include "wlan_dp_objmgr.h"
|
||||
#include "cdp_txrx_cmn.h"
|
||||
#include "cfg_ucfg_api.h"
|
||||
#include "wlan_pmo_obj_mgmt_api.h"
|
||||
|
||||
void ucfg_dp_update_inf_mac(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *cur_mac,
|
||||
struct qdf_mac_addr *new_mac)
|
||||
{
|
||||
struct wlan_dp_intf *dp_intf;
|
||||
struct wlan_dp_psoc_context *dp_ctx;
|
||||
|
||||
dp_info("MAC update");
|
||||
dp_ctx = dp_psoc_get_priv(psoc);
|
||||
|
||||
dp_intf = dp_get_intf_by_macaddr(dp_ctx, cur_mac);
|
||||
if (!dp_intf) {
|
||||
dp_err("DP interface not found addr:" QDF_MAC_ADDR_FMT,
|
||||
QDF_MAC_ADDR_REF(cur_mac));
|
||||
return;
|
||||
}
|
||||
|
||||
qdf_copy_macaddr(&dp_intf->mac_addr, new_mac);
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
ucfg_dp_create_intf(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *intf_addr)
|
||||
struct qdf_mac_addr *intf_addr,
|
||||
qdf_netdev_t ndev)
|
||||
{
|
||||
struct wlan_dp_intf *dp_intf;
|
||||
struct wlan_dp_psoc_context *dp_ctx;
|
||||
|
||||
dp_ctx = dp_get_context();
|
||||
|
||||
dp_info("DP interface create addr:" QDF_MAC_ADDR_FMT,
|
||||
QDF_MAC_ADDR_REF(intf_addr));
|
||||
|
||||
dp_intf = __qdf_mem_malloc(sizeof(*dp_intf), __func__, __LINE__);
|
||||
if (!dp_intf) {
|
||||
dp_err("DP intf memory alloc failed addr:" QDF_MAC_ADDR_FMT,
|
||||
QDF_MAC_ADDR_REF(intf_addr));
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
dp_intf->dp_ctx = dp_ctx;
|
||||
dp_intf->dev = ndev;
|
||||
dp_intf->intf_id = WLAN_UMAC_VDEV_ID_MAX;
|
||||
qdf_copy_macaddr(&dp_intf->mac_addr, intf_addr);
|
||||
|
||||
qdf_spin_lock_bh(&dp_ctx->intf_list_lock);
|
||||
qdf_list_insert_front(&dp_ctx->intf_list, &dp_intf->node);
|
||||
qdf_spin_unlock_bh(&dp_ctx->intf_list_lock);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -43,28 +83,385 @@ QDF_STATUS
|
||||
ucfg_dp_destroy_intf(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *intf_addr)
|
||||
{
|
||||
struct wlan_dp_intf *dp_intf;
|
||||
struct wlan_dp_psoc_context *dp_ctx;
|
||||
|
||||
dp_ctx = dp_get_context();
|
||||
|
||||
dp_info("DP interface destroy addr:" QDF_MAC_ADDR_FMT,
|
||||
QDF_MAC_ADDR_REF(intf_addr));
|
||||
|
||||
dp_intf = dp_get_intf_by_macaddr(dp_ctx, intf_addr);
|
||||
if (!dp_intf) {
|
||||
dp_err("DP interface not found addr:" QDF_MAC_ADDR_FMT,
|
||||
QDF_MAC_ADDR_REF(intf_addr));
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
qdf_spin_lock_bh(&dp_ctx->intf_list_lock);
|
||||
qdf_list_remove_node(&dp_ctx->intf_list, &dp_intf->node);
|
||||
qdf_spin_unlock_bh(&dp_ctx->intf_list_lock);
|
||||
|
||||
__qdf_mem_free(dp_intf);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS ucfg_dp_init(void)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
QDF_STATUS status;
|
||||
|
||||
dp_info("DP module dispatcher init");
|
||||
|
||||
if (dp_allocate_ctx() != QDF_STATUS_SUCCESS) {
|
||||
dp_err("DP ctx allocation failed");
|
||||
return QDF_STATUS_E_FAULT;
|
||||
}
|
||||
|
||||
status = wlan_objmgr_register_psoc_create_handler(
|
||||
WLAN_COMP_DP,
|
||||
dp_psoc_obj_create_notification, NULL);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
dp_err("Failed to register psoc create handler for DP");
|
||||
return status;
|
||||
}
|
||||
|
||||
status = wlan_objmgr_register_psoc_destroy_handler(
|
||||
WLAN_COMP_DP,
|
||||
dp_psoc_obj_destroy_notification, NULL);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
dp_err("Failed to register psoc destroy handler for DP");
|
||||
goto fail_destroy_psoc;
|
||||
}
|
||||
|
||||
status = wlan_objmgr_register_pdev_create_handler(
|
||||
WLAN_COMP_DP,
|
||||
dp_pdev_obj_create_notification, NULL);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
dp_err("Failed to register pdev create handler for DP");
|
||||
goto fail_create_pdev;
|
||||
}
|
||||
|
||||
status = wlan_objmgr_register_pdev_destroy_handler(
|
||||
WLAN_COMP_DP,
|
||||
dp_pdev_obj_destroy_notification, NULL);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
dp_err("Failed to register pdev destroy handler for DP");
|
||||
goto fail_destroy_pdev;
|
||||
}
|
||||
|
||||
status = wlan_objmgr_register_vdev_create_handler(
|
||||
WLAN_COMP_DP,
|
||||
dp_vdev_obj_create_notification, NULL);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
dp_err("Failed to register vdev create handler");
|
||||
goto fail_create_vdev;
|
||||
}
|
||||
|
||||
status = wlan_objmgr_register_vdev_destroy_handler(
|
||||
WLAN_COMP_DP,
|
||||
dp_vdev_obj_destroy_notification, NULL);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
dp_err("Failed to register vdev destroy handler");
|
||||
goto fail_destroy_vdev;
|
||||
}
|
||||
return status;
|
||||
|
||||
fail_destroy_vdev:
|
||||
wlan_objmgr_unregister_vdev_create_handler(
|
||||
WLAN_COMP_DP,
|
||||
dp_vdev_obj_create_notification, NULL);
|
||||
|
||||
fail_create_vdev:
|
||||
wlan_objmgr_unregister_pdev_destroy_handler(
|
||||
WLAN_COMP_DP,
|
||||
dp_pdev_obj_destroy_notification, NULL);
|
||||
|
||||
fail_destroy_pdev:
|
||||
wlan_objmgr_unregister_pdev_create_handler(
|
||||
WLAN_COMP_DP,
|
||||
dp_pdev_obj_create_notification, NULL);
|
||||
|
||||
fail_create_pdev:
|
||||
wlan_objmgr_unregister_psoc_destroy_handler(
|
||||
WLAN_COMP_DP,
|
||||
dp_psoc_obj_destroy_notification, NULL);
|
||||
fail_destroy_psoc:
|
||||
wlan_objmgr_unregister_psoc_create_handler(
|
||||
WLAN_COMP_DP,
|
||||
dp_psoc_obj_create_notification, NULL);
|
||||
|
||||
dp_free_ctx();
|
||||
return status;
|
||||
}
|
||||
|
||||
QDF_STATUS ucfg_dp_deinit(void)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
|
||||
dp_info("DP module dispatcher deinit");
|
||||
|
||||
status = wlan_objmgr_unregister_vdev_destroy_handler(
|
||||
WLAN_COMP_DP,
|
||||
dp_vdev_obj_destroy_notification,
|
||||
NULL);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
dp_err("Failed to unregister vdev delete handler:%d", status);
|
||||
|
||||
status = wlan_objmgr_unregister_vdev_create_handler(
|
||||
WLAN_COMP_DP,
|
||||
dp_vdev_obj_create_notification, NULL);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
dp_err("Failed to unregister vdev create handler:%d", status);
|
||||
|
||||
status = wlan_objmgr_unregister_pdev_destroy_handler(
|
||||
WLAN_COMP_DP,
|
||||
dp_pdev_obj_destroy_notification, NULL);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
dp_err("Failed to unregister pdev destroy handler:%d", status);
|
||||
|
||||
status = wlan_objmgr_unregister_pdev_create_handler(
|
||||
WLAN_COMP_DP,
|
||||
dp_pdev_obj_create_notification, NULL);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
dp_err("Failed to unregister pdev create handler:%d", status);
|
||||
|
||||
status = wlan_objmgr_unregister_psoc_destroy_handler(
|
||||
WLAN_COMP_DP,
|
||||
dp_psoc_obj_destroy_notification, NULL);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
dp_err("Failed to unregister DP psoc delete handle:%d", status);
|
||||
|
||||
status = wlan_objmgr_unregister_psoc_create_handler(
|
||||
WLAN_COMP_DP,
|
||||
dp_psoc_obj_create_notification, NULL);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
dp_err("Failed to unregister DP psoc create handle:%d", status);
|
||||
|
||||
dp_free_ctx();
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* ucfg_dp_suspend_handler() - suspend handler regsitered with PMO component
|
||||
* @psoc: psoc handle
|
||||
* @arg: Arguments passed by the suspend handler.
|
||||
*
|
||||
* This handler is used to update the wiphy suspend state in DP context
|
||||
*
|
||||
* Return: QDF_STATUS status -in case of success else return error
|
||||
*/
|
||||
static QDF_STATUS
|
||||
ucfg_dp_suspend_handler(struct wlan_objmgr_psoc *psoc, void *arg)
|
||||
{
|
||||
struct wlan_dp_psoc_context *dp_ctx;
|
||||
|
||||
dp_ctx = dp_psoc_get_priv(psoc);
|
||||
if (!dp_ctx) {
|
||||
dp_err("DP context not found");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
dp_ctx->is_wiphy_suspended = true;
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* ucfg_dp_resume_handler() - resume handler regsitered with PMO component
|
||||
* @psoc: psoc handle
|
||||
* @arg: Arguments passed by the resume handler.
|
||||
*
|
||||
* This handler is used to update the wiphy resume state in DP context
|
||||
*
|
||||
* Return: QDF_STATUS status -in case of success else return error
|
||||
*/
|
||||
static QDF_STATUS
|
||||
ucfg_dp_resume_handler(struct wlan_objmgr_psoc *psoc, void *arg)
|
||||
{
|
||||
struct wlan_dp_psoc_context *dp_ctx;
|
||||
|
||||
dp_ctx = dp_psoc_get_priv(psoc);
|
||||
if (!dp_ctx) {
|
||||
dp_err("DP context not found");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
dp_ctx->is_wiphy_suspended = false;
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_register_pmo_handler() - register suspend and resume handler
|
||||
* with PMO component
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static inline void dp_register_pmo_handler(void)
|
||||
{
|
||||
pmo_register_suspend_handler(WLAN_COMP_DP,
|
||||
ucfg_dp_suspend_handler, NULL);
|
||||
|
||||
pmo_register_resume_handler(WLAN_COMP_DP,
|
||||
ucfg_dp_resume_handler, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_unregister_pmo_handler() - unregister suspend and resume handler
|
||||
* with PMO component
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static inline void dp_unregister_pmo_handler(void)
|
||||
{
|
||||
pmo_unregister_suspend_handler(WLAN_COMP_DP, ucfg_dp_suspend_handler);
|
||||
|
||||
pmo_unregister_resume_handler(WLAN_COMP_DP, ucfg_dp_resume_handler);
|
||||
}
|
||||
|
||||
/**
|
||||
* ucfg_dp_store_qdf_dev() - Store qdf device instance in DP component
|
||||
* @psoc: psoc handle
|
||||
*
|
||||
* Return: QDF_STATUS status -in case of success else return error
|
||||
*/
|
||||
static inline QDF_STATUS
|
||||
ucfg_dp_store_qdf_dev(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
struct wlan_dp_psoc_context *dp_ctx;
|
||||
|
||||
dp_ctx = dp_psoc_get_priv(psoc);
|
||||
if (!dp_ctx) {
|
||||
dp_err("DP context not found");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
dp_ctx->qdf_dev = wlan_psoc_get_qdf_dev(psoc);
|
||||
if (!dp_ctx->qdf_dev) {
|
||||
dp_err("QDF_DEV is NULL");
|
||||
QDF_BUG(0);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS ucfg_dp_psoc_open(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
ucfg_dp_store_qdf_dev(psoc);
|
||||
dp_register_pmo_handler();
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS ucfg_dp_psoc_close(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
dp_unregister_pmo_handler();
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
#ifdef WLAN_FEATURE_RX_SOFTIRQ_TIME_LIMIT
|
||||
/**
|
||||
* dp_get_config_rx_softirq_limits() - Update DP rx softirq limit config
|
||||
* datapath
|
||||
* @psoc: psoc handle
|
||||
* @params: DP Configuration parameters
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static
|
||||
void dp_get_config_rx_softirq_limits(struct wlan_objmgr_psoc *psoc,
|
||||
struct cdp_config_params *params)
|
||||
{
|
||||
params->tx_comp_loop_pkt_limit = cfg_get(psoc,
|
||||
CFG_DP_TX_COMP_LOOP_PKT_LIMIT);
|
||||
params->rx_reap_loop_pkt_limit = cfg_get(psoc,
|
||||
CFG_DP_RX_REAP_LOOP_PKT_LIMIT);
|
||||
params->rx_hp_oos_update_limit = cfg_get(psoc,
|
||||
CFG_DP_RX_HP_OOS_UPDATE_LIMIT);
|
||||
}
|
||||
#else
|
||||
static
|
||||
void dp_get_config_rx_softirq_limits(struct wlan_objmgr_psoc *psoc,
|
||||
struct cdp_config_params *params)
|
||||
{
|
||||
}
|
||||
#endif /* WLAN_FEATURE_RX_SOFTIRQ_TIME_LIMIT */
|
||||
|
||||
#if defined(QCA_LL_TX_FLOW_CONTROL_V2) || defined(QCA_LL_PDEV_TX_FLOW_CONTROL)
|
||||
/**
|
||||
* dp_get_config_queue_threshold() - Update DP tx flow limit config
|
||||
* datapath
|
||||
* @psoc: psoc handle
|
||||
* @params: DP Configuration parameters
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static void
|
||||
dp_get_config_queue_threshold(struct wlan_objmgr_psoc *psoc,
|
||||
struct cdp_config_params *params)
|
||||
{
|
||||
params->tx_flow_stop_queue_threshold =
|
||||
cfg_get(psoc, CFG_DP_TX_FLOW_STOP_QUEUE_TH);
|
||||
params->tx_flow_start_queue_offset =
|
||||
cfg_get(psoc, CFG_DP_TX_FLOW_START_QUEUE_OFFSET);
|
||||
}
|
||||
#else
|
||||
static inline void
|
||||
dp_get_config_queue_threshold(struct wlan_objmgr_psoc *psoc,
|
||||
struct cdp_config_params *params)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
QDF_STATUS
|
||||
ucfg_dp_update_config(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_dp_user_config *req)
|
||||
{
|
||||
struct cdp_config_params params = {0};
|
||||
struct wlan_dp_psoc_context *dp_ctx;
|
||||
QDF_STATUS status;
|
||||
void *soc;
|
||||
|
||||
dp_ctx = dp_psoc_get_priv(psoc);
|
||||
|
||||
soc = cds_get_context(QDF_MODULE_ID_SOC);
|
||||
params.tso_enable = cfg_get(psoc, CFG_DP_TSO);
|
||||
params.lro_enable = cfg_get(psoc, CFG_DP_LRO);
|
||||
|
||||
dp_get_config_queue_threshold(psoc, ¶ms);
|
||||
params.flow_steering_enable =
|
||||
cfg_get(psoc, CFG_DP_FLOW_STEERING_ENABLED);
|
||||
params.napi_enable = dp_ctx->napi_enable;
|
||||
params.p2p_tcp_udp_checksumoffload =
|
||||
cfg_get(psoc, CFG_DP_P2P_TCP_UDP_CKSUM_OFFLOAD);
|
||||
params.nan_tcp_udp_checksumoffload =
|
||||
cfg_get(psoc, CFG_DP_NAN_TCP_UDP_CKSUM_OFFLOAD);
|
||||
params.tcp_udp_checksumoffload =
|
||||
cfg_get(psoc, CFG_DP_TCP_UDP_CKSUM_OFFLOAD);
|
||||
params.ipa_enable = req->ipa_enable;
|
||||
params.gro_enable = cfg_get(psoc, CFG_DP_GRO);
|
||||
params.tx_comp_loop_pkt_limit = cfg_get(psoc,
|
||||
CFG_DP_TX_COMP_LOOP_PKT_LIMIT);
|
||||
params.rx_reap_loop_pkt_limit = cfg_get(psoc,
|
||||
CFG_DP_RX_REAP_LOOP_PKT_LIMIT);
|
||||
params.rx_hp_oos_update_limit = cfg_get(psoc,
|
||||
CFG_DP_RX_HP_OOS_UPDATE_LIMIT);
|
||||
dp_get_config_rx_softirq_limits(psoc, ¶ms);
|
||||
|
||||
status = cdp_update_config_parameters(soc, ¶ms);
|
||||
if (status) {
|
||||
dp_err("Failed to attach config parameters");
|
||||
return status;
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
uint64_t
|
||||
ucfg_dp_get_rx_softirq_yield_duration(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return 0;
|
||||
struct wlan_dp_psoc_context *dp_ctx = dp_psoc_get_priv(psoc);
|
||||
|
||||
return dp_ctx->dp_cfg.rx_softirq_max_yield_duration_ns;
|
||||
}
|
||||
|
Reference in New Issue
Block a user