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
这个提交包含在:
Amir Patel
2020-02-11 00:25:29 +05:30
提交者 nshrivas
父节点 fed4bfb049
当前提交 b8e9bcdf4c
修改 10 个文件,包含 146 行新增36 行删除

查看文件

@@ -588,14 +588,16 @@ static uint32_t hal_rx_tid_get_8074v2(hal_soc_handle_t hal_soc_hdl,
/**
* hal_rx_hw_desc_get_ppduid_get_8074v2(): retrieve ppdu id
* @hw_desc_addr: hw addr
* @rx_tlv_hdr: packtet rx tlv header
* @rxdma_dst_ring_desc: rxdma HW descriptor
*
* Return: ppdu id
*/
static uint32_t hal_rx_hw_desc_get_ppduid_get_8074v2(void *hw_desc_addr)
static uint32_t hal_rx_hw_desc_get_ppduid_get_8074v2(void *rx_tlv_hdr,
void *rxdma_dst_ring_desc)
{
struct rx_mpdu_info *rx_mpdu_info;
struct rx_pkt_tlvs *rx_desc = (struct rx_pkt_tlvs *)hw_desc_addr;
struct rx_pkt_tlvs *rx_desc = (struct rx_pkt_tlvs *)rx_tlv_hdr;
rx_mpdu_info =
&rx_desc->mpdu_start_tlv.rx_mpdu_start.rx_mpdu_info_details;
@@ -800,7 +802,13 @@ static uint8_t hal_rx_get_filter_category_8074v2(uint8_t *buf)
static uint32_t
hal_rx_get_ppdu_id_8074v2(uint8_t *buf)
{
return HAL_RX_GET_PPDU_ID(buf);
struct rx_mpdu_info *rx_mpdu_info;
struct rx_pkt_tlvs *rx_desc = (struct rx_pkt_tlvs *)buf;
rx_mpdu_info =
&rx_desc->mpdu_start_tlv.rx_mpdu_start.rx_mpdu_info_details;
return HAL_RX_GET_PPDU_ID(rx_mpdu_info);
}
/**
@@ -983,6 +991,24 @@ static inline qdf_iomem_t hal_get_window_address_8074v2(struct hal_soc *hal_soc,
return addr;
}
/**
* hal_rx_mpdu_start_tlv_tag_valid_8074v2 () - API to check if RX_MPDU_START
* tlv tag is valid
*
* @rx_tlv_hdr: start address of rx_pkt_tlvs
*
* Return: true if RX_MPDU_START is valied, else false.
*/
uint8_t hal_rx_mpdu_start_tlv_tag_valid_8074v2(void *rx_tlv_hdr)
{
struct rx_pkt_tlvs *rx_desc = (struct rx_pkt_tlvs *)rx_tlv_hdr;
uint32_t tlv_tag;
tlv_tag = HAL_RX_GET_USER_TLV32_TYPE(&rx_desc->mpdu_start_tlv);
return tlv_tag == WIFIRX_MPDU_START_E ? true : false;
}
struct hal_hw_txrx_ops qca8074v2_hal_hw_txrx_ops = {
/* init and setup */
@@ -1088,6 +1114,7 @@ struct hal_hw_txrx_ops qca8074v2_hal_hw_txrx_ops = {
NULL,
NULL,
NULL,
hal_rx_mpdu_start_tlv_tag_valid_8074v2,
};
struct hal_hw_srng_config hw_srng_table_8074v2[] = {