From 89647efbf661ad91c620f952292d024e21b03486 Mon Sep 17 00:00:00 2001 From: Soumya Bhat Date: Thu, 16 Nov 2017 17:23:48 +0530 Subject: [PATCH] qcacmn: Enable/Disable AM copy mode AM copy mode Have a configuration to send first 100 bytes of PPDU, whenever requested by upper layer. Add required variable and handle code to enable/disable AM copy mode. Change-Id: I1ebdcd0d1777e276af8c16334dae1f1a0760d5a8 CRs-Fixed: 2127108 --- dp/wifi3.0/dp_htt.c | 3 ++- dp/wifi3.0/dp_main.c | 28 ++++++++++++++++++++++------ dp/wifi3.0/dp_types.h | 1 + 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/dp/wifi3.0/dp_htt.c b/dp/wifi3.0/dp_htt.c index 5fe93875e200..c4cb061e8169 100644 --- a/dp/wifi3.0/dp_htt.c +++ b/dp/wifi3.0/dp_htt.c @@ -2002,7 +2002,8 @@ static void dp_txrx_ppdu_stats_handler(struct dp_soc *soc, int status; int i; - if (!pdev->enhanced_stats_en && !pdev->tx_sniffer_enable) + if (!pdev->enhanced_stats_en && !pdev->tx_sniffer_enable && + !pdev->am_copy_mode) return; if (!pdev->tx_ppdu_info.buf) { diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 02bdfaff1fe7..17704591065d 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -74,6 +74,8 @@ bool rx_hash = 1; qdf_declare_param(rx_hash, bool); #define STR_MAXLEN 64 + +#define DP_PPDU_STATS_CFG_ALL 0xffff /** * default_dscp_tid_map - Default DSCP-TID mapping * @@ -4644,16 +4646,30 @@ dp_config_tx_capture(struct cdp_pdev *pdev_handle, int val) { struct dp_pdev *pdev = (struct dp_pdev *)pdev_handle; - if (val) { - pdev->tx_sniffer_enable = 1; - dp_h2t_cfg_stats_msg_send(pdev, 0xffff); - } else { + switch (val) { + case 0: pdev->tx_sniffer_enable = 0; + pdev->am_copy_mode = 0; if (!pdev->enhanced_stats_en) dp_h2t_cfg_stats_msg_send(pdev, 0); - } + break; + case 1: + pdev->tx_sniffer_enable = 1; + pdev->am_copy_mode = 0; + dp_h2t_cfg_stats_msg_send(pdev, DP_PPDU_STATS_CFG_ALL); + break; + case 2: + pdev->am_copy_mode = 1; + pdev->tx_sniffer_enable = 0; + dp_h2t_cfg_stats_msg_send(pdev, DP_PPDU_STATS_CFG_ALL); + break; + default: + QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR, + "Invalid value\n"); + break; + } } /* @@ -4685,7 +4701,7 @@ dp_disable_enhanced_stats(struct cdp_pdev *pdev_handle) pdev->enhanced_stats_en = 0; - if (!pdev->tx_sniffer_enable) + if (!pdev->tx_sniffer_enable && !pdev->am_copy_mode) dp_h2t_cfg_stats_msg_send(pdev, 0); } diff --git a/dp/wifi3.0/dp_types.h b/dp/wifi3.0/dp_types.h index 098830de809c..acd72235727c 100644 --- a/dp/wifi3.0/dp_types.h +++ b/dp/wifi3.0/dp_types.h @@ -1050,6 +1050,7 @@ struct dp_pdev { } tx_ppdu_info; bool tx_sniffer_enable; + bool am_copy_mode; }; struct dp_peer;