diff --git a/dp/inc/cdp_txrx_ctrl.h b/dp/inc/cdp_txrx_ctrl.h index c6f0a3faf5..687314c85b 100644 --- a/dp/inc/cdp_txrx_ctrl.h +++ b/dp/inc/cdp_txrx_ctrl.h @@ -922,12 +922,14 @@ cdp_get_pldev(ol_txrx_soc_handle soc, uint8_t pdev_id) * @pdev_id: ID of the physical device object * @enable: Enable or disable CFR * @filter_val: Flag to select filter for monitor mode + * @cfr_enable_monitor_mode: Flag to be enabled when scan radio is brought up + * in special vap mode */ static inline void cdp_cfr_filter(ol_txrx_soc_handle soc, uint8_t pdev_id, - bool enable, - struct cdp_monitor_filter *filter_val) + bool enable, struct cdp_monitor_filter *filter_val, + bool cfr_enable_monitor_mode) { if (!soc || !soc->ops) { QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL, @@ -939,7 +941,8 @@ cdp_cfr_filter(ol_txrx_soc_handle soc, if (!soc->ops->cfr_ops || !soc->ops->cfr_ops->txrx_cfr_filter) return; - soc->ops->cfr_ops->txrx_cfr_filter(soc, pdev_id, enable, filter_val); + soc->ops->cfr_ops->txrx_cfr_filter(soc, pdev_id, enable, filter_val, + cfr_enable_monitor_mode); } /** diff --git a/dp/inc/cdp_txrx_ops.h b/dp/inc/cdp_txrx_ops.h index 197f0a1be0..50497648a8 100644 --- a/dp/inc/cdp_txrx_ops.h +++ b/dp/inc/cdp_txrx_ops.h @@ -2060,7 +2060,8 @@ struct cdp_cfr_ops { void (*txrx_cfr_filter)(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, bool enable, - struct cdp_monitor_filter *filter_val); + struct cdp_monitor_filter *filter_val, + bool cfr_enable_monitor_mode); bool (*txrx_get_cfr_rcc)(struct cdp_soc_t *soc_hdl, uint8_t pdev_id); void (*txrx_set_cfr_rcc)(struct cdp_soc_t *soc_hdl, diff --git a/dp/wifi3.0/monitor/1.0/dp_mon_filter_1.0.c b/dp/wifi3.0/monitor/1.0/dp_mon_filter_1.0.c index 2e7eeacb2b..c6c8402b9a 100644 --- a/dp/wifi3.0/monitor/1.0/dp_mon_filter_1.0.c +++ b/dp/wifi3.0/monitor/1.0/dp_mon_filter_1.0.c @@ -1067,13 +1067,16 @@ QDF_STATUS dp_mon_filter_update_1_0(struct dp_pdev *pdev) * @pdev_id: id of data path pdev handle * @enable: Enable/Disable CFR * @filter_val: Flag to select Filter for monitor mode + * @cfr_enable_monitor_mode: Flag to be enabled when scan radio is brought up + * in special vap mode * * Return: void */ static void dp_cfr_filter_1_0(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, bool enable, - struct cdp_monitor_filter *filter_val) + struct cdp_monitor_filter *filter_val, + bool cfr_enable_monitor_mode) { struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl); struct dp_pdev *pdev = NULL; @@ -1091,7 +1094,10 @@ static void dp_cfr_filter_1_0(struct cdp_soc_t *soc_hdl, mon_pdev = pdev->monitor_pdev; if (mon_pdev->mvdev) { - dp_mon_info("No action is needed since mon mode is enabled\n"); + if (enable && cfr_enable_monitor_mode) + pdev->cfr_rcc_mode = true; + else + pdev->cfr_rcc_mode = false; return; } diff --git a/dp/wifi3.0/monitor/2.0/dp_mon_filter_2.0.c b/dp/wifi3.0/monitor/2.0/dp_mon_filter_2.0.c index e5c7963478..9d86059320 100644 --- a/dp/wifi3.0/monitor/2.0/dp_mon_filter_2.0.c +++ b/dp/wifi3.0/monitor/2.0/dp_mon_filter_2.0.c @@ -3192,13 +3192,16 @@ dp_mon_filter_setup_tx_lite_mon(struct dp_mon_pdev_be *be_mon_pdev) * @pdev_id: id of data path pdev handle * @enable: Enable/Disable CFR * @filter_val: Flag to select Filter for monitor mode + * @cfr_enable_monitor_mode: Flag to be enabled when scan radio is brought up + * in special vap mode * * Return: void */ static void dp_cfr_filter_2_0(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, bool enable, - struct cdp_monitor_filter *filter_val) + struct cdp_monitor_filter *filter_val, + bool cfr_enable_monitor_mode) { struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl); struct dp_pdev *pdev = NULL;