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
这个提交包含在:
@@ -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
|
||||
|
在新工单中引用
屏蔽一个用户