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:
Chaithanya Garrepalli
2021-11-19 14:40:36 +05:30
committed by Madan Koyyalamudi
parent 1faab04393
commit 70398a0ccd
17 changed files with 182 additions and 57 deletions

View File

@@ -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, &params);
break;
default:
return ol_txrx_soc_attach(psoc, dp_ol_if_ops);

View File

@@ -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

View File

@@ -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 =

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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 */

View File

@@ -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;
}

View File

@@ -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;
};

View File

@@ -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();

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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_ */

View File

@@ -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);
};
/**

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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[] = {

View File

@@ -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[] = {