qcacmn: Add TX descriptor changes for WCN6450

WCN6450 is a chip based on Rhine architecture. Unlike LI/BE targets,
chipsets based on Rhine (RH) do not have host facing UMAC HW blocks.
Their corresponding SRNG interfaces are also removed. The functionality
of these UMAC HW blocks is replaced with a software implementation in
the firmware. Communication between the driver and firmware will happen
over copy engine (CE).

Although there are no host facing UMAC HW blocks, the CE hardware used
in WCN6450 expects the host driver to use the TX descriptor (HW) format
of LI targets during TX packet enqueue. Therefore it is required to
create a new pool of TX descriptors (HW) pool for WCN6450 that is used
during TX.

The logic to create/free/init/deinit these descriptors is specific
to WCN6450/Rhine, therefore it is implemented in architecture specific
Rhine code.

Introduce new APIs in struct dp_arch_ops {} to allocate and free
arch specific TX descriptors. These ops will be no-op for LI/BE
architectures.

Also for Rhine targets, allocate/free other TX descriptors like TX EXT &
TSO descriptors as part of the arch APIs.

Change-Id: I452ac69143395881ab8580355a0f75571dc3e929
CRs-Fixed: 3381711
This commit is contained in:
Manikanta Pubbisetty
2022-10-10 12:54:37 +05:30
committed by Madan Koyyalamudi
父節點 c60807a9c9
當前提交 6758a546bc
共有 13 個文件被更改,包括 402 次插入0 次删除

查看文件

@@ -106,4 +106,24 @@ QDF_STATUS dp_tx_compute_tx_delay_li(struct dp_soc *soc,
struct dp_vdev *vdev,
struct hal_tx_completion_status *ts,
uint32_t *delay_us);
/**
* dp_tx_desc_pool_alloc_li() - Allocate TX descriptor pool
* @soc: Handle to DP Soc structure
* @num_elem: Number of elements to allocate
* @pool_id: TCL descriptor pool ID
*
* Return: QDF_STATUS
*/
QDF_STATUS dp_tx_desc_pool_alloc_li(struct dp_soc *soc, uint32_t num_elem,
uint8_t pool_id);
/**
* dp_tx_desc_pool_free_li() - Free TX descriptor pool
* @soc: Handle to DP Soc structure
* @pool_id: TCL descriptor pool ID
*
* Return: none
*/
void dp_tx_desc_pool_free_li(struct dp_soc *soc, uint8_t pool_id);
#endif