diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
index 2e523afc4da8..24140a664c9b 100644
--- a/drivers/net/wireless/ath/ath11k/core.c
+++ b/drivers/net/wireless/ath/ath11k/core.c
@@ -374,11 +374,17 @@ static int ath11k_core_pdev_create(struct ath11k_base *sc)
 {
 	int ret;
 
+	ret = ath11k_debug_pdev_create(sc);
+	if (ret) {
+		ath11k_err(sc, "failed to create core pdev debugfs: %d\n", ret);
+		return ret;
+	}
+
 	ret = ath11k_mac_create(sc);
 	if (ret) {
 		ath11k_err(sc, "failed to create new hw device with mac80211 :%d\n",
 			   ret);
-		return ret;
+		goto err_pdev_debug;
 	}
 
 	ret = ath11k_dp_pdev_alloc(sc);
@@ -391,6 +397,8 @@ static int ath11k_core_pdev_create(struct ath11k_base *sc)
 
 err_mac_destroy:
 	ath11k_mac_destroy(sc);
+err_pdev_debug;
+	ath11k_debug_pdev_destroy(sc);
 
 	return ret;
 }
@@ -400,6 +408,7 @@ static void ath11k_core_pdev_destroy(struct ath11k_base *sc)
 	ath11k_mac_unregister(sc);
 	ath11k_ahb_ext_irq_disable(sc);
 	ath11k_dp_pdev_free(sc);
+	ath11k_debug_pdev_destroy(sc);
 }
 
 static int ath11k_core_start(struct ath11k_base *sc,
diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/ath/ath11k/core.h
index 79134c4fb2e7..4ba0d100ce1c 100644
--- a/drivers/net/wireless/ath/ath11k/core.h
+++ b/drivers/net/wireless/ath/ath11k/core.h
@@ -632,6 +632,7 @@ struct ath11k_base {
 	enum ath11k_dfs_region dfs_region;
 #ifdef CONFIG_ATH11K_DEBUGFS
 	struct dentry *debugfs_soc;
+	struct dentry *debugfs_ath11k;
 #endif
 	struct ath11k_soc_dp_rx_stats soc_stats;
 
diff --git a/drivers/net/wireless/ath/ath11k/debug.c b/drivers/net/wireless/ath/ath11k/debug.c
index 4fd99417585c..197392cdf799 100644
--- a/drivers/net/wireless/ath/ath11k/debug.c
+++ b/drivers/net/wireless/ath/ath11k/debug.c
@@ -802,9 +802,9 @@ static ssize_t ath11k_debug_dump_soc_rx_stats(struct file *file,
 	.llseek = default_llseek,
 };
 
-int ath11k_debug_soc_create(struct ath11k_base *ab)
+int ath11k_debug_pdev_create(struct ath11k_base *ab)
 {
-	ab->debugfs_soc = debugfs_create_dir("ath11k", NULL);
+	ab->debugfs_soc = debugfs_create_dir(ab->hw_params.name, ab->debugfs_ath11k);
 
 	if (IS_ERR_OR_NULL(ab->debugfs_soc)) {
 		if (IS_ERR(ab->debugfs_soc))
@@ -821,6 +821,26 @@ int ath11k_debug_soc_create(struct ath11k_base *ab)
 	return 0;
 }
 
+void ath11k_debug_pdev_destroy(struct ath11k_base *ab)
+{
+	debugfs_remove_recursive(ab->debugfs_ath11k);
+	ab->debugfs_ath11k = NULL;
+}
+
+
+int ath11k_debug_soc_create(struct ath11k_base *ab)
+{
+	ab->debugfs_ath11k = debugfs_create_dir("ath11k", NULL);
+
+	if (IS_ERR_OR_NULL(ab->debugfs_ath11k)) {
+		if (IS_ERR(ab->debugfs_ath11k))
+			return PTR_ERR(ab->debugfs_ath11k);
+		return -ENOMEM;
+	}
+
+	return 0;
+}
+
 void ath11k_debug_soc_destroy(struct ath11k_base *ab)
 {
 	debugfs_remove_recursive(ab->debugfs_soc);
@@ -1007,7 +1027,7 @@ int ath11k_debug_register(struct ath11k *ar)
 	}
 
 	/* Create a symlink under ieee80211/phy* */
-	snprintf(buf, 100, "../../%pd2", ar->debug.debugfs_pdev);
+	snprintf(buf, 100, "../../ath11k/%pd2", ar->debug.debugfs_pdev);
 	debugfs_create_symlink("ath11k", ar->hw->wiphy->debugfsdir, buf);
 
 	ath11k_debug_htt_stats_init(ar);
diff --git a/drivers/net/wireless/ath/ath11k/debug.h b/drivers/net/wireless/ath/ath11k/debug.h
index 9d90c7ba8a45..81b5e6b39b2f 100644
--- a/drivers/net/wireless/ath/ath11k/debug.h
+++ b/drivers/net/wireless/ath/ath11k/debug.h
@@ -131,6 +131,8 @@ static inline void ath11k_dbg_dump(struct ath11k_base *ab,
 #ifdef CONFIG_ATH11K_DEBUGFS
 int ath11k_debug_soc_create(struct ath11k_base *sc);
 void ath11k_debug_soc_destroy(struct ath11k_base *sc);
+int ath11k_debug_pdev_create(struct ath11k_base *sc);
+void ath11k_debug_pdev_destroy(struct ath11k_base *sc);
 int ath11k_debug_register(struct ath11k *ar);
 void ath11k_debug_unregister(struct ath11k *ar);
 void ath11k_dbg_htt_ext_stats_handler(struct ath11k_base *ab,
@@ -175,6 +177,15 @@ static inline void ath11k_debug_soc_destroy(struct ath11k_base *sc)
 {
 }
 
+static inline int ath11k_debug_pdev_create(struct ath11k_base *sc)
+{
+	return 0;
+}
+
+static inline void ath11k_debug_pdev_destroy(struct ath11k_base *sc)
+{
+}
+
 static inline int ath11k_debug_register(struct ath11k *ar)
 {
 	return 0;
