From eb30aa7f8319f001d2672ebcdca2fa5df1a3df67 Mon Sep 17 00:00:00 2001 From: Anish Nataraj Date: Thu, 20 Sep 2018 16:34:01 +0530 Subject: [PATCH] qcacmn: Correct the Frame control info valid in hal API Instead of frame control info valid parameter data sequence control parameter was passed, corrected it Change-Id: Iccaeb286c1003cbb58c5ebcacf4b0d99c979cbbc --- dp/inc/cdp_txrx_cmn_struct.h | 3 ++- dp/wifi3.0/dp_rx_mon_status.c | 2 ++ hal/wifi3.0/hal_generic_api.h | 15 ++++++++++++--- qdf/inc/qdf_nbuf.h | 9 +++++++-- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/dp/inc/cdp_txrx_cmn_struct.h b/dp/inc/cdp_txrx_cmn_struct.h index 4f34b2a266..c532b8a447 100644 --- a/dp/inc/cdp_txrx_cmn_struct.h +++ b/dp/inc/cdp_txrx_cmn_struct.h @@ -1197,6 +1197,7 @@ struct cdp_tx_completion_msdu { * @length: PPDU length * @channel: Channel informartion * @lsig_A: L-SIG in 802.11 PHY header + * @frame_ctrl: frame control field */ struct cdp_rx_indication_ppdu { uint32_t ppdu_id; @@ -1243,7 +1244,7 @@ struct cdp_rx_indication_ppdu { uint32_t rx_byte_count; uint8_t rx_ratecode; uint8_t fcs_error_mpdus; - + uint16_t frame_ctrl; }; /** diff --git a/dp/wifi3.0/dp_rx_mon_status.c b/dp/wifi3.0/dp_rx_mon_status.c index 8519df8ec6..3faad3204f 100644 --- a/dp/wifi3.0/dp_rx_mon_status.c +++ b/dp/wifi3.0/dp_rx_mon_status.c @@ -56,6 +56,8 @@ dp_rx_populate_cdp_indication_ppdu(struct dp_pdev *pdev, cdp_rx_ppdu->first_data_seq_ctrl = ppdu_info->rx_status.first_data_seq_ctrl; + cdp_rx_ppdu->frame_ctrl = + ppdu_info->rx_status.frame_control; cdp_rx_ppdu->ppdu_id = ppdu_info->com_info.ppdu_id; cdp_rx_ppdu->length = ppdu_info->rx_status.ppdu_len; cdp_rx_ppdu->duration = ppdu_info->rx_status.duration; diff --git a/hal/wifi3.0/hal_generic_api.h b/hal/wifi3.0/hal_generic_api.h index 265f6aa3bd..a16159782e 100644 --- a/hal/wifi3.0/hal_generic_api.h +++ b/hal/wifi3.0/hal_generic_api.h @@ -324,11 +324,20 @@ hal_rx_status_get_tlv_info_generic(void *rx_tlv_hdr, void *ppduinfo, ppdu_info->rx_status.frame_control_info_valid = HAL_RX_GET(rx_tlv, RX_PPDU_END_USER_STATS_3, - DATA_SEQUENCE_CONTROL_INFO_VALID); + FRAME_CONTROL_INFO_VALID); + + if (ppdu_info->rx_status.frame_control_info_valid) + ppdu_info->rx_status.frame_control = + HAL_RX_GET(rx_tlv, RX_PPDU_END_USER_STATS_4, + FRAME_CONTROL_FIELD); + + ppdu_info->rx_status.data_sequence_control_info_valid = + HAL_RX_GET(rx_tlv, RX_PPDU_END_USER_STATS_3, + DATA_SEQUENCE_CONTROL_INFO_VALID); seq = HAL_RX_GET(rx_tlv, RX_PPDU_END_USER_STATS_5, - FIRST_DATA_SEQ_CTRL); - if (ppdu_info->rx_status.frame_control_info_valid) + FIRST_DATA_SEQ_CTRL); + if (ppdu_info->rx_status.data_sequence_control_info_valid) ppdu_info->rx_status.first_data_seq_ctrl = seq; ppdu_info->rx_status.preamble_type = diff --git a/qdf/inc/qdf_nbuf.h b/qdf/inc/qdf_nbuf.h index b4909407bc..79edcbc3ad 100644 --- a/qdf/inc/qdf_nbuf.h +++ b/qdf/inc/qdf_nbuf.h @@ -191,7 +191,8 @@ * @he_sig_b_common_RU[4]: HE (11ax) common RU assignment index * @rssi_comb: Combined RSSI * @duration: 802.11 Duration - * @first_data_seq_ctrl: Sequence ctrl field of first data frame + * @frame_control_info_valid: field indicates if fc value is valid + * @frame_control: frame control field * @ast_index: AST table hash index * @tid: QoS traffic tid number * @rs_fcs_err: FCS error flag @@ -218,6 +219,8 @@ * function. * @device_id: Device ID coming from sub-system (PCI, AHB etc..) * @chan_noise_floor: Channel Noise Floor for the pdev + * @data_sequence_control_info_valid: field to indicate validity of seq control + * @first_data_seq_ctrl: Sequence ctrl field of first data frame */ struct mon_rx_status { uint64_t tsft; @@ -263,7 +266,7 @@ struct mon_rx_status { uint8_t reception_type; uint16_t duration; uint8_t frame_control_info_valid; - int16_t first_data_seq_ctrl; + uint16_t frame_control; uint32_t ast_index; uint32_t tid; uint8_t rs_fcs_err; @@ -290,6 +293,8 @@ struct mon_rx_status { uint32_t device_id; int16_t chan_noise_floor; uint8_t monitor_direct_used; + uint8_t data_sequence_control_info_valid; + uint16_t first_data_seq_ctrl; }; /**