|
Oliver Neukum |
00c246 |
From 66e839030fd698586734e017fd55c4f2a89dba0b Mon Sep 17 00:00:00 2001
|
|
Oliver Neukum |
00c246 |
From: Matt Chen <matt.chen@intel.com>
|
|
Oliver Neukum |
00c246 |
Date: Fri, 3 Aug 2018 14:29:20 +0800
|
|
Oliver Neukum |
00c246 |
Subject: [PATCH] iwlwifi: fix wrong WGDS_WIFI_DATA_SIZE
|
|
Oliver Neukum |
00c246 |
Git-commit: 66e839030fd698586734e017fd55c4f2a89dba0b
|
|
Oliver Neukum |
00c246 |
Patch-mainline: v4.20
|
|
Oliver Neukum |
00c246 |
References: bsc#1119086
|
|
Oliver Neukum |
00c246 |
|
|
Oliver Neukum |
00c246 |
From coreboot/BIOS:
|
|
Oliver Neukum |
00c246 |
Name ("WGDS", Package() {
|
|
Oliver Neukum |
00c246 |
Revision,
|
|
Oliver Neukum |
00c246 |
Package() {
|
|
Oliver Neukum |
00c246 |
DomainType, // 0x7:WiFi ==> We miss this one.
|
|
Oliver Neukum |
00c246 |
WgdsWiFiSarDeltaGroup1PowerMax1, // Group 1 FCC 2400 Max
|
|
Oliver Neukum |
00c246 |
WgdsWiFiSarDeltaGroup1PowerChainA1, // Group 1 FCC 2400 A Offset
|
|
Oliver Neukum |
00c246 |
WgdsWiFiSarDeltaGroup1PowerChainB1, // Group 1 FCC 2400 B Offset
|
|
Oliver Neukum |
00c246 |
WgdsWiFiSarDeltaGroup1PowerMax2, // Group 1 FCC 5200 Max
|
|
Oliver Neukum |
00c246 |
WgdsWiFiSarDeltaGroup1PowerChainA2, // Group 1 FCC 5200 A Offset
|
|
Oliver Neukum |
00c246 |
WgdsWiFiSarDeltaGroup1PowerChainB2, // Group 1 FCC 5200 B Offset
|
|
Oliver Neukum |
00c246 |
WgdsWiFiSarDeltaGroup2PowerMax1, // Group 2 EC Jap 2400 Max
|
|
Oliver Neukum |
00c246 |
WgdsWiFiSarDeltaGroup2PowerChainA1, // Group 2 EC Jap 2400 A Offset
|
|
Oliver Neukum |
00c246 |
WgdsWiFiSarDeltaGroup2PowerChainB1, // Group 2 EC Jap 2400 B Offset
|
|
Oliver Neukum |
00c246 |
WgdsWiFiSarDeltaGroup2PowerMax2, // Group 2 EC Jap 5200 Max
|
|
Oliver Neukum |
00c246 |
WgdsWiFiSarDeltaGroup2PowerChainA2, // Group 2 EC Jap 5200 A Offset
|
|
Oliver Neukum |
00c246 |
WgdsWiFiSarDeltaGroup2PowerChainB2, // Group 2 EC Jap 5200 B Offset
|
|
Oliver Neukum |
00c246 |
WgdsWiFiSarDeltaGroup3PowerMax1, // Group 3 ROW 2400 Max
|
|
Oliver Neukum |
00c246 |
WgdsWiFiSarDeltaGroup3PowerChainA1, // Group 3 ROW 2400 A Offset
|
|
Oliver Neukum |
00c246 |
WgdsWiFiSarDeltaGroup3PowerChainB1, // Group 3 ROW 2400 B Offset
|
|
Oliver Neukum |
00c246 |
WgdsWiFiSarDeltaGroup3PowerMax2, // Group 3 ROW 5200 Max
|
|
Oliver Neukum |
00c246 |
WgdsWiFiSarDeltaGroup3PowerChainA2, // Group 3 ROW 5200 A Offset
|
|
Oliver Neukum |
00c246 |
WgdsWiFiSarDeltaGroup3PowerChainB2, // Group 3 ROW 5200 B Offset
|
|
Oliver Neukum |
00c246 |
}
|
|
Oliver Neukum |
00c246 |
})
|
|
Oliver Neukum |
00c246 |
|
|
Oliver Neukum |
00c246 |
When read the ACPI data to find out the WGDS, the DATA_SIZE is never
|
|
Oliver Neukum |
00c246 |
matched.
|
|
Oliver Neukum |
00c246 |
From the above format, it gives 19 numbers, but our driver is hardcode
|
|
Oliver Neukum |
00c246 |
as 18.
|
|
Oliver Neukum |
00c246 |
Fix it to pass then can parse the data into our wgds table.
|
|
Oliver Neukum |
00c246 |
Then we will see:
|
|
Oliver Neukum |
00c246 |
iwlwifi 0000:01:00.0: U iwl_mvm_sar_geo_init Sending GEO_TX_POWER_LIMIT
|
|
Oliver Neukum |
00c246 |
iwlwifi 0000:01:00.0: U iwl_mvm_sar_geo_init SAR geographic profile[0]
|
|
Oliver Neukum |
00c246 |
Band[0]: chain A = 68 chain B = 69 max_tx_power = 54
|
|
Oliver Neukum |
00c246 |
iwlwifi 0000:01:00.0: U iwl_mvm_sar_geo_init SAR geographic profile[0]
|
|
Oliver Neukum |
00c246 |
Band[1]: chain A = 48 chain B = 49 max_tx_power = 70
|
|
Oliver Neukum |
00c246 |
iwlwifi 0000:01:00.0: U iwl_mvm_sar_geo_init SAR geographic profile[1]
|
|
Oliver Neukum |
00c246 |
Band[0]: chain A = 51 chain B = 67 max_tx_power = 50
|
|
Oliver Neukum |
00c246 |
iwlwifi 0000:01:00.0: U iwl_mvm_sar_geo_init SAR geographic profile[1]
|
|
Oliver Neukum |
00c246 |
Band[1]: chain A = 69 chain B = 70 max_tx_power = 68
|
|
Oliver Neukum |
00c246 |
iwlwifi 0000:01:00.0: U iwl_mvm_sar_geo_init SAR geographic profile[2]
|
|
Oliver Neukum |
00c246 |
Band[0]: chain A = 49 chain B = 50 max_tx_power = 48
|
|
Oliver Neukum |
00c246 |
iwlwifi 0000:01:00.0: U iwl_mvm_sar_geo_init SAR geographic profile[2]
|
|
Oliver Neukum |
00c246 |
Band[1]: chain A = 52 chain B = 53 max_tx_power = 51
|
|
Oliver Neukum |
00c246 |
|
|
Oliver Neukum |
00c246 |
Cc: stable@vger.kernel.org # 4.12+
|
|
Oliver Neukum |
00c246 |
Fixes: a6bff3cb19b7 ("iwlwifi: mvm: add GEO_TX_POWER_LIMIT cmd for geographic tx power table")
|
|
Oliver Neukum |
00c246 |
Signed-off-by: Matt Chen <matt.chen@intel.com>
|
|
Oliver Neukum |
00c246 |
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
|
|
Oliver Neukum |
00c246 |
Signed-off-by: Oliver Neukum <oneukum@suse.com>
|
|
Oliver Neukum |
00c246 |
---
|
|
Oliver Neukum |
00c246 |
drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 4 ++--
|
|
Oliver Neukum |
00c246 |
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
Oliver Neukum |
00c246 |
|
|
Oliver Neukum |
00c246 |
--- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
|
|
Oliver Neukum |
00c246 |
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
|
|
Oliver Neukum |
00c246 |
@@ -590,7 +590,7 @@ static int iwl_mvm_config_ltr(struct iwl
|
|
Oliver Neukum |
00c246 |
#define ACPI_WRDS_WIFI_DATA_SIZE (IWL_MVM_SAR_TABLE_SIZE + 2)
|
|
Oliver Neukum |
00c246 |
#define ACPI_EWRD_WIFI_DATA_SIZE ((IWL_MVM_SAR_PROFILE_NUM - 1) * \
|
|
Oliver Neukum |
00c246 |
IWL_MVM_SAR_TABLE_SIZE + 3)
|
|
Oliver Neukum |
00c246 |
-#define ACPI_WGDS_WIFI_DATA_SIZE 18
|
|
Oliver Neukum |
00c246 |
+#define ACPI_WGDS_WIFI_DATA_SIZE 19
|
|
Oliver Neukum |
00c246 |
#define ACPI_WGDS_NUM_BANDS 2
|
|
Oliver Neukum |
00c246 |
#define ACPI_WGDS_TABLE_SIZE 3
|
|
Oliver Neukum |
00c246 |
|
|
Oliver Neukum |
00c246 |
@@ -968,7 +968,7 @@ static int iwl_mvm_sar_geo_init(struct i
|
|
Oliver Neukum |
00c246 |
IWL_DEBUG_RADIO(mvm, "Sending GEO_TX_POWER_LIMIT\n");
|
|
Oliver Neukum |
00c246 |
|
|
Oliver Neukum |
00c246 |
BUILD_BUG_ON(IWL_NUM_GEO_PROFILES * ACPI_WGDS_NUM_BANDS *
|
|
Oliver Neukum |
00c246 |
- ACPI_WGDS_TABLE_SIZE != ACPI_WGDS_WIFI_DATA_SIZE);
|
|
Oliver Neukum |
00c246 |
+ ACPI_WGDS_TABLE_SIZE + 1 != ACPI_WGDS_WIFI_DATA_SIZE);
|
|
Oliver Neukum |
00c246 |
|
|
Oliver Neukum |
00c246 |
for (i = 0; i < IWL_NUM_GEO_PROFILES; i++) {
|
|
Oliver Neukum |
00c246 |
struct iwl_per_chain_offset *chain =
|