[PATCH 0/2][SRU][OEM-OSP1] iwlwifi: fix FW error in SYNC CMD GEO_TX_POWER_LIMIT

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH 0/2][SRU][OEM-OSP1] iwlwifi: fix FW error in SYNC CMD GEO_TX_POWER_LIMIT

You-Sheng Yang
BugLink: https://bugs.launchpad.net/bugs/1834415

[Impact]
Intel Wireless-AC 9560/9462 cease to function normally with -48 rev
firmware release.

[Fix]
Two additional changes from Intel maintained backport-iwlwifi repository
are required to bring the two models back to normal.

[Test]
Verified on hardware 9462/9560 with fw rev 48.

[Regression Potential]
Low. These changes affects all iwlwifi supported devices that use
firmware blob that doesn't support iwl_geo_tx_power_profiles_cmd_v1
command. This behavior change is automatically detected, so it should
have no effect on devices other than 9462/9560 so far.

Haim Dreyfuss (1):
  iwlwifi: Add support for SAR South Korea limitation

Luca Coelho (1):
  [BUGFIX] iwlwifi: mvm: don't use iwl_geo_tx_power_profiles_cmd_v1

 drivers/net/wireless/intel/iwlwifi/fw/acpi.c  | 28 ++++++----
 drivers/net/wireless/intel/iwlwifi/fw/acpi.h  |  5 +-
 .../net/wireless/intel/iwlwifi/fw/api/power.h | 12 ++++
 drivers/net/wireless/intel/iwlwifi/fw/file.h  |  3 +
 drivers/net/wireless/intel/iwlwifi/mvm/fw.c   | 55 ++++++++++++++-----
 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h  |  1 +
 6 files changed, 76 insertions(+), 28 deletions(-)

--
2.21.0


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[PATCH 1/2][SRU][OEM-OSP1] iwlwifi: Add support for SAR South Korea limitation

You-Sheng Yang
From: Haim Dreyfuss <[hidden email]>

BugLink: https://bugs.launchpad.net/bugs/1834415

South Korea is adding a more strict SAR limit called "Limb SAR".
Currently, WGDS SAR offset group 3 is not used (not mapped to any country).
In order to be able to comply with South Korea new restriction:
- OEM will use WGDS SAR offset group 3 to South Korea limitation.
- OEM will change WGDS revision to 1 (currently latest revision is 0)
        to notify that Korea Limb SAR applied.
- Driver will read the WGDS table and pass the values to FW (as usual)
- Driver will pass to FW an indication that Korea Limb SAR is applied
        in case table revision is 1.

type=feature
ticket=none

Change-Id: I52d2afa9f243765b63da3279496c524c77b26e20
Signed-off-by: Haim Dreyfuss <[hidden email]>
Reviewed-on: https://git-amr-3.devtools.intel.com/gerrit/213163
Tested-by: ec ger unix iil jenkins <[hidden email]>
Reviewed-by: Coelho, Luciano <[hidden email]>
x-iwlwifi-stack-dev: 555b6eec8f43d85ec2073a98797bb45701960bc5
(backported from commit f86c47462c24135dc2cce72559629ebca8be2c7a
https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi.git)
Signed-off-by: You-Sheng Yang <[hidden email]>
---
 drivers/net/wireless/intel/iwlwifi/fw/acpi.c  | 28 +++++----
 drivers/net/wireless/intel/iwlwifi/fw/acpi.h  |  5 +-
 .../net/wireless/intel/iwlwifi/fw/api/power.h | 12 ++++
 drivers/net/wireless/intel/iwlwifi/fw/file.h  |  3 +
 drivers/net/wireless/intel/iwlwifi/mvm/fw.c   | 60 ++++++++++++++-----
 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h  |  1 +
 6 files changed, 81 insertions(+), 28 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/fw/acpi.c b/drivers/net/wireless/intel/iwlwifi/fw/acpi.c
index 405038ce98d68..7573af2d88ce7 100644
--- a/drivers/net/wireless/intel/iwlwifi/fw/acpi.c
+++ b/drivers/net/wireless/intel/iwlwifi/fw/acpi.c
@@ -97,7 +97,7 @@ IWL_EXPORT_SYMBOL(iwl_acpi_get_object);
 
 union acpi_object *iwl_acpi_get_wifi_pkg(struct device *dev,
  union acpi_object *data,
- int data_size)
+ int data_size, int *tbl_rev)
 {
  int i;
  union acpi_object *wifi_pkg;
@@ -113,16 +113,19 @@ union acpi_object *iwl_acpi_get_wifi_pkg(struct device *dev,
  /*
  * We need at least two packages, one for the revision and one
  * for the data itself.  Also check that the revision is valid
- * (i.e. it is an integer set to 0).
+ * (i.e. it is an integer smaller than 2, as we currently support only
+ * 2 revisions).
  */
  if (data->type != ACPI_TYPE_PACKAGE ||
     data->package.count < 2 ||
     data->package.elements[0].type != ACPI_TYPE_INTEGER ||
-    data->package.elements[0].integer.value != 0) {
+    data->package.elements[0].integer.value > 1) {
  IWL_DEBUG_DEV_RADIO(dev, "Unsupported packages structure\n");
  return ERR_PTR(-EINVAL);
  }
 
+ *tbl_rev = data->package.elements[0].integer.value;
+
  /* loop through all the packages to find the one for WiFi */
  for (i = 1; i < data->package.count; i++) {
  union acpi_object *domain;
@@ -151,14 +154,15 @@ int iwl_acpi_get_mcc(struct device *dev, char *mcc)
 {
  union acpi_object *wifi_pkg, *data;
  u32 mcc_val;
- int ret;
+ int ret, tbl_rev;
 
  data = iwl_acpi_get_object(dev, ACPI_WRDD_METHOD);
  if (IS_ERR(data))
  return PTR_ERR(data);
 
- wifi_pkg = iwl_acpi_get_wifi_pkg(dev, data, ACPI_WRDD_WIFI_DATA_SIZE);
- if (IS_ERR(wifi_pkg)) {
+ wifi_pkg = iwl_acpi_get_wifi_pkg(dev, data, ACPI_WRDD_WIFI_DATA_SIZE,
+ &tbl_rev);
+ if (IS_ERR(wifi_pkg) || tbl_rev != 0) {
  ret = PTR_ERR(wifi_pkg);
  goto out_free;
  }
@@ -185,6 +189,7 @@ u64 iwl_acpi_get_pwr_limit(struct device *dev)
 {
  union acpi_object *data, *wifi_pkg;
  u64 dflt_pwr_limit;
+ int tbl_rev;
 
  data = iwl_acpi_get_object(dev, ACPI_SPLC_METHOD);
  if (IS_ERR(data)) {
@@ -193,8 +198,8 @@ u64 iwl_acpi_get_pwr_limit(struct device *dev)
  }
 
  wifi_pkg = iwl_acpi_get_wifi_pkg(dev, data,
- ACPI_SPLC_WIFI_DATA_SIZE);
- if (IS_ERR(wifi_pkg) ||
+ ACPI_SPLC_WIFI_DATA_SIZE, &tbl_rev);
+ if (IS_ERR(wifi_pkg) || tbl_rev != 0 ||
     wifi_pkg->package.elements[1].integer.value != ACPI_TYPE_INTEGER) {
  dflt_pwr_limit = 0;
  goto out_free;
@@ -211,14 +216,15 @@ IWL_EXPORT_SYMBOL(iwl_acpi_get_pwr_limit);
 int iwl_acpi_get_eckv(struct device *dev, u32 *extl_clk)
 {
  union acpi_object *wifi_pkg, *data;
- int ret;
+ int ret, tbl_rev;
 
  data = iwl_acpi_get_object(dev, ACPI_ECKV_METHOD);
  if (IS_ERR(data))
  return PTR_ERR(data);
 
- wifi_pkg = iwl_acpi_get_wifi_pkg(dev, data, ACPI_ECKV_WIFI_DATA_SIZE);
- if (IS_ERR(wifi_pkg)) {
+ wifi_pkg = iwl_acpi_get_wifi_pkg(dev, data, ACPI_ECKV_WIFI_DATA_SIZE,
+ &tbl_rev);
+ if (IS_ERR(wifi_pkg) || tbl_rev != 0) {
  ret = PTR_ERR(wifi_pkg);
  goto out_free;
  }
diff --git a/drivers/net/wireless/intel/iwlwifi/fw/acpi.h b/drivers/net/wireless/intel/iwlwifi/fw/acpi.h
index f5704e16643fc..991a234509994 100644
--- a/drivers/net/wireless/intel/iwlwifi/fw/acpi.h
+++ b/drivers/net/wireless/intel/iwlwifi/fw/acpi.h
@@ -97,7 +97,7 @@
 void *iwl_acpi_get_object(struct device *dev, acpi_string method);
 union acpi_object *iwl_acpi_get_wifi_pkg(struct device *dev,
  union acpi_object *data,
- int data_size);
+ int data_size, int *tbl_rev);
 
 /**
  * iwl_acpi_get_mcc - read MCC from ACPI, if available
@@ -131,7 +131,8 @@ static inline void *iwl_acpi_get_object(struct device *dev, acpi_string method)
 
 static inline union acpi_object *iwl_acpi_get_wifi_pkg(struct device *dev,
        union acpi_object *data,
-       int data_size)
+       int data_size,
+       int *tbl_rev)
 {
  return ERR_PTR(-ENOENT);
 }
diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/power.h b/drivers/net/wireless/intel/iwlwifi/fw/api/power.h
index 01f003c6cff9f..f195db398bedb 100644
--- a/drivers/net/wireless/intel/iwlwifi/fw/api/power.h
+++ b/drivers/net/wireless/intel/iwlwifi/fw/api/power.h
@@ -419,14 +419,26 @@ struct iwl_per_chain_offset_group {
  struct iwl_per_chain_offset hb;
 } __packed; /* PER_CHAIN_LIMIT_OFFSET_GROUP_S_VER_1 */
 
+/**
+ * struct iwl_geo_tx_power_profile_cmd_v1 - struct for GEO_TX_POWER_LIMIT cmd.
+ * @ops: operations, value from &enum iwl_geo_per_chain_offset_operation
+ * @table: offset profile per band.
+ */
+struct iwl_geo_tx_power_profiles_cmd_v1 {
+ __le32 ops;
+ struct iwl_per_chain_offset_group table[IWL_NUM_GEO_PROFILES];
+} __packed; /* GEO_TX_POWER_LIMIT_VER_1 */
+
 /**
  * struct iwl_geo_tx_power_profile_cmd - struct for GEO_TX_POWER_LIMIT cmd.
  * @ops: operations, value from &enum iwl_geo_per_chain_offset_operation
  * @table: offset profile per band.
+ * @table_revision: BIOS table revision.
  */
 struct iwl_geo_tx_power_profiles_cmd {
  __le32 ops;
  struct iwl_per_chain_offset_group table[IWL_NUM_GEO_PROFILES];
+ __le32 table_revision;
 } __packed; /* GEO_TX_POWER_LIMIT */
 
 /**
diff --git a/drivers/net/wireless/intel/iwlwifi/fw/file.h b/drivers/net/wireless/intel/iwlwifi/fw/file.h
index 54e84d04401fe..222c203cba10d 100644
--- a/drivers/net/wireless/intel/iwlwifi/fw/file.h
+++ b/drivers/net/wireless/intel/iwlwifi/fw/file.h
@@ -279,6 +279,8 @@ typedef unsigned int __bitwise iwl_ucode_tlv_api_t;
  * REGULATORY_NVM_GET_INFO_RSP_API_S.
  * @IWL_UCODE_TLV_API_FTM_NEW_RANGE_REQ: This ucode supports v7 of
  * LOCATION_RANGE_REQ_CMD_API_S and v6 of LOCATION_RANGE_RESP_NTFY_API_S.
+ * @IWL_UCODE_TLV_CAPA_SAR_TABLE_VER: This ucode supports different sar
+ * version tables.
  *
  * @NUM_IWL_UCODE_TLV_API: number of bits used
  */
@@ -307,6 +309,7 @@ enum iwl_ucode_tlv_api {
  IWL_UCODE_TLV_API_BEACON_FILTER_V4      = (__force iwl_ucode_tlv_api_t)47,
  IWL_UCODE_TLV_API_REGULATORY_NVM_INFO   = (__force iwl_ucode_tlv_api_t)48,
  IWL_UCODE_TLV_API_FTM_NEW_RANGE_REQ     = (__force iwl_ucode_tlv_api_t)49,
+ IWL_UCODE_TLV_API_SAR_TABLE_VER         = (__force iwl_ucode_tlv_api_t)55,
 
  NUM_IWL_UCODE_TLV_API
 #ifdef __CHECKER__
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
index ab68b5d53ec95..f66fe897d415f 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
@@ -670,15 +670,15 @@ static int iwl_mvm_sar_get_wrds_table(struct iwl_mvm *mvm)
 {
  union acpi_object *wifi_pkg, *table, *data;
  bool enabled;
- int ret;
+ int ret, tbl_rev;
 
  data = iwl_acpi_get_object(mvm->dev, ACPI_WRDS_METHOD);
  if (IS_ERR(data))
  return PTR_ERR(data);
 
  wifi_pkg = iwl_acpi_get_wifi_pkg(mvm->dev, data,
- ACPI_WRDS_WIFI_DATA_SIZE);
- if (IS_ERR(wifi_pkg)) {
+ ACPI_WRDS_WIFI_DATA_SIZE, &tbl_rev);
+ if (IS_ERR(wifi_pkg) || tbl_rev != 0) {
  ret = PTR_ERR(wifi_pkg);
  goto out_free;
  }
@@ -707,15 +707,15 @@ static int iwl_mvm_sar_get_ewrd_table(struct iwl_mvm *mvm)
 {
  union acpi_object *wifi_pkg, *data;
  bool enabled;
- int i, n_profiles, ret;
+ int i, n_profiles, ret, tbl_rev;
 
  data = iwl_acpi_get_object(mvm->dev, ACPI_EWRD_METHOD);
  if (IS_ERR(data))
  return PTR_ERR(data);
 
  wifi_pkg = iwl_acpi_get_wifi_pkg(mvm->dev, data,
- ACPI_EWRD_WIFI_DATA_SIZE);
- if (IS_ERR(wifi_pkg)) {
+ ACPI_EWRD_WIFI_DATA_SIZE, &tbl_rev);
+ if (IS_ERR(wifi_pkg) || tbl_rev != 0) {
  ret = PTR_ERR(wifi_pkg);
  goto out_free;
  }
@@ -766,7 +766,7 @@ static int iwl_mvm_sar_get_ewrd_table(struct iwl_mvm *mvm)
 static int iwl_mvm_sar_get_wgds_table(struct iwl_mvm *mvm)
 {
  union acpi_object *wifi_pkg, *data;
- int i, j, ret;
+ int i, j, ret, tbl_rev;
  int idx = 1;
 
  data = iwl_acpi_get_object(mvm->dev, ACPI_WGDS_METHOD);
@@ -774,12 +774,13 @@ static int iwl_mvm_sar_get_wgds_table(struct iwl_mvm *mvm)
  return PTR_ERR(data);
 
  wifi_pkg = iwl_acpi_get_wifi_pkg(mvm->dev, data,
- ACPI_WGDS_WIFI_DATA_SIZE);
- if (IS_ERR(wifi_pkg)) {
+ ACPI_WGDS_WIFI_DATA_SIZE, &tbl_rev);
+ if (IS_ERR(wifi_pkg) || tbl_rev > 1) {
  ret = PTR_ERR(wifi_pkg);
  goto out_free;
  }
 
+ mvm->geo_rev = tbl_rev;
  for (i = 0; i < ACPI_NUM_GEO_PROFILES; i++) {
  for (j = 0; j < ACPI_GEO_TABLE_SIZE; j++) {
  union acpi_object *entry;
@@ -866,15 +867,29 @@ int iwl_mvm_get_sar_geo_profile(struct iwl_mvm *mvm)
 {
  struct iwl_geo_tx_power_profiles_resp *resp;
  int ret;
+ u16 len;
+ void *data;
+ struct iwl_geo_tx_power_profiles_cmd geo_cmd;
+ struct iwl_geo_tx_power_profiles_cmd_v1 geo_cmd_v1;
+ struct iwl_host_cmd cmd;
+
+ if (fw_has_api(&mvm->fw->ucode_capa, IWL_UCODE_TLV_API_SAR_TABLE_VER)) {
+ geo_cmd.ops =
+ cpu_to_le32(IWL_PER_CHAIN_OFFSET_GET_CURRENT_TABLE);
+ len = sizeof(geo_cmd);
+ data = &geo_cmd;
+ } else {
+ geo_cmd_v1.ops =
+ cpu_to_le32(IWL_PER_CHAIN_OFFSET_GET_CURRENT_TABLE);
+ len = sizeof(geo_cmd_v1);
+ data = &geo_cmd_v1;
+ }
 
- struct iwl_geo_tx_power_profiles_cmd geo_cmd = {
- .ops = cpu_to_le32(IWL_PER_CHAIN_OFFSET_GET_CURRENT_TABLE),
- };
- struct iwl_host_cmd cmd = {
+ cmd = (struct iwl_host_cmd){
  .id =  WIDE_ID(PHY_OPS_GROUP, GEO_TX_POWER_LIMIT),
- .len = { sizeof(geo_cmd), },
+ .len = { len, },
  .flags = CMD_WANT_SKB,
- .data = { &geo_cmd },
+ .data = { data },
  };
 
  ret = iwl_mvm_send_cmd(mvm, &cmd);
@@ -944,6 +959,21 @@ static int iwl_mvm_sar_geo_init(struct iwl_mvm *mvm)
  i, j, value[1], value[2], value[0]);
  }
  }
+ if (fw_has_api(&mvm->fw->ucode_capa,
+       IWL_UCODE_TLV_API_SAR_TABLE_VER)) {
+ cmd.table_revision = cpu_to_le32(mvm->geo_rev);
+ } else {
+ struct iwl_geo_tx_power_profiles_cmd_v1 cmd_v1 = {
+ .ops = cpu_to_le32(IWL_PER_CHAIN_OFFSET_SET_TABLES),
+ };
+
+ memcpy(&cmd_v1.table, cmd.table,
+       sizeof(struct iwl_per_chain_offset_group) *
+       IWL_NUM_GEO_PROFILES);
+
+ return iwl_mvm_send_cmd_pdu(mvm, cmd_wide_id, 0, sizeof(cmd_v1),
+    &cmd_v1);
+ }
  return iwl_mvm_send_cmd_pdu(mvm, cmd_wide_id, 0, sizeof(cmd), &cmd);
 }
 
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
index a50dc53df0869..75a1035371e0f 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
@@ -1180,6 +1180,7 @@ struct iwl_mvm {
 #ifdef CONFIG_ACPI
  struct iwl_mvm_sar_profile sar_profiles[ACPI_SAR_PROFILE_NUM];
  struct iwl_mvm_geo_profile geo_profiles[ACPI_NUM_GEO_PROFILES];
+ u32 geo_rev;
 #endif
 };
 
--
2.21.0


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[PATCH 2/2][SRU][OEM-OSP1] iwlwifi: mvm: don't use iwl_geo_tx_power_profiles_cmd_v1

You-Sheng Yang
In reply to this post by You-Sheng Yang
From: Luca Coelho <[hidden email]>

BugLink: https://bugs.launchpad.net/bugs/1834415

We don't need to allocate a new structure and copy the data from the
new one into it, because they are the same, except that the new
version has one more element at the end.  We can simply send the same
structure but pass the size of the old one when we send the command.

This avoid extra stack allocations and a memcpy in the code.  The
memcpy() was causing a static analyzer warning because it was not
using the size of the destination.

type=bugfix
ticket=none
fixes=I52d2afa9f243765b63da3279496c524c77b26e20

Change-Id: Iaaeba37a842ba6abc9e53c7f018f5362964a6daf
Signed-off-by: Luca Coelho <[hidden email]>
Reviewed-on: https://git-amr-3.devtools.intel.com/gerrit/222716
Tested-by: ec ger unix iil jenkins <[hidden email]>
x-iwlwifi-stack-dev: 023605ffda133e4cea2fe29c2ec7dbcbe48988c4
(backported from commit 33693c2f3ae9eafcfd69d2c2977dcc8cbaf199fc
https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi.git)
Signed-off-by: You-Sheng Yang <[hidden email]>
---
 drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 19 +++++++------------
 1 file changed, 7 insertions(+), 12 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
index f66fe897d415f..80bb2f50a730f 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
@@ -959,21 +959,16 @@ static int iwl_mvm_sar_geo_init(struct iwl_mvm *mvm)
  i, j, value[1], value[2], value[0]);
  }
  }
- if (fw_has_api(&mvm->fw->ucode_capa,
-       IWL_UCODE_TLV_API_SAR_TABLE_VER)) {
- cmd.table_revision = cpu_to_le32(mvm->geo_rev);
- } else {
- struct iwl_geo_tx_power_profiles_cmd_v1 cmd_v1 = {
- .ops = cpu_to_le32(IWL_PER_CHAIN_OFFSET_SET_TABLES),
- };
 
- memcpy(&cmd_v1.table, cmd.table,
-       sizeof(struct iwl_per_chain_offset_group) *
-       IWL_NUM_GEO_PROFILES);
+ cmd.table_revision = cpu_to_le32(mvm->geo_rev);
 
- return iwl_mvm_send_cmd_pdu(mvm, cmd_wide_id, 0, sizeof(cmd_v1),
-    &cmd_v1);
+ if (!fw_has_api(&mvm->fw->ucode_capa,
+       IWL_UCODE_TLV_API_SAR_TABLE_VER)) {
+ return iwl_mvm_send_cmd_pdu(mvm, cmd_wide_id, 0,
+ sizeof(struct iwl_geo_tx_power_profiles_cmd_v1),
+ &cmd);
  }
+
  return iwl_mvm_send_cmd_pdu(mvm, cmd_wide_id, 0, sizeof(cmd), &cmd);
 }
 
--
2.21.0


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

APPLIED Re: [PATCH 0/2][SRU][OEM-OSP1] iwlwifi: fix FW error in SYNC CMD GEO_TX_POWER_LIMIT

Timo Aaltonen-6
In reply to this post by You-Sheng Yang
On 27.6.2019 9.28, You-Sheng Yang wrote:

> BugLink: https://bugs.launchpad.net/bugs/1834415
>
> [Impact]
> Intel Wireless-AC 9560/9462 cease to function normally with -48 rev
> firmware release.
>
> [Fix]
> Two additional changes from Intel maintained backport-iwlwifi repository
> are required to bring the two models back to normal.
>
> [Test]
> Verified on hardware 9462/9560 with fw rev 48.
>
> [Regression Potential]
> Low. These changes affects all iwlwifi supported devices that use
> firmware blob that doesn't support iwl_geo_tx_power_profiles_cmd_v1
> command. This behavior change is automatically detected, so it should
> have no effect on devices other than 9462/9560 so far.
>
> Haim Dreyfuss (1):
>   iwlwifi: Add support for SAR South Korea limitation
>
> Luca Coelho (1):
>   [BUGFIX] iwlwifi: mvm: don't use iwl_geo_tx_power_profiles_cmd_v1
>
>  drivers/net/wireless/intel/iwlwifi/fw/acpi.c  | 28 ++++++----
>  drivers/net/wireless/intel/iwlwifi/fw/acpi.h  |  5 +-
>  .../net/wireless/intel/iwlwifi/fw/api/power.h | 12 ++++
>  drivers/net/wireless/intel/iwlwifi/fw/file.h  |  3 +
>  drivers/net/wireless/intel/iwlwifi/mvm/fw.c   | 55 ++++++++++++++-----
>  drivers/net/wireless/intel/iwlwifi/mvm/mvm.h  |  1 +
>  6 files changed, 76 insertions(+), 28 deletions(-)
>

applied to osp1 oem-next, thanks

--
t

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team