.open = simple_open
 };
 
-int ath11k_debugfs_add_interface(struct ath11k_vif *arvif)
+void ath11k_debugfs_add_interface(struct ath11k_vif *arvif)
 {
        struct ath11k_base *ab = arvif->ar->ab;
 
        if (arvif->vif->type != NL80211_IFTYPE_AP &&
            !(arvif->vif->type == NL80211_IFTYPE_STATION &&
              test_bit(WMI_TLV_SERVICE_STA_TWT, ab->wmi_ab.svc_map)))
-               return 0;
-
-       if (!arvif->debugfs_twt) {
-               arvif->debugfs_twt = debugfs_create_dir("twt",
-                                                       arvif->vif->debugfs_dir);
-               if (!arvif->debugfs_twt || IS_ERR(arvif->debugfs_twt)) {
-                       ath11k_warn(ab, "failed to create directory %p\n",
-                                   arvif->debugfs_twt);
-                       arvif->debugfs_twt = NULL;
-                       return -1;
-               }
+               return;
 
-               debugfs_create_file("add_dialog", 0200, arvif->debugfs_twt,
-                                   arvif, &ath11k_fops_twt_add_dialog);
+       arvif->debugfs_twt = debugfs_create_dir("twt",
+                                               arvif->vif->debugfs_dir);
+       debugfs_create_file("add_dialog", 0200, arvif->debugfs_twt,
+                           arvif, &ath11k_fops_twt_add_dialog);
 
-               debugfs_create_file("del_dialog", 0200, arvif->debugfs_twt,
-                                   arvif, &ath11k_fops_twt_del_dialog);
+       debugfs_create_file("del_dialog", 0200, arvif->debugfs_twt,
+                           arvif, &ath11k_fops_twt_del_dialog);
 
-               debugfs_create_file("pause_dialog", 0200, arvif->debugfs_twt,
-                                   arvif, &ath11k_fops_twt_pause_dialog);
+       debugfs_create_file("pause_dialog", 0200, arvif->debugfs_twt,
+                           arvif, &ath11k_fops_twt_pause_dialog);
 
-               debugfs_create_file("resume_dialog", 0200, arvif->debugfs_twt,
-                                   arvif, &ath11k_fops_twt_resume_dialog);
-       }
-       return 0;
+       debugfs_create_file("resume_dialog", 0200, arvif->debugfs_twt,
+                           arvif, &ath11k_fops_twt_resume_dialog);
 }
 
 void ath11k_debugfs_remove_interface(struct ath11k_vif *arvif)
 {
+       if (!arvif->debugfs_twt)
+               return;
+
        debugfs_remove_recursive(arvif->debugfs_twt);
        arvif->debugfs_twt = NULL;
 }
 
        return ar->debug.rx_filter;
 }
 
-int ath11k_debugfs_add_interface(struct ath11k_vif *arvif);
+void ath11k_debugfs_add_interface(struct ath11k_vif *arvif);
 void ath11k_debugfs_remove_interface(struct ath11k_vif *arvif);
 void ath11k_debugfs_add_dbring_entry(struct ath11k *ar,
                                     enum wmi_direct_buffer_module id,
        return 0;
 }
 
-static inline int ath11k_debugfs_add_interface(struct ath11k_vif *arvif)
+static inline void ath11k_debugfs_add_interface(struct ath11k_vif *arvif)
 {
-       return 0;
 }
 
 static inline void ath11k_debugfs_remove_interface(struct ath11k_vif *arvif)
 
                goto err;
        }
 
+       /* In the case of hardware recovery, debugfs files are
+        * not deleted since ieee80211_ops.remove_interface() is
+        * not invoked. In such cases, try to delete the files.
+        * These will be re-created later.
+        */
+       ath11k_debugfs_remove_interface(arvif);
+
        memset(arvif, 0, sizeof(*arvif));
 
        arvif->ar = ar;
                }
        }
 
-       ret = ath11k_debugfs_add_interface(arvif);
-       if (ret)
-               goto err_peer_del;
+       ath11k_debugfs_add_interface(arvif);
 
        mutex_unlock(&ar->conf_mutex);