All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ath11k: add read country code from SMBIOS for WCN6855/QCA6390
@ 2022-04-21  2:35 ` Wen Gong
  0 siblings, 0 replies; 12+ messages in thread
From: Wen Gong @ 2022-04-21  2:35 UTC (permalink / raw)
  To: ath11k; +Cc: linux-wireless, quic_wgong

This read the country code from SMBIOS and send the country code
to firmware, firmware will indicate the regulatory domain info of the
country code and then ath11k will use the info.

dmesg:
[ 1242.637173] ath11k_pci 0000:02:00.0: chip_id 0x2 chip_family 0xb board_id 0xff soc_id 0x400c0200
[ 1242.637176] ath11k_pci 0000:02:00.0: fw_version 0x110b09e5 fw_build_timestamp 2021-06-22 09:32 fw_build_id QC_IMAGE_VERSION_STRING=WLAN.HSP.1.1-02533-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1
[ 1242.637253] ath11k_pci 0000:02:00.0: worldwide regdomain setting from SMBIOS
[ 1242.637259] ath11k_pci 0000:02:00.0: bdf variant name not found.
[ 1242.637261] ath11k_pci 0000:02:00.0: SMBIOS bdf variant name not set.
[ 1242.637263] ath11k_pci 0000:02:00.0: DT bdf variant name not set.
[ 1242.927543] ath11k_pci 0000:02:00.0: set current country pdev id 0 alpha2 00

Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3

Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
---
 drivers/net/wireless/ath/ath11k/core.c | 28 ++++++++++++++++++++++++--
 drivers/net/wireless/ath/ath11k/core.h | 23 +++++++++++++++++++--
 drivers/net/wireless/ath/ath11k/mac.c  | 11 ++++++++++
 3 files changed, 58 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
index 1537ec0ae2e7..721669c04dcf 100644
--- a/drivers/net/wireless/ath/ath11k/core.c
+++ b/drivers/net/wireless/ath/ath11k/core.c
@@ -538,13 +538,14 @@ int ath11k_core_resume(struct ath11k_base *ab)
 }
 EXPORT_SYMBOL(ath11k_core_resume);
 
-static void ath11k_core_check_bdfext(const struct dmi_header *hdr, void *data)
+static void ath11k_core_check_cc_code_bdfext(const struct dmi_header *hdr, void *data)
 {
 	struct ath11k_base *ab = data;
 	const char *magic = ATH11K_SMBIOS_BDF_EXT_MAGIC;
 	struct ath11k_smbios_bdf *smbios = (struct ath11k_smbios_bdf *)hdr;
 	ssize_t copied;
 	size_t len;
+	u16 cc_code;
 	int i;
 
 	if (ab->qmi.target.bdf_ext[0] != '\0')
@@ -560,6 +561,29 @@ static void ath11k_core_check_bdfext(const struct dmi_header *hdr, void *data)
 		return;
 	}
 
+	spin_lock_bh(&ab->base_lock);
+
+	switch (smbios->country_code_flag) {
+	case ATH11K_SMBIOS_CC_ISO:
+		cc_code = __le16_to_cpu(smbios->cc_code);
+		ab->new_alpha2[0] = (cc_code >> 8) & 0xff;
+		ab->new_alpha2[1] = cc_code & 0xff;
+		ath11k_dbg(ab, ATH11K_DBG_BOOT, "cc code from SMBIOS %c%c\n",
+			   ab->new_alpha2[0], ab->new_alpha2[1]);
+		break;
+	case ATH11K_SMBIOS_CC_WW:
+		ab->new_alpha2[0] = '0';
+		ab->new_alpha2[1] = '0';
+		ath11k_dbg(ab, ATH11K_DBG_BOOT, "worldwide regdomain setting from SMBIOS\n");
+		break;
+	default:
+		ath11k_dbg(ab, ATH11K_DBG_BOOT, "ignore country code setting %d from SMBIOS\n",
+			   smbios->country_code_flag);
+		break;
+	}
+
+	spin_unlock_bh(&ab->base_lock);
+
 	if (!smbios->bdf_enabled) {
 		ath11k_dbg(ab, ATH11K_DBG_BOOT, "bdf variant name not found.\n");
 		return;
@@ -599,7 +623,7 @@ static void ath11k_core_check_bdfext(const struct dmi_header *hdr, void *data)
 int ath11k_core_check_smbios(struct ath11k_base *ab)
 {
 	ab->qmi.target.bdf_ext[0] = '\0';
-	dmi_walk(ath11k_core_check_bdfext, ab);
+	dmi_walk(ath11k_core_check_cc_code_bdfext, ab);
 
 	if (ab->qmi.target.bdf_ext[0] == '\0')
 		return -ENODATA;
diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/ath/ath11k/core.h
index fa299bfb4efc..88f87b212ac7 100644
--- a/drivers/net/wireless/ath/ath11k/core.h
+++ b/drivers/net/wireless/ath/ath11k/core.h
@@ -169,12 +169,31 @@ struct ath11k_ext_irq_grp {
 	struct net_device napi_ndev;
 };
 
+enum ath11k_smbios_cc_type {
+	/* disable country code setting from SMBIOS */
+	ATH11K_SMBIOS_CC_DISABLE = 0,
+	/* set country code by ANSI country name, based on ISO3166-1 alpha2 */
+	ATH11K_SMBIOS_CC_ISO = 1,
+	/* worldwide regdomain */
+	ATH11K_SMBIOS_CC_WW = 2,
+};
+
 struct ath11k_smbios_bdf {
 	struct dmi_header hdr;
-	u32 padding;
+	u8 features_disabled;
+	/* enum ath11k_smbios_cc_type */
+	u8 country_code_flag;
+	/* To set specific country, you need to set country code
+	 * flag=ATH11K_SMBIOS_CC_ISO first, then if country is United States, then country
+	 * code value = 0x5553 ("US",'U' = 0x55, 'S'= 0x53), To set country
+	 * to INDONESIA, then country code value = 0x4944 ("IN", 'I'=0x49, 'D'=0x44).
+	 * If country code flag = ATH11K_SMBIOS_CC_WW, then you can use
+	 * worldwide regulatory setting.
+	 */
+	__le16 cc_code;
 	u8 bdf_enabled;
 	u8 bdf_ext[];
-};
+} __packed;
 
 #define HEHANDLE_CAP_PHYINFO_SIZE       3
 #define HECAP_PHYINFO_SIZE              9
diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c
index ca998fb13b62..06d6261e49b2 100644
--- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/drivers/net/wireless/ath/ath11k/mac.c
@@ -8773,6 +8773,17 @@ static int __ath11k_mac_register(struct ath11k *ar)
 		goto err_unregister_hw;
 	}
 
+	if (ab->hw_params.current_cc_support && ab->new_alpha2[0]) {
+		struct wmi_set_current_country_params set_current_param = {};
+
+		memcpy(&set_current_param.alpha2, ab->new_alpha2, 2);
+		memcpy(&ar->alpha2, ab->new_alpha2, 2);
+		ret = ath11k_wmi_send_set_current_country_cmd(ar, &set_current_param);
+		if (ret)
+			ath11k_warn(ar->ab,
+				    "failed set cc code for mac register: %d\n", ret);
+	}
+
 	ret = ath11k_debugfs_register(ar);
 	if (ret) {
 		ath11k_err(ar->ab, "debugfs registration failed: %d\n", ret);

base-commit: 00576220f0dea728fdecfd0d31a0dd661c14e6a1
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH] ath11k: add read country code from SMBIOS for WCN6855/QCA6390
@ 2022-04-21  2:35 ` Wen Gong
  0 siblings, 0 replies; 12+ messages in thread
From: Wen Gong @ 2022-04-21  2:35 UTC (permalink / raw)
  To: ath11k; +Cc: linux-wireless, quic_wgong

This read the country code from SMBIOS and send the country code
to firmware, firmware will indicate the regulatory domain info of the
country code and then ath11k will use the info.

dmesg:
[ 1242.637173] ath11k_pci 0000:02:00.0: chip_id 0x2 chip_family 0xb board_id 0xff soc_id 0x400c0200
[ 1242.637176] ath11k_pci 0000:02:00.0: fw_version 0x110b09e5 fw_build_timestamp 2021-06-22 09:32 fw_build_id QC_IMAGE_VERSION_STRING=WLAN.HSP.1.1-02533-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1
[ 1242.637253] ath11k_pci 0000:02:00.0: worldwide regdomain setting from SMBIOS
[ 1242.637259] ath11k_pci 0000:02:00.0: bdf variant name not found.
[ 1242.637261] ath11k_pci 0000:02:00.0: SMBIOS bdf variant name not set.
[ 1242.637263] ath11k_pci 0000:02:00.0: DT bdf variant name not set.
[ 1242.927543] ath11k_pci 0000:02:00.0: set current country pdev id 0 alpha2 00

Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3

Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
---
 drivers/net/wireless/ath/ath11k/core.c | 28 ++++++++++++++++++++++++--
 drivers/net/wireless/ath/ath11k/core.h | 23 +++++++++++++++++++--
 drivers/net/wireless/ath/ath11k/mac.c  | 11 ++++++++++
 3 files changed, 58 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
index 1537ec0ae2e7..721669c04dcf 100644
--- a/drivers/net/wireless/ath/ath11k/core.c
+++ b/drivers/net/wireless/ath/ath11k/core.c
@@ -538,13 +538,14 @@ int ath11k_core_resume(struct ath11k_base *ab)
 }
 EXPORT_SYMBOL(ath11k_core_resume);
 
-static void ath11k_core_check_bdfext(const struct dmi_header *hdr, void *data)
+static void ath11k_core_check_cc_code_bdfext(const struct dmi_header *hdr, void *data)
 {
 	struct ath11k_base *ab = data;
 	const char *magic = ATH11K_SMBIOS_BDF_EXT_MAGIC;
 	struct ath11k_smbios_bdf *smbios = (struct ath11k_smbios_bdf *)hdr;
 	ssize_t copied;
 	size_t len;
+	u16 cc_code;
 	int i;
 
 	if (ab->qmi.target.bdf_ext[0] != '\0')
@@ -560,6 +561,29 @@ static void ath11k_core_check_bdfext(const struct dmi_header *hdr, void *data)
 		return;
 	}
 
+	spin_lock_bh(&ab->base_lock);
+
+	switch (smbios->country_code_flag) {
+	case ATH11K_SMBIOS_CC_ISO:
+		cc_code = __le16_to_cpu(smbios->cc_code);
+		ab->new_alpha2[0] = (cc_code >> 8) & 0xff;
+		ab->new_alpha2[1] = cc_code & 0xff;
+		ath11k_dbg(ab, ATH11K_DBG_BOOT, "cc code from SMBIOS %c%c\n",
+			   ab->new_alpha2[0], ab->new_alpha2[1]);
+		break;
+	case ATH11K_SMBIOS_CC_WW:
+		ab->new_alpha2[0] = '0';
+		ab->new_alpha2[1] = '0';
+		ath11k_dbg(ab, ATH11K_DBG_BOOT, "worldwide regdomain setting from SMBIOS\n");
+		break;
+	default:
+		ath11k_dbg(ab, ATH11K_DBG_BOOT, "ignore country code setting %d from SMBIOS\n",
+			   smbios->country_code_flag);
+		break;
+	}
+
+	spin_unlock_bh(&ab->base_lock);
+
 	if (!smbios->bdf_enabled) {
 		ath11k_dbg(ab, ATH11K_DBG_BOOT, "bdf variant name not found.\n");
 		return;
@@ -599,7 +623,7 @@ static void ath11k_core_check_bdfext(const struct dmi_header *hdr, void *data)
 int ath11k_core_check_smbios(struct ath11k_base *ab)
 {
 	ab->qmi.target.bdf_ext[0] = '\0';
-	dmi_walk(ath11k_core_check_bdfext, ab);
+	dmi_walk(ath11k_core_check_cc_code_bdfext, ab);
 
 	if (ab->qmi.target.bdf_ext[0] == '\0')
 		return -ENODATA;
diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/ath/ath11k/core.h
index fa299bfb4efc..88f87b212ac7 100644
--- a/drivers/net/wireless/ath/ath11k/core.h
+++ b/drivers/net/wireless/ath/ath11k/core.h
@@ -169,12 +169,31 @@ struct ath11k_ext_irq_grp {
 	struct net_device napi_ndev;
 };
 
+enum ath11k_smbios_cc_type {
+	/* disable country code setting from SMBIOS */
+	ATH11K_SMBIOS_CC_DISABLE = 0,
+	/* set country code by ANSI country name, based on ISO3166-1 alpha2 */
+	ATH11K_SMBIOS_CC_ISO = 1,
+	/* worldwide regdomain */
+	ATH11K_SMBIOS_CC_WW = 2,
+};
+
 struct ath11k_smbios_bdf {
 	struct dmi_header hdr;
-	u32 padding;
+	u8 features_disabled;
+	/* enum ath11k_smbios_cc_type */
+	u8 country_code_flag;
+	/* To set specific country, you need to set country code
+	 * flag=ATH11K_SMBIOS_CC_ISO first, then if country is United States, then country
+	 * code value = 0x5553 ("US",'U' = 0x55, 'S'= 0x53), To set country
+	 * to INDONESIA, then country code value = 0x4944 ("IN", 'I'=0x49, 'D'=0x44).
+	 * If country code flag = ATH11K_SMBIOS_CC_WW, then you can use
+	 * worldwide regulatory setting.
+	 */
+	__le16 cc_code;
 	u8 bdf_enabled;
 	u8 bdf_ext[];
-};
+} __packed;
 
 #define HEHANDLE_CAP_PHYINFO_SIZE       3
 #define HECAP_PHYINFO_SIZE              9
diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c
index ca998fb13b62..06d6261e49b2 100644
--- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/drivers/net/wireless/ath/ath11k/mac.c
@@ -8773,6 +8773,17 @@ static int __ath11k_mac_register(struct ath11k *ar)
 		goto err_unregister_hw;
 	}
 
+	if (ab->hw_params.current_cc_support && ab->new_alpha2[0]) {
+		struct wmi_set_current_country_params set_current_param = {};
+
+		memcpy(&set_current_param.alpha2, ab->new_alpha2, 2);
+		memcpy(&ar->alpha2, ab->new_alpha2, 2);
+		ret = ath11k_wmi_send_set_current_country_cmd(ar, &set_current_param);
+		if (ret)
+			ath11k_warn(ar->ab,
+				    "failed set cc code for mac register: %d\n", ret);
+	}
+
 	ret = ath11k_debugfs_register(ar);
 	if (ret) {
 		ath11k_err(ar->ab, "debugfs registration failed: %d\n", ret);

base-commit: 00576220f0dea728fdecfd0d31a0dd661c14e6a1
-- 
2.31.1


-- 
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH] ath11k: add read country code from SMBIOS for WCN6855/QCA6390
  2022-04-21  2:35 ` Wen Gong
@ 2022-04-23  9:53   ` Kalle Valo
  -1 siblings, 0 replies; 12+ messages in thread
From: Kalle Valo @ 2022-04-23  9:53 UTC (permalink / raw)
  To: Wen Gong; +Cc: ath11k, linux-wireless

Wen Gong <quic_wgong@quicinc.com> writes:

> This read the country code from SMBIOS and send the country code
> to firmware, firmware will indicate the regulatory domain info of the
> country code and then ath11k will use the info.
>
> dmesg:
> [ 1242.637173] ath11k_pci 0000:02:00.0: chip_id 0x2 chip_family 0xb board_id 0xff soc_id 0x400c0200
> [ 1242.637176] ath11k_pci 0000:02:00.0: fw_version 0x110b09e5 fw_build_timestamp 2021-06-22 09:32 fw_build_id QC_IMAGE_VERSION_STRING=WLAN.HSP.1.1-02533-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1
> [ 1242.637253] ath11k_pci 0000:02:00.0: worldwide regdomain setting from SMBIOS
> [ 1242.637259] ath11k_pci 0000:02:00.0: bdf variant name not found.
> [ 1242.637261] ath11k_pci 0000:02:00.0: SMBIOS bdf variant name not set.
> [ 1242.637263] ath11k_pci 0000:02:00.0: DT bdf variant name not set.
> [ 1242.927543] ath11k_pci 0000:02:00.0: set current country pdev id 0 alpha2 00
>
> Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3
>
> Signed-off-by: Wen Gong <quic_wgong@quicinc.com>

[...]

> --- a/drivers/net/wireless/ath/ath11k/core.h
> +++ b/drivers/net/wireless/ath/ath11k/core.h
> @@ -169,12 +169,31 @@ struct ath11k_ext_irq_grp {
>  	struct net_device napi_ndev;
>  };
>  
> +enum ath11k_smbios_cc_type {
> +	/* disable country code setting from SMBIOS */
> +	ATH11K_SMBIOS_CC_DISABLE = 0,
> +	/* set country code by ANSI country name, based on ISO3166-1 alpha2 */
> +	ATH11K_SMBIOS_CC_ISO = 1,
> +	/* worldwide regdomain */
> +	ATH11K_SMBIOS_CC_WW = 2,
> +};

In the pending branch I did some whitespace cleanup in this and the
following struct.

> +
>  struct ath11k_smbios_bdf {
>  	struct dmi_header hdr;
> -	u32 padding;
> +	u8 features_disabled;
> +	/* enum ath11k_smbios_cc_type */
> +	u8 country_code_flag;
> +	/* To set specific country, you need to set country code
> +	 * flag=ATH11K_SMBIOS_CC_ISO first, then if country is United States, then country
> +	 * code value = 0x5553 ("US",'U' = 0x55, 'S'= 0x53), To set country
> +	 * to INDONESIA, then country code value = 0x4944 ("IN", 'I'=0x49, 'D'=0x44).
> +	 * If country code flag = ATH11K_SMBIOS_CC_WW, then you can use
> +	 * worldwide regulatory setting.
> +	 */
> +	__le16 cc_code;
>  	u8 bdf_enabled;
>  	u8 bdf_ext[];
> -};
> +} __packed;

Is cc_code really in little endian? I would expect data in smbios to be
in native endian (ie. u16), bios using different endian than the host
sounds strange to me. And struct dmi_header also uses native endian:

struct dmi_header {
	u8 type;
	u8 length;
	u16 handle;
} __packed;

-- 
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] ath11k: add read country code from SMBIOS for WCN6855/QCA6390
@ 2022-04-23  9:53   ` Kalle Valo
  0 siblings, 0 replies; 12+ messages in thread
From: Kalle Valo @ 2022-04-23  9:53 UTC (permalink / raw)
  To: Wen Gong; +Cc: ath11k, linux-wireless

Wen Gong <quic_wgong@quicinc.com> writes:

> This read the country code from SMBIOS and send the country code
> to firmware, firmware will indicate the regulatory domain info of the
> country code and then ath11k will use the info.
>
> dmesg:
> [ 1242.637173] ath11k_pci 0000:02:00.0: chip_id 0x2 chip_family 0xb board_id 0xff soc_id 0x400c0200
> [ 1242.637176] ath11k_pci 0000:02:00.0: fw_version 0x110b09e5 fw_build_timestamp 2021-06-22 09:32 fw_build_id QC_IMAGE_VERSION_STRING=WLAN.HSP.1.1-02533-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1
> [ 1242.637253] ath11k_pci 0000:02:00.0: worldwide regdomain setting from SMBIOS
> [ 1242.637259] ath11k_pci 0000:02:00.0: bdf variant name not found.
> [ 1242.637261] ath11k_pci 0000:02:00.0: SMBIOS bdf variant name not set.
> [ 1242.637263] ath11k_pci 0000:02:00.0: DT bdf variant name not set.
> [ 1242.927543] ath11k_pci 0000:02:00.0: set current country pdev id 0 alpha2 00
>
> Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3
>
> Signed-off-by: Wen Gong <quic_wgong@quicinc.com>

[...]

> --- a/drivers/net/wireless/ath/ath11k/core.h
> +++ b/drivers/net/wireless/ath/ath11k/core.h
> @@ -169,12 +169,31 @@ struct ath11k_ext_irq_grp {
>  	struct net_device napi_ndev;
>  };
>  
> +enum ath11k_smbios_cc_type {
> +	/* disable country code setting from SMBIOS */
> +	ATH11K_SMBIOS_CC_DISABLE = 0,
> +	/* set country code by ANSI country name, based on ISO3166-1 alpha2 */
> +	ATH11K_SMBIOS_CC_ISO = 1,
> +	/* worldwide regdomain */
> +	ATH11K_SMBIOS_CC_WW = 2,
> +};

In the pending branch I did some whitespace cleanup in this and the
following struct.

> +
>  struct ath11k_smbios_bdf {
>  	struct dmi_header hdr;
> -	u32 padding;
> +	u8 features_disabled;
> +	/* enum ath11k_smbios_cc_type */
> +	u8 country_code_flag;
> +	/* To set specific country, you need to set country code
> +	 * flag=ATH11K_SMBIOS_CC_ISO first, then if country is United States, then country
> +	 * code value = 0x5553 ("US",'U' = 0x55, 'S'= 0x53), To set country
> +	 * to INDONESIA, then country code value = 0x4944 ("IN", 'I'=0x49, 'D'=0x44).
> +	 * If country code flag = ATH11K_SMBIOS_CC_WW, then you can use
> +	 * worldwide regulatory setting.
> +	 */
> +	__le16 cc_code;
>  	u8 bdf_enabled;
>  	u8 bdf_ext[];
> -};
> +} __packed;

Is cc_code really in little endian? I would expect data in smbios to be
in native endian (ie. u16), bios using different endian than the host
sounds strange to me. And struct dmi_header also uses native endian:

struct dmi_header {
	u8 type;
	u8 length;
	u16 handle;
} __packed;

-- 
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

-- 
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] ath11k: add read country code from SMBIOS for WCN6855/QCA6390
  2022-04-23  9:53   ` Kalle Valo
@ 2022-04-24  6:22     ` Wen Gong
  -1 siblings, 0 replies; 12+ messages in thread
From: Wen Gong @ 2022-04-24  6:22 UTC (permalink / raw)
  To: Kalle Valo; +Cc: ath11k, linux-wireless

On 4/23/2022 5:53 PM, Kalle Valo wrote:
> Wen Gong <quic_wgong@quicinc.com> writes:
>
>
...
>> +
>>   struct ath11k_smbios_bdf {
>>   	struct dmi_header hdr;
>> -	u32 padding;
>> +	u8 features_disabled;
>> +	/* enum ath11k_smbios_cc_type */
>> +	u8 country_code_flag;
>> +	/* To set specific country, you need to set country code
>> +	 * flag=ATH11K_SMBIOS_CC_ISO first, then if country is United States, then country
>> +	 * code value = 0x5553 ("US",'U' = 0x55, 'S'= 0x53), To set country
>> +	 * to INDONESIA, then country code value = 0x4944 ("IN", 'I'=0x49, 'D'=0x44).
>> +	 * If country code flag = ATH11K_SMBIOS_CC_WW, then you can use
>> +	 * worldwide regulatory setting.
>> +	 */
>> +	__le16 cc_code;
>>   	u8 bdf_enabled;
>>   	u8 bdf_ext[];
>> -};
>> +} __packed;
> Is cc_code really in little endian? I would expect data in smbios to be
> in native endian (ie. u16), bios using different endian than the host
> sounds strange to me. And struct dmi_header also uses native endian:
>
> struct dmi_header {
> 	u8 type;
> 	u8 length;
> 	u16 handle;
> } __packed;

Yes, Kalle,

I agree with you.

need I send new version to change the "__le16 cc_code" to "u16 cc_code"?


-- 
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] ath11k: add read country code from SMBIOS for WCN6855/QCA6390
@ 2022-04-24  6:22     ` Wen Gong
  0 siblings, 0 replies; 12+ messages in thread
From: Wen Gong @ 2022-04-24  6:22 UTC (permalink / raw)
  To: Kalle Valo; +Cc: ath11k, linux-wireless

On 4/23/2022 5:53 PM, Kalle Valo wrote:
> Wen Gong <quic_wgong@quicinc.com> writes:
>
>
...
>> +
>>   struct ath11k_smbios_bdf {
>>   	struct dmi_header hdr;
>> -	u32 padding;
>> +	u8 features_disabled;
>> +	/* enum ath11k_smbios_cc_type */
>> +	u8 country_code_flag;
>> +	/* To set specific country, you need to set country code
>> +	 * flag=ATH11K_SMBIOS_CC_ISO first, then if country is United States, then country
>> +	 * code value = 0x5553 ("US",'U' = 0x55, 'S'= 0x53), To set country
>> +	 * to INDONESIA, then country code value = 0x4944 ("IN", 'I'=0x49, 'D'=0x44).
>> +	 * If country code flag = ATH11K_SMBIOS_CC_WW, then you can use
>> +	 * worldwide regulatory setting.
>> +	 */
>> +	__le16 cc_code;
>>   	u8 bdf_enabled;
>>   	u8 bdf_ext[];
>> -};
>> +} __packed;
> Is cc_code really in little endian? I would expect data in smbios to be
> in native endian (ie. u16), bios using different endian than the host
> sounds strange to me. And struct dmi_header also uses native endian:
>
> struct dmi_header {
> 	u8 type;
> 	u8 length;
> 	u16 handle;
> } __packed;

Yes, Kalle,

I agree with you.

need I send new version to change the "__le16 cc_code" to "u16 cc_code"?


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] ath11k: add read country code from SMBIOS for WCN6855/QCA6390
  2022-04-24  6:22     ` Wen Gong
@ 2022-04-24 10:26       ` Kalle Valo
  -1 siblings, 0 replies; 12+ messages in thread
From: Kalle Valo @ 2022-04-24 10:26 UTC (permalink / raw)
  To: Wen Gong; +Cc: ath11k, linux-wireless

Wen Gong <quic_wgong@quicinc.com> writes:

> On 4/23/2022 5:53 PM, Kalle Valo wrote:
>> Wen Gong <quic_wgong@quicinc.com> writes:
>>
>>
> ...
>>> +
>>>   struct ath11k_smbios_bdf {
>>>   	struct dmi_header hdr;
>>> -	u32 padding;
>>> +	u8 features_disabled;
>>> +	/* enum ath11k_smbios_cc_type */
>>> +	u8 country_code_flag;
>>> +	/* To set specific country, you need to set country code
>>> +	 * flag=ATH11K_SMBIOS_CC_ISO first, then if country is United States, then country
>>> +	 * code value = 0x5553 ("US",'U' = 0x55, 'S'= 0x53), To set country
>>> +	 * to INDONESIA, then country code value = 0x4944 ("IN", 'I'=0x49, 'D'=0x44).
>>> +	 * If country code flag = ATH11K_SMBIOS_CC_WW, then you can use
>>> +	 * worldwide regulatory setting.
>>> +	 */
>>> +	__le16 cc_code;
>>>   	u8 bdf_enabled;
>>>   	u8 bdf_ext[];
>>> -};
>>> +} __packed;
>> Is cc_code really in little endian? I would expect data in smbios to be
>> in native endian (ie. u16), bios using different endian than the host
>> sounds strange to me. And struct dmi_header also uses native endian:
>>
>> struct dmi_header {
>> 	u8 type;
>> 	u8 length;
>> 	u16 handle;
>> } __packed;
>
> Yes, Kalle,
>
> I agree with you.
>
> need I send new version to change the "__le16 cc_code" to "u16 cc_code"?

I fixed this in the pending branch, compile tested only. Please check:

https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/commit/?h=pending&id=a6d583e310c70fb93ec7045f0ea38c12632098d8

-- 
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] ath11k: add read country code from SMBIOS for WCN6855/QCA6390
@ 2022-04-24 10:26       ` Kalle Valo
  0 siblings, 0 replies; 12+ messages in thread
From: Kalle Valo @ 2022-04-24 10:26 UTC (permalink / raw)
  To: Wen Gong; +Cc: ath11k, linux-wireless

Wen Gong <quic_wgong@quicinc.com> writes:

> On 4/23/2022 5:53 PM, Kalle Valo wrote:
>> Wen Gong <quic_wgong@quicinc.com> writes:
>>
>>
> ...
>>> +
>>>   struct ath11k_smbios_bdf {
>>>   	struct dmi_header hdr;
>>> -	u32 padding;
>>> +	u8 features_disabled;
>>> +	/* enum ath11k_smbios_cc_type */
>>> +	u8 country_code_flag;
>>> +	/* To set specific country, you need to set country code
>>> +	 * flag=ATH11K_SMBIOS_CC_ISO first, then if country is United States, then country
>>> +	 * code value = 0x5553 ("US",'U' = 0x55, 'S'= 0x53), To set country
>>> +	 * to INDONESIA, then country code value = 0x4944 ("IN", 'I'=0x49, 'D'=0x44).
>>> +	 * If country code flag = ATH11K_SMBIOS_CC_WW, then you can use
>>> +	 * worldwide regulatory setting.
>>> +	 */
>>> +	__le16 cc_code;
>>>   	u8 bdf_enabled;
>>>   	u8 bdf_ext[];
>>> -};
>>> +} __packed;
>> Is cc_code really in little endian? I would expect data in smbios to be
>> in native endian (ie. u16), bios using different endian than the host
>> sounds strange to me. And struct dmi_header also uses native endian:
>>
>> struct dmi_header {
>> 	u8 type;
>> 	u8 length;
>> 	u16 handle;
>> } __packed;
>
> Yes, Kalle,
>
> I agree with you.
>
> need I send new version to change the "__le16 cc_code" to "u16 cc_code"?

I fixed this in the pending branch, compile tested only. Please check:

https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/commit/?h=pending&id=a6d583e310c70fb93ec7045f0ea38c12632098d8

-- 
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

-- 
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] ath11k: add read country code from SMBIOS for WCN6855/QCA6390
  2022-04-24 10:26       ` Kalle Valo
@ 2022-04-24 12:11         ` Wen Gong
  -1 siblings, 0 replies; 12+ messages in thread
From: Wen Gong @ 2022-04-24 12:11 UTC (permalink / raw)
  To: Kalle Valo; +Cc: ath11k, linux-wireless

On 4/24/2022 6:26 PM, Kalle Valo wrote:
> Wen Gong <quic_wgong@quicinc.com> writes:
>
>> On 4/23/2022 5:53 PM, Kalle Valo wrote:
>>> Wen Gong <quic_wgong@quicinc.com> writes:
>>>
>>>
>> ...
...
>> Yes, Kalle,
>>
>> I agree with you.
>>
>> need I send new version to change the "__le16 cc_code" to "u16 cc_code"?
> I fixed this in the pending branch, compile tested only. Please check:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/commit/?h=pending&id=a6d583e310c70fb93ec7045f0ea38c12632098d8
yes, it is OK after check.
>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] ath11k: add read country code from SMBIOS for WCN6855/QCA6390
@ 2022-04-24 12:11         ` Wen Gong
  0 siblings, 0 replies; 12+ messages in thread
From: Wen Gong @ 2022-04-24 12:11 UTC (permalink / raw)
  To: Kalle Valo; +Cc: ath11k, linux-wireless

On 4/24/2022 6:26 PM, Kalle Valo wrote:
> Wen Gong <quic_wgong@quicinc.com> writes:
>
>> On 4/23/2022 5:53 PM, Kalle Valo wrote:
>>> Wen Gong <quic_wgong@quicinc.com> writes:
>>>
>>>
>> ...
...
>> Yes, Kalle,
>>
>> I agree with you.
>>
>> need I send new version to change the "__le16 cc_code" to "u16 cc_code"?
> I fixed this in the pending branch, compile tested only. Please check:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/commit/?h=pending&id=a6d583e310c70fb93ec7045f0ea38c12632098d8
yes, it is OK after check.
>

-- 
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] ath11k: add read country code from SMBIOS for WCN6855/QCA6390
  2022-04-21  2:35 ` Wen Gong
@ 2022-04-27  7:28   ` Kalle Valo
  -1 siblings, 0 replies; 12+ messages in thread
From: Kalle Valo @ 2022-04-27  7:28 UTC (permalink / raw)
  To: Wen Gong; +Cc: ath11k, linux-wireless, quic_wgong

Wen Gong <quic_wgong@quicinc.com> wrote:

> This read the country code from SMBIOS and send the country code
> to firmware, firmware will indicate the regulatory domain info of the
> country code and then ath11k will use the info.
> 
> dmesg:
> [ 1242.637173] ath11k_pci 0000:02:00.0: chip_id 0x2 chip_family 0xb board_id 0xff soc_id 0x400c0200
> [ 1242.637176] ath11k_pci 0000:02:00.0: fw_version 0x110b09e5 fw_build_timestamp 2021-06-22 09:32 fw_build_id QC_IMAGE_VERSION_STRING=WLAN.HSP.1.1-02533-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1
> [ 1242.637253] ath11k_pci 0000:02:00.0: worldwide regdomain setting from SMBIOS
> [ 1242.637259] ath11k_pci 0000:02:00.0: bdf variant name not found.
> [ 1242.637261] ath11k_pci 0000:02:00.0: SMBIOS bdf variant name not set.
> [ 1242.637263] ath11k_pci 0000:02:00.0: DT bdf variant name not set.
> [ 1242.927543] ath11k_pci 0000:02:00.0: set current country pdev id 0 alpha2 00
> 
> Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3
> 
> Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
> Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>

Patch applied to ath-next branch of ath.git, thanks.

66721bb4bbf2 ath11k: read country code from SMBIOS for WCN6855/QCA6390

-- 
https://patchwork.kernel.org/project/linux-wireless/patch/20220421023501.32167-1-quic_wgong@quicinc.com/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] ath11k: add read country code from SMBIOS for WCN6855/QCA6390
@ 2022-04-27  7:28   ` Kalle Valo
  0 siblings, 0 replies; 12+ messages in thread
From: Kalle Valo @ 2022-04-27  7:28 UTC (permalink / raw)
  To: Wen Gong; +Cc: ath11k, linux-wireless, quic_wgong

Wen Gong <quic_wgong@quicinc.com> wrote:

> This read the country code from SMBIOS and send the country code
> to firmware, firmware will indicate the regulatory domain info of the
> country code and then ath11k will use the info.
> 
> dmesg:
> [ 1242.637173] ath11k_pci 0000:02:00.0: chip_id 0x2 chip_family 0xb board_id 0xff soc_id 0x400c0200
> [ 1242.637176] ath11k_pci 0000:02:00.0: fw_version 0x110b09e5 fw_build_timestamp 2021-06-22 09:32 fw_build_id QC_IMAGE_VERSION_STRING=WLAN.HSP.1.1-02533-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1
> [ 1242.637253] ath11k_pci 0000:02:00.0: worldwide regdomain setting from SMBIOS
> [ 1242.637259] ath11k_pci 0000:02:00.0: bdf variant name not found.
> [ 1242.637261] ath11k_pci 0000:02:00.0: SMBIOS bdf variant name not set.
> [ 1242.637263] ath11k_pci 0000:02:00.0: DT bdf variant name not set.
> [ 1242.927543] ath11k_pci 0000:02:00.0: set current country pdev id 0 alpha2 00
> 
> Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3
> 
> Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
> Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>

Patch applied to ath-next branch of ath.git, thanks.

66721bb4bbf2 ath11k: read country code from SMBIOS for WCN6855/QCA6390

-- 
https://patchwork.kernel.org/project/linux-wireless/patch/20220421023501.32167-1-quic_wgong@quicinc.com/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches


-- 
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2022-04-27  7:28 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-21  2:35 [PATCH] ath11k: add read country code from SMBIOS for WCN6855/QCA6390 Wen Gong
2022-04-21  2:35 ` Wen Gong
2022-04-23  9:53 ` Kalle Valo
2022-04-23  9:53   ` Kalle Valo
2022-04-24  6:22   ` Wen Gong
2022-04-24  6:22     ` Wen Gong
2022-04-24 10:26     ` Kalle Valo
2022-04-24 10:26       ` Kalle Valo
2022-04-24 12:11       ` Wen Gong
2022-04-24 12:11         ` Wen Gong
2022-04-27  7:28 ` Kalle Valo
2022-04-27  7:28   ` Kalle Valo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.