Bladeren bron

component_dev: Populate mpdu info for enhanced monitor mode

Modify poplate mpdu info code for enhanced monitor mode

Change-Id: I2541532c8f4f240cc7093f2413a901dd67195684
CRs-Fixed: 2442973
Kai Chen 6 jaren geleden
bovenliggende
commit
2c19e70392
2 gewijzigde bestanden met toevoegingen van 15 en 4 verwijderingen
  1. 3 1
      dp/inc/cdp_txrx_extd_struct.h
  2. 12 3
      dp/wifi3.0/dp_rx_mon_feature.c

+ 3 - 1
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;

+ 12 - 3
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],