qcacmn: Add support for lock less access of Tx rings

For 4 core CPU system, Tx access can be made lockless by associating
one Tx ring per CPU. Three Tx DATA rings and one SW2TX command ring
can be used for sending data to Tx.

Change-Id: I6e38cad52dffa4e46ff2b736cd6b949d061fa2a4
This commit is contained in:
Radha Krishna Simha Jiguru
2020-03-23 10:08:25 +05:30
committed by nshrivas
parent 6ba047a381
commit c4ae3d34b6
2 changed files with 65 additions and 3 deletions

View File

@@ -378,6 +378,68 @@ static inline uint8_t dp_tx_get_rbm_id(struct dp_soc *soc,
return (ring_id + HAL_WBM_SW0_BM_ID);
}
#endif
#ifdef QCA_OL_TX_LOCK_LESS_ACCESS
/*
* dp_tx_hal_ring_access_start()- hal_tx_ring access for data transmission
* @dp_soc - DP soc structure pointer
* @hal_ring_hdl - HAL ring handle
*
* Return - None
*/
static inline int dp_tx_hal_ring_access_start(struct dp_soc *soc,
hal_ring_handle_t hal_ring_hdl)
{
return hal_srng_access_start_unlocked(soc->hal_soc, hal_ring_hdl);
}
/*
* dp_tx_hal_ring_access_end()- hal_tx_ring access for data transmission
* @dp_soc - DP soc structure pointer
* @hal_ring_hdl - HAL ring handle
*
* Return - None
*/
static inline void dp_tx_hal_ring_access_end(struct dp_soc *soc,
hal_ring_handle_t hal_ring_hdl)
{
hal_srng_access_end_unlocked(soc->hal_soc, hal_ring_hdl);
}
/*
* dp_tx_hal_ring_access_reap()- hal_tx_ring access for data transmission
* @dp_soc - DP soc structure pointer
* @hal_ring_hdl - HAL ring handle
*
* Return - None
*/
static inline void dp_tx_hal_ring_access_end_reap(struct dp_soc *soc,
hal_ring_handle_t
hal_ring_hdl)
{
}
#else
static inline int dp_tx_hal_ring_access_start(struct dp_soc *soc,
hal_ring_handle_t hal_ring_hdl)
{
return hal_srng_access_start(soc->hal_soc, hal_ring_hdl);
}
static inline void dp_tx_hal_ring_access_end(struct dp_soc *soc,
hal_ring_handle_t hal_ring_hdl)
{
hal_srng_access_end(soc->hal_soc, hal_ring_hdl);
}
static inline void dp_tx_hal_ring_access_end_reap(struct dp_soc *soc,
hal_ring_handle_t
hal_ring_hdl)
{
hal_srng_access_end_reap(soc->hal_soc, hal_ring_hdl);
}
#endif
#ifdef FEATURE_PERPKT_INFO
QDF_STATUS
dp_get_completion_indication_for_stack(struct dp_soc *soc,