ソースを参照

qcacmn: Populate RX PPDU length

Add change to compute and populate RX ppdu length
from RX ampdu length.

Change-Id: I0e60764be1d3b0a0e69a8dc52cfb094a5df0f596
Soumya Bhat 7 年 前
コミット
35fc699c0f
3 ファイル変更23 行追加1 行削除
  1. 1 1
      dp/wifi3.0/dp_main.c
  2. 20 0
      hal/wifi3.0/hal_api_mon.h
  3. 2 0
      qdf/inc/qdf_nbuf.h

+ 1 - 1
dp/wifi3.0/dp_main.c

@@ -5811,7 +5811,7 @@ dp_ppdu_ring_cfg(struct dp_pdev *pdev)
 	struct htt_rx_ring_tlv_filter htt_tlv_filter = {0};
 	int mac_id;
 
-	htt_tlv_filter.mpdu_start = 0;
+	htt_tlv_filter.mpdu_start = 1;
 	htt_tlv_filter.msdu_start = 0;
 	htt_tlv_filter.packet = 0;
 	htt_tlv_filter.msdu_end = 0;

+ 20 - 0
hal/wifi3.0/hal_api_mon.h

@@ -1002,6 +1002,26 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info)
 		ppdu_info->msdu_info.first_msdu_payload = rx_tlv;
 		ppdu_info->msdu_info.payload_len = tlv_len;
 		break;
+	case WIFIRX_MPDU_START_E:
+	{
+		uint8_t *rx_mpdu_start =
+			(uint8_t *)rx_tlv + HAL_RX_OFFSET(RX_MPDU_START_0,
+					RX_MPDU_INFO_RX_MPDU_INFO_DETAILS);
+		uint32_t ppdu_id = HAL_RX_GET(rx_mpdu_start, RX_MPDU_INFO_0,
+					      PHY_PPDU_ID);
+
+		if (ppdu_info->rx_status.prev_ppdu_id != ppdu_id) {
+			ppdu_info->rx_status.prev_ppdu_id = ppdu_id;
+			ppdu_info->rx_status.ppdu_len =
+				HAL_RX_GET(rx_mpdu_start, RX_MPDU_INFO_13,
+					   MPDU_LENGTH);
+		} else {
+			ppdu_info->rx_status.ppdu_len +=
+				HAL_RX_GET(rx_mpdu_start, RX_MPDU_INFO_13,
+				MPDU_LENGTH);
+		}
+		break;
+	}
 	case 0:
 		return HAL_TLV_STATUS_PPDU_DONE;
 

+ 2 - 0
qdf/inc/qdf_nbuf.h

@@ -217,6 +217,7 @@
  * @he_data3: HE property of received frame
  * @he_data4: HE property of received frame
  * @he_data5: HE property of received frame
+ * @prev_ppdu_id: ppdu_id in previously received message
  *
  */
 struct mon_rx_status {
@@ -286,6 +287,7 @@ struct mon_rx_status {
 	uint16_t he_data5;
 	uint16_t he_data6;
 	uint32_t ppdu_len;
+	uint32_t prev_ppdu_id;
 };
 
 /* Masks for HE SIG known fields in mon_rx_status structure */