qcacmn: Add logic for allocation and reset of vdev_stats_id
In BE architecture, HW provides basic vdev stats support for upto 48 vdevs. For each vdev, there is vdev_stats_id which represents the id of this vdev on HW. This vdev_stats_id is assigned by host and is conveyed to HW at the time of REO TID Queue setup for the peer. Add logic for allocation and deallocation of vdev_stats_id and convey this id to HW. Change-Id: If5611bf54d057ccf71c6444b5c79a26eb28df87e CRs-Fixed: 3067843
This commit is contained in:

committed by
Madan Koyyalamudi

parent
f76548dd04
commit
6c7fcf1d61
@@ -64,6 +64,12 @@
|
|||||||
#define OL_TXRX_INVALID_PDEV_ID 0xff
|
#define OL_TXRX_INVALID_PDEV_ID 0xff
|
||||||
#define OL_TXRX_INVALID_LOCAL_PEER_ID 0xffff
|
#define OL_TXRX_INVALID_LOCAL_PEER_ID 0xffff
|
||||||
#define CDP_INVALID_VDEV_ID 0xff
|
#define CDP_INVALID_VDEV_ID 0xff
|
||||||
|
|
||||||
|
/* Max vdev_stats_id(48) is as per the max vdevs supported by HW */
|
||||||
|
#define CDP_MAX_VDEV_STATS_ID 0x30
|
||||||
|
/* Invalid vdev_stats_id */
|
||||||
|
#define CDP_INVALID_VDEV_STATS_ID 0xFF
|
||||||
|
|
||||||
/* Options for Dump Statistics */
|
/* Options for Dump Statistics */
|
||||||
#define CDP_HDD_STATS 0
|
#define CDP_HDD_STATS 0
|
||||||
#define CDP_TXRX_PATH_STATS 1
|
#define CDP_TXRX_PATH_STATS 1
|
||||||
@@ -687,6 +693,7 @@ enum wlan_op_subtype {
|
|||||||
* struct cdp_vdev_info - Vdev information
|
* struct cdp_vdev_info - Vdev information
|
||||||
* @vdev_mac_addr: mac address of the vdev
|
* @vdev_mac_addr: mac address of the vdev
|
||||||
* @vdev_id: ID of the vdev
|
* @vdev_id: ID of the vdev
|
||||||
|
* @vdev_stats_id: Stats ID of the vdev
|
||||||
* @op_mode: Operation mode of the vdev
|
* @op_mode: Operation mode of the vdev
|
||||||
* @subtype: subtype of the vdev
|
* @subtype: subtype of the vdev
|
||||||
* @mld_mac_addr: MLD mac addr of the current vdev.
|
* @mld_mac_addr: MLD mac addr of the current vdev.
|
||||||
@@ -694,6 +701,7 @@ enum wlan_op_subtype {
|
|||||||
struct cdp_vdev_info {
|
struct cdp_vdev_info {
|
||||||
uint8_t *vdev_mac_addr;
|
uint8_t *vdev_mac_addr;
|
||||||
uint8_t vdev_id;
|
uint8_t vdev_id;
|
||||||
|
uint8_t vdev_stats_id;
|
||||||
enum wlan_op_mode op_mode;
|
enum wlan_op_mode op_mode;
|
||||||
enum wlan_op_subtype subtype;
|
enum wlan_op_subtype subtype;
|
||||||
#ifdef WLAN_FEATURE_11BE_MLO
|
#ifdef WLAN_FEATURE_11BE_MLO
|
||||||
|
@@ -404,6 +404,41 @@ cdp_txrx_get_psoc_param(ol_txrx_soc_handle soc,
|
|||||||
return soc->ops->ctrl_ops->txrx_get_psoc_param(soc, type, val);
|
return soc->ops->ctrl_ops->txrx_get_psoc_param(soc, type, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline
|
||||||
|
QDF_STATUS cdp_vdev_alloc_vdev_stats_id(ol_txrx_soc_handle soc,
|
||||||
|
uint8_t *vdev_stats_id)
|
||||||
|
{
|
||||||
|
if (!soc || !soc->ops) {
|
||||||
|
dp_cdp_debug("Invalid Instance:");
|
||||||
|
QDF_BUG(0);
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!soc->ops->host_stats_ops ||
|
||||||
|
!soc->ops->host_stats_ops->txrx_alloc_vdev_stats_id)
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
return soc->ops->host_stats_ops->txrx_alloc_vdev_stats_id
|
||||||
|
(soc, vdev_stats_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline
|
||||||
|
void cdp_vdev_reset_vdev_stats_id(ol_txrx_soc_handle soc,
|
||||||
|
uint8_t vdev_stats_id)
|
||||||
|
{
|
||||||
|
if (!soc || !soc->ops) {
|
||||||
|
dp_cdp_debug("Invalid Instance:");
|
||||||
|
QDF_BUG(0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!soc->ops->host_stats_ops ||
|
||||||
|
!soc->ops->host_stats_ops->txrx_reset_vdev_stats_id)
|
||||||
|
return;
|
||||||
|
|
||||||
|
soc->ops->host_stats_ops->txrx_reset_vdev_stats_id(soc, vdev_stats_id);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef VDEV_PEER_PROTOCOL_COUNT
|
#ifdef VDEV_PEER_PROTOCOL_COUNT
|
||||||
/**
|
/**
|
||||||
* cdp_set_vdev_peer_protocol_count() - set per-peer protocol count tracking
|
* cdp_set_vdev_peer_protocol_count() - set per-peer protocol count tracking
|
||||||
|
@@ -1036,6 +1036,13 @@ struct cdp_host_stats_ops {
|
|||||||
(*txrx_get_peer_jitter_stats)(struct cdp_soc_t *soc, uint8_t pdev_id,
|
(*txrx_get_peer_jitter_stats)(struct cdp_soc_t *soc, uint8_t pdev_id,
|
||||||
uint8_t vdev_id, uint8_t *peer_mac,
|
uint8_t vdev_id, uint8_t *peer_mac,
|
||||||
struct cdp_peer_tid_stats *tid_stats);
|
struct cdp_peer_tid_stats *tid_stats);
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
(*txrx_alloc_vdev_stats_id)(struct cdp_soc_t *soc,
|
||||||
|
uint8_t *vdev_stats_id);
|
||||||
|
|
||||||
|
void (*txrx_reset_vdev_stats_id)(struct cdp_soc_t *soc,
|
||||||
|
uint8_t vdev_stats_id);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct cdp_wds_ops {
|
struct cdp_wds_ops {
|
||||||
|
@@ -6052,6 +6052,7 @@ static QDF_STATUS dp_vdev_attach_wifi3(struct cdp_soc_t *cdp_soc,
|
|||||||
uint8_t vdev_id = vdev_info->vdev_id;
|
uint8_t vdev_id = vdev_info->vdev_id;
|
||||||
enum wlan_op_mode op_mode = vdev_info->op_mode;
|
enum wlan_op_mode op_mode = vdev_info->op_mode;
|
||||||
enum wlan_op_subtype subtype = vdev_info->subtype;
|
enum wlan_op_subtype subtype = vdev_info->subtype;
|
||||||
|
uint8_t vdev_stats_id = vdev_info->vdev_stats_id;
|
||||||
|
|
||||||
vdev_context_size =
|
vdev_context_size =
|
||||||
soc->arch_ops.txrx_get_context_size(DP_CONTEXT_TYPE_VDEV);
|
soc->arch_ops.txrx_get_context_size(DP_CONTEXT_TYPE_VDEV);
|
||||||
@@ -6075,6 +6076,7 @@ static QDF_STATUS dp_vdev_attach_wifi3(struct cdp_soc_t *cdp_soc,
|
|||||||
|
|
||||||
vdev->pdev = pdev;
|
vdev->pdev = pdev;
|
||||||
vdev->vdev_id = vdev_id;
|
vdev->vdev_id = vdev_id;
|
||||||
|
vdev->vdev_stats_id = vdev_stats_id;
|
||||||
vdev->opmode = op_mode;
|
vdev->opmode = op_mode;
|
||||||
vdev->subtype = subtype;
|
vdev->subtype = subtype;
|
||||||
vdev->osdev = soc->osdev;
|
vdev->osdev = soc->osdev;
|
||||||
@@ -6332,6 +6334,60 @@ static void dp_vdev_flush_peers(struct cdp_vdev *vdev_handle, bool unmap_only)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef QCA_VDEV_STATS_HW_OFFLOAD_SUPPORT
|
||||||
|
/*
|
||||||
|
* dp_txrx_alloc_vdev_stats_id()- Allocate vdev_stats_id
|
||||||
|
* @soc_hdl: Datapath soc handle
|
||||||
|
* @vdev_stats_id: Address of vdev_stats_id
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
static QDF_STATUS dp_txrx_alloc_vdev_stats_id(struct cdp_soc_t *soc_hdl,
|
||||||
|
uint8_t *vdev_stats_id)
|
||||||
|
{
|
||||||
|
struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);
|
||||||
|
uint8_t id = 0;
|
||||||
|
|
||||||
|
if (!wlan_cfg_get_vdev_stats_hw_offload_config(soc->wlan_cfg_ctx)) {
|
||||||
|
*vdev_stats_id = DP_INVALID_VDEV_STATS_ID;
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (id < DP_MAX_VDEV_STATS_ID) {
|
||||||
|
if (!qdf_atomic_test_and_set_bit(id, &soc->vdev_stats_id_map)) {
|
||||||
|
*vdev_stats_id = id;
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
id++;
|
||||||
|
}
|
||||||
|
|
||||||
|
*vdev_stats_id = DP_INVALID_VDEV_STATS_ID;
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dp_txrx_reset_vdev_stats_id() - Reset vdev_stats_id in dp_soc
|
||||||
|
* @soc_hdl: Datapath soc handle
|
||||||
|
* @vdev_stats_id: vdev_stats_id to reset in dp_soc
|
||||||
|
*
|
||||||
|
* Return: none
|
||||||
|
*/
|
||||||
|
static void dp_txrx_reset_vdev_stats_id(struct cdp_soc_t *soc_hdl,
|
||||||
|
uint8_t vdev_stats_id)
|
||||||
|
{
|
||||||
|
struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);
|
||||||
|
|
||||||
|
if ((!wlan_cfg_get_vdev_stats_hw_offload_config(soc->wlan_cfg_ctx)) ||
|
||||||
|
(vdev_stats_id >= DP_MAX_VDEV_STATS_ID))
|
||||||
|
return;
|
||||||
|
|
||||||
|
qdf_atomic_clear_bit(vdev_stats_id, &soc->vdev_stats_id_map);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static void dp_txrx_reset_vdev_stats_id(struct cdp_soc_t *soc,
|
||||||
|
uint8_t vdev_stats_id)
|
||||||
|
{}
|
||||||
|
#endif
|
||||||
/*
|
/*
|
||||||
* dp_vdev_detach_wifi3() - Detach txrx vdev
|
* dp_vdev_detach_wifi3() - Detach txrx vdev
|
||||||
* @cdp_soc: Datapath soc handle
|
* @cdp_soc: Datapath soc handle
|
||||||
@@ -6396,6 +6452,8 @@ static QDF_STATUS dp_vdev_detach_wifi3(struct cdp_soc_t *cdp_soc,
|
|||||||
|
|
||||||
dp_monitor_neighbour_peer_list_remove(pdev, vdev, peer);
|
dp_monitor_neighbour_peer_list_remove(pdev, vdev, peer);
|
||||||
|
|
||||||
|
dp_txrx_reset_vdev_stats_id(cdp_soc, vdev->vdev_stats_id);
|
||||||
|
|
||||||
dp_tx_vdev_multipass_deinit(vdev);
|
dp_tx_vdev_multipass_deinit(vdev);
|
||||||
|
|
||||||
if (vdev->vdev_dp_ext_handle) {
|
if (vdev->vdev_dp_ext_handle) {
|
||||||
@@ -11696,6 +11754,10 @@ static struct cdp_host_stats_ops dp_ops_host_stats = {
|
|||||||
.txrx_update_vdev_stats = dp_txrx_update_vdev_host_stats,
|
.txrx_update_vdev_stats = dp_txrx_update_vdev_host_stats,
|
||||||
.txrx_get_peer_delay_stats = dp_txrx_get_peer_delay_stats,
|
.txrx_get_peer_delay_stats = dp_txrx_get_peer_delay_stats,
|
||||||
.txrx_get_peer_jitter_stats = dp_txrx_get_peer_jitter_stats,
|
.txrx_get_peer_jitter_stats = dp_txrx_get_peer_jitter_stats,
|
||||||
|
#ifdef QCA_VDEV_STATS_HW_OFFLOAD_SUPPORT
|
||||||
|
.txrx_alloc_vdev_stats_id = dp_txrx_alloc_vdev_stats_id,
|
||||||
|
.txrx_reset_vdev_stats_id = dp_txrx_reset_vdev_stats_id,
|
||||||
|
#endif
|
||||||
/* TODO */
|
/* TODO */
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -12852,6 +12914,8 @@ void *dp_soc_init(struct dp_soc *soc, HTC_HANDLE htc_handle,
|
|||||||
qdf_heap_mem_stats_read(),
|
qdf_heap_mem_stats_read(),
|
||||||
qdf_skb_total_mem_stats_read());
|
qdf_skb_total_mem_stats_read());
|
||||||
|
|
||||||
|
soc->vdev_stats_id_map = 0;
|
||||||
|
|
||||||
return soc;
|
return soc;
|
||||||
fail6:
|
fail6:
|
||||||
htt_soc_htc_dealloc(soc->htt_handle);
|
htt_soc_htc_dealloc(soc->htt_handle);
|
||||||
|
@@ -3315,7 +3315,8 @@ try_desc_alloc:
|
|||||||
}
|
}
|
||||||
|
|
||||||
hal_reo_qdesc_setup(soc->hal_soc, tid, ba_window_size, start_seq,
|
hal_reo_qdesc_setup(soc->hal_soc, tid, ba_window_size, start_seq,
|
||||||
hw_qdesc_vaddr, rx_tid->hw_qdesc_paddr, hal_pn_type);
|
hw_qdesc_vaddr, rx_tid->hw_qdesc_paddr, hal_pn_type,
|
||||||
|
vdev->vdev_stats_id);
|
||||||
|
|
||||||
qdf_mem_map_nbytes_single(soc->osdev, hw_qdesc_vaddr,
|
qdf_mem_map_nbytes_single(soc->osdev, hw_qdesc_vaddr,
|
||||||
QDF_DMA_BIDIRECTIONAL, rx_tid->hw_qdesc_alloc_size,
|
QDF_DMA_BIDIRECTIONAL, rx_tid->hw_qdesc_alloc_size,
|
||||||
|
@@ -164,6 +164,9 @@
|
|||||||
#define DP_SKIP_BAR_UPDATE_TIMEOUT 5000
|
#define DP_SKIP_BAR_UPDATE_TIMEOUT 5000
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define DP_MAX_VDEV_STATS_ID CDP_MAX_VDEV_STATS_ID
|
||||||
|
#define DP_INVALID_VDEV_STATS_ID CDP_INVALID_VDEV_STATS_ID
|
||||||
|
|
||||||
enum rx_pktlog_mode {
|
enum rx_pktlog_mode {
|
||||||
DP_RX_PKTLOG_DISABLED = 0,
|
DP_RX_PKTLOG_DISABLED = 0,
|
||||||
DP_RX_PKTLOG_FULL,
|
DP_RX_PKTLOG_FULL,
|
||||||
@@ -2264,6 +2267,8 @@ struct dp_soc {
|
|||||||
/* Buffer manager ID for idle link descs */
|
/* Buffer manager ID for idle link descs */
|
||||||
uint8_t idle_link_bm_id;
|
uint8_t idle_link_bm_id;
|
||||||
qdf_atomic_t ref_count;
|
qdf_atomic_t ref_count;
|
||||||
|
|
||||||
|
unsigned long vdev_stats_id_map;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef IPA_OFFLOAD
|
#ifdef IPA_OFFLOAD
|
||||||
@@ -3084,6 +3089,9 @@ struct dp_vdev {
|
|||||||
/* accumulative number of packets delay has accumulated */
|
/* accumulative number of packets delay has accumulated */
|
||||||
qdf_atomic_t ul_pkts_accum;
|
qdf_atomic_t ul_pkts_accum;
|
||||||
#endif /* WLAN_FEATURE_TSF_UPLINK_DELAY */
|
#endif /* WLAN_FEATURE_TSF_UPLINK_DELAY */
|
||||||
|
|
||||||
|
/* vdev_stats_id - ID used for stats collection by FW from HW*/
|
||||||
|
uint8_t vdev_stats_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
@@ -101,13 +101,13 @@ void hal_rx_wbm_err_info_get_generic_be(void *wbm_desc, void *wbm_er_info1);
|
|||||||
* @hw_qdesc_vaddr: Virtual address of REO queue descriptor memory
|
* @hw_qdesc_vaddr: Virtual address of REO queue descriptor memory
|
||||||
* @hw_qdesc_paddr: Physical address of REO queue descriptor memory
|
* @hw_qdesc_paddr: Physical address of REO queue descriptor memory
|
||||||
* @pn_type: PN type (one of the types defined in 'enum hal_pn_type')
|
* @pn_type: PN type (one of the types defined in 'enum hal_pn_type')
|
||||||
*
|
* @vdev_stats_id: vdev_stats_id to be programmed in REO Queue Descriptor
|
||||||
*/
|
*/
|
||||||
void hal_reo_qdesc_setup_be(hal_soc_handle_t hal_soc_hdl,
|
void hal_reo_qdesc_setup_be(hal_soc_handle_t hal_soc_hdl,
|
||||||
int tid, uint32_t ba_window_size,
|
int tid, uint32_t ba_window_size,
|
||||||
uint32_t start_seq, void *hw_qdesc_vaddr,
|
uint32_t start_seq, void *hw_qdesc_vaddr,
|
||||||
qdf_dma_addr_t hw_qdesc_paddr,
|
qdf_dma_addr_t hw_qdesc_paddr,
|
||||||
int pn_type);
|
int pn_type, uint8_t vdev_stats_id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* hal_cookie_conversion_reg_cfg_be() - set cookie conversion relevant register
|
* hal_cookie_conversion_reg_cfg_be() - set cookie conversion relevant register
|
||||||
|
@@ -43,7 +43,7 @@ void hal_reo_qdesc_setup_be(hal_soc_handle_t hal_soc_hdl, int tid,
|
|||||||
uint32_t ba_window_size,
|
uint32_t ba_window_size,
|
||||||
uint32_t start_seq, void *hw_qdesc_vaddr,
|
uint32_t start_seq, void *hw_qdesc_vaddr,
|
||||||
qdf_dma_addr_t hw_qdesc_paddr,
|
qdf_dma_addr_t hw_qdesc_paddr,
|
||||||
int pn_type)
|
int pn_type, uint8_t vdev_stats_id)
|
||||||
{
|
{
|
||||||
uint32_t *reo_queue_desc = (uint32_t *)hw_qdesc_vaddr;
|
uint32_t *reo_queue_desc = (uint32_t *)hw_qdesc_vaddr;
|
||||||
uint32_t *reo_queue_ext_desc;
|
uint32_t *reo_queue_ext_desc;
|
||||||
@@ -147,6 +147,8 @@ void hal_reo_qdesc_setup_be(hal_soc_handle_t hal_soc_hdl, int tid,
|
|||||||
*/
|
*/
|
||||||
HAL_DESC_SET_FIELD(reo_queue_desc, RX_REO_QUEUE, SVLD, 0);
|
HAL_DESC_SET_FIELD(reo_queue_desc, RX_REO_QUEUE, SVLD, 0);
|
||||||
|
|
||||||
|
hal_update_stats_counter_index(reo_queue_desc, vdev_stats_id);
|
||||||
|
|
||||||
/* TODO: Check if we should set start PN for WAPI */
|
/* TODO: Check if we should set start PN for WAPI */
|
||||||
|
|
||||||
/* TODO: HW queue descriptors are currently allocated for max BA
|
/* TODO: HW queue descriptors are currently allocated for max BA
|
||||||
|
@@ -28,6 +28,22 @@
|
|||||||
#define HAL_MAX_REO2SW_RINGS 8
|
#define HAL_MAX_REO2SW_RINGS 8
|
||||||
#define HAL_NUM_RX_RING_PER_IX_MAP 8
|
#define HAL_NUM_RX_RING_PER_IX_MAP 8
|
||||||
|
|
||||||
|
#ifdef QCA_VDEV_STATS_HW_OFFLOAD_SUPPORT
|
||||||
|
static inline void hal_update_stats_counter_index(uint32_t *reo_queue_desc,
|
||||||
|
uint8_t vdev_stats_id)
|
||||||
|
{
|
||||||
|
#ifdef RX_REO_QUEUE_STATISTICS_COUNTER_INDEX_MASK
|
||||||
|
HAL_DESC_SET_FIELD(reo_queue_desc, RX_REO_QUEUE,
|
||||||
|
STATISTICS_COUNTER_INDEX, vdev_stats_id);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static inline void hal_update_stats_counter_index(uint32_t *reo_queue_desc,
|
||||||
|
uint8_t vdev_stats_id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Proto-types */
|
/* Proto-types */
|
||||||
void hal_get_ba_aging_timeout_be(hal_soc_handle_t hal_soc_hdl, uint8_t ac,
|
void hal_get_ba_aging_timeout_be(hal_soc_handle_t hal_soc_hdl, uint8_t ac,
|
||||||
uint32_t *value);
|
uint32_t *value);
|
||||||
|
@@ -752,7 +752,7 @@ struct hal_hw_txrx_ops {
|
|||||||
uint32_t ba_window_size,
|
uint32_t ba_window_size,
|
||||||
uint32_t start_seq, void *hw_qdesc_vaddr,
|
uint32_t start_seq, void *hw_qdesc_vaddr,
|
||||||
qdf_dma_addr_t hw_qdesc_paddr,
|
qdf_dma_addr_t hw_qdesc_paddr,
|
||||||
int pn_type);
|
int pn_type, uint8_t vdev_stats_id);
|
||||||
uint32_t (*hal_gen_reo_remap_val)(enum hal_reo_remap_reg,
|
uint32_t (*hal_gen_reo_remap_val)(enum hal_reo_remap_reg,
|
||||||
uint8_t *ix0_map);
|
uint8_t *ix0_map);
|
||||||
|
|
||||||
|
@@ -613,7 +613,7 @@ static inline void hal_reo_qdesc_setup(hal_soc_handle_t hal_soc_hdl, int tid,
|
|||||||
uint32_t ba_window_size,
|
uint32_t ba_window_size,
|
||||||
uint32_t start_seq, void *hw_qdesc_vaddr,
|
uint32_t start_seq, void *hw_qdesc_vaddr,
|
||||||
qdf_dma_addr_t hw_qdesc_paddr,
|
qdf_dma_addr_t hw_qdesc_paddr,
|
||||||
int pn_type)
|
int pn_type, uint8_t vdev_stats_id)
|
||||||
{
|
{
|
||||||
struct hal_soc *hal_soc = (struct hal_soc *)hal_soc_hdl;
|
struct hal_soc *hal_soc = (struct hal_soc *)hal_soc_hdl;
|
||||||
|
|
||||||
@@ -627,7 +627,8 @@ static inline void hal_reo_qdesc_setup(hal_soc_handle_t hal_soc_hdl, int tid,
|
|||||||
hal_soc->ops->hal_reo_qdesc_setup(hal_soc_hdl, tid,
|
hal_soc->ops->hal_reo_qdesc_setup(hal_soc_hdl, tid,
|
||||||
ba_window_size, start_seq,
|
ba_window_size, start_seq,
|
||||||
hw_qdesc_vaddr,
|
hw_qdesc_vaddr,
|
||||||
hw_qdesc_paddr, pn_type);
|
hw_qdesc_paddr, pn_type,
|
||||||
|
vdev_stats_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -66,12 +66,12 @@ uint8_t hal_rx_ret_buf_manager_get_li(hal_ring_desc_t ring_desc);
|
|||||||
* @hw_qdesc_vaddr: Virtual address of REO queue descriptor memory
|
* @hw_qdesc_vaddr: Virtual address of REO queue descriptor memory
|
||||||
* @hw_qdesc_paddr: Physical address of REO queue descriptor memory
|
* @hw_qdesc_paddr: Physical address of REO queue descriptor memory
|
||||||
* @pn_type: PN type (one of the types defined in 'enum hal_pn_type')
|
* @pn_type: PN type (one of the types defined in 'enum hal_pn_type')
|
||||||
*
|
* @vdev_stats_id: vdev_stats_id
|
||||||
*/
|
*/
|
||||||
void hal_reo_qdesc_setup_li(hal_soc_handle_t hal_soc_hdl,
|
void hal_reo_qdesc_setup_li(hal_soc_handle_t hal_soc_hdl,
|
||||||
int tid, uint32_t ba_window_size,
|
int tid, uint32_t ba_window_size,
|
||||||
uint32_t start_seq, void *hw_qdesc_vaddr,
|
uint32_t start_seq, void *hw_qdesc_vaddr,
|
||||||
qdf_dma_addr_t hw_qdesc_paddr,
|
qdf_dma_addr_t hw_qdesc_paddr,
|
||||||
int pn_type);
|
int pn_type, uint8_t vdev_stats_id);
|
||||||
|
|
||||||
#endif /* _HAL_LI_API_H_ */
|
#endif /* _HAL_LI_API_H_ */
|
||||||
|
@@ -42,7 +42,7 @@ void hal_reo_qdesc_setup_li(hal_soc_handle_t hal_soc_hdl, int tid,
|
|||||||
uint32_t ba_window_size,
|
uint32_t ba_window_size,
|
||||||
uint32_t start_seq, void *hw_qdesc_vaddr,
|
uint32_t start_seq, void *hw_qdesc_vaddr,
|
||||||
qdf_dma_addr_t hw_qdesc_paddr,
|
qdf_dma_addr_t hw_qdesc_paddr,
|
||||||
int pn_type)
|
int pn_type, uint8_t vdev_stats_id)
|
||||||
{
|
{
|
||||||
uint32_t *reo_queue_desc = (uint32_t *)hw_qdesc_vaddr;
|
uint32_t *reo_queue_desc = (uint32_t *)hw_qdesc_vaddr;
|
||||||
uint32_t *reo_queue_ext_desc;
|
uint32_t *reo_queue_ext_desc;
|
||||||
|
Reference in New Issue
Block a user