From 40a622b062072f3c7c97c5bd36833327e4cf19b5 Mon Sep 17 00:00:00 2001 From: Alok Singh Date: Thu, 28 Jun 2018 10:47:26 +0530 Subject: [PATCH] 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 --- dp/wifi3.0/dp_htt.c | 2 +- dp/wifi3.0/dp_main.c | 44 +++++++++++++++++++++++++++++++++++++++----- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/dp/wifi3.0/dp_htt.c b/dp/wifi3.0/dp_htt.c index d31c8784ca14..93373822f447 100644 --- a/dp/wifi3.0/dp_htt.c +++ b/dp/wifi3.0/dp_htt.c @@ -2579,7 +2579,7 @@ static bool dp_txrx_ppdu_stats_handler(struct dp_soc *soc, 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 f7da3c918afd..cdd0684cc767 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -6251,6 +6251,22 @@ dp_ppdu_ring_cfg(struct dp_pdev *pdev) } } +/* + * 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. @@ -6318,12 +6334,21 @@ dp_config_debug_sniffer(struct cdp_pdev *pdev_handle, int val) 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 @@ dp_enable_enhanced_stats(struct cdp_pdev *pdev_handle) 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 @@ dp_disable_enhanced_stats(struct cdp_pdev *pdev_handle) 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); }