]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: ath12k: Use HTT_TCL_METADATA_VER_V1 in FTM mode
authorAaradhana Sahu <aaradhana.sahu@oss.qualcomm.com>
Fri, 11 Jul 2025 03:54:20 +0000 (09:24 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 15 Aug 2025 14:38:48 +0000 (16:38 +0200)
[ Upstream commit 66b3ebc77d23d6574a965bdbfe41de8aeb7f384e ]

Currently host sends HTT_TCL_METADATA_VER_V2 to the firmware
regardless of the operating mode (Mission or FTM).

Firmware expects additional software information (like peer ID, vdev
ID, and link ID) in Tx packets when HTT_TCL_METADATA_VER_V2 is set.
However, in FTM (Factory Test Mode) mode, no vdev is created on the
host side (this is expected). As a result, the firmware fails to find
the expected vdev during packet processing and ends up dropping
packets.

To fix this, send HTT_TCL_METADATA_VER_V1 in FTM mode because FTM
mode doesn't support HTT_TCL_METADATA_VER_V2.

Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.5-01651-QCAHKSWPL_SILICONZ-1

Fixes: 5d964966bd3f ("wifi: ath12k: Update HTT_TCL_METADATA version and bit mask definitions")
Signed-off-by: Aaradhana Sahu <aaradhana.sahu@oss.qualcomm.com>
Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
Link: https://patch.msgid.link/20250711035420.1509029-1-aaradhana.sahu@oss.qualcomm.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/ath/ath12k/dp.h
drivers/net/wireless/ath/ath12k/dp_tx.c

index a353333f83b68e7b5dc9ee513beca49523b4f283..2f0718edabd20649447a23cef201934c40339292 100644 (file)
@@ -469,6 +469,7 @@ enum htt_h2t_msg_type {
 };
 
 #define HTT_VER_REQ_INFO_MSG_ID                GENMASK(7, 0)
+#define HTT_OPTION_TCL_METADATA_VER_V1 1
 #define HTT_OPTION_TCL_METADATA_VER_V2 2
 #define HTT_OPTION_TAG                 GENMASK(7, 0)
 #define HTT_OPTION_LEN                 GENMASK(15, 8)
index 075912eacfaab520e0ed0041b330096c830ae8a0..7470731eb8300cb96bd0a5cb9fea83e59465fd8f 100644 (file)
@@ -1182,6 +1182,7 @@ int ath12k_dp_tx_htt_h2t_ver_req_msg(struct ath12k_base *ab)
        struct sk_buff *skb;
        struct htt_ver_req_cmd *cmd;
        int len = sizeof(*cmd);
+       u32 metadata_version;
        int ret;
 
        init_completion(&dp->htt_tgt_version_received);
@@ -1194,12 +1195,14 @@ int ath12k_dp_tx_htt_h2t_ver_req_msg(struct ath12k_base *ab)
        cmd = (struct htt_ver_req_cmd *)skb->data;
        cmd->ver_reg_info = le32_encode_bits(HTT_H2T_MSG_TYPE_VERSION_REQ,
                                             HTT_OPTION_TAG);
+       metadata_version = ath12k_ftm_mode ? HTT_OPTION_TCL_METADATA_VER_V1 :
+                          HTT_OPTION_TCL_METADATA_VER_V2;
 
        cmd->tcl_metadata_version = le32_encode_bits(HTT_TAG_TCL_METADATA_VERSION,
                                                     HTT_OPTION_TAG) |
                                    le32_encode_bits(HTT_TCL_METADATA_VER_SZ,
                                                     HTT_OPTION_LEN) |
-                                   le32_encode_bits(HTT_OPTION_TCL_METADATA_VER_V2,
+                                   le32_encode_bits(metadata_version,
                                                     HTT_OPTION_VALUE);
 
        ret = ath12k_htc_send(&ab->htc, dp->eid, skb);