qcacmn: Changes needed for MLO soc attach
Changes needed for MLO soc attach to pass chip_id, dp_ml_context from upper layer. This change also takes care of assigning appropriate RBM id for IDLE link descriptors based on chip_id. Change-Id: I8f5f08c524d91942e6e458f048700b7bdd900107
This commit is contained in:

committed by
Madan Koyyalamudi

parent
1faab04393
commit
70398a0ccd
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2011-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 @@
|
||||
#define _CDP_TXRX_CMN_REG_H_
|
||||
|
||||
#include "hif_main.h"
|
||||
#include "cdp_txrx_cmn_struct.h"
|
||||
|
||||
#define MOB_DRV_LEGACY_DP 0xdeed
|
||||
/* Lithium device IDs */
|
||||
@@ -58,11 +60,7 @@ ol_txrx_soc_attach(void *scn_handle, struct ol_if_ops *dp_ol_if_ops);
|
||||
/**
|
||||
* dp_soc_attach_wifi3() - Attach txrx SOC
|
||||
* @ctrl_psoc: Opaque SOC handle from Ctrl plane
|
||||
* @htc_handle: Opaque HTC handle
|
||||
* @hif_handle: Opaque HIF handle
|
||||
* @qdf_osdev: QDF device
|
||||
* @ol_ops: Offload Operations
|
||||
* @device_id: Device ID
|
||||
* @params: soc attach params
|
||||
*
|
||||
* Return: DP SOC handle on success, NULL on failure
|
||||
*/
|
||||
@@ -83,9 +81,7 @@ ol_txrx_soc_attach(void *scn_handle, struct ol_if_ops *dp_ol_if_ops);
|
||||
defined(QCA_WIFI_QCA5018) || defined(QCA_WIFI_QCA9574)
|
||||
struct cdp_soc_t *
|
||||
dp_soc_attach_wifi3(struct cdp_ctrl_objmgr_psoc *ctrl_psoc,
|
||||
struct hif_opaque_softc *hif_handle,
|
||||
HTC_HANDLE htc_handle, qdf_device_t qdf_osdev,
|
||||
struct ol_if_ops *ol_ops, uint16_t device_id);
|
||||
struct cdp_soc_attach_params *params);
|
||||
void *dp_soc_init_wifi3(struct cdp_soc_t *soc,
|
||||
struct cdp_ctrl_objmgr_psoc *ctrl_psoc,
|
||||
struct hif_opaque_softc *hif_handle,
|
||||
@@ -94,11 +90,7 @@ void *dp_soc_init_wifi3(struct cdp_soc_t *soc,
|
||||
#else
|
||||
static inline struct cdp_soc_t *
|
||||
dp_soc_attach_wifi3(struct cdp_ctrl_objmgr_psoc *ctrl_psoc,
|
||||
struct hif_opaque_softc *hif_handle,
|
||||
HTC_HANDLE htc_handle,
|
||||
qdf_device_t qdf_osdev,
|
||||
struct ol_if_ops *ol_ops,
|
||||
uint16_t device_id)
|
||||
struct cdp_soc_attach_params *params)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
@@ -153,6 +145,14 @@ ol_txrx_soc_handle cdp_soc_attach(u_int16_t devid,
|
||||
qdf_device_t qdf_dev,
|
||||
struct ol_if_ops *dp_ol_if_ops)
|
||||
{
|
||||
struct cdp_soc_attach_params params = {0};
|
||||
|
||||
params.hif_handle = hif_handle;
|
||||
params.device_id = devid;
|
||||
params.htc_handle = htc_handle;
|
||||
params.qdf_osdev = qdf_dev;
|
||||
params.ol_ops = dp_ol_if_ops;
|
||||
|
||||
switch (devid) {
|
||||
case LITHIUM_DP: /*FIXME Add lithium devide IDs */
|
||||
case BERYLLIUM_DP:
|
||||
@@ -174,8 +174,7 @@ ol_txrx_soc_handle cdp_soc_attach(u_int16_t devid,
|
||||
case RUMIM2M_DEVICE_ID_NODE5: /*lithium emulation */
|
||||
case WCN7850_DEVICE_ID:
|
||||
case QCN9224_DEVICE_ID:
|
||||
return dp_soc_attach_wifi3(psoc, hif_handle, htc_handle,
|
||||
qdf_dev, dp_ol_if_ops, devid);
|
||||
return dp_soc_attach_wifi3(psoc, ¶ms);
|
||||
break;
|
||||
default:
|
||||
return ol_txrx_soc_attach(psoc, dp_ol_if_ops);
|
||||
|
@@ -2643,4 +2643,27 @@ struct cdp_scan_spcl_vap_stats {
|
||||
uint64_t rx_data_pkts;
|
||||
};
|
||||
#endif
|
||||
|
||||
/**
|
||||
* cdp_soc_attach_params
|
||||
*
|
||||
* @hif_handle: Opaque HIF handle
|
||||
* @htc_handle: Opaque HTC handle
|
||||
* @qdf_osdev: QDF device
|
||||
* @ol_ops: Offload Operations
|
||||
* @device_id: Device ID
|
||||
* @ml_context: DP ML object conext
|
||||
* @mlo_chip_id: MLO chip id, for legacy SOCs chip_id need to 0
|
||||
* @mlo_enabled: MLO enable bit
|
||||
*/
|
||||
struct cdp_soc_attach_params {
|
||||
struct hif_opaque_softc *hif_handle;
|
||||
HTC_HANDLE htc_handle;
|
||||
qdf_device_t qdf_osdev;
|
||||
struct ol_if_ops *ol_ops;
|
||||
uint16_t device_id;
|
||||
struct cdp_mlo_ctxt *ml_context;
|
||||
uint8_t mlo_chip_id;
|
||||
uint8_t mlo_enabled;
|
||||
};
|
||||
#endif
|
||||
|
@@ -369,7 +369,8 @@ static QDF_STATUS dp_soc_detach_be(struct dp_soc *soc)
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static QDF_STATUS dp_soc_attach_be(struct dp_soc *soc)
|
||||
static QDF_STATUS dp_soc_attach_be(struct dp_soc *soc,
|
||||
struct cdp_soc_attach_params *params)
|
||||
{
|
||||
struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc);
|
||||
QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
|
||||
@@ -398,6 +399,8 @@ static QDF_STATUS dp_soc_attach_be(struct dp_soc *soc)
|
||||
if (!QDF_IS_STATUS_SUCCESS(qdf_status))
|
||||
goto fail;
|
||||
|
||||
dp_soc_mlo_fill_params(soc, params);
|
||||
|
||||
for (i = 0; i < MAX_TXDESC_POOLS; i++) {
|
||||
num_entries = wlan_cfg_get_num_tx_desc(soc->wlan_cfg_ctx);
|
||||
qdf_status =
|
||||
|
@@ -21,6 +21,9 @@
|
||||
|
||||
#include <dp_types.h>
|
||||
#include <hal_be_tx.h>
|
||||
#ifdef WLAN_MLO_MULTI_CHIP
|
||||
#include "mlo/dp_mlo.h"
|
||||
#endif
|
||||
|
||||
/* maximum number of entries in one page of secondary page table */
|
||||
#define DP_CC_SPT_PAGE_MAX_ENTRIES 512
|
||||
@@ -173,8 +176,8 @@ struct dp_tx_bank_profile {
|
||||
* @rx_cc_ctx: Cookie conversion context for rx desc pools
|
||||
* @monitor_soc_be: BE specific monitor object
|
||||
* @mlo_enabled: Flag to indicate MLO is enabled or not
|
||||
* @ml_ctxt: pointer to global ml_context
|
||||
* @mlo_chip_id: MLO chip_id
|
||||
* @ml_ctxt: pointer to global ml_context
|
||||
*/
|
||||
struct dp_soc_be {
|
||||
struct dp_soc soc;
|
||||
@@ -195,8 +198,8 @@ struct dp_soc_be {
|
||||
#endif
|
||||
#ifdef WLAN_MLO_MULTI_CHIP
|
||||
uint8_t mlo_enabled;
|
||||
struct dp_mlo_context *ml_context;
|
||||
uint8_t mlo_chip_id;
|
||||
struct dp_mlo_ctxt *ml_ctxt;
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -531,4 +534,12 @@ uint32_t dp_desc_pool_get_cmem_base(uint8_t chip_id, uint8_t desc_pool_id,
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifndef WLAN_MLO_MULTI_CHIP
|
||||
static inline
|
||||
void dp_soc_mlo_fill_params(struct dp_soc *soc,
|
||||
struct cdp_soc_attach_params *params)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
@@ -18,6 +18,7 @@
|
||||
#include <dp_htt.h>
|
||||
#include <hal_be_api.h>
|
||||
#include "dp_mlo.h"
|
||||
#include <dp_be.h>
|
||||
|
||||
/*
|
||||
* dp_mlo_ctxt_attach_wifi3 () – Attach DP MLO context
|
||||
@@ -97,3 +98,18 @@ dp_mlo_get_soc_ref_by_chip_id(struct dp_mlo_ctxt *ml_ctxt,
|
||||
|
||||
return soc;
|
||||
}
|
||||
|
||||
void dp_soc_mlo_fill_params(struct dp_soc *soc,
|
||||
struct cdp_soc_attach_params *params)
|
||||
{
|
||||
struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc);
|
||||
|
||||
if (!params->mlo_enabled) {
|
||||
dp_warn("MLO not enabled on SOC");
|
||||
return;
|
||||
}
|
||||
|
||||
be_soc->mlo_chip_id = params->mlo_chip_id;
|
||||
be_soc->ml_ctxt = cdp_mlo_ctx_to_dp(params->ml_context);
|
||||
be_soc->mlo_enabled = 1;
|
||||
}
|
||||
|
@@ -17,7 +17,6 @@
|
||||
#define __DP_MLO_H
|
||||
|
||||
#include <dp_types.h>
|
||||
#include <dp_be.h>
|
||||
|
||||
/* Max number of chips that can participate in MLO */
|
||||
#define DP_MAX_MLO_CHIPS 3
|
||||
@@ -71,4 +70,14 @@ struct dp_mlo_ctxt *cdp_mlo_ctx_to_dp(struct cdp_mlo_ctxt *mlo_ctxt)
|
||||
{
|
||||
return (struct dp_mlo_ctxt *)mlo_ctxt;
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_soc_mlo_fill_params() - update SOC mlo params
|
||||
* @soc: DP soc
|
||||
* @params: soc attach params
|
||||
*
|
||||
* Return: struct dp_soc pointer
|
||||
*/
|
||||
void dp_soc_mlo_fill_params(struct dp_soc *soc,
|
||||
struct cdp_soc_attach_params *params);
|
||||
#endif /* __DP_MLO_H */
|
||||
|
@@ -209,10 +209,7 @@ static QDF_STATUS dp_pdev_detach_wifi3(struct cdp_soc_t *psoc,
|
||||
int force);
|
||||
static struct dp_soc *
|
||||
dp_soc_attach(struct cdp_ctrl_objmgr_psoc *ctrl_psoc,
|
||||
struct hif_opaque_softc *hif_handle,
|
||||
HTC_HANDLE htc_handle,
|
||||
qdf_device_t qdf_osdev,
|
||||
struct ol_if_ops *ol_ops, uint16_t device_id);
|
||||
struct cdp_soc_attach_params *params);
|
||||
static inline QDF_STATUS dp_peer_create_wifi3(struct cdp_soc_t *soc_hdl,
|
||||
uint8_t vdev_id,
|
||||
uint8_t *peer_mac_addr,
|
||||
@@ -3537,7 +3534,8 @@ void dp_link_desc_ring_replenish(struct dp_soc *soc, uint32_t mac_id)
|
||||
|
||||
hal_set_link_desc_addr(soc->hal_soc, desc, cookie,
|
||||
dma_pages[page_idx].page_p_addr
|
||||
+ (offset * link_desc_size));
|
||||
+ (offset * link_desc_size),
|
||||
soc->idle_link_bm_id);
|
||||
count++;
|
||||
}
|
||||
hal_srng_access_end_unlocked(soc->hal_soc, desc_srng);
|
||||
@@ -3567,7 +3565,8 @@ void dp_link_desc_ring_replenish(struct dp_soc *soc, uint32_t mac_id)
|
||||
(void *)scatter_buf_ptr,
|
||||
cookie,
|
||||
dma_pages[page_idx].page_p_addr +
|
||||
(offset * link_desc_size));
|
||||
(offset * link_desc_size),
|
||||
soc->idle_link_bm_id);
|
||||
rem_entries--;
|
||||
if (rem_entries) {
|
||||
scatter_buf_ptr += link_desc_size;
|
||||
@@ -12404,24 +12403,18 @@ qdf_export_symbol(dp_soc_set_txrx_ring_map);
|
||||
/**
|
||||
* dp_soc_attach_wifi3() - Attach txrx SOC
|
||||
* @ctrl_psoc: Opaque SOC handle from control plane
|
||||
* @htc_handle: Opaque HTC handle
|
||||
* @hif_handle: Opaque HIF handle
|
||||
* @qdf_osdev: QDF device
|
||||
* @ol_ops: Offload Operations
|
||||
* @device_id: Device ID
|
||||
* @params: SOC attach params
|
||||
*
|
||||
* Return: DP SOC handle on success, NULL on failure
|
||||
*/
|
||||
struct cdp_soc_t *
|
||||
dp_soc_attach_wifi3(struct cdp_ctrl_objmgr_psoc *ctrl_psoc,
|
||||
struct hif_opaque_softc *hif_handle,
|
||||
HTC_HANDLE htc_handle, qdf_device_t qdf_osdev,
|
||||
struct ol_if_ops *ol_ops, uint16_t device_id)
|
||||
struct cdp_soc_attach_params *params)
|
||||
{
|
||||
struct dp_soc *dp_soc = NULL;
|
||||
|
||||
dp_soc = dp_soc_attach(ctrl_psoc, hif_handle, htc_handle, qdf_osdev,
|
||||
ol_ops, device_id);
|
||||
dp_soc = dp_soc_attach(ctrl_psoc, params);
|
||||
|
||||
return dp_soc_to_cdp_soc_t(dp_soc);
|
||||
}
|
||||
|
||||
@@ -12454,23 +12447,21 @@ dp_get_link_desc_id_start(uint16_t arch_id)
|
||||
/**
|
||||
* dp_soc_attach() - Attach txrx SOC
|
||||
* @ctrl_psoc: Opaque SOC handle from control plane
|
||||
* @hif_handle: Opaque HIF handle
|
||||
* @htc_handle: Opaque HTC handle
|
||||
* @qdf_osdev: QDF device
|
||||
* @ol_ops: Offload Operations
|
||||
* @device_id: Device ID
|
||||
* @params: SOC attach params
|
||||
*
|
||||
* Return: DP SOC handle on success, NULL on failure
|
||||
*/
|
||||
static struct dp_soc *
|
||||
dp_soc_attach(struct cdp_ctrl_objmgr_psoc *ctrl_psoc,
|
||||
struct hif_opaque_softc *hif_handle, HTC_HANDLE htc_handle,
|
||||
qdf_device_t qdf_osdev, struct ol_if_ops *ol_ops,
|
||||
uint16_t device_id)
|
||||
struct cdp_soc_attach_params *params)
|
||||
{
|
||||
int int_ctx;
|
||||
struct dp_soc *soc = NULL;
|
||||
uint16_t arch_id;
|
||||
struct hif_opaque_softc *hif_handle = params->hif_handle;
|
||||
qdf_device_t qdf_osdev = params->qdf_osdev;
|
||||
struct ol_if_ops *ol_ops = params->ol_ops;
|
||||
uint16_t device_id = params->device_id;
|
||||
|
||||
if (!hif_handle) {
|
||||
dp_err("HIF handle is NULL");
|
||||
@@ -12501,7 +12492,8 @@ dp_soc_attach(struct cdp_ctrl_objmgr_psoc *ctrl_psoc,
|
||||
soc->num_hw_dscp_tid_map = HAL_MAX_HW_DSCP_TID_MAPS;
|
||||
hal_rx_get_tlv_size(soc->hal_soc, &soc->rx_pkt_tlv_size,
|
||||
&soc->rx_mon_pkt_tlv_size);
|
||||
|
||||
soc->idle_link_bm_id = hal_get_idle_link_bm_id(soc->hal_soc,
|
||||
params->mlo_chip_id);
|
||||
soc->arch_id = arch_id;
|
||||
soc->link_desc_id_start =
|
||||
dp_get_link_desc_id_start(soc->arch_id);
|
||||
@@ -12531,7 +12523,8 @@ dp_soc_attach(struct cdp_ctrl_objmgr_psoc *ctrl_psoc,
|
||||
goto fail3;
|
||||
}
|
||||
|
||||
if (!QDF_IS_STATUS_SUCCESS(soc->arch_ops.txrx_soc_attach(soc))) {
|
||||
if (!QDF_IS_STATUS_SUCCESS(soc->arch_ops.txrx_soc_attach(soc,
|
||||
params))) {
|
||||
dp_err("unable to do target specific attach");
|
||||
goto fail4;
|
||||
}
|
||||
|
@@ -1599,7 +1599,8 @@ enum dp_context_type {
|
||||
*/
|
||||
struct dp_arch_ops {
|
||||
/* INIT/DEINIT Arch Ops */
|
||||
QDF_STATUS (*txrx_soc_attach)(struct dp_soc *soc);
|
||||
QDF_STATUS (*txrx_soc_attach)(struct dp_soc *soc,
|
||||
struct cdp_soc_attach_params *params);
|
||||
QDF_STATUS (*txrx_soc_detach)(struct dp_soc *soc);
|
||||
QDF_STATUS (*txrx_soc_init)(struct dp_soc *soc);
|
||||
QDF_STATUS (*txrx_soc_deinit)(struct dp_soc *soc);
|
||||
@@ -2213,6 +2214,8 @@ struct dp_soc {
|
||||
/* flag to indicate vote for runtime_pm for high tput castt*/
|
||||
qdf_atomic_t rtpm_high_tput_flag;
|
||||
#endif
|
||||
/* Buffer manager ID for idle link descs */
|
||||
uint8_t idle_link_bm_id;
|
||||
qdf_atomic_t ref_count;
|
||||
};
|
||||
|
||||
|
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 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
|
||||
@@ -62,7 +63,8 @@ qdf_size_t dp_get_context_size_li(enum dp_context_type context_type)
|
||||
}
|
||||
}
|
||||
|
||||
static QDF_STATUS dp_soc_attach_li(struct dp_soc *soc)
|
||||
static QDF_STATUS dp_soc_attach_li(struct dp_soc *soc,
|
||||
struct cdp_soc_attach_params *params)
|
||||
{
|
||||
soc->wbm_sw0_bm_id = hal_tx_get_wbm_sw0_bm_id();
|
||||
|
||||
|
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2016-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
|
||||
@@ -72,10 +73,12 @@ void *hal_rx_msdu_ext_desc_info_get_ptr_be(void *msdu_details_ptr);
|
||||
* @desc: Descriptor entry (from WBM_IDLE_LINK ring)
|
||||
* @cookie: SW cookie for the buffer/descriptor
|
||||
* @link_desc_paddr: Physical address of link descriptor entry
|
||||
* @bm_id: idle link BM id
|
||||
*
|
||||
*/
|
||||
void hal_set_link_desc_addr_be(void *desc, uint32_t cookie,
|
||||
qdf_dma_addr_t link_desc_paddr);
|
||||
qdf_dma_addr_t link_desc_paddr,
|
||||
uint8_t bm_id);
|
||||
|
||||
/**
|
||||
* hal_hw_txrx_default_ops_attach_be(): Add default ops for BE chips
|
||||
|
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2016-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
|
||||
@@ -142,7 +143,8 @@ void hal_reo_setup_generic_be(struct hal_soc *soc, void *reoparams)
|
||||
}
|
||||
|
||||
void hal_set_link_desc_addr_be(void *desc, uint32_t cookie,
|
||||
qdf_dma_addr_t link_desc_paddr)
|
||||
qdf_dma_addr_t link_desc_paddr,
|
||||
uint8_t bm_id)
|
||||
{
|
||||
uint32_t *buf_addr = (uint32_t *)desc;
|
||||
|
||||
@@ -151,7 +153,7 @@ void hal_set_link_desc_addr_be(void *desc, uint32_t cookie,
|
||||
HAL_DESC_SET_FIELD(buf_addr, BUFFER_ADDR_INFO, BUFFER_ADDR_39_32,
|
||||
(uint64_t)link_desc_paddr >> 32);
|
||||
HAL_DESC_SET_FIELD(buf_addr, BUFFER_ADDR_INFO, RETURN_BUFFER_MANAGER,
|
||||
WBM_IDLE_DESC_LIST);
|
||||
bm_id);
|
||||
HAL_DESC_SET_FIELD(buf_addr, BUFFER_ADDR_INFO, SW_BUFFER_COOKIE,
|
||||
cookie);
|
||||
}
|
||||
|
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2016-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
|
||||
@@ -342,7 +343,8 @@
|
||||
*/
|
||||
static inline void hal_set_link_desc_addr(hal_soc_handle_t hal_soc_hdl,
|
||||
void *desc, uint32_t cookie,
|
||||
qdf_dma_addr_t link_desc_paddr)
|
||||
qdf_dma_addr_t link_desc_paddr,
|
||||
uint8_t bm_id)
|
||||
{
|
||||
struct hal_soc *hal_soc = (struct hal_soc *)hal_soc_hdl;
|
||||
|
||||
@@ -353,7 +355,8 @@ static inline void hal_set_link_desc_addr(hal_soc_handle_t hal_soc_hdl,
|
||||
|
||||
if (hal_soc->ops->hal_set_link_desc_addr)
|
||||
hal_soc->ops->hal_set_link_desc_addr(desc, cookie,
|
||||
link_desc_paddr);
|
||||
link_desc_paddr,
|
||||
bm_id);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -393,4 +396,21 @@ uint32_t hal_get_reo_qdesc_size(hal_soc_handle_t hal_soc_hdl,
|
||||
(3 * sizeof(struct rx_reo_queue_ext));
|
||||
}
|
||||
|
||||
/**
|
||||
* hal_get_idle_link_bm_id() - Get idle link BM id from chid_id
|
||||
* @chip_id: mlo chip_id
|
||||
*
|
||||
* Returns: RBM ID
|
||||
*/
|
||||
static inline
|
||||
uint8_t hal_get_idle_link_bm_id(hal_soc_handle_t hal_soc_hdl,
|
||||
uint8_t chip_id)
|
||||
{
|
||||
struct hal_soc *hal_soc = (struct hal_soc *)hal_soc_hdl;
|
||||
|
||||
if (hal_soc->ops->hal_get_idle_link_bm_id)
|
||||
return hal_soc->ops->hal_get_idle_link_bm_id(chip_id);
|
||||
|
||||
return WBM_IDLE_DESC_LIST;
|
||||
}
|
||||
#endif /* _HAL_HW_INTERNAL_H_ */
|
||||
|
@@ -912,7 +912,8 @@ struct hal_hw_txrx_ops {
|
||||
uint32_t (*hal_get_reo_qdesc_size)(uint32_t ba_window_size, int tid);
|
||||
|
||||
void (*hal_set_link_desc_addr)(void *desc, uint32_t cookie,
|
||||
qdf_dma_addr_t link_desc_paddr);
|
||||
qdf_dma_addr_t link_desc_paddr,
|
||||
uint8_t bm_id);
|
||||
void (*hal_tx_init_data_ring)(hal_soc_handle_t hal_soc_hdl,
|
||||
hal_ring_handle_t hal_ring_hdl);
|
||||
void* (*hal_rx_msdu_ext_desc_info_get_ptr)(void *msdu_details_ptr);
|
||||
@@ -1012,6 +1013,7 @@ struct hal_hw_txrx_ops {
|
||||
void *st_handle,
|
||||
uint32_t tlv, int *num_ref);
|
||||
uint8_t (*hal_get_tlv_hdr_size)(void);
|
||||
uint8_t (*hal_get_idle_link_bm_id)(uint8_t chip_id);
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2016-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
|
||||
@@ -29,10 +30,11 @@
|
||||
* @desc: Descriptor entry (from WBM_IDLE_LINK ring)
|
||||
* @cookie: SW cookie for the buffer/descriptor
|
||||
* @link_desc_paddr: Physical address of link descriptor entry
|
||||
*
|
||||
* @bm_id: idle link BM id
|
||||
*/
|
||||
void hal_set_link_desc_addr_li(void *desc, uint32_t cookie,
|
||||
qdf_dma_addr_t link_desc_paddr);
|
||||
qdf_dma_addr_t link_desc_paddr,
|
||||
uint8_t bm_id);
|
||||
|
||||
/**
|
||||
* hal_tx_init_data_ring_li() - Initialize all the TCL Descriptors in SRNG
|
||||
|
@@ -54,7 +54,8 @@ static uint32_t hal_get_reo_qdesc_size_li(uint32_t ba_window_size, int tid)
|
||||
}
|
||||
|
||||
void hal_set_link_desc_addr_li(void *desc, uint32_t cookie,
|
||||
qdf_dma_addr_t link_desc_paddr)
|
||||
qdf_dma_addr_t link_desc_paddr,
|
||||
uint8_t bm_id)
|
||||
{
|
||||
uint32_t *buf_addr = (uint32_t *)desc;
|
||||
|
||||
@@ -63,7 +64,7 @@ void hal_set_link_desc_addr_li(void *desc, uint32_t cookie,
|
||||
HAL_DESC_SET_FIELD(buf_addr, BUFFER_ADDR_INFO_1, BUFFER_ADDR_39_32,
|
||||
(uint64_t)link_desc_paddr >> 32);
|
||||
HAL_DESC_SET_FIELD(buf_addr, BUFFER_ADDR_INFO_1, RETURN_BUFFER_MANAGER,
|
||||
WBM_IDLE_DESC_LIST);
|
||||
bm_id);
|
||||
HAL_DESC_SET_FIELD(buf_addr, BUFFER_ADDR_INFO_1, SW_BUFFER_COOKIE,
|
||||
cookie);
|
||||
}
|
||||
@@ -1134,6 +1135,17 @@ static QDF_STATUS hal_reo_status_update_li(hal_soc_handle_t hal_soc_hdl,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* hal_get_idle_link_bm_id_li() - Get idle link BM id from chid_id
|
||||
* @chip_id: mlo chip_id
|
||||
*
|
||||
* Returns: RBM ID
|
||||
*/
|
||||
static uint8_t hal_get_idle_link_bm_id_li(uint8_t chip_id)
|
||||
{
|
||||
return WBM_IDLE_DESC_LIST;
|
||||
}
|
||||
|
||||
/**
|
||||
* hal_hw_txrx_default_ops_attach_li() - Attach the default hal ops for
|
||||
* lithium chipsets.
|
||||
@@ -1230,4 +1242,5 @@ void hal_hw_txrx_default_ops_attach_li(struct hal_soc *hal_soc)
|
||||
hal_soc->ops->hal_rx_get_qdesc_addr = hal_rx_get_qdesc_addr_li;
|
||||
hal_soc->ops->hal_set_reo_ent_desc_reo_dest_ind =
|
||||
hal_set_reo_ent_desc_reo_dest_ind_li;
|
||||
hal_soc->ops->hal_get_idle_link_bm_id = hal_get_idle_link_bm_id_li;
|
||||
}
|
||||
|
@@ -1537,6 +1537,17 @@ static uint8_t hal_tx_get_num_tcl_banks_9224(void)
|
||||
return HAL_NUM_TCL_BANKS_9224;
|
||||
}
|
||||
|
||||
/**
|
||||
* hal_get_idle_link_bm_id_9224() - Get idle link BM id from chid_id
|
||||
* @chip_id: mlo chip_id
|
||||
*
|
||||
* Returns: RBM ID
|
||||
*/
|
||||
static uint8_t hal_get_idle_link_bm_id_9224(uint8_t chip_id)
|
||||
{
|
||||
return (WBM_IDLE_DESC_LIST + chip_id);
|
||||
}
|
||||
|
||||
static void hal_hw_txrx_ops_attach_qcn9224(struct hal_soc *hal_soc)
|
||||
{
|
||||
/* init and setup */
|
||||
@@ -1731,6 +1742,7 @@ static void hal_hw_txrx_ops_attach_qcn9224(struct hal_soc *hal_soc)
|
||||
hal_soc->ops->hal_rx_priv_info_get_from_tlv =
|
||||
hal_rx_priv_info_get_from_tlv_be;
|
||||
hal_soc->ops->hal_rx_pkt_hdr_get = hal_rx_pkt_hdr_get_be;
|
||||
hal_soc->ops->hal_get_idle_link_bm_id = hal_get_idle_link_bm_id_9224;
|
||||
};
|
||||
|
||||
struct hal_hw_srng_config hw_srng_table_9224[] = {
|
||||
|
@@ -1283,6 +1283,17 @@ static inline void hal_cmem_write_7850(hal_soc_handle_t hal_soc_hdl,
|
||||
hal_write32_mb(hal, offset, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* hal_get_idle_link_bm_id_7850() - Get idle link BM id from chid_id
|
||||
* @chip_id: mlo chip_id
|
||||
*
|
||||
* Returns: RBM ID
|
||||
*/
|
||||
static uint8_t hal_get_idle_link_bm_id_7850(uint8_t chip_id)
|
||||
{
|
||||
return WBM_IDLE_DESC_LIST;
|
||||
}
|
||||
|
||||
static void hal_hw_txrx_ops_attach_wcn7850(struct hal_soc *hal_soc)
|
||||
{
|
||||
/* init and setup */
|
||||
@@ -1503,6 +1514,7 @@ static void hal_hw_txrx_ops_attach_wcn7850(struct hal_soc *hal_soc)
|
||||
hal_rx_get_qdesc_addr_be;
|
||||
hal_soc->ops->hal_set_reo_ent_desc_reo_dest_ind =
|
||||
hal_set_reo_ent_desc_reo_dest_ind_be;
|
||||
hal_soc->ops->hal_get_idle_link_bm_id = hal_get_idle_link_bm_id_7850;
|
||||
};
|
||||
|
||||
struct hal_hw_srng_config hw_srng_table_7850[] = {
|
||||
|
Reference in New Issue
Block a user