Browse Source

qcacmn: Check if pdev only supports 6G for DFS check

While checking if the pdev is 5G for DFS APIs, only 11A mode
support is checked which is also present for 6G radios which do not
have DFS. Check if the radio is only 6G in addition to the 11A check,
and if it's only 6G supported, return false.

Change-Id: I80008de610a93eeac326da36da43a747bafad2d9
Vignesh Mohan 3 years ago
parent
commit
10ca017ae0

+ 2 - 2
umac/dfs/dispatcher/inc/wlan_dfs_tgt_api.h

@@ -513,12 +513,12 @@ bool tgt_dfs_is_stadfs_enabled(struct wlan_objmgr_pdev *pdev)
 #endif
 
 /**
- * tgt_dfs_is_pdev_5ghz() - Check if the input pdev is 5GHZ.
+ * tgt_dfs_is_5ghz_supported_in_pdev() - Check if the input pdev supports 5GHZ.
  * @pdev: Pointer to DFS pdev object.
  *
  * Return: true if the pdev supports 5GHz, else false.
  */
-bool tgt_dfs_is_pdev_5ghz(struct wlan_objmgr_pdev *pdev);
+bool tgt_dfs_is_5ghz_supported_in_pdev(struct wlan_objmgr_pdev *pdev);
 
 #if defined(WLAN_DFS_FULL_OFFLOAD) && defined(QCA_DFS_NOL_OFFLOAD)
 /**

+ 1 - 1
umac/dfs/dispatcher/src/wlan_dfs_init_deinit_api.c

@@ -537,7 +537,7 @@ static void dfs_scan_serialization_comp_info_cb(
 
 	comp_info->scan_info.is_cac_in_progress = false;
 
-	if (!tgt_dfs_is_pdev_5ghz(pdev))
+	if (!tgt_dfs_is_5ghz_supported_in_pdev(pdev))
 		return;
 
 	dfs = wlan_pdev_get_dfs_obj(pdev);

+ 16 - 7
umac/dfs/dispatcher/src/wlan_dfs_tgt_api.c

@@ -53,12 +53,21 @@ wlan_psoc_get_dfs_txops(struct wlan_objmgr_psoc *psoc)
 
 qdf_export_symbol(wlan_psoc_get_dfs_txops);
 
-bool tgt_dfs_is_pdev_5ghz(struct wlan_objmgr_pdev *pdev)
+bool tgt_dfs_is_5ghz_supported_in_pdev(struct wlan_objmgr_pdev *pdev)
 {
 	struct wlan_lmac_if_dfs_tx_ops *dfs_tx_ops;
 	struct wlan_objmgr_psoc *psoc;
 	bool is_5ghz = false;
 	QDF_STATUS status;
+	bool is_6ghz_only_pdev;
+	qdf_freq_t low_5g = 0;
+	qdf_freq_t high_5g = 0;
+
+	wlan_reg_get_freq_range(pdev, NULL, NULL, &low_5g, &high_5g);
+	is_6ghz_only_pdev = wlan_reg_is_range_only6g(low_5g, high_5g);
+
+	if (is_6ghz_only_pdev)
+		return false;
 
 	psoc = wlan_pdev_get_psoc(pdev);
 	if (!psoc) {
@@ -96,7 +105,7 @@ tgt_dfs_set_current_channel_for_freq(struct wlan_objmgr_pdev *pdev,
 {
 	struct wlan_dfs *dfs;
 
-	if (!tgt_dfs_is_pdev_5ghz(pdev))
+	if (!tgt_dfs_is_5ghz_supported_in_pdev(pdev))
 		return QDF_STATUS_SUCCESS;
 
 	dfs = wlan_pdev_get_dfs_obj(pdev);
@@ -278,7 +287,7 @@ QDF_STATUS tgt_dfs_is_precac_timer_running(struct wlan_objmgr_pdev *pdev,
 {
 	struct wlan_dfs *dfs;
 
-	if (!tgt_dfs_is_pdev_5ghz(pdev))
+	if (!tgt_dfs_is_5ghz_supported_in_pdev(pdev))
 		return QDF_STATUS_SUCCESS;
 
 	dfs = wlan_pdev_get_dfs_obj(pdev);
@@ -297,7 +306,7 @@ QDF_STATUS tgt_dfs_get_radars(struct wlan_objmgr_pdev *pdev)
 {
 	struct wlan_dfs *dfs;
 
-	if (!tgt_dfs_is_pdev_5ghz(pdev))
+	if (!tgt_dfs_is_5ghz_supported_in_pdev(pdev))
 		return QDF_STATUS_SUCCESS;
 
 	dfs = wlan_pdev_get_dfs_obj(pdev);
@@ -414,7 +423,7 @@ QDF_STATUS tgt_dfs_set_agile_precac_state(struct wlan_objmgr_pdev *pdev,
 	bool is_precac_running_on_given_pdev = false;
 	int i;
 
-	if (!tgt_dfs_is_pdev_5ghz(pdev))
+	if (!tgt_dfs_is_5ghz_supported_in_pdev(pdev))
 		return QDF_STATUS_SUCCESS;
 
 	dfs = wlan_pdev_get_dfs_obj(pdev);
@@ -595,7 +604,7 @@ QDF_STATUS tgt_dfs_stop(struct wlan_objmgr_pdev *pdev)
 {
 	struct wlan_dfs *dfs;
 
-	if (!tgt_dfs_is_pdev_5ghz(pdev))
+	if (!tgt_dfs_is_5ghz_supported_in_pdev(pdev))
 		return QDF_STATUS_SUCCESS;
 
 	dfs = wlan_pdev_get_dfs_obj(pdev);
@@ -732,7 +741,7 @@ QDF_STATUS tgt_dfs_reset_spoof_test(struct wlan_objmgr_pdev *pdev)
 {
 	struct wlan_dfs *dfs;
 
-	if (!tgt_dfs_is_pdev_5ghz(pdev))
+	if (!tgt_dfs_is_5ghz_supported_in_pdev(pdev))
 		return QDF_STATUS_SUCCESS;
 
 	dfs = wlan_pdev_get_dfs_obj(pdev);

+ 6 - 6
umac/dfs/dispatcher/src/wlan_dfs_ucfg_api.c

@@ -144,7 +144,7 @@ QDF_STATUS ucfg_dfs_get_legacy_precac_enable(struct wlan_objmgr_pdev *pdev,
 {
 	struct wlan_dfs *dfs;
 
-	if (!tgt_dfs_is_pdev_5ghz(pdev))
+	if (!tgt_dfs_is_5ghz_supported_in_pdev(pdev))
 		return QDF_STATUS_SUCCESS;
 
 	dfs = wlan_pdev_get_dfs_obj(pdev);
@@ -168,7 +168,7 @@ QDF_STATUS ucfg_dfs_get_agile_precac_enable(struct wlan_objmgr_pdev *pdev,
 	if (!pdev || !buff)
 		return QDF_STATUS_E_FAILURE;
 
-	if (!tgt_dfs_is_pdev_5ghz(pdev)) {
+	if (!tgt_dfs_is_5ghz_supported_in_pdev(pdev)) {
 		*buff = false;
 		return QDF_STATUS_SUCCESS;
 	}
@@ -347,7 +347,7 @@ void ucfg_dfs_allow_hw_pulses(struct wlan_objmgr_pdev *pdev,
 {
 	struct wlan_dfs *dfs;
 
-	if (!tgt_dfs_is_pdev_5ghz(pdev))
+	if (!tgt_dfs_is_5ghz_supported_in_pdev(pdev))
 		return;
 
 	dfs = wlan_pdev_get_dfs_obj(pdev);
@@ -365,7 +365,7 @@ bool ucfg_dfs_is_hw_pulses_allowed(struct wlan_objmgr_pdev *pdev)
 {
 	struct wlan_dfs *dfs;
 
-	if (!tgt_dfs_is_pdev_5ghz(pdev))
+	if (!tgt_dfs_is_5ghz_supported_in_pdev(pdev))
 		return false;
 
 	dfs = wlan_pdev_get_dfs_obj(pdev);
@@ -410,7 +410,7 @@ QDF_STATUS ucfg_dfs_reinit_timers(struct wlan_objmgr_pdev *pdev)
 {
 	struct wlan_dfs *dfs;
 
-	if (!tgt_dfs_is_pdev_5ghz(pdev))
+	if (!tgt_dfs_is_5ghz_supported_in_pdev(pdev))
 		return QDF_STATUS_SUCCESS;
 
 	dfs = wlan_pdev_get_dfs_obj(pdev);
@@ -450,7 +450,7 @@ QDF_STATUS ucfg_dfs_get_rcac_enable(struct wlan_objmgr_pdev *pdev,
 {
 	struct wlan_dfs *dfs;
 
-	if (!tgt_dfs_is_pdev_5ghz(pdev)) {
+	if (!tgt_dfs_is_5ghz_supported_in_pdev(pdev)) {
 		*rcac_en = false;
 		return QDF_STATUS_SUCCESS;
 	}

+ 4 - 4
umac/dfs/dispatcher/src/wlan_dfs_utils_api.c

@@ -1250,7 +1250,7 @@ QDF_STATUS utils_dfs_is_spoof_check_failed(struct wlan_objmgr_pdev *pdev,
 {
 	struct wlan_dfs *dfs;
 
-	if (!tgt_dfs_is_pdev_5ghz(pdev))
+	if (!tgt_dfs_is_5ghz_supported_in_pdev(pdev))
 		return QDF_STATUS_SUCCESS;
 
 	dfs = wlan_pdev_get_dfs_obj(pdev);
@@ -1292,7 +1292,7 @@ QDF_STATUS utils_dfs_get_disable_radar_marking(struct wlan_objmgr_pdev *pdev,
 {
 	struct wlan_dfs *dfs;
 
-	if (!tgt_dfs_is_pdev_5ghz(pdev))
+	if (!tgt_dfs_is_5ghz_supported_in_pdev(pdev))
 		return QDF_STATUS_SUCCESS;
 
 	dfs = wlan_pdev_get_dfs_obj(pdev);
@@ -1333,7 +1333,7 @@ void utils_dfs_reset_dfs_prevchan(struct wlan_objmgr_pdev *pdev)
 {
 	struct wlan_dfs *dfs;
 
-	if (!tgt_dfs_is_pdev_5ghz(pdev))
+	if (!tgt_dfs_is_5ghz_supported_in_pdev(pdev))
 		return;
 
 	dfs = wlan_pdev_get_dfs_obj(pdev);
@@ -1353,7 +1353,7 @@ void utils_dfs_agile_sm_deliver_evt(struct wlan_objmgr_pdev *pdev,
 	struct wlan_dfs *dfs;
 	void *event_data;
 
-	if (!tgt_dfs_is_pdev_5ghz(pdev))
+	if (!tgt_dfs_is_5ghz_supported_in_pdev(pdev))
 		return;
 
 	dfs = wlan_pdev_get_dfs_obj(pdev);