diff --git a/hal/wifi3.0/kiwi/hal_kiwi_rx.h b/hal/wifi3.0/kiwi/hal_kiwi_rx.h index f25c40a586..45af4cbb09 100644 --- a/hal/wifi3.0/kiwi/hal_kiwi_rx.h +++ b/hal/wifi3.0/kiwi/hal_kiwi_rx.h @@ -109,6 +109,18 @@ RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_OFFSET)) #if defined(QCA_WIFI_KIWI) && defined(WLAN_CFR_ENABLE) && \ defined(WLAN_ENH_CFR_ENABLE) + +#define PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS_CHAN_CAPTURE_STATUS_BMASK 0x00000006 +#define PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS_CHAN_CAPTURE_STATUS_LSB 1 +#define PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS_CHAN_CAPTURE_STATUS_MSB 2 + +#define HAL_GET_RX_LOCATION_INFO_CHAN_CAPTURE_STATUS(rx_tlv) \ + ((HAL_RX_GET_64((rx_tlv), \ + PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS, \ + RTT_CFR_STATUS) & \ + PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS_CHAN_CAPTURE_STATUS_BMASK) >> \ + PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS_CHAN_CAPTURE_STATUS_LSB) + static inline void hal_rx_get_bb_info_kiwi(void *rx_tlv, void *ppdu_info_hdl) @@ -132,64 +144,65 @@ void hal_rx_get_rtt_info_kiwi(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info = ppdu_info_hdl; ppdu_info->cfr_info.rx_location_info_valid = - HAL_RX_GET(rx_tlv, PHYRX_LOCATION, - RX_LOCATION_INFO_DETAILS_RX_LOCATION_INFO_VALID); + HAL_RX_GET_64(rx_tlv, PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS, + RX_LOCATION_INFO_VALID); ppdu_info->cfr_info.rtt_che_buffer_pointer_low32 = - HAL_RX_GET(rx_tlv, - RX_LOCATION_INFO, - RTT_CHE_BUFFER_POINTER_LOW32); + HAL_RX_GET_64(rx_tlv, + PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS, + RTT_CHE_BUFFER_POINTER_LOW32); ppdu_info->cfr_info.rtt_che_buffer_pointer_high8 = - HAL_RX_GET(rx_tlv, - RX_LOCATION_INFO, - RTT_CHE_BUFFER_POINTER_HIGH8); + HAL_RX_GET_64(rx_tlv, + PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS, + RTT_CHE_BUFFER_POINTER_HIGH8); - // TODO Beryllium - Changed reserved8 to reserved3 to avoid - // compilation failure for kiwi ppdu_info->cfr_info.chan_capture_status = - HAL_RX_GET(rx_tlv, - RX_LOCATION_INFO, - RESERVED_3); + HAL_GET_RX_LOCATION_INFO_CHAN_CAPTURE_STATUS(rx_tlv); + ppdu_info->cfr_info.rx_start_ts = - HAL_RX_GET(rx_tlv, - RX_LOCATION_INFO, - RX_START_TS); + HAL_RX_GET_64(rx_tlv, + PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS, + RX_START_TS); ppdu_info->cfr_info.rtt_cfo_measurement = (int16_t) - HAL_RX_GET(rx_tlv, - RX_LOCATION_INFO, - RTT_CFO_MEASUREMENT); + HAL_RX_GET_64(rx_tlv, + PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS, + RTT_CFO_MEASUREMENT); ppdu_info->cfr_info.agc_gain_info0 = - HAL_RX_GET(rx_tlv, - PHYRX_PKT_END_RX_PKT_END_DETAILS, - PHY_TIMESTAMP_1_LOWER_32); + HAL_RX_GET_64(rx_tlv, + PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS, + GAIN_CHAIN0); + + ppdu_info->cfr_info.agc_gain_info0 |= + (((uint32_t)HAL_RX_GET_64(rx_tlv, + PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS, + GAIN_CHAIN1)) << 16); ppdu_info->cfr_info.agc_gain_info1 = - HAL_RX_GET(rx_tlv, - PHYRX_PKT_END_RX_PKT_END_DETAILS, - PHY_TIMESTAMP_1_UPPER_32); + HAL_RX_GET_64(rx_tlv, + PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS, + GAIN_CHAIN2); - ppdu_info->cfr_info.agc_gain_info2 = - HAL_RX_GET(rx_tlv, - PHYRX_PKT_END_RX_PKT_END_DETAILS, - PHY_TIMESTAMP_2_LOWER_32); + ppdu_info->cfr_info.agc_gain_info1 |= + (((uint32_t)HAL_RX_GET_64(rx_tlv, + PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS, + GAIN_CHAIN3)) << 16); - ppdu_info->cfr_info.agc_gain_info3 = - HAL_RX_GET(rx_tlv, - PHYRX_PKT_END_RX_PKT_END_DETAILS, - PHY_TIMESTAMP_2_UPPER_32); + ppdu_info->cfr_info.agc_gain_info2 = 0; + + ppdu_info->cfr_info.agc_gain_info3 = 0; ppdu_info->cfr_info.mcs_rate = - HAL_RX_GET(rx_tlv, - PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS, - RTT_MCS_RATE); + HAL_RX_GET_64(rx_tlv, + PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS, + RTT_MCS_RATE); ppdu_info->cfr_info.gi_type = - HAL_RX_GET(rx_tlv, - PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS, - RTT_GI_TYPE); + HAL_RX_GET_64(rx_tlv, + PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS, + RTT_GI_TYPE); } #endif #endif