data->restart_count = 0;
  
        index = data->restart_count;
-       if (index >= ARRAY_SIZE(escalation_list)) {
-               index = ARRAY_SIZE(escalation_list) - 1;
 -      if (index >= escalation_list_size)
++      if (index >= escalation_list_size) {
+               index = escalation_list_size - 1;
 +              if (!data->backoff) {
 +                      data->backoff = true;
 +                      return IWL_RESET_MODE_BACKOFF;
 +              }
 +              data->backoff = false;
 +      }
  
        return max(at_least, escalation_list[index]);
  }
  
  static void iwl_trans_restart_wk(struct work_struct *wk)
  {
 -      struct iwl_trans *trans = container_of(wk, typeof(*trans), restart.wk);
 +      struct iwl_trans *trans = container_of(wk, typeof(*trans),
 +                                             restart.wk.work);
-       struct iwl_trans_reprobe *reprobe;
        enum iwl_reset_mode mode;
  
+       if (trans->restart.mode.type == IWL_ERR_TYPE_TOP_RESET_BY_BT) {
+               iwl_trans_schedule_reprobe(trans, IWL_TRANS_TOP_FOLLOWER_WAIT);
+               return;
+       }
+ 
        if (!trans->op_mode)
                return;
  
  #endif
  
        trans->dev = dev;
-       trans->num_rx_queues = 1;
  
 -      INIT_WORK(&trans->restart.wk, iwl_trans_restart_wk);
 +      INIT_DELAYED_WORK(&trans->restart.wk, iwl_trans_restart_wk);
  
        return trans;
  }
  
        iwl_trans_pcie_op_mode_leave(trans);
  
 -      cancel_work_sync(&trans->restart.wk);
 +      cancel_delayed_work_sync(&trans->restart.wk);
  
        trans->op_mode = NULL;
+       memset(&trans->conf, 0, sizeof(trans->conf));
  
        trans->state = IWL_TRANS_NO_FW;
  }
 
  /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
  /*
-  * Copyright (C) 2005-2014, 2018-2023 Intel Corporation
 - * Copyright (C) 2005-2014, 2018-2023, 2025 Intel Corporation
++ * Copyright (C) 2005-2014, 2018-2025 Intel Corporation
   * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
   * Copyright (C) 2016-2017 Intel Deutschland GmbH
   */
        struct iwl_trans_debug dbg;
        struct iwl_self_init_dram init_dram;
  
-       enum iwl_plat_pm_mode system_pm_mode;
- 
-       const char *name;
-       u32 mbx_addr_0_step;
-       u32 mbx_addr_1_step;
- 
-       u8 pcie_link_speed;
- 
-       struct iwl_dma_ptr invalid_tx_cmd;
- 
        struct {
 -              struct work_struct wk;
 +              struct delayed_work wk;
                struct iwl_fw_error_dump_mode mode;
                bool during_reset;
        } restart;
 
  
        return false;
  }
- EXPORT_SYMBOL_IF_IWLWIFI_KUNIT(iwl_mld_channel_load_allows_emlsr);
  
- static bool
- iwl_mld_valid_emlsr_pair(struct ieee80211_vif *vif,
 -VISIBLE_IF_KUNIT u32
++VISIBLE_IF_IWLWIFI_KUNIT u32
+ iwl_mld_emlsr_pair_state(struct ieee80211_vif *vif,
                         struct iwl_mld_link_sel_data *a,
                         struct iwl_mld_link_sel_data *b)
  {
 
  int iwl_trans_pcie_read_config32(struct iwl_trans *trans, u32 ofs,
                                 u32 *val);
  bool iwl_trans_pcie_grab_nic_access(struct iwl_trans *trans);
 -void iwl_trans_pcie_release_nic_access(struct iwl_trans *trans);
 +void __releases(nic_access_nobh)
 +iwl_trans_pcie_release_nic_access(struct iwl_trans *trans);
+ void iwl_pcie_alloc_fw_monitor(struct iwl_trans *trans, u8 max_power);
  
  /* transport gen 1 exported functions */
- void iwl_trans_pcie_fw_alive(struct iwl_trans *trans, u32 scd_addr);
+ void iwl_trans_pcie_fw_alive(struct iwl_trans *trans);
  int iwl_trans_pcie_start_fw(struct iwl_trans *trans,
-                           const struct fw_img *fw, bool run_in_rfkill);
+                           const struct iwl_fw *fw,
+                           const struct fw_img *img,
+                           bool run_in_rfkill);
  void iwl_trans_pcie_stop_device(struct iwl_trans *trans);
  
  /* common functions that are used by gen2 transport */