qcacmn: Changes to Init TX Rings for BE

DP/CFG changes to initialize extra TX/TX Comp Rings in BE.

CRs-Fixed: 2937302
Change-Id: Ia8a8ed717eb0e1bfa9d2e1ff917941a7ea91bc28
Tento commit je obsažen v:
Mohit Khanna
2021-04-30 08:19:14 -07:00
odevzdal Madan Koyyalamudi
rodič 08c76c5170
revize af887c113d
19 změnil soubory, kde provedl 619 přidání a 378 odebrání

Zobrazit soubor

@@ -19,56 +19,7 @@
#ifndef __WLAN_CFG_H
#define __WLAN_CFG_H
/*
* Temporary place holders. These should come either from target config
* or platform configuration
*/
#if defined(WLAN_MAX_PDEVS) && (WLAN_MAX_PDEVS == 1)
#define WLAN_CFG_DST_RING_CACHED_DESC 0
#define MAX_PDEV_CNT 1
#ifdef CONFIG_BERYLLIUM
#define WLAN_CFG_INT_NUM_CONTEXTS 14
#else
#define WLAN_CFG_INT_NUM_CONTEXTS 7
#endif
#define WLAN_CFG_RXDMA1_ENABLE 1
/*
* This mask defines how many transmit frames account for 1 NAPI work unit
* 0 means each tx completion is 1 unit
*/
#define DP_TX_NAPI_BUDGET_DIV_MASK 0
/* PPDU Stats Configuration - Configure bitmask for enabling tx ppdu tlv's */
#define DP_PPDU_TXLITE_STATS_BITMASK_CFG 0x3FFF
#define NUM_RXDMA_RINGS_PER_PDEV 2
/*Maximum Number of LMAC instances*/
#define MAX_NUM_LMAC_HW 2
#else
#define WLAN_CFG_DST_RING_CACHED_DESC 1
#define MAX_PDEV_CNT 3
#define WLAN_CFG_INT_NUM_CONTEXTS 11
#define NUM_RXDMA_RINGS_PER_PDEV 1
#define MAX_NUM_LMAC_HW 3
#endif
#define WLAN_CFG_INT_NUM_CONTEXTS_MAX 14
/* Tx configuration */
#define MAX_LINK_DESC_BANKS 8
#define MAX_TXDESC_POOLS 4
#define MAX_TCL_DATA_RINGS 4
/* Rx configuration */
#define MAX_RXDESC_POOLS 4
#ifdef CONFIG_BERYLLIUM
#define MAX_REO_DEST_RINGS 8
#else
#define MAX_REO_DEST_RINGS 4
#endif
#define MAX_RX_MAC_RINGS 2
#include <wlan_init_cfg.h>
/* DP process status */
#if defined(MAX_PDEV_CNT) && (MAX_PDEV_CNT == 1)
@@ -111,7 +62,10 @@
WLAN_CFG_RX_RING_MASK_5 | \
WLAN_CFG_RX_RING_MASK_6)
#define WLAN_CFG_TX_RING_NEAR_FULL_IRQ_MASK (WLAN_CFG_TX_RING_MASK_0)
#define WLAN_CFG_TX_RING_NEAR_FULL_IRQ_MASK (WLAN_CFG_TX_RING_MASK_0 | \
WLAN_CFG_TX_RING_MASK_5 | \
WLAN_CFG_TX_RING_MASK_6)
#else
#define WLAN_CFG_RX_NEAR_FULL_IRQ_MASK_1 (WLAN_CFG_RX_RING_MASK_0 | \
WLAN_CFG_RX_RING_MASK_1 | \
@@ -123,7 +77,12 @@
WLAN_CFG_RX_RING_MASK_6 | \
WLAN_CFG_RX_RING_MASK_7)
#define WLAN_CFG_TX_RING_NEAR_FULL_IRQ_MASK (WLAN_CFG_TX_RING_MASK_0)
#define WLAN_CFG_TX_RING_NEAR_FULL_IRQ_MASK (WLAN_CFG_TX_RING_MASK_0 | \
WLAN_CFG_TX_RING_MASK_4 | \
WLAN_CFG_TX_RING_MASK_2 | \
WLAN_CFG_TX_RING_MASK_5 | \
WLAN_CFG_TX_RING_MASK_6)
#endif
#endif
@@ -398,6 +357,18 @@ struct wlan_cfg_dp_pdev_ctxt {
int nss_enabled;
};
/**
* struct wlan_cfg_tcl_wbm_ring_num_map - TCL WBM Ring number mapping
* @tcl_ring_num - TCL Ring number
* @wbm_ring_num - WBM Ring number
* @for_ipa - whether this TCL/WBM for IPA use or not
*/
struct wlan_cfg_tcl_wbm_ring_num_map {
uint8_t tcl_ring_num;
uint8_t wbm_ring_num;
uint8_t for_ipa;
};
/**
* wlan_cfg_soc_attach() - Attach configuration interface for SoC
* @ctrl_obj - PSOC object
@@ -508,6 +479,34 @@ int wlan_cfg_get_num_contexts(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
*/
int wlan_cfg_get_tx_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
int context);
/**
* wlan_cfg_get_tcl_wbm_ring_num_for_index() - Get TCL/WBM ring number for index
* @index: index for which TCL/WBM ring numbers are needed
* @tcl: pointer to TCL ring number, to be filled
* @wbm: pointer to WBM ring number to be filled
*
* The function fills in tcl/wbm input pointers with TCL/WBM ring numbers for a
* given index corresponding to soc->tcl_data_ring or soc->tx_comp_ring. This
* is needed since WBM/TCL rings may not be sequentially available for HOST
* to use. The function returns values as stored in tcl_wbm_map_array global
* array.
*
* Return: None
*/
void wlan_cfg_get_tcl_wbm_ring_num_for_index(int index, int *tcl, int *wbm);
/**
* wlan_cfg_get_wbm_ring_num_for_index() - Get WBM ring number for index
* @index: index for which WBM ring numbers is needed
*
* Return: WBM Ring number for the index
*/
static inline
int wlan_cfg_get_wbm_ring_num_for_index(int index)
{
extern struct wlan_cfg_tcl_wbm_ring_num_map tcl_wbm_map_array[MAX_TCL_DATA_RINGS];
return tcl_wbm_map_array[index].wbm_ring_num;
}
/**
* wlan_cfg_get_rx_ring_mask() - Return Rx interrupt mask mapped to an
@@ -1647,13 +1646,12 @@ uint32_t wlan_cfg_ipa_tx_comp_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
return 0;
}
#endif
#endif
/**
* wlan_cfg_radio0_default_reo_get - Get Radio0 default REO
* @cfg: soc configuration context
*
* Return: .
* Return: None
*/
uint8_t wlan_cfg_radio0_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg);
@@ -1661,7 +1659,7 @@ uint8_t wlan_cfg_radio0_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg);
* wlan_cfg_radio1_default_reo_get - Get Radio1 default REO
* @cfg: soc configuration context
*
* Return: .
* Return: None
*/
uint8_t wlan_cfg_radio1_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg);
@@ -1669,7 +1667,7 @@ uint8_t wlan_cfg_radio1_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg);
* wlan_cfg_radio2_default_reo_get() - Get Radio2 default REO
* @cfg: soc configuration context
*
* Return: .
* Return: None
*/
uint8_t wlan_cfg_radio2_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg);
@@ -1677,7 +1675,7 @@ uint8_t wlan_cfg_radio2_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg);
* wlan_cfg_set_rxdma1_enable() - Enable rxdma1
* @cfg: soc configuration context
*
* Return: .
* Return: None
*/
void wlan_cfg_set_rxdma1_enable(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
@@ -1696,7 +1694,7 @@ wlan_cfg_is_delay_mon_replenish(struct wlan_cfg_dp_soc_ctxt *cfg);
* @cfg: soc configuration context
* @val: val to set
*
* Return: .
* Return: None
*/
void
wlan_cfg_set_delay_mon_replenish(struct wlan_cfg_dp_soc_ctxt *cfg, bool val);
@@ -1708,3 +1706,4 @@ wlan_cfg_set_delay_mon_replenish(struct wlan_cfg_dp_soc_ctxt *cfg, bool val);
* Return:
*/
void wlan_cfg_dp_soc_ctx_dump(struct wlan_cfg_dp_soc_ctxt *cfg);
#endif