Selaa lähdekoodia

qca-wifi-oss: Enable STA DFS in Host and F/W

STA DFS is enabled in host and F/W if:-

1. User sets STA DFS Enable in full offload chipset.
2. Domain in ETSI.
3. There is no non STA vdev in the pdev.

Change-Id: I62c7f546b78e7b6be7d6e5bd3b5e710771d67e98
Ananya Barat 4 vuotta sitten
vanhempi
sitoutus
ba8b6f1a49
1 muutettua tiedostoa jossa 16 lisäystä ja 0 poistoa
  1. 16 0
      umac/dfs/dispatcher/src/dfs_postnol_ucfg.c

+ 16 - 0
umac/dfs/dispatcher/src/dfs_postnol_ucfg.c

@@ -291,6 +291,7 @@ void tgt_dfs_complete_deferred_tasks(struct wlan_objmgr_pdev *pdev)
 void tgt_dfs_enable_stadfs(struct wlan_objmgr_pdev *pdev, bool val)
 {
 	struct wlan_dfs *dfs;
+	uint32_t dfs_reg = 0;
 
 	dfs = wlan_pdev_get_dfs_obj(pdev);
 	if (!dfs) {
@@ -298,6 +299,21 @@ void tgt_dfs_enable_stadfs(struct wlan_objmgr_pdev *pdev, bool val)
 		return;
 	}
 
+	if (val == dfs->dfs_is_stadfs_enabled) {
+	    dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS,
+		    "STA DFS enable already set to %d", val);
+	    return;
+	}
+
+	wlan_reg_get_dfs_region(pdev, &dfs_reg);
+
+	if ((dfs_reg != DFS_ETSI_DOMAIN) && val) {
+	    dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS,
+		    "Cannot enable STA DFS on non ETSI Domain %d", dfs_reg);
+	    dfs->dfs_is_stadfs_enabled = 0;
+	    return;
+	}
+
 	dfs->dfs_is_stadfs_enabled = val;
 }