qcacmn: Add a change to do fast transmit completion

Lot of checks in Tx completion path are for special handlings
such as when ol stats are enabled some protective debug checks etc..
Add a logic to fast free of buffer at transmit completion.
If extended stats not enabled(Typically needed for enterprise cases)
do the buffer free faster. This is controlled through a flag.

Change-Id: I04873b5e3643d8e93e5b248fcaf23504dcb7624f
这个提交包含在:
Radha Krishna Simha Jiguru
2020-04-04 11:05:48 +05:30
提交者 nshrivas
父节点 2bfeac4376
当前提交 41c0716617
修改 5 个文件,包含 195 行新增64 行删除

查看文件

@@ -804,6 +804,42 @@ uint8_t hal_tx_comp_get_release_reason(void *hal_desc,
return hal_soc->ops->hal_tx_comp_get_release_reason(hal_desc);
}
/**
* hal_tx_comp_get_peer_id() - Get peer_id value()
* @hal_desc: completion ring descriptor pointer
*
* This function will get peer_id value from Tx completion descriptor
*
* Return: buffer release source
*/
static inline uint16_t hal_tx_comp_get_peer_id(void *hal_desc)
{
uint32_t comp_desc =
*(uint32_t *)(((uint8_t *)hal_desc) +
WBM_RELEASE_RING_7_SW_PEER_ID_OFFSET);
return (comp_desc & WBM_RELEASE_RING_7_SW_PEER_ID_MASK) >>
WBM_RELEASE_RING_7_SW_PEER_ID_LSB;
}
/**
* hal_tx_comp_get_tx_status() - Get tx transmission status()
* @hal_desc: completion ring descriptor pointer
*
* This function will get transmit status value from Tx completion descriptor
*
* Return: buffer release source
*/
static inline uint8_t hal_tx_comp_get_tx_status(void *hal_desc)
{
uint32_t comp_desc =
*(uint32_t *)(((uint8_t *)hal_desc) +
WBM_RELEASE_RING_2_TQM_RELEASE_REASON_OFFSET);
return (comp_desc & WBM_RELEASE_RING_2_TQM_RELEASE_REASON_MASK) >>
WBM_RELEASE_RING_2_TQM_RELEASE_REASON_LSB;
}
/**
* hal_tx_comp_desc_sync() - collect hardware descriptor contents
* @hal_desc: hardware descriptor pointer