iwlwifi: pcie: recognize NICs with hw_rev 0x364 correctly
authorLuca Coelho <luciano.coelho@intel.com>
Tue, 2 Oct 2018 08:42:28 +0000 (11:42 +0300)
committerLuca Coelho <luciano.coelho@intel.com>
Fri, 25 Jan 2019 18:57:18 +0000 (20:57 +0200)
Some devices with PCI ID 0x2723, which is supposed to be 22260, are
actually not.  So we need to differentiate them by checking the hw_rev
and change the cfg accordingly.

Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/iwl-csr.h
drivers/net/wireless/intel/iwlwifi/pcie/trans.c

index caa5806..42af421 100644 (file)
@@ -325,6 +325,7 @@ enum {
 #define CSR_HW_REV_TYPE_7265D          (0x0000210)
 #define CSR_HW_REV_TYPE_NONE           (0x00001F0)
 #define CSR_HW_REV_TYPE_QNJ            (0x0000360)
+#define CSR_HW_REV_TYPE_QNJ_B0         (0x0000364)
 #define CSR_HW_REV_TYPE_HR_CDB         (0x0000340)
 
 /* RF_ID value */
index fc2f98f..633444d 100644 (file)
@@ -3569,6 +3569,8 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
                }
        }
 
+       IWL_DEBUG_INFO(trans, "HW REV: 0x%0x\n", trans->hw_rev);
+
        /*
         * 9000-series integrated A-step has a problem with suspend/resume
         * and sometimes even causes the whole platform to get stuck. This
@@ -3603,7 +3605,8 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
                }
        } else if (CSR_HW_RF_ID_TYPE_CHIP_ID(trans->hw_rf_id) ==
                   CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_HR) &&
-                  trans->cfg != &iwl22260_2ax_cfg) {
+                  (trans->cfg != &iwl22260_2ax_cfg ||
+                   trans->hw_rev == CSR_HW_REV_TYPE_QNJ_B0)) {
                u32 hw_status;
 
                hw_status = iwl_read_prph(trans, UMAG_GEN_HW_STATUS);