Merge tag 'iwlwifi-next-2025-05-15' of https://git.kernel.org/pub/scm/linux/kernel...
authorJohannes Berg <johannes.berg@intel.com>
Thu, 15 May 2025 11:56:38 +0000 (13:56 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 15 May 2025 12:09:59 +0000 (14:09 +0200)
Miri Korenblit says:
====================
iwlwifi features, notably a rework of the transport configuration
====================

Link: https://patch.msgid.link/MW5PR11MB5810DD2655DE461E98A618DDA390A@MW5PR11MB5810.namprd11.prod.outlook.com/
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
1  2 
drivers/net/wireless/intel/iwlwifi/iwl-csr.h
drivers/net/wireless/intel/iwlwifi/iwl-trans.c
drivers/net/wireless/intel/iwlwifi/iwl-trans.h
drivers/net/wireless/intel/iwlwifi/mld/d3.c
drivers/net/wireless/intel/iwlwifi/mld/debugfs.c
drivers/net/wireless/intel/iwlwifi/mld/mac80211.c
drivers/net/wireless/intel/iwlwifi/mld/mlo.c
drivers/net/wireless/intel/iwlwifi/pcie/internal.h
drivers/net/wireless/intel/iwlwifi/pcie/trans.c
drivers/net/wireless/intel/iwlwifi/pcie/tx.c

index e7b2e08645efa7b6fc9f4d6d181adfecdcc6b9f4,59c5ea1727f4c31835041107b3c4caa7dc4513ba..8a40801cf0ddec7c977738c5123d296bb9cf0a36
@@@ -132,14 -183,8 +185,14 @@@ iwl_trans_determine_restart_mode(struc
                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;
  
@@@ -240,9 -272,8 +287,8 @@@ struct iwl_trans *iwl_trans_alloc(unsig
  #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;
  }
@@@ -418,9 -433,10 +448,10 @@@ void iwl_trans_op_mode_leave(struct iwl
  
        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;
  }
index 44a249a753ecf6a4940dd0d86111c1189345c068,57a7747c92c44d54ab96da9e05cc7b6621907dda..012b1e44bce38724fccf7eb65e9baa69641b87a4
@@@ -1,6 -1,6 +1,6 @@@
  /* 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
   */
@@@ -951,18 -926,8 +926,8 @@@ struct iwl_trans 
        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;
index da16fff1ce86d979e104a123f2e3c73ff3b8b5f3,71edfb1cf68e6cb2eac729ef91db5bd79e09827c..dba5379ed0090c7ba4fcce4cc767a66c1ecbb969
@@@ -789,10 -847,9 +847,9 @@@ iwl_mld_channel_load_allows_emlsr(struc
  
        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)
  {
index 114a9195ad7f74fd70cac144404a02b0be9e62c0,026401c939bbf2df345815c74abedf286947c508..3b7c12fc4f9e4efa06259326086cf35a6ed28aea
@@@ -1105,13 -1101,15 +1101,16 @@@ void iwl_trans_pcie_set_bits_mask(struc
  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 */