qcacmn: Add check for bpr feature

Disable m_copy/enhanced_stats feature causes the bpr feature disable.
Hence add check for bpr feature status during enable/disable of m_copy
and enhanced_stats.

CRs-Fixed: 2275686
Change-Id: I5592b422823446374ce560fe3653990be4c796b0
diff --git a/dp/wifi3.0/dp_htt.c b/dp/wifi3.0/dp_htt.c
index d31c878..9337382 100644
--- a/dp/wifi3.0/dp_htt.c
+++ b/dp/wifi3.0/dp_htt.c
@@ -2579,7 +2579,7 @@
 		return true;
 
 	if (!pdev->enhanced_stats_en && !pdev->tx_sniffer_enable &&
-			!pdev->mcopy_mode)
+	    !pdev->mcopy_mode && !pdev->bpr_enable)
 		return free_buf;
 
 	ppdu_info = dp_htt_process_tlv(pdev, htt_t2h_msg);
diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c
index f7da3c9..cdd0684 100644
--- a/dp/wifi3.0/dp_main.c
+++ b/dp/wifi3.0/dp_main.c
@@ -6252,6 +6252,22 @@
 }
 
 /*
+ * is_ppdu_txrx_capture_enabled() - API to check both pktlog and debug_sniffer
+ *                              modes are enabled or not.
+ * @dp_pdev: dp pdev handle.
+ *
+ * Return: bool
+ */
+static inline bool is_ppdu_txrx_capture_enabled(struct dp_pdev *pdev)
+{
+	if (!pdev->pktlog_ppdu_stats && !pdev->tx_sniffer_enable &&
+	    !pdev->mcopy_mode)
+		return true;
+	else
+		return false;
+}
+
+/*
  *dp_set_bpr_enable() - API to enable/disable bpr feature
  *@pdev_handle: DP_PDEV handle.
  *@val: Provided value.
@@ -6318,12 +6334,21 @@
 		pdev->tx_sniffer_enable = 0;
 		pdev->mcopy_mode = 0;
 
-		if (!pdev->pktlog_ppdu_stats && !pdev->enhanced_stats_en) {
+		if (!pdev->pktlog_ppdu_stats && !pdev->enhanced_stats_en &&
+		    !pdev->bpr_enable) {
 			dp_h2t_cfg_stats_msg_send(pdev, 0, pdev->pdev_id);
 			dp_ppdu_ring_reset(pdev);
-		} else if (pdev->enhanced_stats_en) {
+		} else if (pdev->enhanced_stats_en && !pdev->bpr_enable) {
 			dp_h2t_cfg_stats_msg_send(pdev,
 				DP_PPDU_STATS_CFG_ENH_STATS, pdev->pdev_id);
+		} else if (!pdev->enhanced_stats_en && pdev->bpr_enable) {
+			dp_h2t_cfg_stats_msg_send(pdev,
+						  DP_PPDU_STATS_CFG_BPR_ENH,
+						  pdev->pdev_id);
+		} else {
+			dp_h2t_cfg_stats_msg_send(pdev,
+						  DP_PPDU_STATS_CFG_BPR,
+						  pdev->pdev_id);
 		}
 		break;
 
@@ -6366,8 +6391,13 @@
 	if (!pdev->mcopy_mode)
 		dp_ppdu_ring_cfg(pdev);
 
-	if (!pdev->pktlog_ppdu_stats && !pdev->tx_sniffer_enable && !pdev->mcopy_mode)
+	if (is_ppdu_txrx_capture_enabled(pdev) && !pdev->bpr_enable) {
 		dp_h2t_cfg_stats_msg_send(pdev, DP_PPDU_STATS_CFG_ENH_STATS, pdev->pdev_id);
+	} else if (is_ppdu_txrx_capture_enabled(pdev) && pdev->bpr_enable) {
+		dp_h2t_cfg_stats_msg_send(pdev,
+					  DP_PPDU_STATS_CFG_BPR_ENH,
+					  pdev->pdev_id);
+	}
 }
 
 /*
@@ -6383,9 +6413,13 @@
 
 	pdev->enhanced_stats_en = 0;
 
-	if (!pdev->pktlog_ppdu_stats && !pdev->tx_sniffer_enable && !pdev->mcopy_mode)
+	if (is_ppdu_txrx_capture_enabled(pdev) && !pdev->bpr_enable) {
 		dp_h2t_cfg_stats_msg_send(pdev, 0, pdev->pdev_id);
-
+	} else if (is_ppdu_txrx_capture_enabled(pdev) && pdev->bpr_enable) {
+		dp_h2t_cfg_stats_msg_send(pdev,
+					  DP_PPDU_STATS_CFG_BPR,
+					  pdev->pdev_id);
+	}
 	if (!pdev->mcopy_mode)
 		dp_ppdu_ring_reset(pdev);
 }