From 71ab9ef0b7ca493843453191871a25bd7f8f61b8 Mon Sep 17 00:00:00 2001 From: Keyur Parekh Date: Mon, 8 Jan 2018 22:43:31 -0800 Subject: [PATCH] qcacmn: Populate mon_rx_status structure fields Update mon_rx_status fields for HE case. Also added rs_fcs_err field to structure and populate its value. Change-Id: I4681543c7d6c6c7ac0d666cd93072caaee285585 --- dp/wifi3.0/dp_rx_mon_dest.c | 5 ++++- hal/wifi3.0/hal_api_mon.h | 13 ++++++++++--- qdf/inc/qdf_nbuf.h | 4 +++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/dp/wifi3.0/dp_rx_mon_dest.c b/dp/wifi3.0/dp_rx_mon_dest.c index 009d8ffbe978..01769933a77e 100644 --- a/dp/wifi3.0/dp_rx_mon_dest.c +++ b/dp/wifi3.0/dp_rx_mon_dest.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2017-2018 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 @@ -334,6 +334,7 @@ qdf_nbuf_t dp_rx_mon_restitch_mpdu_from_msdus(struct dp_soc *soc, unsigned char *dest; struct ieee80211_frame *wh; struct ieee80211_qoscntl *qos; + struct dp_pdev *dp_pdev = soc->pdev_list[mac_id]; head_frag_list = NULL; /* The nbuf has been pulled just beyond the status and points to the @@ -352,6 +353,8 @@ qdf_nbuf_t dp_rx_mon_restitch_mpdu_from_msdus(struct dp_soc *soc, rx_desc = qdf_nbuf_data(last_msdu); rx_status->cdp_rs_fcs_err = HAL_RX_DESC_GET_MPDU_FCS_ERR(rx_desc); + dp_pdev->ppdu_info.rx_status.rs_fcs_err = + HAL_RX_DESC_GET_MPDU_FCS_ERR(rx_desc); /* Fill out the rx_status from the PPDU start and end fields */ /* HAL_RX_GET_PPDU_STATUS(soc, mac_id, rx_status); */ diff --git a/hal/wifi3.0/hal_api_mon.h b/hal/wifi3.0/hal_api_mon.h index cae56d343de3..cd39a27caf76 100644 --- a/hal/wifi3.0/hal_api_mon.h +++ b/hal/wifi3.0/hal_api_mon.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 The Linux Foundation. All rights reserved. + * Copyright (c) 2017-2018 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 @@ -568,7 +568,8 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info) HT_SIG_INFO_0, MCS); ppdu_info->rx_status.bw = HAL_RX_GET(ht_sig_info, HT_SIG_INFO_0, CBW); - + ppdu_info->rx_status.sgi = HAL_RX_GET(ht_sig_info, + HT_SIG_INFO_1, SHORT_GI); break; } @@ -659,6 +660,8 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info) ppdu_info->rx_status.vht_flag_values5 = group_id; ppdu_info->rx_status.mcs = HAL_RX_GET(vht_sig_a_info, VHT_SIG_A_INFO_1, MCS); + ppdu_info->rx_status.sgi = HAL_RX_GET(vht_sig_a_info, + VHT_SIG_A_INFO_1, GI_SETTING); #if !defined(QCA_WIFI_QCA6290_11AX) value = HAL_RX_GET(vht_sig_a_info, VHT_SIG_A_INFO_0, N_STS); @@ -706,7 +709,7 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info) /*data2*/ ppdu_info->rx_status.he_data2 = QDF_MON_STATUS_HE_GI_KNOWN; - ppdu_info->rx_status.he_data2 = + ppdu_info->rx_status.he_data2 |= QDF_MON_STATUS_TXBF_KNOWN | QDF_MON_STATUS_PE_DISAMBIGUITY_KNOWN | QDF_MON_STATUS_TXOP_KNOWN | @@ -728,6 +731,7 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info) ppdu_info->rx_status.he_data3 |= value; value = HAL_RX_GET(he_sig_a_su_info, HE_SIG_A_SU_INFO_0, TRANSMIT_MCS); + ppdu_info->rx_status.mcs = value; value = value << QDF_MON_STATUS_TRANSMIT_MCS_SHIFT; ppdu_info->rx_status.he_data3 |= value; value = HAL_RX_GET(he_sig_a_su_info, @@ -757,6 +761,7 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info) value = HAL_RX_GET(he_sig_a_su_info, HE_SIG_A_SU_INFO_0, TRANSMIT_BW); ppdu_info->rx_status.he_data5 = value; + ppdu_info->rx_status.bw = value; value = HAL_RX_GET(he_sig_a_su_info, HE_SIG_A_SU_INFO_0, CP_LTF_SIZE); switch (value) { @@ -777,6 +782,7 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info) he_ltf = HE_LTF_4_X; break; } + ppdu_info->rx_status.sgi = he_gi; value = he_gi << QDF_MON_STATUS_GI_SHIFT; ppdu_info->rx_status.he_data5 |= value; value = he_ltf << QDF_MON_STATUS_HE_LTF_SHIFT; @@ -797,6 +803,7 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info) /*data6*/ value = HAL_RX_GET(he_sig_a_su_info, HE_SIG_A_SU_INFO_0, NSTS); value++; + ppdu_info->rx_status.nss = value; ppdu_info->rx_status.he_data6 = value; value = HAL_RX_GET(he_sig_a_su_info, HE_SIG_A_SU_INFO_1, DOPPLER_INDICATION); diff --git a/qdf/inc/qdf_nbuf.h b/qdf/inc/qdf_nbuf.h index ab47843a8413..f6e9f87b5b2f 100644 --- a/qdf/inc/qdf_nbuf.h +++ b/qdf/inc/qdf_nbuf.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2017 The Linux Foundation. All rights reserved. + * Copyright (c) 2014-2018 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -160,6 +160,7 @@ * @first_data_seq_ctrl: Sequence ctrl field of first data frame * @ast_index: AST table hash index * @tid: QoS traffic tid number + * @rs_fcs_err: FCS error flag * @he_per_user_1: HE per user info1 * @he_per_user_2: HE per user info2 * @he_per_user_position: HE per user position info @@ -220,6 +221,7 @@ struct mon_rx_status { int16_t first_data_seq_ctrl; uint32_t ast_index; uint32_t tid; + uint8_t rs_fcs_err; /* New HE radiotap fields */ uint16_t he_per_user_1; uint16_t he_per_user_2;