[PATCH] wifi: ath11k: handle HTT PPDU ID format indication
From: Andrei-Alexandru Bleortu
Date: Fri Oct 02 2026 - 08:32:53 EST
Firmware from WLAN.HK 2.8 onwards sends HTT_T2H_PPDU_ID_FMT_IND (0x30)
once per radio at bring-up. It describes how the firmware packs a PPDU
ID: for each field (HW scheduler command id, ring, sequence index,
link, command type, TQM command, MAC id and CRC) whether it is present,
its width and its bit offset.
ath11k only ever compares PPDU IDs and never decodes them, so it has no
use for this layout, but the unknown message type ends up in the
default case and logs
htt event 48 not handled
at warning level on every boot. Add the message type and dump the
message at the ATH11K_DBG_DP_HTT debug level instead.
Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.9.0.1-02146-QCAHKSWPL_SILICONZ-1
Assisted-by: LLM
Signed-off-by: Andrei-Alexandru Bleortu <me@xxxxxxxxxxxx>
---
Found and fixed with an AI coding assistant (Claude Code), which also
drafted this changelog. Tested on a Ubiquiti UniFi U6 Enterprise
(IPQ5018 + 2x QCN9074) running 7.2.8 with the OpenWrt backports ath11k:
the warning is gone from both QCN9074 radios. On ath-next the patch is
compile-tested (W=1) only.
drivers/net/wireless/ath/ath11k/dp.h | 1 +
drivers/net/wireless/ath/ath11k/dp_rx.c | 5 +++++
2 files changed, 6 insertions(+)
diff --git a/drivers/net/wireless/ath/ath11k/dp.h b/drivers/net/wireless/ath/ath11k/dp.h
index 84f66839f0c6..bace81c453e1 100644
--- a/drivers/net/wireless/ath/ath11k/dp.h
+++ b/drivers/net/wireless/ath/ath11k/dp.h
@@ -1033,6 +1033,7 @@ enum htt_t2h_msg_type {
HTT_T2H_MSG_TYPE_PPDU_STATS_IND = 0x1d,
HTT_T2H_MSG_TYPE_EXT_STATS_CONF = 0x1c,
HTT_T2H_MSG_TYPE_BKPRESSURE_EVENT_IND = 0x24,
+ HTT_T2H_MSG_TYPE_PPDU_ID_FMT_IND = 0x30,
};
#define HTT_TARGET_VERSION_MAJOR 3
diff --git a/drivers/net/wireless/ath/ath11k/dp_rx.c b/drivers/net/wireless/ath/ath11k/dp_rx.c
index 6d95f7b343a5..a22cf1b9f43a 100644
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
@@ -1747,6 +1747,11 @@ void ath11k_dp_htt_htc_t2h_msg_handler(struct ath11k_base *ab,
case HTT_T2H_MSG_TYPE_BKPRESSURE_EVENT_IND:
ath11k_htt_backpressure_event_handler(ab, skb);
break;
+ case HTT_T2H_MSG_TYPE_PPDU_ID_FMT_IND:
+ /* The bit layout of the firmware's PPDU IDs; ath11k only compares them. */
+ ath11k_dbg_dump(ab, ATH11K_DBG_DP_HTT, NULL, "htt ppdu id format: ",
+ skb->data, skb->len);
+ break;
default:
ath11k_warn(ab, "htt event %d not handled\n", type);
break;
--
2.47.3