From 4fd11a7234bcb62ad7d1d1c173944be68f478798 Mon Sep 17 00:00:00 2001 From: chenguo Date: Tue, 14 Aug 2018 16:37:00 +0800 Subject: [PATCH] qcacmn: Add NDP frame supporting for monitor mode of Lithium NDP is a preamble only PPDU, which do not have payload information from RXDMA destination ring. The detailed TLV sequence is: * RSSI legcy * LSIG_A * HE_SIGA_SU * RSSI_HT * GENERATED_CBF_DETAILS * PKT_END CRs-Fixed: 2296348 Change-Id: I19f253c65969b59947bd9a21cf3912b16eb21324 --- hal/wifi3.0/hal_api_mon.h | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/hal/wifi3.0/hal_api_mon.h b/hal/wifi3.0/hal_api_mon.h index 3d4194e3f59a..45301515ac79 100644 --- a/hal/wifi3.0/hal_api_mon.h +++ b/hal/wifi3.0/hal_api_mon.h @@ -515,7 +515,7 @@ hal_rx_status_get_tlv_info(void *rx_tlv_hdr, struct hal_rx_ppdu_info *ppdu_info, uint16_t he_ltf = 0; void *rx_tlv; bool unhandled = false; - + bool is_no_payload_ppdu = false; tlv_tag = HAL_RX_GET_USER_TLV32_TYPE(rx_tlv_hdr); user_id = HAL_RX_GET_USER_TLV32_USERID(rx_tlv_hdr); @@ -637,7 +637,12 @@ hal_rx_status_get_tlv_info(void *rx_tlv_hdr, struct hal_rx_ppdu_info *ppdu_info, break; case WIFIRX_PPDU_END_STATUS_DONE_E: - return HAL_TLV_STATUS_PPDU_DONE; + { + if (is_no_payload_ppdu) + return HAL_TLV_STATUS_PPDU_NON_STD_DONE; + else + return HAL_TLV_STATUS_PPDU_DONE; + } case WIFIDUMMY_E: return HAL_TLV_STATUS_BUF_DONE; @@ -1305,6 +1310,12 @@ hal_rx_status_get_tlv_info(void *rx_tlv_hdr, struct hal_rx_ppdu_info *ppdu_info, hal_rx_proc_phyrx_other_receive_info_tlv(hal, rx_tlv_hdr, ppdu_info); break; + case WIFIPHYRX_GENERATED_CBF_DETAILS_E: + { + /* This is a NDP frame, set no payload flag to true */ + is_no_payload_ppdu = true; + break; + } case WIFIRX_HEADER_E: ppdu_info->msdu_info.first_msdu_payload = rx_tlv; ppdu_info->msdu_info.payload_len = tlv_len;