From 2c19e70392f77d638412d07e9ce812bc95c1fdf2 Mon Sep 17 00:00:00 2001 From: Kai Chen Date: Thu, 25 Apr 2019 11:04:51 -0700 Subject: [PATCH] component_dev: Populate mpdu info for enhanced monitor mode Modify poplate mpdu info code for enhanced monitor mode Change-Id: I2541532c8f4f240cc7093f2413a901dd67195684 CRs-Fixed: 2442973 --- dp/inc/cdp_txrx_extd_struct.h | 4 +++- dp/wifi3.0/dp_rx_mon_feature.c | 15 ++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/dp/inc/cdp_txrx_extd_struct.h b/dp/inc/cdp_txrx_extd_struct.h index c05b901cca..76eff60ee4 100644 --- a/dp/inc/cdp_txrx_extd_struct.h +++ b/dp/inc/cdp_txrx_extd_struct.h @@ -47,6 +47,7 @@ * @fcs_err: FCS error * @ppdu_type: SU/MU_MIMO/MU_OFDMA/MU_MIMO_OFDMA/UL_TRIG/BURST_BCN/UL_BSR_RESP/ * UL_BSR_TRIG/UNKNOWN + * @rate: legacy packet rate * @rssi_comb: Combined RSSI value (units = dB above noise floor) * @nf: noise floor * @timestamp: TSF at the reception of PPDU @@ -72,7 +73,8 @@ struct cdp_rx_indication_mpdu_info { dcm:1, ldpc:1, fcs_err:1, - ppdu_type:5; + ppdu_type:5, + rate:8; uint32_t rssi_comb; uint32_t nf; uint64_t timestamp; diff --git a/dp/wifi3.0/dp_rx_mon_feature.c b/dp/wifi3.0/dp_rx_mon_feature.c index 2982f83d61..1c075b5f31 100644 --- a/dp/wifi3.0/dp_rx_mon_feature.c +++ b/dp/wifi3.0/dp_rx_mon_feature.c @@ -74,7 +74,9 @@ dp_rx_populate_cdp_indication_mpdu_info( int i; cdp_mpdu_info->ppdu_id = ppdu_info->com_info.ppdu_id; + cdp_mpdu_info->channel = ppdu_info->rx_status.chan_num; cdp_mpdu_info->duration = ppdu_info->rx_status.duration; + cdp_mpdu_info->timestamp = ppdu_info->rx_status.tsft; cdp_mpdu_info->bw = ppdu_info->rx_status.bw; if ((ppdu_info->rx_status.sgi == VHT_SGI_NYSM) && (ppdu_info->rx_status.preamble_type == HAL_RX_PKT_TYPE_11AC)) @@ -85,10 +87,17 @@ dp_rx_populate_cdp_indication_mpdu_info( cdp_mpdu_info->preamble = ppdu_info->rx_status.preamble_type; cdp_mpdu_info->ppdu_type = ppdu_info->rx_status.reception_type; cdp_mpdu_info->rssi_comb = ppdu_info->rx_status.rssi_comb; + cdp_mpdu_info->nf = ppdu_info->rx_status.chan_noise_floor; cdp_mpdu_info->timestamp = ppdu_info->rx_status.tsft; - cdp_mpdu_info->nss = ppdu_info->rx_user_status[user].nss; - cdp_mpdu_info->mcs = ppdu_info->rx_user_status[user].mcs; + if (ppdu_info->rx_status.reception_type == HAL_RX_TYPE_MU_OFDMA) { + cdp_mpdu_info->nss = ppdu_info->rx_user_status[user].nss; + cdp_mpdu_info->mcs = ppdu_info->rx_user_status[user].mcs; + } else { + cdp_mpdu_info->nss = ppdu_info->rx_status.nss; + cdp_mpdu_info->mcs = ppdu_info->rx_status.mcs; + } + cdp_mpdu_info->rate = ppdu_info->rx_status.rate; for (i = 0; i < MAX_CHAIN; i++) cdp_mpdu_info->per_chain_rssi[i] = ppdu_info->rx_status.rssi[i]; } @@ -177,7 +186,7 @@ dp_rx_mon_enh_capture_process(struct dp_pdev *pdev, uint32_t tlv_status, } dp_nbuf_set_data_and_len(nbuf, ppdu_info->data, - ppdu_info->hdr_len); + ppdu_info->hdr_len - 4); if (pdev->is_mpdu_hdr[user_id]) { qdf_nbuf_queue_add(&pdev->mpdu_q[user_id],