Merge tag 'iwlwifi-next-for-kalle-2017-11-29' of git://git.kernel.org/pub/scm/linux...
authorKalle Valo <kvalo@codeaurora.org>
Sat, 2 Dec 2017 13:20:21 +0000 (15:20 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Sat, 2 Dec 2017 13:22:54 +0000 (15:22 +0200)
First batch of iwlwifi updates for v4.16

* Rename the temporary name A000 to 22000;
* Change in the way we print the firmware version;
* Remove some unused code;
* Other small improvements;

kvalo:

There were conflicts, I fixed them with taking into account commit c2c48ddfc8b0
("iwlwifi: fix firmware names for 9000 and A000 series hw"):

CONFLICT (content): Merge conflict in drivers/net/wireless/intel/iwlwifi/iwl-config.h
CONFLICT (modify/delete): drivers/net/wireless/intel/iwlwifi/cfg/a000.c deleted in ca495785063c428641cc6df8888afd2587ca6677 and modified in HEAD. Version HEAD of drivers/net/wireless/intel/iwlwifi/cfg/a000.c left in tree.

1  2 
drivers/net/wireless/intel/iwlwifi/cfg/22000.c
drivers/net/wireless/intel/iwlwifi/fw/file.h
drivers/net/wireless/intel/iwlwifi/iwl-config.h
drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
drivers/net/wireless/intel/iwlwifi/mvm/tx.c
drivers/net/wireless/intel/iwlwifi/pcie/drv.c
drivers/net/wireless/intel/iwlwifi/pcie/trans.c

index 0000000000000000000000000000000000000000,7c08711a9f9452bc403b79b22370baa9be198dbe..28f6e63b9b67d847ca43c9eaa76fca6461a3f1e8
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,216 +1,216 @@@
 -      IWL_22000_HR_FW_PRE "-" __stringify(api) ".ucode"
+ /******************************************************************************
+  *
+  * This file is provided under a dual BSD/GPLv2 license.  When using or
+  * redistributing this file, you may do so under either license.
+  *
+  * GPL LICENSE SUMMARY
+  *
+  * Copyright(c) 2015-2017 Intel Deutschland GmbH
+  *
+  * This program is free software; you can redistribute it and/or modify
+  * it under the terms of version 2 of the GNU General Public License as
+  * published by the Free Software Foundation.
+  *
+  * This program is distributed in the hope that it will be useful, but
+  * WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  * General Public License for more details.
+  *
+  * BSD LICENSE
+  *
+  * Copyright(c) 2015-2017 Intel Deutschland GmbH
+  * All rights reserved.
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted provided that the following conditions
+  * are met:
+  *
+  *  * Redistributions of source code must retain the above copyright
+  *    notice, this list of conditions and the following disclaimer.
+  *  * Redistributions in binary form must reproduce the above copyright
+  *    notice, this list of conditions and the following disclaimer in
+  *    the documentation and/or other materials provided with the
+  *    distribution.
+  *  * Neither the name Intel Corporation nor the names of its
+  *    contributors may be used to endorse or promote products derived
+  *    from this software without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  *****************************************************************************/
+ #include <linux/module.h>
+ #include <linux/stringify.h>
+ #include "iwl-config.h"
+ #include "iwl-agn-hw.h"
+ /* Highest firmware API version supported */
+ #define IWL_22000_UCODE_API_MAX       34
+ /* Lowest firmware API version supported */
+ #define IWL_22000_UCODE_API_MIN       24
+ /* NVM versions */
+ #define IWL_22000_NVM_VERSION         0x0a1d
+ #define IWL_22000_TX_POWER_VERSION    0xffff /* meaningless */
+ /* Memory offsets and lengths */
+ #define IWL_22000_DCCM_OFFSET         0x800000 /* LMAC1 */
+ #define IWL_22000_DCCM_LEN            0x10000 /* LMAC1 */
+ #define IWL_22000_DCCM2_OFFSET                0x880000
+ #define IWL_22000_DCCM2_LEN           0x8000
+ #define IWL_22000_SMEM_OFFSET         0x400000
+ #define IWL_22000_SMEM_LEN            0xD0000
+ #define IWL_22000_JF_FW_PRE   "iwlwifi-Qu-a0-jf-b0-"
+ #define IWL_22000_HR_FW_PRE   "iwlwifi-Qu-a0-hr-a0-"
+ #define IWL_22000_HR_CDB_FW_PRE       "iwlwifi-QuIcp-z0-hrcdb-a0-"
+ #define IWL_22000_HR_F0_FW_PRE        "iwlwifi-QuQnj-f0-hr-a0-"
+ #define IWL_22000_JF_B0_FW_PRE        "iwlwifi-QuQnj-a0-jf-b0-"
+ #define IWL_22000_HR_A0_FW_PRE        "iwlwifi-QuQnj-a0-hr-a0-"
+ #define IWL_22000_HR_MODULE_FIRMWARE(api) \
 -      IWL_22000_JF_FW_PRE "-" __stringify(api) ".ucode"
++      IWL_22000_HR_FW_PRE __stringify(api) ".ucode"
+ #define IWL_22000_JF_MODULE_FIRMWARE(api) \
 -      IWL_22000_HR_F0_FW_PRE "-" __stringify(api) ".ucode"
++      IWL_22000_JF_FW_PRE __stringify(api) ".ucode"
+ #define IWL_22000_HR_F0_QNJ_MODULE_FIRMWARE(api) \
 -      IWL_22000_JF_B0_FW_PRE "-" __stringify(api) ".ucode"
++      IWL_22000_HR_F0_FW_PRE __stringify(api) ".ucode"
+ #define IWL_22000_JF_B0_QNJ_MODULE_FIRMWARE(api) \
 -      IWL_22000_HR_A0_FW_PRE "-" __stringify(api) ".ucode"
++      IWL_22000_JF_B0_FW_PRE __stringify(api) ".ucode"
+ #define IWL_22000_HR_A0_QNJ_MODULE_FIRMWARE(api) \
++      IWL_22000_HR_A0_FW_PRE __stringify(api) ".ucode"
+ #define NVM_HW_SECTION_NUM_FAMILY_22000               10
+ static const struct iwl_base_params iwl_22000_base_params = {
+       .eeprom_size = OTP_LOW_IMAGE_SIZE_FAMILY_22000,
+       .num_of_queues = 512,
+       .shadow_ram_support = true,
+       .led_compensation = 57,
+       .wd_timeout = IWL_LONG_WD_TIMEOUT,
+       .max_event_log_size = 512,
+       .shadow_reg_enable = true,
+       .pcie_l1_allowed = true,
+ };
+ static const struct iwl_ht_params iwl_22000_ht_params = {
+       .stbc = true,
+       .ldpc = true,
+       .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ),
+ };
+ #define IWL_DEVICE_22000                                              \
+       .ucode_api_max = IWL_22000_UCODE_API_MAX,                       \
+       .ucode_api_min = IWL_22000_UCODE_API_MIN,                       \
+       .device_family = IWL_DEVICE_FAMILY_22000,                       \
+       .max_inst_size = IWL60_RTC_INST_SIZE,                           \
+       .max_data_size = IWL60_RTC_DATA_SIZE,                           \
+       .base_params = &iwl_22000_base_params,                          \
+       .led_mode = IWL_LED_RF_STATE,                                   \
+       .nvm_hw_section_num = NVM_HW_SECTION_NUM_FAMILY_22000,          \
+       .non_shared_ant = ANT_A,                                        \
+       .dccm_offset = IWL_22000_DCCM_OFFSET,                           \
+       .dccm_len = IWL_22000_DCCM_LEN,                                 \
+       .dccm2_offset = IWL_22000_DCCM2_OFFSET,                         \
+       .dccm2_len = IWL_22000_DCCM2_LEN,                               \
+       .smem_offset = IWL_22000_SMEM_OFFSET,                           \
+       .smem_len = IWL_22000_SMEM_LEN,                                 \
+       .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,           \
+       .apmg_not_supported = true,                                     \
+       .mq_rx_supported = true,                                        \
+       .vht_mu_mimo_supported = true,                                  \
+       .mac_addr_from_csr = true,                                      \
+       .use_tfh = true,                                                \
+       .rf_id = true,                                                  \
+       .gen2 = true,                                                   \
+       .nvm_type = IWL_NVM_EXT,                                        \
+       .dbgc_supported = true,                                         \
+       .tx_cmd_queue_size = 32,                                        \
+       .min_umac_error_event_table = 0x400000
+ const struct iwl_cfg iwl22000_2ac_cfg_hr = {
+       .name = "Intel(R) Dual Band Wireless AC 22000",
+       .fw_name_pre = IWL_22000_HR_FW_PRE,
+       IWL_DEVICE_22000,
+       .ht_params = &iwl_22000_ht_params,
+       .nvm_ver = IWL_22000_NVM_VERSION,
+       .nvm_calib_ver = IWL_22000_TX_POWER_VERSION,
+       .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
+ };
+ const struct iwl_cfg iwl22000_2ac_cfg_hr_cdb = {
+       .name = "Intel(R) Dual Band Wireless AC 22000",
+       .fw_name_pre = IWL_22000_HR_CDB_FW_PRE,
+       IWL_DEVICE_22000,
+       .ht_params = &iwl_22000_ht_params,
+       .nvm_ver = IWL_22000_NVM_VERSION,
+       .nvm_calib_ver = IWL_22000_TX_POWER_VERSION,
+       .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
+       .cdb = true,
+ };
+ const struct iwl_cfg iwl22000_2ac_cfg_jf = {
+       .name = "Intel(R) Dual Band Wireless AC 22000",
+       .fw_name_pre = IWL_22000_JF_FW_PRE,
+       IWL_DEVICE_22000,
+       .ht_params = &iwl_22000_ht_params,
+       .nvm_ver = IWL_22000_NVM_VERSION,
+       .nvm_calib_ver = IWL_22000_TX_POWER_VERSION,
+       .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
+ };
+ const struct iwl_cfg iwl22000_2ax_cfg_hr = {
+       .name = "Intel(R) Dual Band Wireless AX 22000",
+       .fw_name_pre = IWL_22000_HR_FW_PRE,
+       IWL_DEVICE_22000,
+       .ht_params = &iwl_22000_ht_params,
+       .nvm_ver = IWL_22000_NVM_VERSION,
+       .nvm_calib_ver = IWL_22000_TX_POWER_VERSION,
+       .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
+ };
+ const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_f0 = {
+       .name = "Intel(R) Dual Band Wireless AX 22000",
+       .fw_name_pre = IWL_22000_HR_F0_FW_PRE,
+       IWL_DEVICE_22000,
+       .ht_params = &iwl_22000_ht_params,
+       .nvm_ver = IWL_22000_NVM_VERSION,
+       .nvm_calib_ver = IWL_22000_TX_POWER_VERSION,
+       .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
+ };
+ const struct iwl_cfg iwl22000_2ax_cfg_qnj_jf_b0 = {
+       .name = "Intel(R) Dual Band Wireless AX 22000",
+       .fw_name_pre = IWL_22000_JF_B0_FW_PRE,
+       IWL_DEVICE_22000,
+       .ht_params = &iwl_22000_ht_params,
+       .nvm_ver = IWL_22000_NVM_VERSION,
+       .nvm_calib_ver = IWL_22000_TX_POWER_VERSION,
+       .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
+ };
+ const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_a0 = {
+       .name = "Intel(R) Dual Band Wireless AX 22000",
+       .fw_name_pre = IWL_22000_HR_A0_FW_PRE,
+       IWL_DEVICE_22000,
+       .ht_params = &iwl_22000_ht_params,
+       .nvm_ver = IWL_22000_NVM_VERSION,
+       .nvm_calib_ver = IWL_22000_TX_POWER_VERSION,
+       .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
+ };
+ MODULE_FIRMWARE(IWL_22000_HR_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
+ MODULE_FIRMWARE(IWL_22000_JF_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
+ MODULE_FIRMWARE(IWL_22000_HR_F0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
+ MODULE_FIRMWARE(IWL_22000_JF_B0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
+ MODULE_FIRMWARE(IWL_22000_HR_A0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
index 37a5c5b4eda6ca48eb24c6978c8aeba640e1886d,e52678c8f899d9bc350f871a718368d75a4070ad..17367283f85f5ff6c45c513d41685db25a0d2f8b
@@@ -246,8 -246,6 +246,6 @@@ typedef unsigned int __bitwise iwl_ucod
   * @IWL_UCODE_TLV_API_STA_TYPE: This ucode supports station type assignement.
   * @IWL_UCODE_TLV_API_NAN2_VER2: This ucode supports NAN API version 2
   * @IWL_UCODE_TLV_API_NEW_RX_STATS: should new RX STATISTICS API be used
-  * @IWL_UCODE_TLV_API_ATS_COEX_EXTERNAL: the coex notification is enlared to
-  *    include information about ACL time sharing.
   * @IWL_UCODE_TLV_API_QUOTA_LOW_LATENCY: Quota command includes a field
   *    indicating low latency direction.
   *
@@@ -264,10 -262,8 +262,9 @@@ enum iwl_ucode_tlv_api 
        IWL_UCODE_TLV_API_STA_TYPE              = (__force iwl_ucode_tlv_api_t)30,
        IWL_UCODE_TLV_API_NAN2_VER2             = (__force iwl_ucode_tlv_api_t)31,
        /* API Set 1 */
 +      IWL_UCODE_TLV_API_ADAPTIVE_DWELL        = (__force iwl_ucode_tlv_api_t)32,
        IWL_UCODE_TLV_API_NEW_BEACON_TEMPLATE   = (__force iwl_ucode_tlv_api_t)34,
        IWL_UCODE_TLV_API_NEW_RX_STATS          = (__force iwl_ucode_tlv_api_t)35,
-       IWL_UCODE_TLV_API_COEX_ATS_EXTERNAL     = (__force iwl_ucode_tlv_api_t)37,
        IWL_UCODE_TLV_API_QUOTA_LOW_LATENCY     = (__force iwl_ucode_tlv_api_t)38,
  
        NUM_IWL_UCODE_TLV_API
index e21e46cf6f9a3ebad9926826f2168c2434ed4fd4,9cc4647ded7e754c26ba18b52457e41ce0ef909b..258d439bb0a9ce40782371fc33281270891bd5a5
@@@ -89,7 -89,7 +89,7 @@@ enum iwl_device_family 
        IWL_DEVICE_FAMILY_7000,
        IWL_DEVICE_FAMILY_8000,
        IWL_DEVICE_FAMILY_9000,
-       IWL_DEVICE_FAMILY_A000,
+       IWL_DEVICE_FAMILY_22000,
  };
  
  /*
@@@ -266,7 -266,7 +266,7 @@@ struct iwl_tt_params 
  #define OTP_LOW_IMAGE_SIZE_FAMILY_7000        (16 * 512 * sizeof(u16)) /* 16 KB */
  #define OTP_LOW_IMAGE_SIZE_FAMILY_8000        (32 * 512 * sizeof(u16)) /* 32 KB */
  #define OTP_LOW_IMAGE_SIZE_FAMILY_9000        OTP_LOW_IMAGE_SIZE_FAMILY_8000
- #define OTP_LOW_IMAGE_SIZE_FAMILY_A000        OTP_LOW_IMAGE_SIZE_FAMILY_9000
+ #define OTP_LOW_IMAGE_SIZE_FAMILY_22000       OTP_LOW_IMAGE_SIZE_FAMILY_9000
  
  struct iwl_eeprom_params {
        const u8 regulatory_bands[7];
@@@ -330,7 -330,7 +330,7 @@@ struct iwl_pwr_tx_backoff 
   * @vht_mu_mimo_supported: VHT MU-MIMO support
   * @rf_id: need to read rf_id to determine the firmware image
   * @integrated: discrete or integrated
-  * @gen2: a000 and on transport operation
+  * @gen2: 22000 and on transport operation
   * @cdb: CDB support
   * @nvm_type: see &enum iwl_nvm_type
   * @tx_cmd_queue_size: size of the cmd queue. If zero, use the same value as
@@@ -366,7 -366,6 +366,7 @@@ struct iwl_cfg 
        u32 dccm2_len;
        u32 smem_offset;
        u32 smem_len;
 +      u32 soc_latency;
        u16 nvm_ver;
        u16 nvm_calib_ver;
        u16 rx_with_siso_diversity:1,
@@@ -473,17 -472,13 +473,17 @@@ extern const struct iwl_cfg iwl9260_2ac
  extern const struct iwl_cfg iwl9270_2ac_cfg;
  extern const struct iwl_cfg iwl9460_2ac_cfg;
  extern const struct iwl_cfg iwl9560_2ac_cfg;
- extern const struct iwl_cfg iwla000_2ac_cfg_hr;
- extern const struct iwl_cfg iwla000_2ac_cfg_hr_cdb;
- extern const struct iwl_cfg iwla000_2ac_cfg_jf;
- extern const struct iwl_cfg iwla000_2ax_cfg_hr;
- extern const struct iwl_cfg iwla000_2ax_cfg_qnj_hr_f0;
- extern const struct iwl_cfg iwla000_2ax_cfg_qnj_jf_b0;
- extern const struct iwl_cfg iwla000_2ax_cfg_qnj_hr_a0;
 +extern const struct iwl_cfg iwl9460_2ac_cfg_soc;
 +extern const struct iwl_cfg iwl9461_2ac_cfg_soc;
 +extern const struct iwl_cfg iwl9462_2ac_cfg_soc;
 +extern const struct iwl_cfg iwl9560_2ac_cfg_soc;
+ extern const struct iwl_cfg iwl22000_2ac_cfg_hr;
+ extern const struct iwl_cfg iwl22000_2ac_cfg_hr_cdb;
+ extern const struct iwl_cfg iwl22000_2ac_cfg_jf;
+ extern const struct iwl_cfg iwl22000_2ax_cfg_hr;
+ extern const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_f0;
+ extern const struct iwl_cfg iwl22000_2ax_cfg_qnj_jf_b0;
+ extern const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_a0;
  #endif /* CONFIG_IWLMVM */
  
  #endif /* __IWL_CONFIG_H__ */
index 4575595ab022600ff7d33da2d789c54f84a0e951,d556a1dd5e0d1c27b35d750cf1ace619da17d676..59c5ec3f46cb1df30f48af0a8762b988c994c113
@@@ -1142,12 -1142,6 +1142,12 @@@ static inline bool iwl_mvm_is_d0i3_supp
                            IWL_UCODE_TLV_CAPA_D0I3_SUPPORT);
  }
  
 +static inline bool iwl_mvm_is_adaptive_dwell_supported(struct iwl_mvm *mvm)
 +{
 +      return fw_has_api(&mvm->fw->ucode_capa,
 +                        IWL_UCODE_TLV_API_ADAPTIVE_DWELL);
 +}
 +
  static inline bool iwl_mvm_enter_d0i3_on_suspend(struct iwl_mvm *mvm)
  {
        /* For now we only use this mode to differentiate between
@@@ -1245,7 -1239,7 +1245,7 @@@ static inline bool iwl_mvm_has_new_tx_a
  static inline bool iwl_mvm_has_unified_ucode(struct iwl_mvm *mvm)
  {
        /* TODO - better define this */
-       return mvm->trans->cfg->device_family >= IWL_DEVICE_FAMILY_A000;
+       return mvm->trans->cfg->device_family >= IWL_DEVICE_FAMILY_22000;
  }
  
  static inline bool iwl_mvm_is_cdb_supported(struct iwl_mvm *mvm)
@@@ -1269,12 -1263,6 +1269,6 @@@ static inline bool iwl_mvm_has_new_rx_s
                          IWL_UCODE_TLV_API_NEW_RX_STATS);
  }
  
- static inline bool iwl_mvm_has_new_ats_coex_api(struct iwl_mvm *mvm)
- {
-       return fw_has_api(&mvm->fw->ucode_capa,
-                         IWL_UCODE_TLV_API_COEX_ATS_EXTERNAL);
- }
  static inline bool iwl_mvm_has_quota_low_latency(struct iwl_mvm *mvm)
  {
        return fw_has_api(&mvm->fw->ucode_capa,
index 593b7f97b29c103f8faf28dd905dd36aed34e763,e359e2538f9ad72ab00290f73264f71a6d99a433..9e7beecf043a27d854ef5db5656a60a4a7ad3780
@@@ -652,7 -652,7 +652,7 @@@ int iwl_mvm_tx_skb_non_sta(struct iwl_m
                                return -1;
                } else if (info.control.vif->type == NL80211_IFTYPE_STATION &&
                           is_multicast_ether_addr(hdr->addr1)) {
 -                      u8 ap_sta_id = ACCESS_ONCE(mvmvif->ap_sta_id);
 +                      u8 ap_sta_id = READ_ONCE(mvmvif->ap_sta_id);
  
                        if (ap_sta_id != IWL_MVM_INVALID_STA)
                                sta_id = ap_sta_id;
@@@ -700,7 -700,7 +700,7 @@@ static int iwl_mvm_tx_tso(struct iwl_mv
        snap_ip_tcp = 8 + skb_transport_header(skb) - skb_network_header(skb) +
                tcp_hdrlen(skb);
  
 -      dbg_max_amsdu_len = ACCESS_ONCE(mvm->max_amsdu_len);
 +      dbg_max_amsdu_len = READ_ONCE(mvm->max_amsdu_len);
  
        if (!sta->max_amsdu_len ||
            !ieee80211_is_data_qos(hdr->frame_control) ||
@@@ -1131,7 -1131,7 +1131,7 @@@ static void iwl_mvm_check_ratid_empty(s
        }
  
        /*
-        * In A000 HW, the next_reclaimed index is only 8 bit, so we'll need
+        * In 22000 HW, the next_reclaimed index is only 8 bit, so we'll need
         * to align the wrap around of ssn so we compare relevant values.
         */
        normalized_ssn = tid_data->ssn;
@@@ -1623,7 -1623,7 +1623,7 @@@ static void iwl_mvm_tx_reclaim(struct i
        int freed;
  
        if (WARN_ONCE(sta_id >= IWL_MVM_STATION_COUNT ||
-                     tid >= IWL_MAX_TID_COUNT,
+                     tid > IWL_MAX_TID_COUNT,
                      "sta_id %d tid %d", sta_id, tid))
                return;
  
                if (ieee80211_is_data_qos(hdr->frame_control))
                        freed++;
                else
-                       WARN_ON_ONCE(1);
+                       WARN_ON_ONCE(tid != IWL_MAX_TID_COUNT);
  
                iwl_trans_free_tx_cmd(mvm->trans, info->driver_data[1]);
  
@@@ -1770,8 -1770,12 +1770,12 @@@ void iwl_mvm_rx_ba_notif(struct iwl_mv
                        struct iwl_mvm_compressed_ba_tfd *ba_tfd =
                                &ba_res->tfd[i];
  
+                       tid = ba_tfd->tid;
+                       if (tid == IWL_MGMT_TID)
+                               tid = IWL_MAX_TID_COUNT;
                        mvmsta->tid_data[i].lq_color = lq_color;
-                       iwl_mvm_tx_reclaim(mvm, sta_id, ba_tfd->tid,
+                       iwl_mvm_tx_reclaim(mvm, sta_id, tid,
                                           (int)(le16_to_cpu(ba_tfd->q_num)),
                                           le16_to_cpu(ba_tfd->tfd_index),
                                           &ba_info,
index f21fe59faccff835efe0db590c437f419a89ccb4,a0f5081f4355f08f5e497454ad5390a8fb41ed17..5ed89d7ac4b237a2a5eb6502b8414b0855713cbf
@@@ -535,135 -535,61 +535,135 @@@ static const struct pci_device_id iwl_h
        {IWL_PCI_DEVICE(0x2526, 0x0238, iwl9560_2ac_cfg)},
        {IWL_PCI_DEVICE(0x2526, 0x023C, iwl9560_2ac_cfg)},
        {IWL_PCI_DEVICE(0x2526, 0x0260, iwl9460_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2526, 0x0264, iwl9461_2ac_cfg_soc)},
        {IWL_PCI_DEVICE(0x2526, 0x02A0, iwl9460_2ac_cfg)},
        {IWL_PCI_DEVICE(0x2526, 0x02A4, iwl9460_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2526, 0x1010, iwl9260_2ac_cfg)},
        {IWL_PCI_DEVICE(0x2526, 0x1030, iwl9560_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2526, 0x1210, iwl9260_2ac_cfg)},
        {IWL_PCI_DEVICE(0x2526, 0x1410, iwl9270_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x2526, 0x1420, iwl9460_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2526, 0x1420, iwl9460_2ac_cfg_soc)},
        {IWL_PCI_DEVICE(0x2526, 0x1610, iwl9270_2ac_cfg)},
        {IWL_PCI_DEVICE(0x2526, 0x4010, iwl9260_2ac_cfg)},
        {IWL_PCI_DEVICE(0x2526, 0x4030, iwl9560_2ac_cfg)},
        {IWL_PCI_DEVICE(0x2526, 0x40A4, iwl9460_2ac_cfg)},
        {IWL_PCI_DEVICE(0x2526, 0xA014, iwl9260_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2526, 0x42A4, iwl9462_2ac_cfg_soc)},
        {IWL_PCI_DEVICE(0x271B, 0x0010, iwl9160_2ac_cfg)},
        {IWL_PCI_DEVICE(0x271B, 0x0014, iwl9160_2ac_cfg)},
        {IWL_PCI_DEVICE(0x271B, 0x0210, iwl9160_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x30DC, 0x0060, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x31DC, 0x0030, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x31DC, 0x0034, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x31DC, 0x0038, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x31DC, 0x003C, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x31DC, 0x0060, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0000, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0010, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0030, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0034, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0038, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x003C, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0060, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0210, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0310, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0410, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0510, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0610, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0710, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0A10, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x2010, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x2A10, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0xA370, 0x0030, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0xA370, 0x0034, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0xA370, 0x0038, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0xA370, 0x003C, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0xA370, 0x0060, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0xA370, 0x1030, iwl9560_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x271B, 0x0214, iwl9260_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2720, 0x0034, iwl9560_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2720, 0x0038, iwl9560_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2720, 0x003C, iwl9560_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2720, 0x0060, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x2720, 0x0064, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x2720, 0x00A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x2720, 0x00A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x2720, 0x0230, iwl9560_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2720, 0x0234, iwl9560_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2720, 0x0238, iwl9560_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2720, 0x023C, iwl9560_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2720, 0x0260, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x2720, 0x0264, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x2720, 0x02A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x2720, 0x02A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x2720, 0x4030, iwl9560_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2720, 0x40A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x30DC, 0x0060, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x30DC, 0x0064, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x30DC, 0x00A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x30DC, 0x00A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x30DC, 0x0260, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x30DC, 0x0264, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x30DC, 0x02A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x30DC, 0x02A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0030, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0034, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0038, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x003C, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0060, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0064, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x00A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x00A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0230, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0234, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0238, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x023C, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0260, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0264, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x02A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x02A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x4030, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x4034, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x40A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x34F0, 0x0030, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x34F0, 0x0034, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x34F0, 0x02A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0000, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0010, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0030, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0034, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0038, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x003C, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0060, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0064, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x00A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x00A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0210, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0230, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0234, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0238, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x023C, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0260, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0264, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x02A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x02A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0310, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0410, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0510, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0610, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0710, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0A10, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x2010, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x2A10, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x4030, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x4034, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x40A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0030, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0034, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0038, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x003C, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0060, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0064, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x00A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x00A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0230, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0234, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0238, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x023C, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0260, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0264, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x02A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x02A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x1030, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x4030, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x4034, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x40A4, iwl9462_2ac_cfg_soc)},
  
- /* a000 Series */
-       {IWL_PCI_DEVICE(0x2720, 0x0A10, iwla000_2ac_cfg_hr_cdb)},
-       {IWL_PCI_DEVICE(0x34F0, 0x0310, iwla000_2ac_cfg_jf)},
-       {IWL_PCI_DEVICE(0x2720, 0x0000, iwla000_2ax_cfg_hr)},
-       {IWL_PCI_DEVICE(0x34F0, 0x0070, iwla000_2ax_cfg_hr)},
-       {IWL_PCI_DEVICE(0x2720, 0x0078, iwla000_2ax_cfg_hr)},
-       {IWL_PCI_DEVICE(0x2720, 0x0070, iwla000_2ac_cfg_hr_cdb)},
-       {IWL_PCI_DEVICE(0x2720, 0x0030, iwla000_2ac_cfg_hr_cdb)},
-       {IWL_PCI_DEVICE(0x2720, 0x1080, iwla000_2ax_cfg_hr)},
-       {IWL_PCI_DEVICE(0x2720, 0x0090, iwla000_2ac_cfg_hr_cdb)},
-       {IWL_PCI_DEVICE(0x2720, 0x0310, iwla000_2ac_cfg_hr_cdb)},
-       {IWL_PCI_DEVICE(0x40C0, 0x0000, iwla000_2ax_cfg_hr)},
-       {IWL_PCI_DEVICE(0x40C0, 0x0A10, iwla000_2ax_cfg_hr)},
+ /* 22000 Series */
+       {IWL_PCI_DEVICE(0x2720, 0x0A10, iwl22000_2ac_cfg_hr_cdb)},
+       {IWL_PCI_DEVICE(0x34F0, 0x0310, iwl22000_2ac_cfg_jf)},
+       {IWL_PCI_DEVICE(0x2720, 0x0000, iwl22000_2ax_cfg_hr)},
+       {IWL_PCI_DEVICE(0x34F0, 0x0070, iwl22000_2ax_cfg_hr)},
+       {IWL_PCI_DEVICE(0x2720, 0x0078, iwl22000_2ax_cfg_hr)},
+       {IWL_PCI_DEVICE(0x2720, 0x0070, iwl22000_2ac_cfg_hr_cdb)},
+       {IWL_PCI_DEVICE(0x2720, 0x0030, iwl22000_2ac_cfg_hr_cdb)},
+       {IWL_PCI_DEVICE(0x2720, 0x1080, iwl22000_2ax_cfg_hr)},
+       {IWL_PCI_DEVICE(0x2720, 0x0090, iwl22000_2ac_cfg_hr_cdb)},
+       {IWL_PCI_DEVICE(0x2720, 0x0310, iwl22000_2ac_cfg_hr_cdb)},
+       {IWL_PCI_DEVICE(0x40C0, 0x0000, iwl22000_2ax_cfg_hr)},
+       {IWL_PCI_DEVICE(0x40C0, 0x0A10, iwl22000_2ax_cfg_hr)},
  
  #endif /* CONFIG_IWLMVM */
  
@@@ -705,7 -631,7 +705,7 @@@ static int iwl_pci_probe(struct pci_de
                iwl_trans->cfg = cfg_7265d;
        }
  
-       if (iwl_trans->cfg->rf_id && cfg == &iwla000_2ac_cfg_hr_cdb &&
+       if (iwl_trans->cfg->rf_id && cfg == &iwl22000_2ac_cfg_hr_cdb &&
            iwl_trans->hw_rev != CSR_HW_REV_TYPE_HR_CDB) {
                u32 rf_id_chp = CSR_HW_RF_ID_TYPE_CHIP_ID(iwl_trans->hw_rf_id);
                u32 jf_chp_id = CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_JF);
  
                if (rf_id_chp == jf_chp_id) {
                        if (iwl_trans->hw_rev == CSR_HW_REV_TYPE_QNJ)
-                               cfg = &iwla000_2ax_cfg_qnj_jf_b0;
+                               cfg = &iwl22000_2ax_cfg_qnj_jf_b0;
                        else
-                               cfg = &iwla000_2ac_cfg_jf;
+                               cfg = &iwl22000_2ac_cfg_jf;
                } else if (rf_id_chp == hr_chp_id) {
                        if (iwl_trans->hw_rev == CSR_HW_REV_TYPE_QNJ)
-                               cfg = &iwla000_2ax_cfg_qnj_hr_a0;
+                               cfg = &iwl22000_2ax_cfg_qnj_hr_a0;
                        else
-                               cfg = &iwla000_2ac_cfg_hr;
+                               cfg = &iwl22000_2ac_cfg_hr;
                }
                iwl_trans->cfg = cfg;
        }
index b7a51603465b20752616639cd3f663a6844dcdd8,05e34a2430424ffc6806585ea45b9b5923735a8b..d88a70694e7c763d0b6a6206b4e88bd115127979
@@@ -2165,12 -2165,12 +2165,12 @@@ static int iwl_trans_pcie_wait_txq_empt
  
        IWL_DEBUG_TX_QUEUES(trans, "Emptying queue %d...\n", txq_idx);
        txq = trans_pcie->txq[txq_idx];
 -      wr_ptr = ACCESS_ONCE(txq->write_ptr);
 +      wr_ptr = READ_ONCE(txq->write_ptr);
  
 -      while (txq->read_ptr != ACCESS_ONCE(txq->write_ptr) &&
 +      while (txq->read_ptr != READ_ONCE(txq->write_ptr) &&
               !time_after(jiffies,
                           now + msecs_to_jiffies(IWL_FLUSH_WAIT_MS))) {
 -              u8 write_ptr = ACCESS_ONCE(txq->write_ptr);
 +              u8 write_ptr = READ_ONCE(txq->write_ptr);
  
                if (WARN_ONCE(wr_ptr != write_ptr,
                              "WR pointer moved while flushing %d -> %d\n",
@@@ -2642,7 -2642,7 +2642,7 @@@ static u32 iwl_trans_pcie_dump_rbs(stru
  
        spin_lock(&rxq->lock);
  
 -      r = le16_to_cpu(ACCESS_ONCE(rxq->rb_stts->closed_rb_num)) & 0x0FFF;
 +      r = le16_to_cpu(READ_ONCE(rxq->rb_stts->closed_rb_num)) & 0x0FFF;
  
        for (i = rxq->read, j = 0;
             i != r && j < allocated_rb_nums;
@@@ -2903,7 -2903,7 +2903,7 @@@ static struct iwl_trans_dump_dat
                /* Dump RBs is supported only for pre-9000 devices (1 queue) */
                struct iwl_rxq *rxq = &trans_pcie->rxq[0];
                /* RBs */
 -              num_rbs = le16_to_cpu(ACCESS_ONCE(rxq->rb_stts->closed_rb_num))
 +              num_rbs = le16_to_cpu(READ_ONCE(rxq->rb_stts->closed_rb_num))
                                      & 0x0FFF;
                num_rbs = (num_rbs - rxq->read) & RX_QUEUE_MASK;
                len += num_rbs * (sizeof(*data) +
@@@ -3240,9 -3240,9 +3240,9 @@@ struct iwl_trans *iwl_trans_pcie_alloc(
  
                hw_status = iwl_read_prph(trans, UMAG_GEN_HW_STATUS);
                if (hw_status & UMAG_GEN_HW_IS_FPGA)
-                       trans->cfg = &iwla000_2ax_cfg_qnj_hr_f0;
+                       trans->cfg = &iwl22000_2ax_cfg_qnj_hr_f0;
                else
-                       trans->cfg = &iwla000_2ac_cfg_hr;
+                       trans->cfg = &iwl22000_2ac_cfg_hr;
        }
  #endif