]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 28 Nov 2017 09:12:09 +0000 (10:12 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 28 Nov 2017 09:12:09 +0000 (10:12 +0100)
added patches:
iwlwifi-add-a-new-a000-device.patch
iwlwifi-add-new-cards-for-8260-series.patch
iwlwifi-add-new-cards-for-8265-series.patch
iwlwifi-add-new-cards-for-a000-series.patch
iwlwifi-fix-pci-ids-and-configuration-mapping-for-9000-series.patch
iwlwifi-fix-wrong-struct-for-a000-device.patch
iwlwifi-mvm-support-version-7-of-the-scan_req_umac-fw-command.patch
iwlwifi-pcie-sort-ids-for-the-9000-series-for-easier-comparisons.patch

queue-4.14/iwlwifi-add-a-new-a000-device.patch [new file with mode: 0644]
queue-4.14/iwlwifi-add-new-cards-for-8260-series.patch [new file with mode: 0644]
queue-4.14/iwlwifi-add-new-cards-for-8265-series.patch [new file with mode: 0644]
queue-4.14/iwlwifi-add-new-cards-for-a000-series.patch [new file with mode: 0644]
queue-4.14/iwlwifi-fix-pci-ids-and-configuration-mapping-for-9000-series.patch [new file with mode: 0644]
queue-4.14/iwlwifi-fix-wrong-struct-for-a000-device.patch [new file with mode: 0644]
queue-4.14/iwlwifi-mvm-support-version-7-of-the-scan_req_umac-fw-command.patch [new file with mode: 0644]
queue-4.14/iwlwifi-pcie-sort-ids-for-the-9000-series-for-easier-comparisons.patch [new file with mode: 0644]
queue-4.14/series

diff --git a/queue-4.14/iwlwifi-add-a-new-a000-device.patch b/queue-4.14/iwlwifi-add-a-new-a000-device.patch
new file mode 100644 (file)
index 0000000..b4cafa6
--- /dev/null
@@ -0,0 +1,30 @@
+From d048b36b9654c4e0cf0d3576be2d1ed2a3084c6f Mon Sep 17 00:00:00 2001
+From: Oren Givon <oren.givon@intel.com>
+Date: Thu, 31 Aug 2017 13:15:09 +0300
+Subject: iwlwifi: add a new a000 device
+
+From: Oren Givon <oren.givon@intel.com>
+
+commit d048b36b9654c4e0cf0d3576be2d1ed2a3084c6f upstream.
+
+Add a new a000 device with PCI ID (0x2720, 0x0030).
+
+Signed-off-by: Oren Givon <oren.givon@intel.com>
+Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
+Cc: Thomas Backlund <tmb@mageia.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/intel/iwlwifi/pcie/drv.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
++++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
+@@ -577,6 +577,7 @@ static const struct pci_device_id iwl_hw
+       {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)},
+ #endif /* CONFIG_IWLMVM */
diff --git a/queue-4.14/iwlwifi-add-new-cards-for-8260-series.patch b/queue-4.14/iwlwifi-add-new-cards-for-8260-series.patch
new file mode 100644 (file)
index 0000000..65637cd
--- /dev/null
@@ -0,0 +1,39 @@
+From d669fc2d42a43ee0abcf2396df6e9c5a124aa984 Mon Sep 17 00:00:00 2001
+From: Ihab Zhaika <ihab.zhaika@intel.com>
+Date: Tue, 24 Oct 2017 17:36:43 +0300
+Subject: iwlwifi: add new cards for 8260 series
+
+From: Ihab Zhaika <ihab.zhaika@intel.com>
+
+commit d669fc2d42a43ee0abcf2396df6e9c5a124aa984 upstream.
+
+add three new PCI ID'S for 8260 series
+
+Signed-off-by: Ihab Zhaika <ihab.zhaika@intel.com>
+Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
+Cc: Thomas Backlund <tmb@mageia.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/intel/iwlwifi/pcie/drv.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
++++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
+@@ -465,6 +465,8 @@ static const struct pci_device_id iwl_hw
+       {IWL_PCI_DEVICE(0x24F3, 0x9110, iwl8260_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x24F4, 0x8030, iwl8260_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x24F4, 0x9030, iwl8260_2ac_cfg)},
++      {IWL_PCI_DEVICE(0x24F4, 0xC030, iwl8260_2ac_cfg)},
++      {IWL_PCI_DEVICE(0x24F4, 0xD030, iwl8260_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x24F3, 0x8130, iwl8260_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x24F3, 0x9130, iwl8260_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x24F3, 0x8132, iwl8260_2ac_cfg)},
+@@ -483,6 +485,7 @@ static const struct pci_device_id iwl_hw
+       {IWL_PCI_DEVICE(0x24F3, 0x0950, iwl8260_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x24F3, 0x0930, iwl8260_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x24F3, 0x0000, iwl8265_2ac_cfg)},
++      {IWL_PCI_DEVICE(0x24F3, 0x4010, iwl8260_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x24FD, 0x0010, iwl8265_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x24FD, 0x0110, iwl8265_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x24FD, 0x1110, iwl8265_2ac_cfg)},
diff --git a/queue-4.14/iwlwifi-add-new-cards-for-8265-series.patch b/queue-4.14/iwlwifi-add-new-cards-for-8265-series.patch
new file mode 100644 (file)
index 0000000..7a33366
--- /dev/null
@@ -0,0 +1,31 @@
+From 7cddbef445631109bd530ce7cdacaa04ff0a62d1 Mon Sep 17 00:00:00 2001
+From: Ihab Zhaika <ihab.zhaika@intel.com>
+Date: Tue, 24 Oct 2017 17:38:12 +0300
+Subject: iwlwifi: add new cards for 8265 series
+
+From: Ihab Zhaika <ihab.zhaika@intel.com>
+
+commit 7cddbef445631109bd530ce7cdacaa04ff0a62d1 upstream.
+
+add two new PCI ID'S for 8265 series
+
+Signed-off-by: Ihab Zhaika <ihab.zhaika@intel.com>
+Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
+Cc: Thomas Backlund <tmb@mageia.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/intel/iwlwifi/pcie/drv.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
++++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
+@@ -508,6 +508,8 @@ static const struct pci_device_id iwl_hw
+       {IWL_PCI_DEVICE(0x24FD, 0x3E01, iwl8275_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x24FD, 0x1012, iwl8275_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x24FD, 0x0012, iwl8275_2ac_cfg)},
++      {IWL_PCI_DEVICE(0x24FD, 0x0014, iwl8265_2ac_cfg)},
++      {IWL_PCI_DEVICE(0x24FD, 0x9074, iwl8265_2ac_cfg)},
+ /* 9000 Series */
+       {IWL_PCI_DEVICE(0x2526, 0x0000, iwl9260_2ac_cfg)},
diff --git a/queue-4.14/iwlwifi-add-new-cards-for-a000-series.patch b/queue-4.14/iwlwifi-add-new-cards-for-a000-series.patch
new file mode 100644 (file)
index 0000000..0cdc205
--- /dev/null
@@ -0,0 +1,34 @@
+From 57b36f7fcb39c5eae8c1f463699f747af69643ba Mon Sep 17 00:00:00 2001
+From: Ihab Zhaika <ihab.zhaika@intel.com>
+Date: Tue, 24 Oct 2017 17:04:24 +0300
+Subject: iwlwifi: add new cards for a000 series
+
+From: Ihab Zhaika <ihab.zhaika@intel.com>
+
+commit 57b36f7fcb39c5eae8c1f463699f747af69643ba upstream.
+
+add four new PCI ID'S for a000 series
+
+Signed-off-by: Ihab Zhaika <ihab.zhaika@intel.com>
+Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
+Cc: Thomas Backlund <tmb@mageia.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/intel/iwlwifi/pcie/drv.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
++++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
+@@ -579,6 +579,11 @@ static const struct pci_device_id iwl_hw
+       {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)},
++
+ #endif /* CONFIG_IWLMVM */
+       {0}
diff --git a/queue-4.14/iwlwifi-fix-pci-ids-and-configuration-mapping-for-9000-series.patch b/queue-4.14/iwlwifi-fix-pci-ids-and-configuration-mapping-for-9000-series.patch
new file mode 100644 (file)
index 0000000..8deb8ae
--- /dev/null
@@ -0,0 +1,299 @@
+From dbc89253a7e15f8f031fb1eeb956de91204655e3 Mon Sep 17 00:00:00 2001
+From: Luca Coelho <luciano.coelho@intel.com>
+Date: Wed, 15 Nov 2017 18:28:04 +0200
+Subject: iwlwifi: fix PCI IDs and configuration mapping for 9000 series
+
+From: Luca Coelho <luciano.coelho@intel.com>
+
+commit dbc89253a7e15f8f031fb1eeb956de91204655e3 upstream.
+
+A lot of PCI IDs were missing and there were some problems with the
+configuration and firmware selection for devices on the 9000 series.
+Fix the firmware selection by adding files for the B-steps; add
+configuration for some integrated devices; and add a bunch of PCI IDs
+(mostly for integrated devices) that were missing from the driver's
+list.
+
+Without this patch, a lot of devices will not be recognized or will
+try to load the wrong firmware file.
+
+Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
+Cc: Thomas Backlund <tmb@mageia.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/intel/iwlwifi/cfg/9000.c   |   67 +++++++++++-
+ drivers/net/wireless/intel/iwlwifi/iwl-config.h |    5 
+ drivers/net/wireless/intel/iwlwifi/pcie/drv.c   |  132 ++++++++++++++++++------
+ 3 files changed, 170 insertions(+), 34 deletions(-)
+
+--- a/drivers/net/wireless/intel/iwlwifi/cfg/9000.c
++++ b/drivers/net/wireless/intel/iwlwifi/cfg/9000.c
+@@ -72,12 +72,15 @@
+ #define IWL9000_SMEM_OFFSET           0x400000
+ #define IWL9000_SMEM_LEN              0x68000
+-#define  IWL9000_FW_PRE "iwlwifi-9000-pu-a0-jf-a0-"
++#define  IWL9000A_FW_PRE "iwlwifi-9000-pu-a0-jf-a0-"
++#define  IWL9000B_FW_PRE "iwlwifi-9000-pu-b0-jf-b0-"
+ #define  IWL9000RFB_FW_PRE "iwlwifi-9000-pu-a0-jf-b0-"
+ #define  IWL9260A_FW_PRE "iwlwifi-9260-th-a0-jf-a0-"
+ #define  IWL9260B_FW_PRE "iwlwifi-9260-th-b0-jf-b0-"
+-#define IWL9000_MODULE_FIRMWARE(api) \
+-      IWL9000_FW_PRE "-" __stringify(api) ".ucode"
++#define IWL9000A_MODULE_FIRMWARE(api) \
++      IWL9000A_FW_PRE __stringify(api) ".ucode"
++#define IWL9000B_MODULE_FIRMWARE(api) \
++      IWL9000B_FW_PRE __stringify(api) ".ucode"
+ #define IWL9000RFB_MODULE_FIRMWARE(api) \
+       IWL9000RFB_FW_PRE __stringify(api) ".ucode"
+ #define IWL9260A_MODULE_FIRMWARE(api) \
+@@ -193,7 +196,48 @@ const struct iwl_cfg iwl9460_2ac_cfg = {
+       .nvm_ver = IWL9000_NVM_VERSION,
+       .nvm_calib_ver = IWL9000_TX_POWER_VERSION,
+       .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
++};
++
++const struct iwl_cfg iwl9460_2ac_cfg_soc = {
++      .name = "Intel(R) Dual Band Wireless AC 9460",
++      .fw_name_pre = IWL9000A_FW_PRE,
++      .fw_name_pre_b_or_c_step = IWL9000B_FW_PRE,
++      .fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE,
++      IWL_DEVICE_9000,
++      .ht_params = &iwl9000_ht_params,
++      .nvm_ver = IWL9000_NVM_VERSION,
++      .nvm_calib_ver = IWL9000_TX_POWER_VERSION,
++      .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
+       .integrated = true,
++      .soc_latency = 5000,
++};
++
++const struct iwl_cfg iwl9461_2ac_cfg_soc = {
++              .name = "Intel(R) Dual Band Wireless AC 9461",
++              .fw_name_pre = IWL9000A_FW_PRE,
++              .fw_name_pre_b_or_c_step = IWL9000B_FW_PRE,
++              .fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE,
++              IWL_DEVICE_9000,
++              .ht_params = &iwl9000_ht_params,
++              .nvm_ver = IWL9000_NVM_VERSION,
++              .nvm_calib_ver = IWL9000_TX_POWER_VERSION,
++              .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
++              .integrated = true,
++              .soc_latency = 5000,
++};
++
++const struct iwl_cfg iwl9462_2ac_cfg_soc = {
++              .name = "Intel(R) Dual Band Wireless AC 9462",
++              .fw_name_pre = IWL9000A_FW_PRE,
++              .fw_name_pre_b_or_c_step = IWL9000B_FW_PRE,
++              .fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE,
++              IWL_DEVICE_9000,
++              .ht_params = &iwl9000_ht_params,
++              .nvm_ver = IWL9000_NVM_VERSION,
++              .nvm_calib_ver = IWL9000_TX_POWER_VERSION,
++              .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
++              .integrated = true,
++              .soc_latency = 5000,
+ };
+ const struct iwl_cfg iwl9560_2ac_cfg = {
+@@ -205,10 +249,23 @@ const struct iwl_cfg iwl9560_2ac_cfg = {
+       .nvm_ver = IWL9000_NVM_VERSION,
+       .nvm_calib_ver = IWL9000_TX_POWER_VERSION,
+       .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
+-      .integrated = true,
+ };
+-MODULE_FIRMWARE(IWL9000_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
++const struct iwl_cfg iwl9560_2ac_cfg_soc = {
++      .name = "Intel(R) Dual Band Wireless AC 9560",
++      .fw_name_pre = IWL9000A_FW_PRE,
++      .fw_name_pre_b_or_c_step = IWL9000B_FW_PRE,
++      .fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE,
++      IWL_DEVICE_9000,
++      .ht_params = &iwl9000_ht_params,
++      .nvm_ver = IWL9000_NVM_VERSION,
++      .nvm_calib_ver = IWL9000_TX_POWER_VERSION,
++      .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
++      .integrated = true,
++      .soc_latency = 5000,
++};
++MODULE_FIRMWARE(IWL9000A_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
++MODULE_FIRMWARE(IWL9000B_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
+ MODULE_FIRMWARE(IWL9000RFB_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
+ MODULE_FIRMWARE(IWL9260A_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
+ MODULE_FIRMWARE(IWL9260B_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
+--- a/drivers/net/wireless/intel/iwlwifi/iwl-config.h
++++ b/drivers/net/wireless/intel/iwlwifi/iwl-config.h
+@@ -364,6 +364,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,
+@@ -471,6 +472,10 @@ 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 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 iwla000_2ac_cfg_hr;
+ extern const struct iwl_cfg iwla000_2ac_cfg_hr_cdb;
+ extern const struct iwl_cfg iwla000_2ac_cfg_jf;
+--- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
++++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
+@@ -533,47 +533,121 @@ static const struct pci_device_id iwl_hw
+       {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)},
diff --git a/queue-4.14/iwlwifi-fix-wrong-struct-for-a000-device.patch b/queue-4.14/iwlwifi-fix-wrong-struct-for-a000-device.patch
new file mode 100644 (file)
index 0000000..1452305
--- /dev/null
@@ -0,0 +1,33 @@
+From f7f5873bbd45a67d3097dfb55237ade2ad520184 Mon Sep 17 00:00:00 2001
+From: Oren Givon <oren.givon@intel.com>
+Date: Mon, 28 Aug 2017 10:33:38 +0300
+Subject: iwlwifi: fix wrong struct for a000 device
+
+From: Oren Givon <oren.givon@intel.com>
+
+commit f7f5873bbd45a67d3097dfb55237ade2ad520184 upstream.
+
+The PCI ID (0x2720, 0x0070) was set with the config struct
+iwla000_2ax_cfg_hr instead of iwla000_2ac_cfg_hr_cdb.
+
+Fixes: 175b87c69253 ("iwlwifi: add the new a000_2ax series")
+Signed-off-by: Oren Givon <oren.givon@intel.com>
+Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
+Cc: Thomas Backlund <tmb@mageia.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/intel/iwlwifi/pcie/drv.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
++++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
+@@ -576,7 +576,7 @@ static const struct pci_device_id iwl_hw
+       {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_2ax_cfg_hr)},
++      {IWL_PCI_DEVICE(0x2720, 0x0070, iwla000_2ac_cfg_hr_cdb)},
+       {IWL_PCI_DEVICE(0x2720, 0x1080, iwla000_2ax_cfg_hr)},
+ #endif /* CONFIG_IWLMVM */
diff --git a/queue-4.14/iwlwifi-mvm-support-version-7-of-the-scan_req_umac-fw-command.patch b/queue-4.14/iwlwifi-mvm-support-version-7-of-the-scan_req_umac-fw-command.patch
new file mode 100644 (file)
index 0000000..e15e2ec
--- /dev/null
@@ -0,0 +1,319 @@
+From dac4df1c5f2c34903f61b1bc4fc722e31b4199e7 Mon Sep 17 00:00:00 2001
+From: Luca Coelho <luciano.coelho@intel.com>
+Date: Fri, 10 Nov 2017 14:03:36 +0200
+Subject: iwlwifi: mvm: support version 7 of the SCAN_REQ_UMAC FW command
+
+From: Luca Coelho <luciano.coelho@intel.com>
+
+commit dac4df1c5f2c34903f61b1bc4fc722e31b4199e7 upstream.
+
+Newer firmware versions (such as iwlwifi-8000C-34.ucode) have
+introduced an API change in the SCAN_REQ_UMAC command that is not
+backwards compatible.  The driver needs to detect and use the new API
+format when the firmware reports it, otherwise the scan command will
+not work properly, causing a command timeout.
+
+Fix this by adding a TLV that tells the driver that the new API is in
+use and use the correct structures for it.
+
+This fixes https://bugzilla.kernel.org/show_bug.cgi?id=197591
+
+Fixes: d7a5b3e9e42e ("iwlwifi: mvm: bump API to 34 for 8000 and up")
+Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
+Cc: Thomas Backlund <tmb@mageia.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/intel/iwlwifi/fw/api/scan.h |   59 ++++++++++++---
+ drivers/net/wireless/intel/iwlwifi/fw/file.h     |    1 
+ drivers/net/wireless/intel/iwlwifi/mvm/mvm.h     |    6 +
+ drivers/net/wireless/intel/iwlwifi/mvm/scan.c    |   86 +++++++++++++++++------
+ 4 files changed, 118 insertions(+), 34 deletions(-)
+
+--- a/drivers/net/wireless/intel/iwlwifi/fw/api/scan.h
++++ b/drivers/net/wireless/intel/iwlwifi/fw/api/scan.h
+@@ -531,6 +531,8 @@ struct iwl_scan_config_v1 {
+ } __packed; /* SCAN_CONFIG_DB_CMD_API_S */
+ #define SCAN_TWO_LMACS 2
++#define SCAN_LB_LMAC_IDX 0
++#define SCAN_HB_LMAC_IDX 1
+ struct iwl_scan_config {
+       __le32 flags;
+@@ -578,6 +580,7 @@ enum iwl_umac_scan_general_flags {
+       IWL_UMAC_SCAN_GEN_FLAGS_MATCH                   = BIT(9),
+       IWL_UMAC_SCAN_GEN_FLAGS_EXTENDED_DWELL          = BIT(10),
+       IWL_UMAC_SCAN_GEN_FLAGS_LMAC2_FRAGMENTED        = BIT(11),
++      IWL_UMAC_SCAN_GEN_FLAGS_ADAPTIVE_DWELL          = BIT(13),
+ };
+ /**
+@@ -631,12 +634,17 @@ struct iwl_scan_req_umac_tail {
+  * @uid: scan id, &enum iwl_umac_scan_uid_offsets
+  * @ooc_priority: out of channel priority - &enum iwl_scan_priority
+  * @general_flags: &enum iwl_umac_scan_general_flags
+- * @reserved2: for future use and alignment
+  * @scan_start_mac_id: report the scan start TSF time according to this mac TSF
+  * @extended_dwell: dwell time for channels 1, 6 and 11
+  * @active_dwell: dwell time for active scan
+  * @passive_dwell: dwell time for passive scan
+  * @fragmented_dwell: dwell time for fragmented passive scan
++ * @adwell_default_n_aps: for adaptive dwell the default number of APs
++ *    per channel
++ * @adwell_default_n_aps_social: for adaptive dwell the default
++ *    number of APs per social (1,6,11) channel
++ * @adwell_max_budget: for adaptive dwell the maximal budget of TU to be added
++ *    to total scan time
+  * @max_out_time: max out of serving channel time, per LMAC - for CDB there
+  *    are 2 LMACs
+  * @suspend_time: max suspend time, per LMAC - for CDB there are 2 LMACs
+@@ -644,6 +652,8 @@ struct iwl_scan_req_umac_tail {
+  * @channel_flags: &enum iwl_scan_channel_flags
+  * @n_channels: num of channels in scan request
+  * @reserved: for future use and alignment
++ * @reserved2: for future use and alignment
++ * @reserved3: for future use and alignment
+  * @data: &struct iwl_scan_channel_cfg_umac and
+  *    &struct iwl_scan_req_umac_tail
+  */
+@@ -651,41 +661,64 @@ struct iwl_scan_req_umac {
+       __le32 flags;
+       __le32 uid;
+       __le32 ooc_priority;
+-      /* SCAN_GENERAL_PARAMS_API_S_VER_4 */
+       __le16 general_flags;
+-      u8 reserved2;
++      u8 reserved;
+       u8 scan_start_mac_id;
+-      u8 extended_dwell;
+-      u8 active_dwell;
+-      u8 passive_dwell;
+-      u8 fragmented_dwell;
+       union {
+               struct {
++                      u8 extended_dwell;
++                      u8 active_dwell;
++                      u8 passive_dwell;
++                      u8 fragmented_dwell;
+                       __le32 max_out_time;
+                       __le32 suspend_time;
+                       __le32 scan_priority;
+-                      /* SCAN_CHANNEL_PARAMS_API_S_VER_4 */
++                      /* SCAN_CHANNEL_PARAMS_API_S_VER_1 */
+                       u8 channel_flags;
+                       u8 n_channels;
+-                      __le16 reserved;
++                      __le16 reserved2;
+                       u8 data[];
+               } v1; /* SCAN_REQUEST_CMD_UMAC_API_S_VER_1 */
+               struct {
++                      u8 extended_dwell;
++                      u8 active_dwell;
++                      u8 passive_dwell;
++                      u8 fragmented_dwell;
+                       __le32 max_out_time[SCAN_TWO_LMACS];
+                       __le32 suspend_time[SCAN_TWO_LMACS];
+                       __le32 scan_priority;
+-                      /* SCAN_CHANNEL_PARAMS_API_S_VER_4 */
++                      /* SCAN_CHANNEL_PARAMS_API_S_VER_1 */
+                       u8 channel_flags;
+                       u8 n_channels;
+-                      __le16 reserved;
++                      __le16 reserved2;
+                       u8 data[];
+               } v6; /* SCAN_REQUEST_CMD_UMAC_API_S_VER_6 */
++              struct {
++                      u8 active_dwell;
++                      u8 passive_dwell;
++                      u8 fragmented_dwell;
++                      u8 adwell_default_n_aps;
++                      u8 adwell_default_n_aps_social;
++                      u8 reserved3;
++                      __le16 adwell_max_budget;
++                      __le32 max_out_time[SCAN_TWO_LMACS];
++                      __le32 suspend_time[SCAN_TWO_LMACS];
++                      __le32 scan_priority;
++                      /* SCAN_CHANNEL_PARAMS_API_S_VER_1 */
++                      u8 channel_flags;
++                      u8 n_channels;
++                      __le16 reserved2;
++                      u8 data[];
++              } v7; /* SCAN_REQUEST_CMD_UMAC_API_S_VER_7 */
+       };
+ } __packed;
+-#define IWL_SCAN_REQ_UMAC_SIZE sizeof(struct iwl_scan_req_umac)
++#define IWL_SCAN_REQ_UMAC_SIZE_V7 sizeof(struct iwl_scan_req_umac)
++#define IWL_SCAN_REQ_UMAC_SIZE_V6 (sizeof(struct iwl_scan_req_umac) - \
++                                 2 * sizeof(u8) - sizeof(__le16))
+ #define IWL_SCAN_REQ_UMAC_SIZE_V1 (sizeof(struct iwl_scan_req_umac) - \
+-                                 2 * sizeof(__le32))
++                                 2 * sizeof(__le32) - 2 * sizeof(u8) - \
++                                 sizeof(__le16))
+ /**
+  * struct iwl_umac_scan_abort
+--- a/drivers/net/wireless/intel/iwlwifi/fw/file.h
++++ b/drivers/net/wireless/intel/iwlwifi/fw/file.h
+@@ -262,6 +262,7 @@ 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,
+--- a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
++++ b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
+@@ -1124,6 +1124,12 @@ static inline bool iwl_mvm_is_d0i3_suppo
+                           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
+--- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
++++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
+@@ -130,6 +130,19 @@ struct iwl_mvm_scan_params {
+       u32 measurement_dwell;
+ };
++static inline void *iwl_mvm_get_scan_req_umac_data(struct iwl_mvm *mvm)
++{
++      struct iwl_scan_req_umac *cmd = mvm->scan_cmd;
++
++      if (iwl_mvm_is_adaptive_dwell_supported(mvm))
++              return (void *)&cmd->v7.data;
++
++      if (iwl_mvm_has_new_tx_api(mvm))
++              return (void *)&cmd->v6.data;
++
++      return (void *)&cmd->v1.data;
++}
++
+ static u8 iwl_mvm_scan_rx_ant(struct iwl_mvm *mvm)
+ {
+       if (mvm->scan_rx_ant != ANT_NONE)
+@@ -1075,25 +1088,57 @@ static void iwl_mvm_scan_umac_dwell(stru
+ {
+       struct iwl_mvm_scan_timing_params *timing = &scan_timing[params->type];
++      if (iwl_mvm_is_regular_scan(params))
++              cmd->ooc_priority = cpu_to_le32(IWL_SCAN_PRIORITY_EXT_6);
++      else
++              cmd->ooc_priority = cpu_to_le32(IWL_SCAN_PRIORITY_EXT_2);
++
++      if (iwl_mvm_is_adaptive_dwell_supported(mvm)) {
++              if (params->measurement_dwell) {
++                      cmd->v7.active_dwell = params->measurement_dwell;
++                      cmd->v7.passive_dwell = params->measurement_dwell;
++              } else {
++                      cmd->v7.active_dwell = IWL_SCAN_DWELL_ACTIVE;
++                      cmd->v7.passive_dwell = IWL_SCAN_DWELL_PASSIVE;
++              }
++              cmd->v7.fragmented_dwell = IWL_SCAN_DWELL_FRAGMENTED;
++
++              cmd->v7.scan_priority = cpu_to_le32(IWL_SCAN_PRIORITY_EXT_6);
++              cmd->v7.max_out_time[SCAN_LB_LMAC_IDX] =
++                      cpu_to_le32(timing->max_out_time);
++              cmd->v7.suspend_time[SCAN_LB_LMAC_IDX] =
++                      cpu_to_le32(timing->suspend_time);
++              if (iwl_mvm_is_cdb_supported(mvm)) {
++                      cmd->v7.max_out_time[SCAN_HB_LMAC_IDX] =
++                              cpu_to_le32(timing->max_out_time);
++                      cmd->v7.suspend_time[SCAN_HB_LMAC_IDX] =
++                              cpu_to_le32(timing->suspend_time);
++              }
++
++              return;
++      }
++
+       if (params->measurement_dwell) {
+-              cmd->active_dwell = params->measurement_dwell;
+-              cmd->passive_dwell = params->measurement_dwell;
+-              cmd->extended_dwell = params->measurement_dwell;
++              cmd->v1.active_dwell = params->measurement_dwell;
++              cmd->v1.passive_dwell = params->measurement_dwell;
++              cmd->v1.extended_dwell = params->measurement_dwell;
+       } else {
+-              cmd->active_dwell = IWL_SCAN_DWELL_ACTIVE;
+-              cmd->passive_dwell = IWL_SCAN_DWELL_PASSIVE;
+-              cmd->extended_dwell = IWL_SCAN_DWELL_EXTENDED;
++              cmd->v1.active_dwell = IWL_SCAN_DWELL_ACTIVE;
++              cmd->v1.passive_dwell = IWL_SCAN_DWELL_PASSIVE;
++              cmd->v1.extended_dwell = IWL_SCAN_DWELL_EXTENDED;
+       }
+-      cmd->fragmented_dwell = IWL_SCAN_DWELL_FRAGMENTED;
++      cmd->v1.fragmented_dwell = IWL_SCAN_DWELL_FRAGMENTED;
+       if (iwl_mvm_has_new_tx_api(mvm)) {
+               cmd->v6.scan_priority = cpu_to_le32(IWL_SCAN_PRIORITY_EXT_6);
+-              cmd->v6.max_out_time[0] = cpu_to_le32(timing->max_out_time);
+-              cmd->v6.suspend_time[0] = cpu_to_le32(timing->suspend_time);
++              cmd->v6.max_out_time[SCAN_LB_LMAC_IDX] =
++                      cpu_to_le32(timing->max_out_time);
++              cmd->v6.suspend_time[SCAN_LB_LMAC_IDX] =
++                      cpu_to_le32(timing->suspend_time);
+               if (iwl_mvm_is_cdb_supported(mvm)) {
+-                      cmd->v6.max_out_time[1] =
++                      cmd->v6.max_out_time[SCAN_HB_LMAC_IDX] =
+                               cpu_to_le32(timing->max_out_time);
+-                      cmd->v6.suspend_time[1] =
++                      cmd->v6.suspend_time[SCAN_HB_LMAC_IDX] =
+                               cpu_to_le32(timing->suspend_time);
+               }
+       } else {
+@@ -1102,11 +1147,6 @@ static void iwl_mvm_scan_umac_dwell(stru
+               cmd->v1.scan_priority =
+                       cpu_to_le32(IWL_SCAN_PRIORITY_EXT_6);
+       }
+-
+-      if (iwl_mvm_is_regular_scan(params))
+-              cmd->ooc_priority = cpu_to_le32(IWL_SCAN_PRIORITY_EXT_6);
+-      else
+-              cmd->ooc_priority = cpu_to_le32(IWL_SCAN_PRIORITY_EXT_2);
+ }
+ static void
+@@ -1178,8 +1218,7 @@ static int iwl_mvm_scan_umac(struct iwl_
+                            int type)
+ {
+       struct iwl_scan_req_umac *cmd = mvm->scan_cmd;
+-      void *cmd_data = iwl_mvm_has_new_tx_api(mvm) ?
+-                       (void *)&cmd->v6.data : (void *)&cmd->v1.data;
++      void *cmd_data = iwl_mvm_get_scan_req_umac_data(mvm);
+       struct iwl_scan_req_umac_tail *sec_part = cmd_data +
+               sizeof(struct iwl_scan_channel_cfg_umac) *
+                       mvm->fw->ucode_capa.n_scan_channels;
+@@ -1216,7 +1255,10 @@ static int iwl_mvm_scan_umac(struct iwl_
+                               IWL_SCAN_CHANNEL_FLAG_EBS_ACCURATE |
+                               IWL_SCAN_CHANNEL_FLAG_CACHE_ADD;
+-      if (iwl_mvm_has_new_tx_api(mvm)) {
++      if (iwl_mvm_is_adaptive_dwell_supported(mvm)) {
++              cmd->v7.channel_flags = channel_flags;
++              cmd->v7.n_channels = params->n_channels;
++      } else if (iwl_mvm_has_new_tx_api(mvm)) {
+               cmd->v6.channel_flags = channel_flags;
+               cmd->v6.n_channels = params->n_channels;
+       } else {
+@@ -1661,8 +1703,10 @@ int iwl_mvm_scan_size(struct iwl_mvm *mv
+ {
+       int base_size = IWL_SCAN_REQ_UMAC_SIZE_V1;
+-      if (iwl_mvm_has_new_tx_api(mvm))
+-              base_size = IWL_SCAN_REQ_UMAC_SIZE;
++      if (iwl_mvm_is_adaptive_dwell_supported(mvm))
++              base_size = IWL_SCAN_REQ_UMAC_SIZE_V7;
++      else if (iwl_mvm_has_new_tx_api(mvm))
++              base_size = IWL_SCAN_REQ_UMAC_SIZE_V6;
+       if (fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_UMAC_SCAN))
+               return base_size +
diff --git a/queue-4.14/iwlwifi-pcie-sort-ids-for-the-9000-series-for-easier-comparisons.patch b/queue-4.14/iwlwifi-pcie-sort-ids-for-the-9000-series-for-easier-comparisons.patch
new file mode 100644 (file)
index 0000000..dc2d8d0
--- /dev/null
@@ -0,0 +1,131 @@
+From 1105a337375258515ed09b92a83fd7bfd6775958 Mon Sep 17 00:00:00 2001
+From: Luca Coelho <luciano.coelho@intel.com>
+Date: Thu, 12 Oct 2017 11:20:50 +0300
+Subject: iwlwifi: pcie: sort IDs for the 9000 series for easier comparisons
+
+From: Luca Coelho <luciano.coelho@intel.com>
+
+commit 1105a337375258515ed09b92a83fd7bfd6775958 upstream.
+
+It's hard to find values that are missing in the list, so sorting the
+values and comparing them makes it much easier.  To simplify this
+task, sort the devices in the list.
+
+Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
+Cc: Thomas Backlund <tmb@mageia.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/intel/iwlwifi/pcie/drv.c |   84 +++++++++++++-------------
+ 1 file changed, 42 insertions(+), 42 deletions(-)
+
+--- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
++++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
+@@ -510,65 +510,65 @@ static const struct pci_device_id iwl_hw
+       {IWL_PCI_DEVICE(0x24FD, 0x0012, iwl8275_2ac_cfg)},
+ /* 9000 Series */
+-      {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(0x2526, 0x0000, iwl9260_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x2526, 0x0010, iwl9260_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x2526, 0x0014, iwl9260_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0xA014, iwl9260_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x4010, iwl9260_2ac_cfg)},
++      {IWL_PCI_DEVICE(0x2526, 0x0030, iwl9560_2ac_cfg)},
++      {IWL_PCI_DEVICE(0x2526, 0x0034, iwl9560_2ac_cfg)},
++      {IWL_PCI_DEVICE(0x2526, 0x0038, iwl9560_2ac_cfg)},
++      {IWL_PCI_DEVICE(0x2526, 0x003C, iwl9560_2ac_cfg)},
++      {IWL_PCI_DEVICE(0x2526, 0x0060, iwl9460_2ac_cfg)},
++      {IWL_PCI_DEVICE(0x2526, 0x0064, iwl9460_2ac_cfg)},
++      {IWL_PCI_DEVICE(0x2526, 0x00A0, iwl9460_2ac_cfg)},
++      {IWL_PCI_DEVICE(0x2526, 0x00A4, iwl9460_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x2526, 0x0210, iwl9260_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x2526, 0x0214, iwl9260_2ac_cfg)},
++      {IWL_PCI_DEVICE(0x2526, 0x0230, iwl9560_2ac_cfg)},
++      {IWL_PCI_DEVICE(0x2526, 0x0234, iwl9560_2ac_cfg)},
++      {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, 0x02A0, iwl9460_2ac_cfg)},
++      {IWL_PCI_DEVICE(0x2526, 0x02A4, iwl9460_2ac_cfg)},
++      {IWL_PCI_DEVICE(0x2526, 0x1030, iwl9560_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x2526, 0x1410, iwl9270_2ac_cfg)},
++      {IWL_PCI_DEVICE(0x2526, 0x1420, iwl9460_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x2526, 0x1610, iwl9270_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x9DF0, 0x0A10, iwl9460_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(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, 0x0410, iwl9460_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x9DF0, 0x0610, iwl9460_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x9DF0, 0x0310, iwl9460_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x9DF0, 0x0000, iwl9460_2ac_cfg)},
++      {IWL_PCI_DEVICE(0x9DF0, 0x0410, iwl9460_2ac_cfg)},
+       {IWL_PCI_DEVICE(0x9DF0, 0x0510, iwl9460_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x9DF0, 0x2010, iwl9460_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x1420, 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(0x30DC, 0x0060, iwl9460_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x0060, iwl9460_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x0260, iwl9460_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x0064, iwl9460_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x00A4, iwl9460_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x40A4, iwl9460_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x02A4, iwl9460_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x00A0, iwl9460_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x02A0, iwl9460_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x9DF0, 0x0060, iwl9460_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0xA370, 0x0060, iwl9460_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x31DC, 0x0060, iwl9460_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x0030, iwl9560_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x4030, iwl9560_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x0230, iwl9560_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x0234, iwl9560_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x0238, iwl9560_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x023C, iwl9560_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x9DF0, 0x0030, iwl9560_2ac_cfg)},
+       {IWL_PCI_DEVICE(0xA370, 0x0030, iwl9560_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x31DC, 0x0030, iwl9560_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x1030, iwl9560_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0xA370, 0x1030, iwl9560_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x9DF0, 0x0034, iwl9560_2ac_cfg)},
+       {IWL_PCI_DEVICE(0xA370, 0x0034, iwl9560_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x31DC, 0x0034, iwl9560_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x0038, iwl9560_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x003C, iwl9560_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x9DF0, 0x0038, iwl9560_2ac_cfg)},
+       {IWL_PCI_DEVICE(0xA370, 0x0038, iwl9560_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x31DC, 0x0038, iwl9560_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x9DF0, 0x003C, iwl9560_2ac_cfg)},
+       {IWL_PCI_DEVICE(0xA370, 0x003C, iwl9560_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x31DC, 0x003C, iwl9560_2ac_cfg)},
+-      {IWL_PCI_DEVICE(0x2526, 0x0034, iwl9560_2ac_cfg)},
++      {IWL_PCI_DEVICE(0xA370, 0x0060, iwl9460_2ac_cfg)},
++      {IWL_PCI_DEVICE(0xA370, 0x1030, iwl9560_2ac_cfg)},
+ /* a000 Series */
+       {IWL_PCI_DEVICE(0x2720, 0x0A10, iwla000_2ac_cfg_hr_cdb)},
index 8619b1390bb071261027d774a31b69f6a8ca73a7..d8c401f02b1ca9e42954dbef543a9f00d0077fe0 100644 (file)
@@ -178,3 +178,11 @@ media-venus-fix-wrong-size-on-dma_free.patch
 media-venus-venc-fix-bytesused-v4l2_plane-field.patch
 media-venus-reimplement-decoder-stop-command.patch
 arm64-dts-meson-gxl-add-alternate-arm-trusted-firmware-reserved-memory-zone.patch
+iwlwifi-fix-wrong-struct-for-a000-device.patch
+iwlwifi-add-a-new-a000-device.patch
+iwlwifi-pcie-sort-ids-for-the-9000-series-for-easier-comparisons.patch
+iwlwifi-add-new-cards-for-a000-series.patch
+iwlwifi-add-new-cards-for-8265-series.patch
+iwlwifi-add-new-cards-for-8260-series.patch
+iwlwifi-fix-pci-ids-and-configuration-mapping-for-9000-series.patch
+iwlwifi-mvm-support-version-7-of-the-scan_req_umac-fw-command.patch