Browse Source

qcacmn: Delete peers when tx monitor is disabled

Delete the litemon peers added when tx monitor is disabled.

Change-Id: If604e0c121690919ac8364f70e2a471df1b7f794
CRs-Fixed: 3412125
Nandha Kishore Easwaran 2 years ago
parent
commit
ba9a08a6fc
1 changed files with 24 additions and 0 deletions
  1. 24 0
      dp/wifi3.0/monitor/2.0/dp_tx_mon_2.0.c

+ 24 - 0
dp/wifi3.0/monitor/2.0/dp_tx_mon_2.0.c

@@ -32,6 +32,9 @@
 #ifdef FEATURE_PERPKT_INFO
 #include "dp_ratetable.h"
 #endif
+#ifdef QCA_SUPPORT_LITE_MONITOR
+#include "dp_lite_mon.h"
+#endif
 
 #define MAX_TX_MONITOR_STUCK 50
 
@@ -590,6 +593,25 @@ void dp_print_pdev_tx_monitor_stats_2_0(struct dp_pdev *pdev)
 	DP_PRINT_STATS("\t\ttlv drop : %llu", stats.tlv_drop_cnt);
 }
 
+#ifdef QCA_SUPPORT_LITE_MONITOR
+static void dp_lite_mon_free_tx_peers(struct dp_pdev *pdev)
+{
+	struct dp_mon_pdev *mon_pdev = pdev->monitor_pdev;
+	struct dp_mon_pdev_be *mon_pdev_be =
+			dp_get_be_mon_pdev_from_dp_mon_pdev(mon_pdev);
+	struct dp_lite_mon_tx_config *lite_mon_tx_config;
+
+	lite_mon_tx_config = mon_pdev_be->lite_mon_tx_config;
+	qdf_spin_lock_bh(&lite_mon_tx_config->lite_mon_tx_lock);
+	dp_lite_mon_free_peers(pdev, &lite_mon_tx_config->tx_config);
+	qdf_spin_unlock_bh(&lite_mon_tx_config->lite_mon_tx_lock);
+}
+#else
+static void dp_lite_mon_free_tx_peers(struct dp_pdev *pdev)
+{
+}
+#endif
+
 /*
  * dp_config_enh_tx_monitor_2_0()- API to enable/disable enhanced tx capture
  * @pdev_handle: DP_PDEV handle
@@ -617,6 +639,8 @@ dp_config_enh_tx_monitor_2_0(struct dp_pdev *pdev, uint8_t val)
 		tx_mon_be->mode = TX_MON_BE_DISABLE;
 		mon_pdev_be->tx_mon_mode = 0;
 		mon_pdev_be->tx_mon_filter_length = DMA_LENGTH_64B;
+		/* Free any peers that were added for tx peer filtering */
+		dp_lite_mon_free_tx_peers(pdev);
 		break;
 	}
 	case TX_MON_BE_FULL_CAPTURE: