Pārlūkot izejas kodu

qcacmn: Add RX ops to invoke DFS/REG APIs

Provide Global function pointers for accessing DFS/REG APIs that
1. Build channel list as per the configured HW Mode.
2. Reinitialize DFS timers after mode switch.
3. Reset ADFS Config.

CRs-Fixed: 2481535
Change-Id: Ied4d13b0c3ce39e696f273a7ac1f51962671c734
Priyadarshnee S 5 gadi atpakaļ
vecāks
revīzija
9d2d6e928b

+ 6 - 0
umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h

@@ -982,6 +982,8 @@ struct wlan_lmac_if_reg_rx_ops {
 			struct cur_regdmn_info *cur_regdmn);
 	QDF_STATUS (*reg_enable_dfs_channels)(struct wlan_objmgr_pdev *pdev,
 					      bool dfs_enable);
+	QDF_STATUS (*reg_modify_pdev_chan_range)(struct
+						 wlan_objmgr_pdev *pdev);
 };
 
 #ifdef CONVERGED_P2P_ENABLE
@@ -1253,8 +1255,10 @@ struct wlan_lmac_if_wifi_pos_rx_ops {
  * @dfs_dfs_cac_complete_ind:         Process cac complete indication.
  * @dfs_agile_precac_start:           Initiate Agile PreCAC run.
  * @dfs_set_agile_precac_state:       Set agile precac state.
+ * @dfs_reset_adfs_config:            Reset agile dfs variables.
  * @dfs_dfs_ocac_complete_ind:        Process offchan cac complete indication.
  * @dfs_stop:                         Clear dfs timers.
+ * @dfs_reinit_timers:                Reinitialize DFS timers.
  * @dfs_enable_stadfs:                Enable/Disable STADFS capability.
  * @dfs_is_stadfs_enabled:            Get STADFS capability value.
  * @dfs_process_phyerr_filter_offload:Process radar event.
@@ -1308,6 +1312,7 @@ struct wlan_lmac_if_dfs_rx_ops {
 	QDF_STATUS (*dfs_agile_precac_start)(struct wlan_objmgr_pdev *pdev);
 	QDF_STATUS (*dfs_set_agile_precac_state)(struct wlan_objmgr_pdev *pdev,
 						 int agile_precac_state);
+	QDF_STATUS (*dfs_reset_adfs_config)(struct wlan_objmgr_psoc *psoc);
 	QDF_STATUS
 	(*dfs_dfs_ocac_complete_ind)(struct wlan_objmgr_pdev *pdev,
 				     struct vdev_adfs_complete_status *ocac_st);
@@ -1348,6 +1353,7 @@ struct wlan_lmac_if_dfs_rx_ops {
 			uint32_t vdev_id);
 #endif
 	QDF_STATUS (*dfs_stop)(struct wlan_objmgr_pdev *pdev);
+	QDF_STATUS (*dfs_reinit_timers)(struct wlan_objmgr_pdev *pdev);
 	void (*dfs_enable_stadfs)(struct wlan_objmgr_pdev *pdev, bool val);
 	bool (*dfs_is_stadfs_enabled)(struct wlan_objmgr_pdev *pdev);
 	QDF_STATUS (*dfs_process_phyerr_filter_offload)(

+ 5 - 0
umac/global_umac_dispatcher/lmac_if/src/wlan_lmac_if.c

@@ -323,6 +323,9 @@ static void wlan_lmac_if_umac_reg_rx_ops_register(
 
 	rx_ops->reg_rx_ops.reg_enable_dfs_channels =
 		ucfg_reg_enable_dfs_channels;
+
+	rx_ops->reg_rx_ops.reg_modify_pdev_chan_range =
+		wlan_reg_modify_pdev_chan_range;
 }
 
 #ifdef CONVERGED_P2P_ENABLE
@@ -394,6 +397,7 @@ wlan_lmac_if_umac_dfs_rx_ops_register(struct wlan_lmac_if_rx_ops *rx_ops)
 		tgt_dfs_set_agile_precac_state;
 	dfs_rx_ops->dfs_start_precac_timer = utils_dfs_start_precac_timer;
 	dfs_rx_ops->dfs_cancel_precac_timer = utils_dfs_cancel_precac_timer;
+	dfs_rx_ops->dfs_reset_adfs_config = ucfg_dfs_reset_agile_config;
 	dfs_rx_ops->dfs_override_precac_timeout =
 		ucfg_dfs_override_precac_timeout;
 	dfs_rx_ops->dfs_set_precac_enable = ucfg_dfs_set_precac_enable;
@@ -405,6 +409,7 @@ wlan_lmac_if_umac_dfs_rx_ops_register(struct wlan_lmac_if_rx_ops *rx_ops)
 	dfs_rx_ops->dfs_dfs_cac_complete_ind = tgt_dfs_cac_complete;
 	dfs_rx_ops->dfs_dfs_ocac_complete_ind = tgt_dfs_ocac_complete;
 	dfs_rx_ops->dfs_stop = tgt_dfs_stop;
+	dfs_rx_ops->dfs_reinit_timers = ucfg_dfs_reinit_timers;
 	dfs_rx_ops->dfs_enable_stadfs = tgt_dfs_enable_stadfs;
 	dfs_rx_ops->dfs_is_stadfs_enabled = tgt_dfs_is_stadfs_enabled;
 	dfs_rx_ops->dfs_process_phyerr_filter_offload =