소스 검색

Merge "qcacmn: Changes to enable CFR on special vap"

Linux Build Service Account 2 년 전
부모
커밋
4bb3b90e65
4개의 변경된 파일20개의 추가작업 그리고 7개의 파일을 삭제
  1. 6 3
      dp/inc/cdp_txrx_ctrl.h
  2. 2 1
      dp/inc/cdp_txrx_ops.h
  3. 8 2
      dp/wifi3.0/monitor/1.0/dp_mon_filter_1.0.c
  4. 4 1
      dp/wifi3.0/monitor/2.0/dp_mon_filter_2.0.c

+ 6 - 3
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);
 }
 
 /**

+ 2 - 1
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,

+ 8 - 2
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;
 	}
 

+ 4 - 1
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;