qcacmn: Read ppdu_id from reo_entrance ring

For qcn9000, As part HW enhancements, PPDU_ID is sent
in reo_entrance_ring descriptor instead of RX_MPDU_START
tlv. Add support to read ppdu id from descriptor.
Modify existing hal API hal_rx_hw_desc_get_ppduid_get ()
arguments to pass RxDMA ring HW descriptor.

Usage:
 a. Use hal_rx_hw_desc_get_ppduid_get () -
    to get ppdu id from rx_tlv_hdr or hw descriptor based on target.
    for qcn9000, this API gets ppdu_id from HW descriptor,
    for other platforms, gets ppdu_id from rx_tv_hdr
 b. Use hal_rx_get_ppdu_id () - to get ppdu_id from rx_tlv_hdr

Change-Id: I5838227c12cde50cbb2a9da7a0d8056b8b9b7ef5
Cette révision appartient à :
Amir Patel
2020-02-11 00:25:29 +05:30
révisé par nshrivas
Parent fed4bfb049
révision b8e9bcdf4c
10 fichiers modifiés avec 146 ajouts et 36 suppressions

Voir le fichier

@@ -3243,17 +3243,20 @@ hal_rx_msdu_flow_idx_invalid(hal_soc_handle_t hal_soc_hdl,
/**
* hal_rx_hw_desc_get_ppduid_get() - Retrieve ppdu id
* @hal_soc_hdl: hal_soc handle
* @hw_desc_addr: hardware descriptor address
* @rx_tlv_hdr: Rx_tlv_hdr
* @rxdma_dst_ring_desc: Rx HW descriptor
*
* Return: 0 - success/ non-zero failure
* Return: ppdu id
*/
static inline
uint32_t hal_rx_hw_desc_get_ppduid_get(hal_soc_handle_t hal_soc_hdl,
void *hw_desc_addr)
void *rx_tlv_hdr,
void *rxdma_dst_ring_desc)
{
struct hal_soc *hal_soc = (struct hal_soc *)hal_soc_hdl;
return hal_soc->ops->hal_rx_hw_desc_get_ppduid_get(hw_desc_addr);
return hal_soc->ops->hal_rx_hw_desc_get_ppduid_get(rx_tlv_hdr,
rxdma_dst_ring_desc);
}
/**
@@ -3616,4 +3619,23 @@ hal_rx_get_fisa_timeout(hal_soc_handle_t hal_soc_hdl, uint8_t *buf)
return 0;
}
/**
* hal_rx_mpdu_start_tlv_tag_valid - API to check if RX_MPDU_START tlv
* tag is valid
*
* @hal_soc_hdl: HAL SOC handle
* @rx_tlv_hdr: start address of rx_pkt_tlvs
*
* Return: true if RX_MPDU_START tlv tag is valid, else false
*/
static inline uint8_t
hal_rx_mpdu_start_tlv_tag_valid(hal_soc_handle_t hal_soc_hdl,
void *rx_tlv_hdr)
{
struct hal_soc *hal = (struct hal_soc *)hal_soc_hdl;
return hal->ops->hal_rx_mpdu_start_tlv_tag_valid(rx_tlv_hdr);
}
#endif /* _HAL_RX_H */