diff --git a/dp/inc/cdp_txrx_stats_struct.h b/dp/inc/cdp_txrx_stats_struct.h index 83d32c1a66..f314eb5aef 100644 --- a/dp/inc/cdp_txrx_stats_struct.h +++ b/dp/inc/cdp_txrx_stats_struct.h @@ -465,8 +465,46 @@ struct cdp_tidq_stats { * @rtt_che_buffer_pointer_low32 : The low 32 bits of the 40 bits pointer to * external RTT channel information buffer * + * @rtt_cfo_measurement : raw cfo data extracted from hardware, which is 14 bit + * signed number. The first bit used for sign representation and 13 bits for + * fractional part. + * + * @agc_gain_info0: Chain 0 & chain 1 agc gain information reported by PHY + * + * @agc_gain_info1: Chain 2 & chain 3 agc gain information reported by PHY + * + * @agc_gain_info2: Chain 4 & chain 5 agc gain information reported by PHY + * + * @agc_gain_info3: Chain 6 & chain 7 agc gain information reported by PHY + * + * @rx_start_ts: Rx packet timestamp, the time the first L-STF ADC sample + * arrived at Rx antenna. + * + * @mcs_rate: Indicates the mcs/rate in which packet is received. + * If HT, + * 0-7: MCS0-MCS7 + * If VHT, + * 0-9: MCS0 to MCS9 + * If HE, + * 0-11: MCS0 to MCS11, + * 12-13: 4096QAM, + * 14-15: reserved + * If Legacy, + * 0: 48 Mbps + * 1: 24 Mbps + * 2: 12 Mbps + * 3: 6 Mbps + * 4: 54 Mbps + * 5: 36 Mbps + * 6: 18 Mbps + * 7: 9 Mbps + * + * @gi_type: Indicates the gaurd interval. + * 0: 0.8 us + * 1: 0.4 us + * 2: 1.6 us + * 3: 3.2 us */ - struct cdp_rx_ppdu_cfr_info { bool bb_captured_channel; bool bb_captured_timeout; @@ -481,6 +519,8 @@ struct cdp_rx_ppdu_cfr_info { uint32_t agc_gain_info2; uint32_t agc_gain_info3; uint32_t rx_start_ts; + uint32_t mcs_rate; + uint32_t gi_type; }; #endif /* diff --git a/dp/wifi3.0/dp_rx_mon_status.c b/dp/wifi3.0/dp_rx_mon_status.c index 3d43f7e528..a98b980fe7 100644 --- a/dp/wifi3.0/dp_rx_mon_status.c +++ b/dp/wifi3.0/dp_rx_mon_status.c @@ -497,6 +497,16 @@ dp_rx_populate_cdp_indication_ppdu(struct dp_pdev *pdev, cdp_rx_ppdu->lsig_a = ppdu_info->rx_status.rate; cdp_rx_ppdu->u.ltf_size = ppdu_info->rx_status.ltf_size; + if (ppdu_info->rx_status.preamble_type == HAL_RX_PKT_TYPE_11AC) { + cdp_rx_ppdu->u.stbc = ppdu_info->rx_status.is_stbc; + } else if (ppdu_info->rx_status.preamble_type == + HAL_RX_PKT_TYPE_11AX) { + cdp_rx_ppdu->u.stbc = (ppdu_info->rx_status.he_data3 >> + QDF_MON_STATUS_STBC_SHIFT) & 0x1; + cdp_rx_ppdu->u.dcm = (ppdu_info->rx_status.he_data3 >> + QDF_MON_STATUS_DCM_SHIFT) & 0x1; + } + dp_rx_populate_rx_rssi_chain(ppdu_info, cdp_rx_ppdu); dp_rx_populate_su_evm_details(ppdu_info, cdp_rx_ppdu); cdp_rx_ppdu->rx_antenna = ppdu_info->rx_status.rx_antenna; @@ -1209,6 +1219,21 @@ dp_rx_mon_populate_cfr_ppdu_info(struct dp_pdev *pdev, for (chain = 0; chain < MAX_CHAIN; chain++) cdp_rx_ppdu->per_chain_rssi[chain] = ppdu_info->rx_status.rssi[chain]; + + cdp_rx_ppdu->u.ltf_size = ppdu_info->rx_status.ltf_size; + cdp_rx_ppdu->beamformed = ppdu_info->rx_status.beamformed; + cdp_rx_ppdu->u.ldpc = ppdu_info->rx_status.ldpc; + + if (ppdu_info->rx_status.preamble_type == HAL_RX_PKT_TYPE_11AC) { + cdp_rx_ppdu->u.stbc = ppdu_info->rx_status.is_stbc; + } else if (ppdu_info->rx_status.preamble_type == + HAL_RX_PKT_TYPE_11AX) { + cdp_rx_ppdu->u.stbc = (ppdu_info->rx_status.he_data3 >> + QDF_MON_STATUS_STBC_SHIFT) & 0x1; + cdp_rx_ppdu->u.dcm = (ppdu_info->rx_status.he_data3 >> + QDF_MON_STATUS_DCM_SHIFT) & 0x1; + } + dp_rx_mon_handle_cfr_mu_info(pdev, ppdu_info, cdp_rx_ppdu); } @@ -1271,6 +1296,10 @@ dp_rx_mon_populate_cfr_info(struct dp_pdev *pdev, = ppdu_info->cfr_info.agc_gain_info3; cfr_info->rx_start_ts = ppdu_info->cfr_info.rx_start_ts; + cfr_info->mcs_rate + = ppdu_info->cfr_info.mcs_rate; + cfr_info->gi_type + = ppdu_info->cfr_info.gi_type; } /**