NACK/Cmnt: [SRU][Jammy 6.8][Noble 6.8][PATCH 01/11] wifi: ath12k: add fallback board name without variant while searching board-2.bin

Stefan Bader stefan.bader at canonical.com
Mon Feb 17 11:04:51 UTC 2025


On 12.02.25 15:51, Werner Sembach wrote:
> From: Wen Gong <quic_wgong at quicinc.com>
> 
> Buglink: https://bugs.launchpad.net/bugs/2098104
> 
> Impact: This is a patchset the we (TUXEDO Computers) currently apply on top of the Ubuntu 6.8 kernel to make it run smoothly on all our devices. All patches apply smoothly to 6.8.
> Fix: These are all patches already upstream, just not on the 6.8 branch, because they where upstreamed after that one was already EOL.
> Testcase: We run this patchset for all our customers devices (we basically maintain our own OEM branch) so it is quite field testet. Besides that, whenever a new patch was added we did regression testing on a selection of devices.
> 
> Currently a variant value read from DT or SMBIOS is considered while
> searching board-2.bin, this may fail because not all board-2.bin files
> contains that symbol.
> 
> Add fallback board name which removes variant value and searches again
> in board-2.bin when fails to increase boot up success rate.
> 
> dmesg log after this patch:
> [169547.248472] ath12k_pci 0000:05:00.0: boot using board name 'bus=pci,vendor=17cb,device=1103,subsystem-vendor=17cb,subsystem-device=3374,qmi-chip-id=2,qmi-board-id=262,variant=test'
> [169547.248565] ath12k_pci 0000:05:00.0: boot firmware request ath12k/WCN7850/hw2.0/board-2.bin size 180324
> [169547.248568] ath12k_pci 0000:05:00.0: board name
> [169547.248570] ath12k_pci 0000:05:00.0: 00000000: 62 75 73 3d 70 63 69 2c 76 65 6e 64 6f 72 3d 31  bus=pci,vendor=1
> [169547.248571] ath12k_pci 0000:05:00.0: 00000010: 37 63 62 2c 64 65 76 69 63 65 3d 31 31 30 33 2c  7cb,device=1103,
> [169547.248572] ath12k_pci 0000:05:00.0: 00000020: 73 75 62 73 79 73 74 65 6d 2d 76 65 6e 64 6f 72  subsystem-vendor
> [169547.248574] ath12k_pci 0000:05:00.0: 00000030: 3d 31 37 63 62 2c 73 75 62 73 79 73 74 65 6d 2d  =17cb,subsystem-
> [169547.248575] ath12k_pci 0000:05:00.0: 00000040: 64 65 76 69 63 65 3d 33 33 37 34 2c 71 6d 69 2d  device=3374,qmi-
> [169547.248576] ath12k_pci 0000:05:00.0: 00000050: 63 68 69 70 2d 69 64 3d 32 2c 71 6d 69 2d 62 6f  chip-id=2,qmi-bo
> [169547.248577] ath12k_pci 0000:05:00.0: 00000060: 61 72 64 2d 69 64 3d 32 36 32                    ard-id=262
> [169547.248578] ath12k_pci 0000:05:00.0: board name
> [169547.248579] ath12k_pci 0000:05:00.0: 00000000: 62 75 73 3d 70 63 69 2c 76 65 6e 64 6f 72 3d 31  bus=pci,vendor=1
> [169547.248581] ath12k_pci 0000:05:00.0: 00000010: 37 63 62 2c 64 65 76 69 63 65 3d 31 31 30 33 2c  7cb,device=1103,
> [169547.248582] ath12k_pci 0000:05:00.0: 00000020: 73 75 62 73 79 73 74 65 6d 2d 76 65 6e 64 6f 72  subsystem-vendor
> [169547.248583] ath12k_pci 0000:05:00.0: 00000030: 3d 31 37 63 62 2c 73 75 62 73 79 73 74 65 6d 2d  =17cb,subsystem-
> [169547.248584] ath12k_pci 0000:05:00.0: 00000040: 64 65 76 69 63 65 3d 33 33 37 34 2c 71 6d 69 2d  device=3374,qmi-
> [169547.248585] ath12k_pci 0000:05:00.0: 00000050: 63 68 69 70 2d 69 64 3d 32 2c 71 6d 69 2d 62 6f  chip-id=2,qmi-bo
> [169547.248587] ath12k_pci 0000:05:00.0: 00000060: 61 72 64 2d 69 64 3d 32 36 36                    ard-id=266
> [169547.248588] ath12k_pci 0000:05:00.0: board name
> [169547.248589] ath12k_pci 0000:05:00.0: 00000000: 62 75 73 3d 70 63 69 2c 76 65 6e 64 6f 72 3d 31  bus=pci,vendor=1
> [169547.248590] ath12k_pci 0000:05:00.0: 00000010: 37 63 62 2c 64 65 76 69 63 65 3d 31 31 30 33 2c  7cb,device=1103,
> [169547.248591] ath12k_pci 0000:05:00.0: 00000020: 73 75 62 73 79 73 74 65 6d 2d 76 65 6e 64 6f 72  subsystem-vendor
> [169547.248592] ath12k_pci 0000:05:00.0: 00000030: 3d 31 37 63 62 2c 73 75 62 73 79 73 74 65 6d 2d  =17cb,subsystem-
> [169547.248594] ath12k_pci 0000:05:00.0: 00000040: 64 65 76 69 63 65 3d 33 33 37 34 2c 71 6d 69 2d  device=3374,qmi-
> [169547.248595] ath12k_pci 0000:05:00.0: 00000050: 63 68 69 70 2d 69 64 3d 31 38 2c 71 6d 69 2d 62  chip-id=18,qmi-b
> [169547.248596] ath12k_pci 0000:05:00.0: 00000060: 6f 61 72 64 2d 69 64 3d 32 36 36                 oard-id=266
> [169547.248597] ath12k_pci 0000:05:00.0: failed to fetch board data for bus=pci,vendor=17cb,device=1103,subsystem-vendor=17cb,subsystem-device=3374,qmi-chip-id=2,qmi-board-id=262,variant=test from ath12k/WCN7850/hw2.0/board-2.bin
> [169547.248476] ath12k_pci 0000:05:00.0: boot using board name 'bus=pci,vendor=17cb,device=1103,subsystem-vendor=17cb,subsystem-device=3374,qmi-chip-id=2,qmi-board-id=262'
> [169547.248634] ath12k_pci 0000:05:00.0: boot firmware request ath12k/WCN7850/hw2.0/board-2.bin size 180324
> [169547.248636] ath12k_pci 0000:05:00.0: board name
> [169547.248637] ath12k_pci 0000:05:00.0: 00000000: 62 75 73 3d 70 63 69 2c 76 65 6e 64 6f 72 3d 31  bus=pci,vendor=1
> [169547.248638] ath12k_pci 0000:05:00.0: 00000010: 37 63 62 2c 64 65 76 69 63 65 3d 31 31 30 33 2c  7cb,device=1103,
> [169547.248639] ath12k_pci 0000:05:00.0: 00000020: 73 75 62 73 79 73 74 65 6d 2d 76 65 6e 64 6f 72  subsystem-vendor
> [169547.248641] ath12k_pci 0000:05:00.0: 00000030: 3d 31 37 63 62 2c 73 75 62 73 79 73 74 65 6d 2d  =17cb,subsystem-
> [169547.248642] ath12k_pci 0000:05:00.0: 00000040: 64 65 76 69 63 65 3d 33 33 37 34 2c 71 6d 69 2d  device=3374,qmi-
> [169547.248643] ath12k_pci 0000:05:00.0: 00000050: 63 68 69 70 2d 69 64 3d 32 2c 71 6d 69 2d 62 6f  chip-id=2,qmi-bo
> [169547.248645] ath12k_pci 0000:05:00.0: 00000060: 61 72 64 2d 69 64 3d 32 36 32                    ard-id=262
> [169547.248646] ath12k_pci 0000:05:00.0: boot found match for name 'bus=pci,vendor=17cb,device=1103,subsystem-vendor=17cb,subsystem-device=3374,qmi-chip-id=2,qmi-board-id=262'
> [169547.248647] ath12k_pci 0000:05:00.0: boot found board data for 'bus=pci,vendor=17cb,device=1103,subsystem-vendor=17cb,subsystem-device=3374,qmi-chip-id=2,qmi-board-id=262'
> [169547.248649] ath12k_pci 0000:05:00.0: using board api 2
> 
> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4
> 
> Signed-off-by: Wen Gong <quic_wgong at quicinc.com>
> Signed-off-by: Baochen Qiang <quic_bqiang at quicinc.com>
> Signed-off-by: Kalle Valo <quic_kvalo at quicinc.com>
> Link: https://msgid.link/20231216060140.30611-3-quic_bqiang@quicinc.com
> Signed-off-by: Werner Sembach <wse at tuxedocomputers.com>
> ---

Rejected for the following reasons:
- Was re-submitted.

-Stefan
>   drivers/net/wireless/ath/ath12k/core.c | 48 ++++++++++++++++++++++----
>   1 file changed, 41 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/net/wireless/ath/ath12k/core.c b/drivers/net/wireless/ath/ath12k/core.c
> index 95012477e88f9..7f57efb8e93bf 100644
> --- a/drivers/net/wireless/ath/ath12k/core.c
> +++ b/drivers/net/wireless/ath/ath12k/core.c
> @@ -105,13 +105,13 @@ int ath12k_core_resume(struct ath12k_base *ab)
>   	return 0;
>   }
>   
> -static int ath12k_core_create_board_name(struct ath12k_base *ab, char *name,
> -					 size_t name_len)
> +static int __ath12k_core_create_board_name(struct ath12k_base *ab, char *name,
> +					   size_t name_len, bool with_variant)
>   {
>   	/* strlen(',variant=') + strlen(ab->qmi.target.bdf_ext) */
>   	char variant[9 + ATH12K_QMI_BDF_EXT_STR_LENGTH] = { 0 };
>   
> -	if (ab->qmi.target.bdf_ext[0] != '\0')
> +	if (with_variant && ab->qmi.target.bdf_ext[0] != '\0')
>   		scnprintf(variant, sizeof(variant), ",variant=%s",
>   			  ab->qmi.target.bdf_ext);
>   
> @@ -141,6 +141,18 @@ static int ath12k_core_create_board_name(struct ath12k_base *ab, char *name,
>   	return 0;
>   }
>   
> +static int ath12k_core_create_board_name(struct ath12k_base *ab, char *name,
> +					 size_t name_len)
> +{
> +	return __ath12k_core_create_board_name(ab, name, name_len, true);
> +}
> +
> +static int ath12k_core_create_fallback_board_name(struct ath12k_base *ab, char *name,
> +						  size_t name_len)
> +{
> +	return __ath12k_core_create_board_name(ab, name, name_len, false);
> +}
> +
>   const struct firmware *ath12k_core_firmware_request(struct ath12k_base *ab,
>   						    const char *file)
>   {
> @@ -344,7 +356,7 @@ static int ath12k_core_fetch_board_data_api_n(struct ath12k_base *ab,
>   
>   out:
>   	if (!bd->data || !bd->len) {
> -		ath12k_err(ab,
> +		ath12k_dbg(ab, ATH12K_DBG_BOOT,
>   			   "failed to fetch board data for %s from %s\n",
>   			   boardname, filepath);
>   		ret = -ENODATA;
> @@ -375,11 +387,14 @@ int ath12k_core_fetch_board_data_api_1(struct ath12k_base *ab,
>   #define BOARD_NAME_SIZE 200
>   int ath12k_core_fetch_bdf(struct ath12k_base *ab, struct ath12k_board_data *bd)
>   {
> -	char boardname[BOARD_NAME_SIZE];
> +	char boardname[BOARD_NAME_SIZE], fallback_boardname[BOARD_NAME_SIZE];
> +	char *filename, filepath[100];
>   	int bd_api;
>   	int ret;
>   
> -	ret = ath12k_core_create_board_name(ab, boardname, BOARD_NAME_SIZE);
> +	filename = ATH12K_BOARD_API2_FILE;
> +
> +	ret = ath12k_core_create_board_name(ab, boardname, sizeof(boardname));
>   	if (ret) {
>   		ath12k_err(ab, "failed to create board name: %d", ret);
>   		return ret;
> @@ -390,10 +405,29 @@ int ath12k_core_fetch_bdf(struct ath12k_base *ab, struct ath12k_board_data *bd)
>   	if (!ret)
>   		goto success;
>   
> +	ret = ath12k_core_create_fallback_board_name(ab, fallback_boardname,
> +						     sizeof(fallback_boardname));
> +	if (ret) {
> +		ath12k_err(ab, "failed to create fallback board name: %d", ret);
> +		return ret;
> +	}
> +
> +	ret = ath12k_core_fetch_board_data_api_n(ab, bd, fallback_boardname);
> +	if (!ret)
> +		goto success;
> +
>   	bd_api = 1;
>   	ret = ath12k_core_fetch_board_data_api_1(ab, bd, ATH12K_DEFAULT_BOARD_FILE);
>   	if (ret) {
> -		ath12k_err(ab, "failed to fetch board-2.bin or board.bin from %s\n",
> +		ath12k_core_create_firmware_path(ab, filename,
> +						 filepath, sizeof(filepath));
> +		ath12k_err(ab, "failed to fetch board data for %s from %s\n",
> +			   boardname, filepath);
> +		if (memcmp(boardname, fallback_boardname, strlen(boardname)))
> +			ath12k_err(ab, "failed to fetch board data for %s from %s\n",
> +				   fallback_boardname, filepath);
> +
> +		ath12k_err(ab, "failed to fetch board.bin from %s\n",
>   			   ab->hw_params->fw.dir);
>   		return ret;
>   	}


-- 
- Stefan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0xE8675DEECBEECEA3.asc
Type: application/pgp-keys
Size: 47863 bytes
Desc: OpenPGP public key
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20250217/7c52f789/attachment-0001.key>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20250217/7c52f789/attachment-0001.sig>


More information about the kernel-team mailing list