From dd6077c8eed7e05c2c9c81f1ad5c239067ab7ecb Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Jan 16 2019 20:00:47 +0000 Subject: Merge branch 'users/oneukum/SLE15/for-next' into SLE15 Pull iwlwifi fixes from Oliver Neukum --- diff --git a/blacklist.conf b/blacklist.conf index d1699c0..fea2831 100644 --- a/blacklist.conf +++ b/blacklist.conf @@ -981,3 +981,5 @@ af27d9403f5b80685b79c88425086edccecaf711 # Warning applies to unsupported config 613a5eb5677923fdaecfa582738c7bcf80abe186 # Problem affects debugging builds only and is harmless d50d82faa0c964e31f7a946ba8aba7c715ca7ab0 # Problem affects SLUB which is not enabled in kconfig 8363dae23463df5d27aa3f3430ad64f5c8fcee3e # Not applicable for SLE15 +6508497cbdc70b92130fbca57402af6a94e05d20 # patch misattributed +9ff067ff4c4a08d412e51307f11f7de3fb3045e7 # cosmetic cleanup diff --git a/patches.drivers/iwlwifi-fix-wrong-WGDS_WIFI_DATA_SIZE.patch b/patches.drivers/iwlwifi-fix-wrong-WGDS_WIFI_DATA_SIZE.patch new file mode 100644 index 0000000..2b451b0 --- /dev/null +++ b/patches.drivers/iwlwifi-fix-wrong-WGDS_WIFI_DATA_SIZE.patch @@ -0,0 +1,83 @@ +From 66e839030fd698586734e017fd55c4f2a89dba0b Mon Sep 17 00:00:00 2001 +From: Matt Chen +Date: Fri, 3 Aug 2018 14:29:20 +0800 +Subject: [PATCH] iwlwifi: fix wrong WGDS_WIFI_DATA_SIZE +Git-commit: 66e839030fd698586734e017fd55c4f2a89dba0b +Patch-mainline: v4.20 +References: bsc#1119086 + +From coreboot/BIOS: +Name ("WGDS", Package() { + Revision, + Package() { + DomainType, // 0x7:WiFi ==> We miss this one. + WgdsWiFiSarDeltaGroup1PowerMax1, // Group 1 FCC 2400 Max + WgdsWiFiSarDeltaGroup1PowerChainA1, // Group 1 FCC 2400 A Offset + WgdsWiFiSarDeltaGroup1PowerChainB1, // Group 1 FCC 2400 B Offset + WgdsWiFiSarDeltaGroup1PowerMax2, // Group 1 FCC 5200 Max + WgdsWiFiSarDeltaGroup1PowerChainA2, // Group 1 FCC 5200 A Offset + WgdsWiFiSarDeltaGroup1PowerChainB2, // Group 1 FCC 5200 B Offset + WgdsWiFiSarDeltaGroup2PowerMax1, // Group 2 EC Jap 2400 Max + WgdsWiFiSarDeltaGroup2PowerChainA1, // Group 2 EC Jap 2400 A Offset + WgdsWiFiSarDeltaGroup2PowerChainB1, // Group 2 EC Jap 2400 B Offset + WgdsWiFiSarDeltaGroup2PowerMax2, // Group 2 EC Jap 5200 Max + WgdsWiFiSarDeltaGroup2PowerChainA2, // Group 2 EC Jap 5200 A Offset + WgdsWiFiSarDeltaGroup2PowerChainB2, // Group 2 EC Jap 5200 B Offset + WgdsWiFiSarDeltaGroup3PowerMax1, // Group 3 ROW 2400 Max + WgdsWiFiSarDeltaGroup3PowerChainA1, // Group 3 ROW 2400 A Offset + WgdsWiFiSarDeltaGroup3PowerChainB1, // Group 3 ROW 2400 B Offset + WgdsWiFiSarDeltaGroup3PowerMax2, // Group 3 ROW 5200 Max + WgdsWiFiSarDeltaGroup3PowerChainA2, // Group 3 ROW 5200 A Offset + WgdsWiFiSarDeltaGroup3PowerChainB2, // Group 3 ROW 5200 B Offset + } +}) + +When read the ACPI data to find out the WGDS, the DATA_SIZE is never +matched. +From the above format, it gives 19 numbers, but our driver is hardcode +as 18. +Fix it to pass then can parse the data into our wgds table. +Then we will see: +iwlwifi 0000:01:00.0: U iwl_mvm_sar_geo_init Sending GEO_TX_POWER_LIMIT +iwlwifi 0000:01:00.0: U iwl_mvm_sar_geo_init SAR geographic profile[0] +Band[0]: chain A = 68 chain B = 69 max_tx_power = 54 +iwlwifi 0000:01:00.0: U iwl_mvm_sar_geo_init SAR geographic profile[0] +Band[1]: chain A = 48 chain B = 49 max_tx_power = 70 +iwlwifi 0000:01:00.0: U iwl_mvm_sar_geo_init SAR geographic profile[1] +Band[0]: chain A = 51 chain B = 67 max_tx_power = 50 +iwlwifi 0000:01:00.0: U iwl_mvm_sar_geo_init SAR geographic profile[1] +Band[1]: chain A = 69 chain B = 70 max_tx_power = 68 +iwlwifi 0000:01:00.0: U iwl_mvm_sar_geo_init SAR geographic profile[2] +Band[0]: chain A = 49 chain B = 50 max_tx_power = 48 +iwlwifi 0000:01:00.0: U iwl_mvm_sar_geo_init SAR geographic profile[2] +Band[1]: chain A = 52 chain B = 53 max_tx_power = 51 + +Cc: stable@vger.kernel.org # 4.12+ +Fixes: a6bff3cb19b7 ("iwlwifi: mvm: add GEO_TX_POWER_LIMIT cmd for geographic tx power table") +Signed-off-by: Matt Chen +Signed-off-by: Luca Coelho +Signed-off-by: Oliver Neukum +--- + drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c ++++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c +@@ -590,7 +590,7 @@ static int iwl_mvm_config_ltr(struct iwl + #define ACPI_WRDS_WIFI_DATA_SIZE (IWL_MVM_SAR_TABLE_SIZE + 2) + #define ACPI_EWRD_WIFI_DATA_SIZE ((IWL_MVM_SAR_PROFILE_NUM - 1) * \ + IWL_MVM_SAR_TABLE_SIZE + 3) +-#define ACPI_WGDS_WIFI_DATA_SIZE 18 ++#define ACPI_WGDS_WIFI_DATA_SIZE 19 + #define ACPI_WGDS_NUM_BANDS 2 + #define ACPI_WGDS_TABLE_SIZE 3 + +@@ -968,7 +968,7 @@ static int iwl_mvm_sar_geo_init(struct i + IWL_DEBUG_RADIO(mvm, "Sending GEO_TX_POWER_LIMIT\n"); + + BUILD_BUG_ON(IWL_NUM_GEO_PROFILES * ACPI_WGDS_NUM_BANDS * +- ACPI_WGDS_TABLE_SIZE != ACPI_WGDS_WIFI_DATA_SIZE); ++ ACPI_WGDS_TABLE_SIZE + 1 != ACPI_WGDS_WIFI_DATA_SIZE); + + for (i = 0; i < IWL_NUM_GEO_PROFILES; i++) { + struct iwl_per_chain_offset *chain = diff --git a/patches.fixes/0001-iwlwifi-fix-non_shared_ant-for-22000-devices.patch b/patches.fixes/0001-iwlwifi-fix-non_shared_ant-for-22000-devices.patch new file mode 100644 index 0000000..7d067f8 --- /dev/null +++ b/patches.fixes/0001-iwlwifi-fix-non_shared_ant-for-22000-devices.patch @@ -0,0 +1,30 @@ +From a40287727d9b737e183959fd31a4e0c55f312853 Mon Sep 17 00:00:00 2001 +From: Erel Geron +Date: Mon, 28 May 2018 17:15:56 +0300 +Subject: [PATCH] iwlwifi: fix non_shared_ant for 22000 devices +Git-commit: a40287727d9b737e183959fd31a4e0c55f312853 +Patch-mainline: v4.20 +References: bsc#1119086 + +The non-shared antenna was wrong for 22000 device series. +Fix it to ANT_B for correct antenna preference by coex in MVM driver. + +Fixes: e34d975e40ff ("iwlwifi: Add a000 HW family support") +Signed-off-by: Erel Geron +Signed-off-by: Luca Coelho +Signed-off-by: Oliver Neukum +--- + drivers/net/wireless/intel/iwlwifi/cfg/a000.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/net/wireless/intel/iwlwifi/cfg/a000.c ++++ b/drivers/net/wireless/intel/iwlwifi/cfg/a000.c +@@ -118,7 +118,7 @@ static const struct iwl_ht_params iwl_a0 + .base_params = &iwl_a000_base_params, \ + .led_mode = IWL_LED_RF_STATE, \ + .nvm_hw_section_num = NVM_HW_SECTION_NUM_FAMILY_A000, \ +- .non_shared_ant = ANT_A, \ ++ .non_shared_ant = ANT_B, \ + .dccm_offset = IWL_A000_DCCM_OFFSET, \ + .dccm_len = IWL_A000_DCCM_LEN, \ + .dccm2_offset = IWL_A000_DCCM2_OFFSET, \ diff --git a/patches.fixes/0001-iwlwifi-mvm-don-t-send-GEO_TX_POWER_LIMIT-to-old-fir.patch b/patches.fixes/0001-iwlwifi-mvm-don-t-send-GEO_TX_POWER_LIMIT-to-old-fir.patch new file mode 100644 index 0000000..c8449cc --- /dev/null +++ b/patches.fixes/0001-iwlwifi-mvm-don-t-send-GEO_TX_POWER_LIMIT-to-old-fir.patch @@ -0,0 +1,46 @@ +From eca1e56ceedd9cc185eb18baf307d3ff2e4af376 Mon Sep 17 00:00:00 2001 +From: Emmanuel Grumbach +Date: Fri, 14 Dec 2018 18:30:22 +0200 +Subject: [PATCH] iwlwifi: mvm: don't send GEO_TX_POWER_LIMIT to old firmwares +Git-commit: eca1e56ceedd9cc185eb18baf307d3ff2e4af376 +Patch-mainline: v4.20 +References: bsc#1119086 + +Old firmware versions don't support this command. Sending it +to any firmware before -41.ucode will crash the firmware. + +This fixes https://bugzilla.kernel.org/show_bug.cgi?id=201975 + +Fixes: 66e839030fd6 ("iwlwifi: fix wrong WGDS_WIFI_DATA_SIZE") +CC: #4.19+ +Signed-off-by: Emmanuel Grumbach +Signed-off-by: Luca Coelho +Signed-off-by: Kalle Valo +Signed-off-by: Oliver Neukum +--- + drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c +index 2ba890445c35..1689bead1b4f 100644 +--- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c ++++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c +@@ -881,6 +881,15 @@ static int iwl_mvm_sar_geo_init(struct iwl_mvm *mvm) + int ret, i, j; + u16 cmd_wide_id = WIDE_ID(PHY_OPS_GROUP, GEO_TX_POWER_LIMIT); + ++ /* ++ * This command is not supported on earlier firmware versions. ++ * Unfortunately, we don't have a TLV API flag to rely on, so ++ * rely on the major version which is in the first byte of ++ * ucode_ver. ++ */ ++ if (IWL_UCODE_SERIAL(mvm->fw->ucode_ver) < 41) ++ return 0; ++ + ret = iwl_mvm_sar_get_wgds_table(mvm); + if (ret < 0) { + IWL_DEBUG_RADIO(mvm, +-- +2.16.4 + diff --git a/patches.fixes/0001-libertas_tf-prevent-underflow-in-process_cmdrequest.patch b/patches.fixes/0001-libertas_tf-prevent-underflow-in-process_cmdrequest.patch new file mode 100644 index 0000000..1ea84de --- /dev/null +++ b/patches.fixes/0001-libertas_tf-prevent-underflow-in-process_cmdrequest.patch @@ -0,0 +1,34 @@ +From 3348ef6a6a126706d6a73ed40c18d8033df72783 Mon Sep 17 00:00:00 2001 +From: Dan Carpenter +Date: Tue, 14 Aug 2018 12:07:48 +0300 +Subject: [PATCH] libertas_tf: prevent underflow in process_cmdrequest() +Git-commit: 3348ef6a6a126706d6a73ed40c18d8033df72783 +Patch-mainline: v4.20 +References: bsc#1119086 + +If recvlength is less than MESSAGE_HEADER_LEN (4) we would end up +corrupting memory. + +Fixes: c305a19a0d0a ("libertas_tf: usb specific functions") +Signed-off-by: Dan Carpenter +Signed-off-by: Kalle Valo +Signed-off-by: Oliver Neukum +--- + drivers/net/wireless/marvell/libertas_tf/if_usb.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/drivers/net/wireless/marvell/libertas_tf/if_usb.c ++++ b/drivers/net/wireless/marvell/libertas_tf/if_usb.c +@@ -603,9 +603,10 @@ static inline void process_cmdrequest(in + struct if_usb_card *cardp, + struct lbtf_private *priv) + { +- if (recvlength > LBS_CMD_BUFFER_SIZE) { ++ if (recvlength < MESSAGE_HEADER_LEN || ++ recvlength > LBS_CMD_BUFFER_SIZE) { + lbtf_deb_usbd(&cardp->udev->dev, +- "The receive buffer is too large\n"); ++ "The receive buffer is invalid %d\n", recvlength); + kfree_skb(skb); + return; + } diff --git a/series.conf b/series.conf index 925d5fb..3d39129 100644 --- a/series.conf +++ b/series.conf @@ -18901,8 +18901,10 @@ patches.fixes/iwlwifi-don-t-WARN-on-trying-to-dump-dead-firmware.patch patches.drivers/iwlwifi-mvm-fix-BAR-seq-ctrl-reporting.patch patches.drivers/iwlwifi-mvm-send-BCAST-management-frames-to-the-righ.patch + patches.fixes/0001-libertas_tf-prevent-underflow-in-process_cmdrequest.patch patches.drivers/brcmfmac-fix-for-proper-support-of-160MHz-bandwidth.patch patches.drivers/iwlwifi-dbg-don-t-crash-if-the-firmware-crashes-in-t.patch + patches.fixes/0001-iwlwifi-fix-non_shared_ant-for-22000-devices.patch patches.drivers/iwlwifi-pcie-gen2-build-A-MSDU-only-for-GSO.patch patches.drivers/0001-iwlwifi-fix-LED-command-capability-bit.patch patches.drivers/iwlwifi-mvm-Allow-TKIP-for-AP-mode.patch @@ -19373,6 +19375,7 @@ patches.suse/net-mlx5e-Fix-selftest-for-small-MTUs.patch patches.suse/tg3-Add-PHY-reset-for-5717-5719-5720-in-change-ring-.patch patches.drivers/brcmutil-really-fix-decoding-channel-info-for-160-MH.patch + patches.drivers/iwlwifi-fix-wrong-WGDS_WIFI_DATA_SIZE.patch patches.drivers/iwlwifi-mvm-support-sta_statistics-even-on-older-fir.patch patches.drivers/iwlwifi-mvm-fix-regulatory-domain-update-when-the-fi.patch patches.drivers/iwlwifi-mvm-don-t-use-SAR-Geo-if-basic-SAR-is-not-us.patch @@ -19571,6 +19574,7 @@ patches.arch/ibmvnic-Fix-non-atomic-memory-allocation-in-IRQ-cont.patch patches.drivers/USB-hso-Fix-OOB-memory-access-in-hso_probe-hso_get_c.patch patches.fixes/0001-xen-netfront-tolerate-frags-with-no-data.patch + patches.fixes/0001-iwlwifi-mvm-don-t-send-GEO_TX_POWER_LIMIT-to-old-fir.patch patches.drivers/mmc-omap_hsmmc-fix-DMA-API-warning.patch patches.drivers/mmc-core-Reset-HPI-enabled-state-during-re-init-and-.patch patches.drivers/mmc-core-Allow-BKOPS-and-CACHE-ctrl-even-if-no-HPI-s.patch