[PATCH 05/11] wifi: ath12k: fix endianness handling in QMI respond firmware memory
Alexander Wilhelm
alexander.wilhelm at westermo.com
Wed Jul 16 00:50:54 PDT 2025
Ensure proper endianness support for big-endian platforms by correcting
data types in the QMI respond firmware memory request message and its
associated structures as well. Add missing byte swaps wherever these
structures are accessed or modified.
Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
Signed-off-by: Alexander Wilhelm <alexander.wilhelm at westermo.com>
---
drivers/net/wireless/ath/ath12k/qmi.c | 10 +++++-----
drivers/net/wireless/ath/ath12k/qmi.h | 8 ++++----
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/net/wireless/ath/ath12k/qmi.c b/drivers/net/wireless/ath/ath12k/qmi.c
index 146e9e1c4834..2d00ea54e478 100644
--- a/drivers/net/wireless/ath/ath12k/qmi.c
+++ b/drivers/net/wireless/ath/ath12k/qmi.c
@@ -2392,11 +2392,11 @@ int ath12k_qmi_respond_fw_mem_request(struct ath12k_base *ab)
ab->qmi.mem_seg_count);
} else {
delayed = false;
- req->mem_seg_len = ab->qmi.mem_seg_count;
- for (i = 0; i < req->mem_seg_len ; i++) {
- req->mem_seg[i].addr = ab->qmi.target_mem[i].paddr;
- req->mem_seg[i].size = ab->qmi.target_mem[i].size;
- req->mem_seg[i].type = ab->qmi.target_mem[i].type;
+ req->mem_seg_len = cpu_to_le32(ab->qmi.mem_seg_count);
+ for (i = 0; i < ab->qmi.mem_seg_count; i++) {
+ req->mem_seg[i].addr = cpu_to_le64(ab->qmi.target_mem[i].paddr);
+ req->mem_seg[i].size = cpu_to_le32(ab->qmi.target_mem[i].size);
+ req->mem_seg[i].type = cpu_to_le32(ab->qmi.target_mem[i].type);
ath12k_dbg(ab, ATH12K_DBG_QMI,
"qmi req mem_seg[%d] %pad %u %u\n", i,
&ab->qmi.target_mem[i].paddr,
diff --git a/drivers/net/wireless/ath/ath12k/qmi.h b/drivers/net/wireless/ath/ath12k/qmi.h
index 92993c85cec9..bd715bca8f23 100644
--- a/drivers/net/wireless/ath/ath12k/qmi.h
+++ b/drivers/net/wireless/ath/ath12k/qmi.h
@@ -356,14 +356,14 @@ struct qmi_wlanfw_request_mem_ind_msg_v01 {
};
struct qmi_wlanfw_mem_seg_resp_s_v01 {
- u64 addr;
- u32 size;
- enum qmi_wlanfw_mem_type_enum_v01 type;
+ __le64 addr;
+ __le32 size;
+ __le32 type;
u8 restore;
};
struct qmi_wlanfw_respond_mem_req_msg_v01 {
- u32 mem_seg_len;
+ __le32 mem_seg_len;
struct qmi_wlanfw_mem_seg_resp_s_v01 mem_seg[ATH12K_QMI_WLANFW_MAX_NUM_MEM_SEG_V01];
};
--
2.34.1
More information about the ath12k
mailing list