[PATCH 3/3] wifi: ath12k: ignore WLFW servers on the local node

From: Julius Bairaktaris

Date: Wed Nov 11 2026 - 03:09:19 EST


Any local process can publish a server for the WLFW service through the
QRTR name service, which records it on the local node.
ath12k_qmi_ops_new_server() connects to every server the lookup reports
and starts the QMI handshake with it, so that process takes the place of
the firmware, including the REQUEST_MEM indication whose handler frees
the DMA memory that the running firmware writes into.

The WLFW service is provided by the firmware on a remote QRTR node.
Ignore servers on the local node.

Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Julius Bairaktaris <julius@xxxxxxxxxxxxxx>
---
drivers/net/wireless/ath/ath12k/qmi.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/net/wireless/ath/ath12k/qmi.c b/drivers/net/wireless/ath/ath12k/qmi.c
index 817bd820623d2..ca1d8720a4830 100644
--- a/drivers/net/wireless/ath/ath12k/qmi.c
+++ b/drivers/net/wireless/ath/ath12k/qmi.c
@@ -3994,6 +3994,10 @@ static int ath12k_qmi_ops_new_server(struct qmi_handle *qmi_hdl,
struct sockaddr_qrtr *sq = &qmi->sq;
int ret;

+ /* WLFW is served by the firmware, never by the local node */
+ if (service->node == qmi_hdl->sq.sq_node)
+ return -EINVAL;
+
sq->sq_family = AF_QIPCRTR;
sq->sq_node = service->node;
sq->sq_port = service->port;
--
2.53.0