qcacmn: CFR: Process PPDU status TLVs and extract CFR information
Channel Frequency Response(CFR) feature requires PPDU information for correlation with CFR data. Host subscribes for the relevant PPDU status TLVs via the Host RX monitor status ring. During monitor status ring reap, all information needed for CFR correlation is accumulated in a HAL PPDU structure and delivered to WDI event subscribers. Change-Id: I3662b60375cb8886447a2fba3efead6a1ef3a98d CRs-Fixed: 2593408
Tento commit je obsažen v:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2016-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -500,6 +500,51 @@ void hal_rx_proc_phyrx_other_receive_info_tlv_8074v2(void *rx_tlv_hdr,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(QCA_WIFI_QCA6018) && defined(WLAN_CFR_ENABLE) && \
|
||||
defined(WLAN_ENH_CFR_ENABLE)
|
||||
static inline
|
||||
void hal_rx_get_bb_info_8074v2(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_3, BB_CAPTURED_CHANNEL);
|
||||
|
||||
ppdu_info->cfr_info.bb_captured_timeout =
|
||||
HAL_RX_GET(rx_tlv, RXPCU_PPDU_END_INFO_3, BB_CAPTURED_TIMEOUT);
|
||||
|
||||
ppdu_info->cfr_info.bb_captured_reason =
|
||||
HAL_RX_GET(rx_tlv, RXPCU_PPDU_END_INFO_3, BB_CAPTURED_REASON);
|
||||
}
|
||||
|
||||
static inline
|
||||
void hal_rx_get_rtt_info_8074v2(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_PKT_END_13_RX_PKT_END_DETAILS,
|
||||
RX_LOCATION_INFO_DETAILS_RX_LOCATION_INFO_VALID);
|
||||
|
||||
ppdu_info->cfr_info.rtt_che_buffer_pointer_low32 =
|
||||
HAL_RX_GET(rx_tlv,
|
||||
PHYRX_PKT_END_12_RX_PKT_END_DETAILS_RX_LOCATION_INFO_DETAILS,
|
||||
RTT_CHE_BUFFER_POINTER_LOW32);
|
||||
|
||||
ppdu_info->cfr_info.rtt_che_buffer_pointer_high8 =
|
||||
HAL_RX_GET(rx_tlv,
|
||||
PHYRX_PKT_END_11_RX_PKT_END_DETAILS_RX_LOCATION_INFO_DETAILS,
|
||||
RTT_CHE_BUFFER_POINTER_HIGH8);
|
||||
|
||||
ppdu_info->cfr_info.chan_capture_status =
|
||||
HAL_RX_GET(rx_tlv,
|
||||
PHYRX_PKT_END_13_RX_PKT_END_DETAILS_RX_LOCATION_INFO_DETAILS,
|
||||
RESERVED_8);
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* hal_rx_dump_msdu_start_tlv_8074v2() : dump RX msdu_start TLV in structured
|
||||
* human readable format.
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele