2024-01-30 06:47:16

by Dmitry Baryshkov

[permalink] [raw]
Subject: [PATCH 0/3] wifi: ath10k: fix board file loading for wcn3990 devices

The ath10k driver fails to properly handle fallback from board-2.bin to
board.bin for WCN3990 cards. This happens because the
ath10k_hw_params_list doesn't include .fw.board* parameters for the
WCN3990 platform.

Add board data configuration for WCN3990. While we are at it, merge
common pieces of BDF support: drop .board and .eboard names from struct
ath10k_hw_params_fw and use the common name instead.

Signed-off-by: Dmitry Baryshkov <[email protected]>
---
Dmitry Baryshkov (3):
wifi: ath10k: populate board data for WCN3990
wifi: ath10k: drop chip-specific board data file name
wifi: ath10k: drop fw.eboard file name

drivers/net/wireless/ath/ath10k/core.c | 32 ++++-------------------------
drivers/net/wireless/ath/ath10k/hw.h | 14 ++-----------
drivers/net/wireless/ath/ath10k/pci.c | 10 ++++-----
drivers/net/wireless/ath/ath10k/targaddrs.h | 3 +++
4 files changed, 14 insertions(+), 45 deletions(-)
---
base-commit: 596764183be8ebb13352b281a442a1f1151c9b06
change-id: 20240129-wcn3990-board-fw-a2d97507a712

Best regards,
--
Dmitry Baryshkov <[email protected]>



2024-01-30 06:47:16

by Dmitry Baryshkov

[permalink] [raw]
Subject: [PATCH 1/3] wifi: ath10k: populate board data for WCN3990

Specify board data size (and board.bin filename) for the WCN3990
platform.

Reported-by: Yongqin Liu <[email protected]>
Fixes: 03a72288c546 ("ath10k: wmi: add hw params entry for wcn3990")
Signed-off-by: Dmitry Baryshkov <[email protected]>
---
drivers/net/wireless/ath/ath10k/core.c | 3 +++
drivers/net/wireless/ath/ath10k/hw.h | 1 +
drivers/net/wireless/ath/ath10k/targaddrs.h | 3 +++
3 files changed, 7 insertions(+)

diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
index 0032f8aa892f..4e3736d7aff7 100644
--- a/drivers/net/wireless/ath/ath10k/core.c
+++ b/drivers/net/wireless/ath/ath10k/core.c
@@ -720,6 +720,9 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
.max_spatial_stream = 4,
.fw = {
.dir = WCN3990_HW_1_0_FW_DIR,
+ .board = WCN3990_HW_1_0_BOARD_DATA_FILE,
+ .board_size = WCN3990_BOARD_DATA_SZ,
+ .board_ext_size = WCN3990_BOARD_EXT_DATA_SZ,
},
.sw_decrypt_mcast_mgmt = true,
.rx_desc_ops = &wcn3990_rx_desc_ops,
diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h
index 93c073091996..9aa2d821b507 100644
--- a/drivers/net/wireless/ath/ath10k/hw.h
+++ b/drivers/net/wireless/ath/ath10k/hw.h
@@ -133,6 +133,7 @@ enum qca9377_chip_id_rev {
/* WCN3990 1.0 definitions */
#define WCN3990_HW_1_0_DEV_VERSION ATH10K_HW_WCN3990
#define WCN3990_HW_1_0_FW_DIR ATH10K_FW_DIR "/WCN3990/hw1.0"
+#define WCN3990_HW_1_0_BOARD_DATA_FILE "board.bin"

#define ATH10K_FW_FILE_BASE "firmware"
#define ATH10K_FW_API_MAX 6
diff --git a/drivers/net/wireless/ath/ath10k/targaddrs.h b/drivers/net/wireless/ath/ath10k/targaddrs.h
index ec556bb88d65..ba37e6c7ced0 100644
--- a/drivers/net/wireless/ath/ath10k/targaddrs.h
+++ b/drivers/net/wireless/ath/ath10k/targaddrs.h
@@ -491,4 +491,7 @@ struct host_interest {
#define QCA4019_BOARD_DATA_SZ 12064
#define QCA4019_BOARD_EXT_DATA_SZ 0

+#define WCN3990_BOARD_DATA_SZ 26328
+#define WCN3990_BOARD_EXT_DATA_SZ 0
+
#endif /* __TARGADDRS_H__ */

--
2.39.2


2024-01-30 06:47:24

by Dmitry Baryshkov

[permalink] [raw]
Subject: [PATCH 2/3] wifi: ath10k: drop chip-specific board data file name

The .fw.board parameter predates board-2.bin support. For all the
platforms, which define this parameter, it is equal to "board.bin".
Other platforms (like WCN3990) ommit it, limiting the ability to
provide board-specific data file.

Signed-off-by: Dmitry Baryshkov <[email protected]>
---
drivers/net/wireless/ath/ath10k/core.c | 23 +----------------------
drivers/net/wireless/ath/ath10k/hw.h | 12 +-----------
drivers/net/wireless/ath/ath10k/pci.c | 10 +++++-----
3 files changed, 7 insertions(+), 38 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
index 4e3736d7aff7..e01a7b196b99 100644
--- a/drivers/net/wireless/ath/ath10k/core.c
+++ b/drivers/net/wireless/ath/ath10k/core.c
@@ -75,7 +75,6 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
.cal_data_len = 2116,
.fw = {
.dir = QCA988X_HW_2_0_FW_DIR,
- .board = QCA988X_HW_2_0_BOARD_DATA_FILE,
.board_size = QCA988X_BOARD_DATA_SZ,
.board_ext_size = QCA988X_BOARD_EXT_DATA_SZ,
},
@@ -116,7 +115,6 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
.cal_data_len = 2116,
.fw = {
.dir = QCA988X_HW_2_0_FW_DIR,
- .board = QCA988X_HW_2_0_BOARD_DATA_FILE,
.board_size = QCA988X_BOARD_DATA_SZ,
.board_ext_size = QCA988X_BOARD_EXT_DATA_SZ,
},
@@ -158,7 +156,6 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
.cal_data_len = 2116,
.fw = {
.dir = QCA9887_HW_1_0_FW_DIR,
- .board = QCA9887_HW_1_0_BOARD_DATA_FILE,
.board_size = QCA9887_BOARD_DATA_SZ,
.board_ext_size = QCA9887_BOARD_EXT_DATA_SZ,
},
@@ -199,7 +196,6 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
.cal_data_len = 0,
.fw = {
.dir = QCA6174_HW_3_0_FW_DIR,
- .board = QCA6174_HW_3_0_BOARD_DATA_FILE,
.board_size = QCA6174_BOARD_DATA_SZ,
.board_ext_size = QCA6174_BOARD_EXT_DATA_SZ,
},
@@ -236,7 +232,6 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
.cal_data_len = 8124,
.fw = {
.dir = QCA6174_HW_2_1_FW_DIR,
- .board = QCA6174_HW_2_1_BOARD_DATA_FILE,
.board_size = QCA6174_BOARD_DATA_SZ,
.board_ext_size = QCA6174_BOARD_EXT_DATA_SZ,
},
@@ -277,7 +272,6 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
.cal_data_len = 8124,
.fw = {
.dir = QCA6174_HW_2_1_FW_DIR,
- .board = QCA6174_HW_2_1_BOARD_DATA_FILE,
.board_size = QCA6174_BOARD_DATA_SZ,
.board_ext_size = QCA6174_BOARD_EXT_DATA_SZ,
},
@@ -318,7 +312,6 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
.cal_data_len = 8124,
.fw = {
.dir = QCA6174_HW_3_0_FW_DIR,
- .board = QCA6174_HW_3_0_BOARD_DATA_FILE,
.board_size = QCA6174_BOARD_DATA_SZ,
.board_ext_size = QCA6174_BOARD_EXT_DATA_SZ,
},
@@ -360,7 +353,6 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
.fw = {
/* uses same binaries as hw3.0 */
.dir = QCA6174_HW_3_0_FW_DIR,
- .board = QCA6174_HW_3_0_BOARD_DATA_FILE,
.board_size = QCA6174_BOARD_DATA_SZ,
.board_ext_size = QCA6174_BOARD_EXT_DATA_SZ,
},
@@ -409,7 +401,6 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
.cal_data_len = 12064,
.fw = {
.dir = QCA99X0_HW_2_0_FW_DIR,
- .board = QCA99X0_HW_2_0_BOARD_DATA_FILE,
.board_size = QCA99X0_BOARD_DATA_SZ,
.board_ext_size = QCA99X0_BOARD_EXT_DATA_SZ,
},
@@ -457,7 +448,6 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
.cal_data_len = 12064,
.fw = {
.dir = QCA9984_HW_1_0_FW_DIR,
- .board = QCA9984_HW_1_0_BOARD_DATA_FILE,
.eboard = QCA9984_HW_1_0_EBOARD_DATA_FILE,
.board_size = QCA99X0_BOARD_DATA_SZ,
.board_ext_size = QCA99X0_BOARD_EXT_DATA_SZ,
@@ -510,7 +500,6 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
.cal_data_len = 12064,
.fw = {
.dir = QCA9888_HW_2_0_FW_DIR,
- .board = QCA9888_HW_2_0_BOARD_DATA_FILE,
.board_size = QCA99X0_BOARD_DATA_SZ,
.board_ext_size = QCA99X0_BOARD_EXT_DATA_SZ,
},
@@ -556,7 +545,6 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
.cal_data_len = 8124,
.fw = {
.dir = QCA9377_HW_1_0_FW_DIR,
- .board = QCA9377_HW_1_0_BOARD_DATA_FILE,
.board_size = QCA9377_BOARD_DATA_SZ,
.board_ext_size = QCA9377_BOARD_EXT_DATA_SZ,
},
@@ -597,7 +585,6 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
.cal_data_len = 8124,
.fw = {
.dir = QCA9377_HW_1_0_FW_DIR,
- .board = QCA9377_HW_1_0_BOARD_DATA_FILE,
.board_size = QCA9377_BOARD_DATA_SZ,
.board_ext_size = QCA9377_BOARD_EXT_DATA_SZ,
},
@@ -640,7 +627,6 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
.cal_data_len = 8124,
.fw = {
.dir = QCA9377_HW_1_0_FW_DIR,
- .board = QCA9377_HW_1_0_BOARD_DATA_FILE,
.board_size = QCA9377_BOARD_DATA_SZ,
.board_ext_size = QCA9377_BOARD_EXT_DATA_SZ,
},
@@ -680,7 +666,6 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
.cal_data_len = 12064,
.fw = {
.dir = QCA4019_HW_1_0_FW_DIR,
- .board = QCA4019_HW_1_0_BOARD_DATA_FILE,
.board_size = QCA4019_BOARD_DATA_SZ,
.board_ext_size = QCA4019_BOARD_EXT_DATA_SZ,
},
@@ -720,7 +705,6 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
.max_spatial_stream = 4,
.fw = {
.dir = WCN3990_HW_1_0_FW_DIR,
- .board = WCN3990_HW_1_0_BOARD_DATA_FILE,
.board_size = WCN3990_BOARD_DATA_SZ,
.board_ext_size = WCN3990_BOARD_EXT_DATA_SZ,
},
@@ -1291,11 +1275,6 @@ static int ath10k_core_fetch_board_data_api_1(struct ath10k *ar, int bd_ie_type)
char boardname[100];

if (bd_ie_type == ATH10K_BD_IE_BOARD) {
- if (!ar->hw_params.fw.board) {
- ath10k_err(ar, "failed to find board file fw entry\n");
- return -EINVAL;
- }
-
scnprintf(boardname, sizeof(boardname), "board-%s-%s.bin",
ath10k_bus_str(ar->hif.bus), dev_name(ar->dev));

@@ -1305,7 +1284,7 @@ static int ath10k_core_fetch_board_data_api_1(struct ath10k *ar, int bd_ie_type)
if (IS_ERR(ar->normal_mode_fw.board)) {
fw = ath10k_fetch_fw_file(ar,
ar->hw_params.fw.dir,
- ar->hw_params.fw.board);
+ ATH10K_BOARD_DATA_FILE);
ar->normal_mode_fw.board = fw;
}

diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h
index 9aa2d821b507..12e8aebab1e9 100644
--- a/drivers/net/wireless/ath/ath10k/hw.h
+++ b/drivers/net/wireless/ath/ath10k/hw.h
@@ -39,14 +39,12 @@ enum ath10k_bus {
#define QCA988X_HW_2_0_VERSION 0x4100016c
#define QCA988X_HW_2_0_CHIP_ID_REV 0x2
#define QCA988X_HW_2_0_FW_DIR ATH10K_FW_DIR "/QCA988X/hw2.0"
-#define QCA988X_HW_2_0_BOARD_DATA_FILE "board.bin"
#define QCA988X_HW_2_0_PATCH_LOAD_ADDR 0x1234

/* QCA9887 1.0 definitions */
#define QCA9887_HW_1_0_VERSION 0x4100016d
#define QCA9887_HW_1_0_CHIP_ID_REV 0
#define QCA9887_HW_1_0_FW_DIR ATH10K_FW_DIR "/QCA9887/hw1.0"
-#define QCA9887_HW_1_0_BOARD_DATA_FILE "board.bin"
#define QCA9887_HW_1_0_PATCH_LOAD_ADDR 0x1234

/* QCA6174 target BMI version signatures */
@@ -85,11 +83,9 @@ enum qca9377_chip_id_rev {
};

#define QCA6174_HW_2_1_FW_DIR ATH10K_FW_DIR "/QCA6174/hw2.1"
-#define QCA6174_HW_2_1_BOARD_DATA_FILE "board.bin"
#define QCA6174_HW_2_1_PATCH_LOAD_ADDR 0x1234

#define QCA6174_HW_3_0_FW_DIR ATH10K_FW_DIR "/QCA6174/hw3.0"
-#define QCA6174_HW_3_0_BOARD_DATA_FILE "board.bin"
#define QCA6174_HW_3_0_PATCH_LOAD_ADDR 0x1234

/* QCA99X0 1.0 definitions (unsupported) */
@@ -99,7 +95,6 @@ enum qca9377_chip_id_rev {
#define QCA99X0_HW_2_0_DEV_VERSION 0x01000000
#define QCA99X0_HW_2_0_CHIP_ID_REV 0x1
#define QCA99X0_HW_2_0_FW_DIR ATH10K_FW_DIR "/QCA99X0/hw2.0"
-#define QCA99X0_HW_2_0_BOARD_DATA_FILE "board.bin"
#define QCA99X0_HW_2_0_PATCH_LOAD_ADDR 0x1234

/* QCA9984 1.0 defines */
@@ -107,7 +102,6 @@ enum qca9377_chip_id_rev {
#define QCA9984_HW_DEV_TYPE 0xa
#define QCA9984_HW_1_0_CHIP_ID_REV 0x0
#define QCA9984_HW_1_0_FW_DIR ATH10K_FW_DIR "/QCA9984/hw1.0"
-#define QCA9984_HW_1_0_BOARD_DATA_FILE "board.bin"
#define QCA9984_HW_1_0_EBOARD_DATA_FILE "eboard.bin"
#define QCA9984_HW_1_0_PATCH_LOAD_ADDR 0x1234

@@ -116,24 +110,20 @@ enum qca9377_chip_id_rev {
#define QCA9888_HW_DEV_TYPE 0xc
#define QCA9888_HW_2_0_CHIP_ID_REV 0x0
#define QCA9888_HW_2_0_FW_DIR ATH10K_FW_DIR "/QCA9888/hw2.0"
-#define QCA9888_HW_2_0_BOARD_DATA_FILE "board.bin"
#define QCA9888_HW_2_0_PATCH_LOAD_ADDR 0x1234

/* QCA9377 1.0 definitions */
#define QCA9377_HW_1_0_FW_DIR ATH10K_FW_DIR "/QCA9377/hw1.0"
-#define QCA9377_HW_1_0_BOARD_DATA_FILE "board.bin"
#define QCA9377_HW_1_0_PATCH_LOAD_ADDR 0x1234

/* QCA4019 1.0 definitions */
#define QCA4019_HW_1_0_DEV_VERSION 0x01000000
#define QCA4019_HW_1_0_FW_DIR ATH10K_FW_DIR "/QCA4019/hw1.0"
-#define QCA4019_HW_1_0_BOARD_DATA_FILE "board.bin"
#define QCA4019_HW_1_0_PATCH_LOAD_ADDR 0x1234

/* WCN3990 1.0 definitions */
#define WCN3990_HW_1_0_DEV_VERSION ATH10K_HW_WCN3990
#define WCN3990_HW_1_0_FW_DIR ATH10K_FW_DIR "/WCN3990/hw1.0"
-#define WCN3990_HW_1_0_BOARD_DATA_FILE "board.bin"

#define ATH10K_FW_FILE_BASE "firmware"
#define ATH10K_FW_API_MAX 6
@@ -160,6 +150,7 @@ enum qca9377_chip_id_rev {
#define ATH10K_FIRMWARE_MAGIC "QCA-ATH10K"
#define ATH10K_BOARD_MAGIC "QCA-ATH10K-BOARD"

+#define ATH10K_BOARD_DATA_FILE "board.bin"
#define ATH10K_BOARD_API2_FILE "board-2.bin"

#define REG_DUMP_COUNT_QCA988X 60
@@ -554,7 +545,6 @@ struct ath10k_hw_params {

struct ath10k_hw_params_fw {
const char *dir;
- const char *board;
size_t board_size;
const char *eboard;
size_t ext_board_size;
diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c
index 3de2de6d44bc..bc15a996f1bb 100644
--- a/drivers/net/wireless/ath/ath10k/pci.c
+++ b/drivers/net/wireless/ath/ath10k/pci.c
@@ -3826,28 +3826,28 @@ MODULE_FIRMWARE(QCA988X_HW_2_0_FW_DIR "/" ATH10K_FW_API2_FILE);
MODULE_FIRMWARE(QCA988X_HW_2_0_FW_DIR "/" ATH10K_FW_API3_FILE);
MODULE_FIRMWARE(QCA988X_HW_2_0_FW_DIR "/" ATH10K_FW_API4_FILE);
MODULE_FIRMWARE(QCA988X_HW_2_0_FW_DIR "/" ATH10K_FW_API5_FILE);
-MODULE_FIRMWARE(QCA988X_HW_2_0_FW_DIR "/" QCA988X_HW_2_0_BOARD_DATA_FILE);
+MODULE_FIRMWARE(QCA988X_HW_2_0_FW_DIR "/" ATH10K_BOARD_DATA_FILE);
MODULE_FIRMWARE(QCA988X_HW_2_0_FW_DIR "/" ATH10K_BOARD_API2_FILE);

/* QCA9887 1.0 firmware files */
MODULE_FIRMWARE(QCA9887_HW_1_0_FW_DIR "/" ATH10K_FW_API5_FILE);
-MODULE_FIRMWARE(QCA9887_HW_1_0_FW_DIR "/" QCA9887_HW_1_0_BOARD_DATA_FILE);
+MODULE_FIRMWARE(QCA9887_HW_1_0_FW_DIR "/" ATH10K_BOARD_DATA_FILE);
MODULE_FIRMWARE(QCA9887_HW_1_0_FW_DIR "/" ATH10K_BOARD_API2_FILE);

/* QCA6174 2.1 firmware files */
MODULE_FIRMWARE(QCA6174_HW_2_1_FW_DIR "/" ATH10K_FW_API4_FILE);
MODULE_FIRMWARE(QCA6174_HW_2_1_FW_DIR "/" ATH10K_FW_API5_FILE);
-MODULE_FIRMWARE(QCA6174_HW_2_1_FW_DIR "/" QCA6174_HW_2_1_BOARD_DATA_FILE);
+MODULE_FIRMWARE(QCA6174_HW_2_1_FW_DIR "/" ATH10K_BOARD_DATA_FILE);
MODULE_FIRMWARE(QCA6174_HW_2_1_FW_DIR "/" ATH10K_BOARD_API2_FILE);

/* QCA6174 3.1 firmware files */
MODULE_FIRMWARE(QCA6174_HW_3_0_FW_DIR "/" ATH10K_FW_API4_FILE);
MODULE_FIRMWARE(QCA6174_HW_3_0_FW_DIR "/" ATH10K_FW_API5_FILE);
MODULE_FIRMWARE(QCA6174_HW_3_0_FW_DIR "/" ATH10K_FW_API6_FILE);
-MODULE_FIRMWARE(QCA6174_HW_3_0_FW_DIR "/" QCA6174_HW_3_0_BOARD_DATA_FILE);
+MODULE_FIRMWARE(QCA6174_HW_3_0_FW_DIR "/" ATH10K_BOARD_DATA_FILE);
MODULE_FIRMWARE(QCA6174_HW_3_0_FW_DIR "/" ATH10K_BOARD_API2_FILE);

/* QCA9377 1.0 firmware files */
MODULE_FIRMWARE(QCA9377_HW_1_0_FW_DIR "/" ATH10K_FW_API6_FILE);
MODULE_FIRMWARE(QCA9377_HW_1_0_FW_DIR "/" ATH10K_FW_API5_FILE);
-MODULE_FIRMWARE(QCA9377_HW_1_0_FW_DIR "/" QCA9377_HW_1_0_BOARD_DATA_FILE);
+MODULE_FIRMWARE(QCA9377_HW_1_0_FW_DIR "/" ATH10K_BOARD_DATA_FILE);

--
2.39.2


2024-01-30 06:47:27

by Dmitry Baryshkov

[permalink] [raw]
Subject: [PATCH 3/3] wifi: ath10k: drop fw.eboard file name

Follow the example set up by previous commit and drop .fw.eboard
setting. Instead always use "eboard.bin" in this case. QCA9984 already
uses that file name, any (im)possible future users will just have to use
the same file name.

Signed-off-by: Dmitry Baryshkov <[email protected]>
---
drivers/net/wireless/ath/ath10k/core.c | 8 +-------
drivers/net/wireless/ath/ath10k/hw.h | 3 +--
2 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
index e01a7b196b99..71ca1c1a528f 100644
--- a/drivers/net/wireless/ath/ath10k/core.c
+++ b/drivers/net/wireless/ath/ath10k/core.c
@@ -448,7 +448,6 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
.cal_data_len = 12064,
.fw = {
.dir = QCA9984_HW_1_0_FW_DIR,
- .eboard = QCA9984_HW_1_0_EBOARD_DATA_FILE,
.board_size = QCA99X0_BOARD_DATA_SZ,
.board_ext_size = QCA99X0_BOARD_EXT_DATA_SZ,
.ext_board_size = QCA99X0_EXT_BOARD_DATA_SZ,
@@ -1294,13 +1293,8 @@ static int ath10k_core_fetch_board_data_api_1(struct ath10k *ar, int bd_ie_type)
ar->normal_mode_fw.board_data = ar->normal_mode_fw.board->data;
ar->normal_mode_fw.board_len = ar->normal_mode_fw.board->size;
} else if (bd_ie_type == ATH10K_BD_IE_BOARD_EXT) {
- if (!ar->hw_params.fw.eboard) {
- ath10k_err(ar, "failed to find eboard file fw entry\n");
- return -EINVAL;
- }
-
fw = ath10k_fetch_fw_file(ar, ar->hw_params.fw.dir,
- ar->hw_params.fw.eboard);
+ ATH10K_EBOARD_DATA_FILE);
ar->normal_mode_fw.ext_board = fw;
if (IS_ERR(ar->normal_mode_fw.ext_board))
return PTR_ERR(ar->normal_mode_fw.ext_board);
diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h
index 12e8aebab1e9..48897e5eca06 100644
--- a/drivers/net/wireless/ath/ath10k/hw.h
+++ b/drivers/net/wireless/ath/ath10k/hw.h
@@ -102,7 +102,6 @@ enum qca9377_chip_id_rev {
#define QCA9984_HW_DEV_TYPE 0xa
#define QCA9984_HW_1_0_CHIP_ID_REV 0x0
#define QCA9984_HW_1_0_FW_DIR ATH10K_FW_DIR "/QCA9984/hw1.0"
-#define QCA9984_HW_1_0_EBOARD_DATA_FILE "eboard.bin"
#define QCA9984_HW_1_0_PATCH_LOAD_ADDR 0x1234

/* QCA9888 2.0 defines */
@@ -152,6 +151,7 @@ enum qca9377_chip_id_rev {

#define ATH10K_BOARD_DATA_FILE "board.bin"
#define ATH10K_BOARD_API2_FILE "board-2.bin"
+#define ATH10K_EBOARD_DATA_FILE "eboard.bin"

#define REG_DUMP_COUNT_QCA988X 60

@@ -546,7 +546,6 @@ struct ath10k_hw_params {
struct ath10k_hw_params_fw {
const char *dir;
size_t board_size;
- const char *eboard;
size_t ext_board_size;
size_t board_ext_size;
} fw;

--
2.39.2


2024-02-12 21:03:19

by Jeff Johnson

[permalink] [raw]
Subject: Re: [PATCH 0/3] wifi: ath10k: fix board file loading for wcn3990 devices

On 1/29/2024 10:47 PM, Dmitry Baryshkov wrote:
> The ath10k driver fails to properly handle fallback from board-2.bin to
> board.bin for WCN3990 cards. This happens because the
> ath10k_hw_params_list doesn't include .fw.board* parameters for the
> WCN3990 platform.
>
> Add board data configuration for WCN3990. While we are at it, merge
> common pieces of BDF support: drop .board and .eboard names from struct
> ath10k_hw_params_fw and use the common name instead.
>
> Signed-off-by: Dmitry Baryshkov <[email protected]>
> ---
> Dmitry Baryshkov (3):
> wifi: ath10k: populate board data for WCN3990
> wifi: ath10k: drop chip-specific board data file name
> wifi: ath10k: drop fw.eboard file name
>
> drivers/net/wireless/ath/ath10k/core.c | 32 ++++-------------------------
> drivers/net/wireless/ath/ath10k/hw.h | 14 ++-----------
> drivers/net/wireless/ath/ath10k/pci.c | 10 ++++-----
> drivers/net/wireless/ath/ath10k/targaddrs.h | 3 +++
> 4 files changed, 14 insertions(+), 45 deletions(-)
> ---
> base-commit: 596764183be8ebb13352b281a442a1f1151c9b06
> change-id: 20240129-wcn3990-board-fw-a2d97507a712
>
> Best regards,

This series looks OK to me, but would like Kalle to review as well

2024-03-30 04:48:52

by Dmitry Baryshkov

[permalink] [raw]
Subject: Re: [PATCH 0/3] wifi: ath10k: fix board file loading for wcn3990 devices

On Tue, 30 Jan 2024 at 08:47, Dmitry Baryshkov
<[email protected]> wrote:
>
> The ath10k driver fails to properly handle fallback from board-2.bin to
> board.bin for WCN3990 cards. This happens because the
> ath10k_hw_params_list doesn't include .fw.board* parameters for the
> WCN3990 platform.
>
> Add board data configuration for WCN3990. While we are at it, merge
> common pieces of BDF support: drop .board and .eboard names from struct
> ath10k_hw_params_fw and use the common name instead.
>
> Signed-off-by: Dmitry Baryshkov <[email protected]>
> ---
> Dmitry Baryshkov (3):
> wifi: ath10k: populate board data for WCN3990
> wifi: ath10k: drop chip-specific board data file name
> wifi: ath10k: drop fw.eboard file name
>
> drivers/net/wireless/ath/ath10k/core.c | 32 ++++-------------------------
> drivers/net/wireless/ath/ath10k/hw.h | 14 ++-----------
> drivers/net/wireless/ath/ath10k/pci.c | 10 ++++-----
> drivers/net/wireless/ath/ath10k/targaddrs.h | 3 +++
> 4 files changed, 14 insertions(+), 45 deletions(-)
> ---
> base-commit: 596764183be8ebb13352b281a442a1f1151c9b06
> change-id: 20240129-wcn3990-board-fw-a2d97507a712

Kalle, Jeff, is there anything pending on me on this series?

--
With best wishes
Dmitry

2024-04-02 23:41:28

by Jeff Johnson

[permalink] [raw]
Subject: Re: [PATCH 0/3] wifi: ath10k: fix board file loading for wcn3990 devices

On 3/29/2024 9:48 PM, Dmitry Baryshkov wrote:
> On Tue, 30 Jan 2024 at 08:47, Dmitry Baryshkov
> <[email protected]> wrote:
>>
>> The ath10k driver fails to properly handle fallback from board-2.bin to
>> board.bin for WCN3990 cards. This happens because the
>> ath10k_hw_params_list doesn't include .fw.board* parameters for the
>> WCN3990 platform.
>>
>> Add board data configuration for WCN3990. While we are at it, merge
>> common pieces of BDF support: drop .board and .eboard names from struct
>> ath10k_hw_params_fw and use the common name instead.
>>
>> Signed-off-by: Dmitry Baryshkov <[email protected]>
>> ---
>> Dmitry Baryshkov (3):
>> wifi: ath10k: populate board data for WCN3990
>> wifi: ath10k: drop chip-specific board data file name
>> wifi: ath10k: drop fw.eboard file name
>>
>> drivers/net/wireless/ath/ath10k/core.c | 32 ++++-------------------------
>> drivers/net/wireless/ath/ath10k/hw.h | 14 ++-----------
>> drivers/net/wireless/ath/ath10k/pci.c | 10 ++++-----
>> drivers/net/wireless/ath/ath10k/targaddrs.h | 3 +++
>> 4 files changed, 14 insertions(+), 45 deletions(-)
>> ---
>> base-commit: 596764183be8ebb13352b281a442a1f1151c9b06
>> change-id: 20240129-wcn3990-board-fw-a2d97507a712
>
> Kalle, Jeff, is there anything pending on me on this series?
>
Nothing from me -- this is outside my area of expertise so I'm deferring to Kalle.

Kalle?


2024-04-05 11:57:12

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH 0/3] wifi: ath10k: fix board file loading for wcn3990 devices

Dmitry Baryshkov <[email protected]> writes:

> On Tue, 30 Jan 2024 at 08:47, Dmitry Baryshkov
> <[email protected]> wrote:
>
>>
>> The ath10k driver fails to properly handle fallback from board-2.bin to
>> board.bin for WCN3990 cards. This happens because the
>> ath10k_hw_params_list doesn't include .fw.board* parameters for the
>> WCN3990 platform.
>>
>> Add board data configuration for WCN3990. While we are at it, merge
>> common pieces of BDF support: drop .board and .eboard names from struct
>> ath10k_hw_params_fw and use the common name instead.
>>
>> Signed-off-by: Dmitry Baryshkov <[email protected]>
>> ---
>> Dmitry Baryshkov (3):
>> wifi: ath10k: populate board data for WCN3990
>> wifi: ath10k: drop chip-specific board data file name
>> wifi: ath10k: drop fw.eboard file name
>>
>> drivers/net/wireless/ath/ath10k/core.c | 32 ++++-------------------------
>> drivers/net/wireless/ath/ath10k/hw.h | 14 ++-----------
>> drivers/net/wireless/ath/ath10k/pci.c | 10 ++++-----
>> drivers/net/wireless/ath/ath10k/targaddrs.h | 3 +++
>> 4 files changed, 14 insertions(+), 45 deletions(-)
>> ---
>> base-commit: 596764183be8ebb13352b281a442a1f1151c9b06
>> change-id: 20240129-wcn3990-board-fw-a2d97507a712
>
> Kalle, Jeff, is there anything pending on me on this series?

This is in my queue (Deferred state):

https://patchwork.kernel.org/project/linux-wireless/list/?series=821157&state=*&order=date

Unfortunately there is not really much time for ath10k nowadays so there
will be delays.

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

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

2024-04-05 13:07:35

by Dmitry Baryshkov

[permalink] [raw]
Subject: Re: [PATCH 0/3] wifi: ath10k: fix board file loading for wcn3990 devices

On Fri, 5 Apr 2024 at 14:57, Kalle Valo <[email protected]> wrote:
>
> Dmitry Baryshkov <[email protected]> writes:
>
> > On Tue, 30 Jan 2024 at 08:47, Dmitry Baryshkov
> > <[email protected]> wrote:
> >
> >>
> >> The ath10k driver fails to properly handle fallback from board-2.bin to
> >> board.bin for WCN3990 cards. This happens because the
> >> ath10k_hw_params_list doesn't include .fw.board* parameters for the
> >> WCN3990 platform.
> >>
> >> Add board data configuration for WCN3990. While we are at it, merge
> >> common pieces of BDF support: drop .board and .eboard names from struct
> >> ath10k_hw_params_fw and use the common name instead.
> >>
> >> Signed-off-by: Dmitry Baryshkov <[email protected]>
> >> ---
> >> Dmitry Baryshkov (3):
> >> wifi: ath10k: populate board data for WCN3990
> >> wifi: ath10k: drop chip-specific board data file name
> >> wifi: ath10k: drop fw.eboard file name
> >>
> >> drivers/net/wireless/ath/ath10k/core.c | 32 ++++-------------------------
> >> drivers/net/wireless/ath/ath10k/hw.h | 14 ++-----------
> >> drivers/net/wireless/ath/ath10k/pci.c | 10 ++++-----
> >> drivers/net/wireless/ath/ath10k/targaddrs.h | 3 +++
> >> 4 files changed, 14 insertions(+), 45 deletions(-)
> >> ---
> >> base-commit: 596764183be8ebb13352b281a442a1f1151c9b06
> >> change-id: 20240129-wcn3990-board-fw-a2d97507a712
> >
> > Kalle, Jeff, is there anything pending on me on this series?
>
> This is in my queue (Deferred state):
>
> https://patchwork.kernel.org/project/linux-wireless/list/?series=821157&state=*&order=date
>
> Unfortunately there is not really much time for ath10k nowadays so there
> will be delays.

No problems, each maintainer treats PW states slightly differently, so
I was trying to understand if there is anything left on my side.

--
With best wishes
Dmitry

2024-04-05 13:12:15

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH 0/3] wifi: ath10k: fix board file loading for wcn3990 devices

Dmitry Baryshkov <[email protected]> writes:

> On Fri, 5 Apr 2024 at 14:57, Kalle Valo <[email protected]> wrote:
>
>>
>> Dmitry Baryshkov <[email protected]> writes:
>>
>> > On Tue, 30 Jan 2024 at 08:47, Dmitry Baryshkov
>> > <[email protected]> wrote:
>> >
>> >>
>> >> The ath10k driver fails to properly handle fallback from board-2.bin to
>> >> board.bin for WCN3990 cards. This happens because the
>> >> ath10k_hw_params_list doesn't include .fw.board* parameters for the
>> >> WCN3990 platform.
>> >>
>> >> Add board data configuration for WCN3990. While we are at it, merge
>> >> common pieces of BDF support: drop .board and .eboard names from struct
>> >> ath10k_hw_params_fw and use the common name instead.
>> >>
>> >> Signed-off-by: Dmitry Baryshkov <[email protected]>
>> >> ---
>> >> Dmitry Baryshkov (3):
>> >> wifi: ath10k: populate board data for WCN3990
>> >> wifi: ath10k: drop chip-specific board data file name
>> >> wifi: ath10k: drop fw.eboard file name
>> >>
>> >> drivers/net/wireless/ath/ath10k/core.c | 32 ++++-------------------------
>> >> drivers/net/wireless/ath/ath10k/hw.h | 14 ++-----------
>> >> drivers/net/wireless/ath/ath10k/pci.c | 10 ++++-----
>> >> drivers/net/wireless/ath/ath10k/targaddrs.h | 3 +++
>> >> 4 files changed, 14 insertions(+), 45 deletions(-)
>> >> ---
>> >> base-commit: 596764183be8ebb13352b281a442a1f1151c9b06
>> >> change-id: 20240129-wcn3990-board-fw-a2d97507a712
>> >
>> > Kalle, Jeff, is there anything pending on me on this series?
>>
>> This is in my queue (Deferred state):
>>
>> https://patchwork.kernel.org/project/linux-wireless/list/?series=821157&state=*&order=date
>>
>> Unfortunately there is not really much time for ath10k nowadays so there
>> will be delays.
>
> No problems, each maintainer treats PW states slightly differently, so
> I was trying to understand if there is anything left on my side.

That's true. I have tried to document how we in wireless use patchwork here:

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

Though I guess I'm the only one using Deferred state.

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

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

2024-04-24 13:37:52

by Dmitry Baryshkov

[permalink] [raw]
Subject: Re: [PATCH 0/3] wifi: ath10k: fix board file loading for wcn3990 devices

On Fri, 5 Apr 2024 at 14:57, Kalle Valo <[email protected]> wrote:
>
> Dmitry Baryshkov <[email protected]> writes:
>
> > On Tue, 30 Jan 2024 at 08:47, Dmitry Baryshkov
> > <[email protected]> wrote:
> >
> >>
> >> The ath10k driver fails to properly handle fallback from board-2.bin to
> >> board.bin for WCN3990 cards. This happens because the
> >> ath10k_hw_params_list doesn't include .fw.board* parameters for the
> >> WCN3990 platform.
> >>
> >> Add board data configuration for WCN3990. While we are at it, merge
> >> common pieces of BDF support: drop .board and .eboard names from struct
> >> ath10k_hw_params_fw and use the common name instead.
> >>
> >> Signed-off-by: Dmitry Baryshkov <[email protected]>
> >> ---
> >> Dmitry Baryshkov (3):
> >> wifi: ath10k: populate board data for WCN3990
> >> wifi: ath10k: drop chip-specific board data file name
> >> wifi: ath10k: drop fw.eboard file name
> >>
> >> drivers/net/wireless/ath/ath10k/core.c | 32 ++++-------------------------
> >> drivers/net/wireless/ath/ath10k/hw.h | 14 ++-----------
> >> drivers/net/wireless/ath/ath10k/pci.c | 10 ++++-----
> >> drivers/net/wireless/ath/ath10k/targaddrs.h | 3 +++
> >> 4 files changed, 14 insertions(+), 45 deletions(-)
> >> ---
> >> base-commit: 596764183be8ebb13352b281a442a1f1151c9b06
> >> change-id: 20240129-wcn3990-board-fw-a2d97507a712
> >
> > Kalle, Jeff, is there anything pending on me on this series?
>
> This is in my queue (Deferred state):
>
> https://patchwork.kernel.org/project/linux-wireless/list/?series=821157&state=*&order=date
>
> Unfortunately there is not really much time for ath10k nowadays so there
> will be delays.
>
> --
> https://patchwork.kernel.org/project/linux-wireless/list/
>
> https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

Please excuse me, can we get at least patch 1? It fixes an actual
issue with WCN3990 which prevents us from testing board data files (or
adding new boards) without fixing board-2.bin first. The driver
ignores board.bin even if it is present on rootfs.

--
With best wishes
Dmitry

2024-04-25 10:22:18

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH 1/3] wifi: ath10k: populate board data for WCN3990

Dmitry Baryshkov <[email protected]> wrote:

> Specify board data size (and board.bin filename) for the WCN3990
> platform.
>
> Reported-by: Yongqin Liu <[email protected]>
> Fixes: 03a72288c546 ("ath10k: wmi: add hw params entry for wcn3990")
> Signed-off-by: Dmitry Baryshkov <[email protected]>
> Signed-off-by: Kalle Valo <[email protected]>

3 patches applied to ath-next branch of ath.git, thanks.

f1f1b5b055c9 wifi: ath10k: populate board data for WCN3990
de0ff4613363 wifi: ath10k: drop chip-specific board data file name
3ebae49bbc12 wifi: ath10k: drop fw.eboard file name

--
https://patchwork.kernel.org/project/linux-wireless/patch/[email protected]/

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