qcacmn: add dedicated workqueue for Tx ring delayed reg write

Add delayed SRNG register writes support for Tx Ring, also add
dedicated workqueue to do the delayed Tx SRNG register writes.

Change-Id: I8dd157d341f3035e988804eab50d1ca681ab789b
CRs-Fixed: 2868989
This commit is contained in:
Vevek Venkatesan
2021-01-12 00:33:19 +05:30
committed by snandini
parent fdf0a167e5
commit 38af510319
4 changed files with 584 additions and 131 deletions

View File

@@ -451,7 +451,8 @@ static inline void hal_srng_write_address_32_mb(struct hal_soc *hal_soc,
{
qdf_iowrite32(addr, value);
}
#elif defined(FEATURE_HAL_DELAYED_REG_WRITE)
#elif defined(FEATURE_HAL_DELAYED_REG_WRITE) || \
defined(FEATURE_HAL_DELAYED_REG_WRITE_V2)
static inline void hal_srng_write_address_32_mb(struct hal_soc *hal_soc,
struct hal_srng *srng,
void __iomem *addr,
@@ -773,7 +774,8 @@ static inline void hal_write32_mb_confirm_retry(struct hal_soc *hal_soc,
}
#endif /* GENERIC_SHADOW_REGISTER_ACCESS_ENABLE */
#ifdef FEATURE_HAL_DELAYED_REG_WRITE
#if defined(FEATURE_HAL_DELAYED_REG_WRITE) || \
defined(FEATURE_HAL_DELAYED_REG_WRITE_V2)
/**
* hal_dump_reg_write_srng_stats() - dump SRNG reg write stats
* @hal_soc: HAL soc handle
@@ -858,35 +860,6 @@ void *hal_attach(struct hif_opaque_softc *hif_handle, qdf_device_t qdf_dev);
*/
extern void hal_detach(void *hal_soc);
/* SRNG type to be passed in APIs hal_srng_get_entrysize and hal_srng_setup */
enum hal_ring_type {
REO_DST = 0,
REO_EXCEPTION = 1,
REO_REINJECT = 2,
REO_CMD = 3,
REO_STATUS = 4,
TCL_DATA = 5,
TCL_CMD_CREDIT = 6,
TCL_STATUS = 7,
CE_SRC = 8,
CE_DST = 9,
CE_DST_STATUS = 10,
WBM_IDLE_LINK = 11,
SW2WBM_RELEASE = 12,
WBM2SW_RELEASE = 13,
RXDMA_BUF = 14,
RXDMA_DST = 15,
RXDMA_MONITOR_BUF = 16,
RXDMA_MONITOR_STATUS = 17,
RXDMA_MONITOR_DST = 18,
RXDMA_MONITOR_DESC = 19,
DIR_BUF_RX_DMA_SRC = 20,
#ifdef WLAN_FEATURE_CIF_CFR
WIFI_POS_SRC,
#endif
MAX_RING_TYPES
};
#define HAL_SRNG_LMAC_RING 0x80000000
/* SRNG flags passed in hal_srng_params.flags */
#define HAL_SRNG_MSI_SWAP 0x00000008
@@ -2751,7 +2724,9 @@ static inline QDF_STATUS hal_construct_shadow_regs(void *hal_soc)
* Return: None
*/
void hal_flush_reg_write_work(hal_soc_handle_t hal_handle);
#else
static inline void hal_flush_reg_write_work(hal_soc_handle_t hal_handle) { }
#endif
#endif /* _HAL_APIH_ */