qcacmn: Use HAL_RX_GET_64 to read cfr elements

Host failed to read some of cfr elements by HAL_RX_GET
for Waikiki since their LSB is big then 32 and reading
4 bytes isn't enough. This change reads 8 bytes and then
gets cfr elements properly.

CRs-Fixed: 3241915
Change-Id: I0863f22a1cc0c5fd490ec3669ff6a97b27c66f15
This commit is contained in:
Shwetha G K
2022-07-12 18:03:31 +05:30
committed by Madan Koyyalamudi
szülő 2c87e51684
commit b9951fb457
2 fájl változott, egészen pontosan 37 új sor hozzáadva és 28 régi sor törölve

Fájl megtekintése

@@ -746,13 +746,13 @@ void hal_rx_get_bb_info_9224(void *rx_tlv, void *ppdu_info_hdl)
struct hal_rx_ppdu_info *ppdu_info = ppdu_info_hdl;
ppdu_info->cfr_info.bb_captured_channel =
HAL_RX_GET(rx_tlv, RXPCU_PPDU_END_INFO, BB_CAPTURED_CHANNEL);
HAL_RX_GET_64(rx_tlv, RXPCU_PPDU_END_INFO, BB_CAPTURED_CHANNEL);
ppdu_info->cfr_info.bb_captured_timeout =
HAL_RX_GET(rx_tlv, RXPCU_PPDU_END_INFO, BB_CAPTURED_TIMEOUT);
HAL_RX_GET_64(rx_tlv, RXPCU_PPDU_END_INFO, BB_CAPTURED_TIMEOUT);
ppdu_info->cfr_info.bb_captured_reason =
HAL_RX_GET(rx_tlv, RXPCU_PPDU_END_INFO, BB_CAPTURED_REASON);
HAL_RX_GET_64(rx_tlv, RXPCU_PPDU_END_INFO, BB_CAPTURED_REASON);
}
static inline
@@ -761,55 +761,64 @@ void hal_rx_get_rtt_info_9224(void *rx_tlv, void *ppdu_info_hdl)
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,
PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
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,
PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
RTT_CHE_BUFFER_POINTER_HIGH8);
HAL_RX_GET_64(rx_tlv,
PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
RTT_CHE_BUFFER_POINTER_HIGH8);
ppdu_info->cfr_info.chan_capture_status =
HAL_GET_RX_LOCATION_INFO_CHAN_CAPTURE_STATUS(rx_tlv);
ppdu_info->cfr_info.rx_start_ts =
HAL_RX_GET(rx_tlv,
PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
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,
PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
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_LOCATION_RX_LOCATION_INFO_DETAILS,
GAIN_CHAIN0);
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(rx_tlv,
(((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_LOCATION_RX_LOCATION_INFO_DETAILS,
GAIN_CHAIN2);
HAL_RX_GET_64(rx_tlv,
PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
GAIN_CHAIN2);
ppdu_info->cfr_info.agc_gain_info1 |=
(((uint32_t)HAL_RX_GET(rx_tlv,
(((uint32_t)HAL_RX_GET_64(rx_tlv,
PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
GAIN_CHAIN3)) << 16);
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_64(rx_tlv,
PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
RTT_MCS_RATE);
ppdu_info->cfr_info.gi_type =
HAL_RX_GET_64(rx_tlv,
PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS,
RTT_GI_TYPE);
}
#endif

Fájl megtekintése

@@ -102,9 +102,9 @@
#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((rx_tlv), \
PHYRX_LOCATION_RX_LOCATION_INFO_DETAILS, \
RTT_CFR_STATUS) & \
((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)
#endif