瀏覽代碼

qcacmn: Check lite monitor condition in handler

Check lite monitor condition in Tx monitor handler function
and correspondingly take action to deliver the packets.

Change-Id: Idf352bd677f00daae0c8e4325ff6661c7a4f854b
CRs-Fixed: 3219324
Nandha Kishore Easwaran 3 年之前
父節點
當前提交
362d0e1ef1
共有 2 個文件被更改,包括 20 次插入8 次删除
  1. 17 7
      dp/wifi3.0/monitor/2.0/dp_tx_mon_2.0.c
  2. 3 1
      dp/wifi3.0/monitor/2.0/dp_tx_mon_status_2.0.c

+ 17 - 7
dp/wifi3.0/monitor/2.0/dp_tx_mon_2.0.c

@@ -529,12 +529,21 @@ dp_tx_mon_send_to_stack(struct dp_pdev *pdev, qdf_nbuf_t mpdu)
 		    0);
 	tx_capture_info.radiotap_done = 1;
 	tx_capture_info.mpdu_nbuf = mpdu;
-	dp_wdi_event_handler(WDI_EVENT_TX_PKT_CAPTURE,
-			     pdev->soc,
-			     &tx_capture_info,
-			     HTT_INVALID_PEER,
-			     WDI_NO_VAL,
-			     pdev->pdev_id);
+	if (!dp_lite_mon_is_tx_enabled(pdev->monitor_pdev)) {
+		dp_wdi_event_handler(WDI_EVENT_TX_PKT_CAPTURE,
+				     pdev->soc,
+				     &tx_capture_info,
+				     HTT_INVALID_PEER,
+				     WDI_NO_VAL,
+				     pdev->pdev_id);
+	} else {
+		dp_wdi_event_handler(WDI_EVENT_LITE_MON_TX,
+				     pdev->soc,
+				     &tx_capture_info,
+				     HTT_INVALID_PEER,
+				     WDI_NO_VAL,
+				     pdev->pdev_id);
+	}
 }
 
 /**
@@ -696,7 +705,8 @@ void dp_tx_mon_ppdu_process(void *context)
 		return;
 
 	tx_cap_be = &mon_pdev_be->tx_capture_be;
-	if (qdf_unlikely(TX_MON_BE_DISABLE == tx_cap_be->mode))
+	if (qdf_unlikely(TX_MON_BE_DISABLE == tx_cap_be->mode &&
+			 !dp_lite_mon_is_tx_enabled(mon_pdev)))
 		return;
 
 	/* take lock here */

+ 3 - 1
dp/wifi3.0/monitor/2.0/dp_tx_mon_status_2.0.c

@@ -24,6 +24,7 @@
 #include <dp_mon.h>
 #include <dp_tx_mon_2.0.h>
 #include <dp_mon_2.0.h>
+#include <dp_lite_mon.h>
 
 #if defined(WLAN_TX_PKT_CAPTURE_ENH_BE) && defined(QCA_MONITOR_2_0_SUPPORT)
 /**
@@ -1361,7 +1362,8 @@ QDF_STATUS dp_tx_mon_process_status_tlv(struct dp_soc *soc,
 		goto free_status_buffer;
 	}
 
-	if (tx_cap_be->mode == TX_MON_BE_DISABLE)
+	if (tx_cap_be->mode == TX_MON_BE_DISABLE &&
+	    !dp_lite_mon_is_tx_enabled(mon_pdev))
 		goto free_status_buffer;
 
 	if (tx_cap_be->be_ppdu_id != mon_ring_desc->ppdu_id &&