From nobody Sat Jun 13 07:15:45 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BFA4137C907 for ; Sat, 9 May 2026 02:59:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778295558; cv=none; b=igUPr/HL2Vl7IeqEkkfZKUJcjoRHMM7uGK1jg07ZrHiYNDtWa7VECwa3qH3fyTWph+5Nwti9pO6wvLddMIoFkJTr0jgb18of6RvnzWqTP0yDU0Rx59FSCIRWsBYFy76RqjAof7XdtGC8wJe09SgcYjQcL1DYH2i2ZDXGidvkiDQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778295558; c=relaxed/simple; bh=UHaA3B0jh+nvgq1/LHaBWTAGcWv9PRMNVGESqVddsP4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=sEUmS+mZlpq9Q4lWmEJhlDPDuXu/kyzVivLGl7HAxJF0e5w5BeOvyQe/j3hU5NA1qyoxg2TjU4XHcCQ6/xY7QYe+9E/SdJ3M/Cju5qz/k9b13mXi0KAyU8/OZiUd3EG1D/PECi0dW4SlXLm7mqjeWHrhGfEMMIP6/MI4AQgK+KU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=pGb1IPo6; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=geD8GEls; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="pGb1IPo6"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="geD8GEls" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6492BofJ656656 for ; Sat, 9 May 2026 02:59:14 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=y7PQ7mMFj09 RBEC6R19QFDNhjCRnQR0cfi6POVI/210=; b=pGb1IPo6bfOm0gu+mHpxhaTKbi9 UjKoBXxQdtVgUN9kISSTTOtU+w3bOpxuQjyXAaEqz+r6X5ms+GMg436bjjvC7VpL xviUwWERJx1TAyEVTaLLr5+TIFpE7zWhOwgfXWiUWMc3GhrkwvhlwrMHHPO8Se2t ILg3mEkFq5GNL7ogx9PRDO3uuKB1jX5xxRdlkTsWqsVRirG4RLOoiGXznnSWyezw cMhFFoC0wzBUXsqZiJCUYIBY0MiRLjmDHnh/x7lBQh/urZ8gP/wD9d3+dZWVuAbl XGlrxEsBSEkJiYbRuwy2APe0bGJbZfN933qH2SsB4LH45aGKkMzrkKa3h8A== Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e1ux6r2sm-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 09 May 2026 02:59:14 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-3663cbff31cso3615976a91.2 for ; Fri, 08 May 2026 19:59:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778295554; x=1778900354; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=y7PQ7mMFj09RBEC6R19QFDNhjCRnQR0cfi6POVI/210=; b=geD8GElscXFjIKio5QprYd7qDeJsMiSbRrJULAMb9+6i1L4IV+2CAHZfqsYzEI2fir wzQwttlUOdDcQByuCkl85mvwz64UyTcaEJhouW1Dr0CDYgEAvdYQmFs62hY7m/sbne0y ejW0mx5SF4mt2qAgLuwiA3oIgvs9xBDd1FDsoFMYf8CgJa8UjYlLu9B+1UXk6AwEE/Tj NTtMhwgR2TSpQyXZmHVF1nDDWBw/AKNWMcmDqpAp/vG9Yy35oRvWiIBhTDxOxX9NJCTG /BLOJzT8RhxJXEgnfO6uPCERzCPe5S9j7NS3KTB98N7pCCyhnKQYSOZQz8LFUYfQjipm RZtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778295554; x=1778900354; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=y7PQ7mMFj09RBEC6R19QFDNhjCRnQR0cfi6POVI/210=; b=aPgDc4rNbtGuO4TWewiYhIkkJzQKFh2tXfVSj6SivjlPsW+MIRaANP1QN8H18MaHjM 7ObHP9/S723xcC+UcmLHtdamlnhBOxNbWIdrt+lzi52LHhbGvnZcjvmDi6gVqAuKN8Fu oe83tsxopCyXENKaBRFqXG8yo86cRtPlk2vZBc9PkSbc1R0ecCZ0aaGTGfZ6jKXYzZRC eN/QdfmR7E2d5affaqU2GS0kusQTt95cBzeVQcL1p1y0KQ19qDHV69e0GI+skikYJEqx e0+Hhly/q3S1TBGKoHbbImDTjzsGvPIT2dqBQepz23c82TghviKiEchRkRIrNd8CzCMM WdiA== X-Forwarded-Encrypted: i=1; AFNElJ/JQfrvCpOljewqs5DSeKMHXFbLTXrpMLdx433DzXCs4V8l4cmi4BbCOU7hTLqjuRYOcAVtMK9+metko9I=@vger.kernel.org X-Gm-Message-State: AOJu0YwgJGzuWhdia7AbhTokM4PwWdJ5gRuTNymZzRbEUZlJM8tCSQU8 kRC5lP7owjs8pTRkvxMDz5Q44mgRWo3n6rqcovE80kAu6Ccc/uYlDMKmjVn9b2MFGbooh/9ebz4 mDI+06rutXKU2JUiro2xXDP7LXAS9rulLPPCkC3/iq4Y/316fPfUWIJanlrK3O8Hqa5M= X-Gm-Gg: Acq92OG2/cCwTUmQajE24IRIBAfWYYKYeVr6nQqG3XE3NOlIiAOyLAjaYE7TURdDOoY tFFwE1Eys3i/w67NrI/QzQtso9u5h0Kx0bYd39yH5RXtI/Go+OkZkBNjDdaZscK3APOM1KmK9qN 55KAruzUdGgFI8OEB2XEfoxoaGWYnKVNSpV9AiSF0jkf/RXGr23O1m70OkLGOuy/valJecNdUQL wyLcxp4jVBfZdeFDE8XfzS2MVYMr1d+ghJQ6CbCb0t2YvWzFg0PLVsnNuN8L94CfcneRP28xpgG sdn1O1Z2gjfqeioF6gEdPSPnvXUT2bymSHnvrh/ejXV0OgfXerJf462lkO0RrBRfFCd/RBmgfUC glsUiwPhiUaGM9eVfjn1GFK78ZHk0qr7stQGMUaHSbpr6vR+shpHvP2BpKhM72qnH+dRFGeK+88 iltDoC X-Received: by 2002:a17:90b:2691:b0:359:fe72:3559 with SMTP id 98e67ed59e1d1-365ac46dc62mr16763810a91.21.1778295553639; Fri, 08 May 2026 19:59:13 -0700 (PDT) X-Received: by 2002:a17:90b:2691:b0:359:fe72:3559 with SMTP id 98e67ed59e1d1-365ac46dc62mr16763787a91.21.1778295553087; Fri, 08 May 2026 19:59:13 -0700 (PDT) Received: from Z2-SFF-G9-MQ.ap.qualcomm.com (i-global052.qualcomm.com. [199.106.103.52]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-367be8be938sm750899a91.4.2026.05.08.19.59.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 19:59:12 -0700 (PDT) From: Miaoqing Pan To: jjohnson@kernel.org Cc: ath12k@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Miaoqing Pan Subject: [PATCH ath-next 1/5] wifi: ath12k: fix TLV32 length mask Date: Sat, 9 May 2026 10:58:15 +0800 Message-Id: <20260509025819.1641630-2-miaoqing.pan@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260509025819.1641630-1-miaoqing.pan@oss.qualcomm.com> References: <20260509025819.1641630-1-miaoqing.pan@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTA5MDAyNyBTYWx0ZWRfX7VIsy/Zu+KHE huGz1evELU9A4HIRvmhY8Dksw0n2Hf6xJoaz4S5raBit1p2PeoLxzgYTYy54UOU4YMQTRE6OWdd Fz7C1iXZSiDn9DPj0mqACJpvqq/bmhlgjzRbXue6lTZ9BI5p7HiRPRt2RM7vOcIkEExKCZkVJEH Ov5vJSKL+X/J+qYScymgCZ2DJbMdGilm92ts5VTHSamVqOuzYefdiDGDRPSJG6IHQbfIAuC+xkI QyEgLNzxwY99/0yvato+tL5qZ1cZlit1TkQxDX74EQ79j2w57EA9z97Thtc+28YAwzHk5w4fu8c Qy/2ub5MDwCmHopogq0GGdoN5FUrAfwMgQVU/HFP5Kub4OsRmMQmTnFGAOOgHNJEiHaXa7X9y85 EJkz1tE9+fbvWEi72odg7qvGkQuvljnltiYCqOr4iG8FhbV0GqTjjfhURiaJ+MIwXj+Epazaynr 3ItcPRmPzwllLgAKuwA== X-Authority-Analysis: v=2.4 cv=QJZYgALL c=1 sm=1 tr=0 ts=69fea302 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=b9+bayejhc3NMeqCNyeLQQ==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=oTESD8Iu_DoklxnQOhcA:9 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-ORIG-GUID: aZcS0fI-kCk8DTdfchfDAK1lF5Srb_CV X-Proofpoint-GUID: aZcS0fI-kCk8DTdfchfDAK1lF5Srb_CV X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-09_01,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 adultscore=0 clxscore=1011 suspectscore=0 spamscore=0 lowpriorityscore=0 bulkscore=0 priorityscore=1501 impostorscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605090027 Content-Type: text/plain; charset="utf-8" HAL_TLV_HDR_LEN was using the wrong bitmask; fix it to cover bits [21:10]. Also drop HAL_SRNG_TLV_HDR_{TAG,LEN} and use the generic TLV header bit definitions for TLV32/TLV64 encode/decode to avoid redundant macros. Tested-on: QCC2072 hw1.0 PCI WLAN.COL.1.0.c2-00068-QCACOLSWPL_V1_TO_SILICON= Z-1 Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00302-QCAHMTSWPL_V1.0_V2.0_SIL= ICONZ-1.115823.3 Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices") Signed-off-by: Miaoqing Pan --- drivers/net/wireless/ath/ath12k/hal.c | 8 ++++---- drivers/net/wireless/ath/ath12k/hal.h | 5 +---- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/hal.c b/drivers/net/wireless/a= th/ath12k/hal.c index a164563fff28..f03817b2fbc5 100644 --- a/drivers/net/wireless/ath/ath12k/hal.c +++ b/drivers/net/wireless/ath/ath12k/hal.c @@ -828,8 +828,8 @@ void *ath12k_hal_encode_tlv64_hdr(void *tlv, u64 tag, u= 64 len) { struct hal_tlv_64_hdr *tlv64 =3D tlv; =20 - tlv64->tl =3D le64_encode_bits(tag, HAL_TLV_HDR_TAG) | - le64_encode_bits(len, HAL_TLV_HDR_LEN); + tlv64->tl =3D le64_encode_bits(tag, HAL_TLV_64_HDR_TAG) | + le64_encode_bits(len, HAL_TLV_64_HDR_LEN); =20 return tlv64->value; } @@ -851,7 +851,7 @@ u16 ath12k_hal_decode_tlv64_hdr(void *tlv, void **desc) struct hal_tlv_64_hdr *tlv64 =3D tlv; u16 tag; =20 - tag =3D le64_get_bits(tlv64->tl, HAL_SRNG_TLV_HDR_TAG); + tag =3D le64_get_bits(tlv64->tl, HAL_TLV_64_HDR_TAG); *desc =3D tlv64->value; =20 return tag; @@ -863,7 +863,7 @@ u16 ath12k_hal_decode_tlv32_hdr(void *tlv, void **desc) struct hal_tlv_hdr *tlv32 =3D tlv; u16 tag; =20 - tag =3D le32_get_bits(tlv32->tl, HAL_SRNG_TLV_HDR_TAG); + tag =3D le32_get_bits(tlv32->tl, HAL_TLV_HDR_TAG); *desc =3D tlv32->value; =20 return tag; diff --git a/drivers/net/wireless/ath/ath12k/hal.h b/drivers/net/wireless/a= th/ath12k/hal.h index bf4f7dbae866..b3a89ace5a97 100644 --- a/drivers/net/wireless/ath/ath12k/hal.h +++ b/drivers/net/wireless/ath/ath12k/hal.h @@ -1442,7 +1442,7 @@ struct hal_ops { }; =20 #define HAL_TLV_HDR_TAG GENMASK(9, 1) -#define HAL_TLV_HDR_LEN GENMASK(25, 10) +#define HAL_TLV_HDR_LEN GENMASK(21, 10) #define HAL_TLV_USR_ID GENMASK(31, 26) =20 #define HAL_TLV_ALIGN 4 @@ -1462,9 +1462,6 @@ struct hal_tlv_64_hdr { u8 value[]; } __packed; =20 -#define HAL_SRNG_TLV_HDR_TAG GENMASK(9, 1) -#define HAL_SRNG_TLV_HDR_LEN GENMASK(25, 10) - dma_addr_t ath12k_hal_srng_get_tp_addr(struct ath12k_base *ab, struct hal_srng *srng); dma_addr_t ath12k_hal_srng_get_hp_addr(struct ath12k_base *ab, --=20 2.34.1 From nobody Sat Jun 13 07:15:45 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9478037D10C for ; Sat, 9 May 2026 02:59:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778295560; cv=none; b=vFdXVrv4roNItq+j8UGVvWu7rLPiaZgkjof07Ux0JVxfuteDCGNN7++2iM9N+w58ulHb18VgLC9h/tKHBeFNkVrXHg7XLhPbLZKfLSV307m8CUiDo7s8tDkaPYWT/7rq7q9geo0nsGoh8Jdc7uCfn8CE0AQiTMlhHyppTmTXm0k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778295560; c=relaxed/simple; bh=ZtS3oUHytkQB2SyNuDBB3t6ZYhXdyb2sbd8HXPllvoo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mIzh5zsLevaVPBYtn4a5q7IyYqHe2DhF7j6lBDo6xXVg+Mgfo8uVQOYRtJaakPkQq8S2zTPr2HPrFium6ZwRNzXj6wH9arsqAqJQJeY4D/s4Xa3pqQV38/nu9lefSD3K58UNcKAyiXZQUcLXGVLqQshtR6cDzcG2ZbPfUnHDoag= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=R57fLsvC; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=TxxQljZ2; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="R57fLsvC"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="TxxQljZ2" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6490Jibj1767970 for ; Sat, 9 May 2026 02:59:17 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=50H5oNb0zAg UgWNo0Pb+zr76atRJ4QpFRMqVAVEcQGA=; b=R57fLsvC6VYbYI4+r/5guUpNZB3 icSJvR29RuDLbIC89fMRBQaEL9VuoJ3cLchhnzGX1RKXBB+631DtNfUBFlnGXFo0 evvasNmM+3tZvLRAtkD38KWswGsczpn1XRV0lYQ6a131YYfFkOHIDFcbSc4k60KR 7nJuovowP/rpywz4tEzPkgS3wRoyyAOns1lD9TkkMj30Q8b+J0JRoOii4tKzrkRC ecjTptfkZ8g5aOMyEV50bvOvdRmlB/86yIrd09n/rQLjtYHkbB39IPfmFGOFoI+m 3v6eAG4UHBJKZbs71tGjiy9ZfXKBalk/sR3x5tAUvveL10f6JSsbSQL9Elw== Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e1t9q095t-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 09 May 2026 02:59:17 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-366344513a3so4144000a91.3 for ; Fri, 08 May 2026 19:59:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778295556; x=1778900356; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=50H5oNb0zAgUgWNo0Pb+zr76atRJ4QpFRMqVAVEcQGA=; b=TxxQljZ2wC4QMsVQTR/v2n5onHtA36O0AFRPHuKiqNZMF46jLEK+qqir14kdSDPfXF kfg8792+ul8WfVLLNfVfSwG5d2SSg71OfCgXke8LQDa+MuyT2I8IK/nH9AYRL51kTYi6 BbB2F2PcyGeot7/OCiRKO3ZMZedkEC4ZkP48DUPDZXtnCpYadkGOfD/OTkZkJgrq3WUX NCbKyll776d/tbqBiT4utZVGZSwMUUjgrIKCfNu2OPJDLyemXNqgCgm0TZcQ7/DGXzYh NFZcXluD1eX6O2Y61dmEy8yKIrdhHwNkdg9rvqxUujoQQGElGrgu8hVmokF2MW21tiLr UpRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778295556; x=1778900356; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=50H5oNb0zAgUgWNo0Pb+zr76atRJ4QpFRMqVAVEcQGA=; b=fcljWj2DJSHVGmE2EXvXe8IKz9OxQ2Qs9+eKIcVnWZ8OaxnL3oTKzalkFp231j1z/c B+SJe4x/hAhViRj7bEAjs2URaK3Eaor7FaMAwyg99YdQX0yCFTknDHHJH2rTQnhBc4Fj 1IwyCVleVgmwgHGc7Mj8pZKxHc0IUKIdmUxWH6DZlZW0cgR4mmvYVd6gR255DsywY4A4 iM6oboWI4snh/zhEeGk8+fzcl+y/fCrEGKrhcZGeSo7AdmYKew7x9gNYXc57X+xOEL9n aB6Qi1X4wg2feme8E7qgaoXwTYWqbS4qEo+LhttS6ClJom4vv2D0gE06mfDmDTRh5zBj ixQg== X-Forwarded-Encrypted: i=1; AFNElJ+VWjEjM9A9QQl5cdE9fn10iIVrz7PlF+fOBZXgzXlLubJJErYPeyiF/S/4X8sr8ExISm+R1riSY12bIJ8=@vger.kernel.org X-Gm-Message-State: AOJu0YxHafUT/YzWR5jbp2+sbHZZFU9eEXZZUzuDKRWs5kkXxVpxDU6/ pAcRF2cYtsnhOGLHtt8v1+Uk492ebknK9Rq0RaQei/SZPRAg5TOy8bMonoXPvqdRE25kfwP3c7w P0YppVpI5lyMRyQhBMD6uE7mMktw3nVMfrf+jjXd+ZxsPIU59mHxGgPJxLu0PHaRLPKI= X-Gm-Gg: Acq92OE9CfITnSU25WyHufE3jHOcwQQPHuZMCd7DXYpTdcoul8F8FJ+V4+Op52TMWUQ XStbgamHN89qtoT5OcGg9PdPLT2tHHZiGBpNqvi/smR+ign1vKikRBkU4kWRM0gF+Xr+jc+D26F nUGHhi9PyYXbYbWV7a3eVfLuUgw3g4MZAXigDU8geMmKIlQGNT+bZoOXaYb4mJIKl37j3WIiokj dD7PaQ/WyGPnKDcWiNvOF2aVrlhtI7KQjdmpXrwaKmyR6qualM47cqh0PKGo0GbbxiDb60kqan7 odXqERRS4/MDfhR1+AADLAp0XuImppdGRbjHc9d/WoymtemRP5VE6FYHSHHOoP72NIMhyFJfHO/ VU6BzDBxfbxC8OOY3/XcyX532TteNNo8incGkBFZzZ4bd3tuKUgGpc3S2qLCLXBeHvhrPqtbJGD 5zP/6e X-Received: by 2002:a17:90b:45:b0:366:159a:c228 with SMTP id 98e67ed59e1d1-367d468cf75mr1169877a91.6.1778295556344; Fri, 08 May 2026 19:59:16 -0700 (PDT) X-Received: by 2002:a17:90b:45:b0:366:159a:c228 with SMTP id 98e67ed59e1d1-367d468cf75mr1169852a91.6.1778295555804; Fri, 08 May 2026 19:59:15 -0700 (PDT) Received: from Z2-SFF-G9-MQ.ap.qualcomm.com (i-global052.qualcomm.com. [199.106.103.52]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-367be8be938sm750899a91.4.2026.05.08.19.59.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 19:59:15 -0700 (PDT) From: Miaoqing Pan To: jjohnson@kernel.org Cc: ath12k@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Miaoqing Pan Subject: [PATCH ath-next 2/5] wifi: ath12k: refactor HAL TLV32/64 decode helpers Date: Sat, 9 May 2026 10:58:16 +0800 Message-Id: <20260509025819.1641630-3-miaoqing.pan@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260509025819.1641630-1-miaoqing.pan@oss.qualcomm.com> References: <20260509025819.1641630-1-miaoqing.pan@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: mpScFuvWAC2K4JNra1XVDDYqBIV11xtK X-Proofpoint-ORIG-GUID: mpScFuvWAC2K4JNra1XVDDYqBIV11xtK X-Authority-Analysis: v=2.4 cv=J7yaKgnS c=1 sm=1 tr=0 ts=69fea305 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=b9+bayejhc3NMeqCNyeLQQ==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=R17iYGmNITDVIwCHYO4A:9 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTA5MDAyNyBTYWx0ZWRfXxDu0+l2LCnSF OXUsyF5Ggde7CrusiQ/UEAG03AcjpDaEcvUVqLy1gEAb0m/BFzpPly57oiYKzvfgYsrQ3PKS70Z 4bEfyP5lmRTm3lLLSoQKzOdt1RmzzVZh+UteemV+khRWqx1BpLIbU0O7KB3czkybcTB1UfuvAPP yf2P1SUBTDwPHPlUsdKLH3CviJzlsWJfuSQUlv2s+eID+MkRJ6d5OBDB0Edul8W9ZfmD7zIvEYo izTXOGecsEO2HWPN6l+ctU/TaUR56prgXGTsXveJVTLVb/UNnrVgKjqjowq3EGdeDTxDNcrOwlc /LUuHWq2CdJAMIY/N/TASqpWLXwGd5xoVu/9OC3c7IQ5etgewy+Mb2IDv83Q/6lZU3U6BK87HMe GCI1lV4Oh1g+y2y/xbCSP6+3DJNbWmk/daq+lyhl0ABrkXm9wzZ14vHXnnW3eF2sISbguygREDP B0IybBzcjYVPytEAOfg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-09_01,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 impostorscore=0 clxscore=1015 suspectscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 malwarescore=0 phishscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605090027 Content-Type: text/plain; charset="utf-8" Change TLV decode helpers to return the TLV value pointer and optionally decode tag/len/usrid via out parameters. This allows reusing the helpers for DP monitor RX status header TLV parsing and avoids duplicated header decoding in callers. No functional change intended. Tested-on: QCC2072 hw1.0 PCI WLAN.COL.1.0.c2-00068-QCACOLSWPL_V1_TO_SILICON= Z-1 Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00302-QCAHMTSWPL_V1.0_V2.0_SIL= ICONZ-1.115823.3 Signed-off-by: Miaoqing Pan --- drivers/net/wireless/ath/ath12k/hal.c | 26 ++++++++++++------- drivers/net/wireless/ath/ath12k/hal.h | 4 +-- .../wireless/ath/ath12k/wifi7/hal_qcc2072.c | 2 +- .../wireless/ath/ath12k/wifi7/hal_qcn9274.c | 11 +++++++- .../wireless/ath/ath12k/wifi7/hal_wcn7850.c | 11 +++++++- 5 files changed, 39 insertions(+), 15 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/hal.c b/drivers/net/wireless/a= th/ath12k/hal.c index f03817b2fbc5..d940f83cd92f 100644 --- a/drivers/net/wireless/ath/ath12k/hal.c +++ b/drivers/net/wireless/ath/ath12k/hal.c @@ -846,26 +846,32 @@ void *ath12k_hal_encode_tlv32_hdr(void *tlv, u64 tag,= u64 len) } EXPORT_SYMBOL(ath12k_hal_encode_tlv32_hdr); =20 -u16 ath12k_hal_decode_tlv64_hdr(void *tlv, void **desc) +void *ath12k_hal_decode_tlv64_hdr(void *tlv, u16 *tag, u16 *len, u16 *usri= d) { struct hal_tlv_64_hdr *tlv64 =3D tlv; - u16 tag; =20 - tag =3D le64_get_bits(tlv64->tl, HAL_TLV_64_HDR_TAG); - *desc =3D tlv64->value; + if (tag) + *tag =3D le64_get_bits(tlv64->tl, HAL_TLV_64_HDR_TAG); + if (len) + *len =3D le64_get_bits(tlv64->tl, HAL_TLV_64_HDR_LEN); + if (usrid) + *usrid =3D le64_get_bits(tlv64->tl, HAL_TLV_64_USR_ID); =20 - return tag; + return tlv64->value; } EXPORT_SYMBOL(ath12k_hal_decode_tlv64_hdr); =20 -u16 ath12k_hal_decode_tlv32_hdr(void *tlv, void **desc) +void *ath12k_hal_decode_tlv32_hdr(void *tlv, u16 *tag, u16 *len, u16 *usri= d) { struct hal_tlv_hdr *tlv32 =3D tlv; - u16 tag; =20 - tag =3D le32_get_bits(tlv32->tl, HAL_TLV_HDR_TAG); - *desc =3D tlv32->value; + if (tag) + *tag =3D le32_get_bits(tlv32->tl, HAL_TLV_HDR_TAG); + if (len) + *len =3D le32_get_bits(tlv32->tl, HAL_TLV_HDR_LEN); + if (usrid) + *usrid =3D le32_get_bits(tlv32->tl, HAL_TLV_USR_ID); =20 - return tag; + return tlv32->value; } EXPORT_SYMBOL(ath12k_hal_decode_tlv32_hdr); diff --git a/drivers/net/wireless/ath/ath12k/hal.h b/drivers/net/wireless/a= th/ath12k/hal.h index b3a89ace5a97..3158c1881c76 100644 --- a/drivers/net/wireless/ath/ath12k/hal.h +++ b/drivers/net/wireless/ath/ath12k/hal.h @@ -1551,6 +1551,6 @@ void ath12k_hal_rx_reo_ent_buf_paddr_get(struct ath12= k_hal *hal, void *rx_desc, u8 *rbm, u32 *msdu_cnt); void *ath12k_hal_encode_tlv64_hdr(void *tlv, u64 tag, u64 len); void *ath12k_hal_encode_tlv32_hdr(void *tlv, u64 tag, u64 len); -u16 ath12k_hal_decode_tlv64_hdr(void *tlv, void **desc); -u16 ath12k_hal_decode_tlv32_hdr(void *tlv, void **desc); +void *ath12k_hal_decode_tlv64_hdr(void *tlv, u16 *tag, u16 *len, u16 *usri= d); +void *ath12k_hal_decode_tlv32_hdr(void *tlv, u16 *tag, u16 *len, u16 *usri= d); #endif diff --git a/drivers/net/wireless/ath/ath12k/wifi7/hal_qcc2072.c b/drivers/= net/wireless/ath/ath12k/wifi7/hal_qcc2072.c index 1eefb931a853..c0583c3a2191 100644 --- a/drivers/net/wireless/ath/ath12k/wifi7/hal_qcc2072.c +++ b/drivers/net/wireless/ath/ath12k/wifi7/hal_qcc2072.c @@ -439,7 +439,7 @@ static u16 ath12k_hal_reo_status_dec_tlv_hdr_qcc2072(vo= id *tlv, void **desc) struct hal_reo_get_queue_stats_status_qcc2072 *status_tlv; u16 tag; =20 - tag =3D ath12k_hal_decode_tlv32_hdr(tlv, (void **)&status_tlv); + status_tlv =3D ath12k_hal_decode_tlv32_hdr(tlv, &tag, NULL, NULL); /* * actual desc of REO status entry starts after tlv32_padding, * see hal_reo_get_queue_stats_status_qcc2072 diff --git a/drivers/net/wireless/ath/ath12k/wifi7/hal_qcn9274.c b/drivers/= net/wireless/ath/ath12k/wifi7/hal_qcn9274.c index ba9ce1e718e8..8d8d1a9c05d3 100644 --- a/drivers/net/wireless/ath/ath12k/wifi7/hal_qcn9274.c +++ b/drivers/net/wireless/ath/ath12k/wifi7/hal_qcn9274.c @@ -934,6 +934,15 @@ void ath12k_hal_extract_rx_desc_data_qcn9274(struct ha= l_rx_desc_data *rx_desc_da rx_desc_data->err_bitmap =3D ath12k_hal_rx_h_mpdu_err_qcn9274(rx_desc); } =20 +static u16 ath12k_hal_reo_status_dec_tlv_hdr_qcn9274(void *tlv, void **des= c) +{ + u16 tag; + + *desc =3D ath12k_hal_decode_tlv64_hdr(tlv, &tag, NULL, NULL); + + return tag; +} + const struct ath12k_hw_hal_params ath12k_hw_hal_params_qcn9274 =3D { .rx_buf_rbm =3D HAL_RX_BUF_RBM_SW3_BM, .wbm2sw_cc_enable =3D HAL_WBM_SW_COOKIE_CONV_CFG_WBM2SW0_EN | @@ -1122,5 +1131,5 @@ const struct hal_ops hal_qcn9274_ops =3D { .rx_msdu_list_get =3D ath12k_wifi7_hal_rx_msdu_list_get, .rx_reo_ent_buf_paddr_get =3D ath12k_wifi7_hal_rx_reo_ent_buf_paddr_get, .reo_cmd_enc_tlv_hdr =3D ath12k_hal_encode_tlv64_hdr, - .reo_status_dec_tlv_hdr =3D ath12k_hal_decode_tlv64_hdr, + .reo_status_dec_tlv_hdr =3D ath12k_hal_reo_status_dec_tlv_hdr_qcn9274, }; diff --git a/drivers/net/wireless/ath/ath12k/wifi7/hal_wcn7850.c b/drivers/= net/wireless/ath/ath12k/wifi7/hal_wcn7850.c index e64e512cac7d..4bef64ac9150 100644 --- a/drivers/net/wireless/ath/ath12k/wifi7/hal_wcn7850.c +++ b/drivers/net/wireless/ath/ath12k/wifi7/hal_wcn7850.c @@ -740,6 +740,15 @@ int ath12k_hal_srng_create_config_wcn7850(struct ath12= k_hal *hal) return 0; } =20 +static u16 ath12k_hal_reo_status_dec_tlv_hdr_wcn7850(void *tlv, void **des= c) +{ + u16 tag; + + *desc =3D ath12k_hal_decode_tlv64_hdr(tlv, &tag, NULL, NULL); + + return tag; +} + const struct ath12k_hal_tcl_to_wbm_rbm_map ath12k_hal_tcl_to_wbm_rbm_map_wcn7850[DP_TCL_NUM_RING_MAX] =3D { { @@ -805,5 +814,5 @@ const struct hal_ops hal_wcn7850_ops =3D { .rx_msdu_list_get =3D ath12k_wifi7_hal_rx_msdu_list_get, .rx_reo_ent_buf_paddr_get =3D ath12k_wifi7_hal_rx_reo_ent_buf_paddr_get, .reo_cmd_enc_tlv_hdr =3D ath12k_hal_encode_tlv64_hdr, - .reo_status_dec_tlv_hdr =3D ath12k_hal_decode_tlv64_hdr, + .reo_status_dec_tlv_hdr =3D ath12k_hal_reo_status_dec_tlv_hdr_wcn7850, }; --=20 2.34.1 From nobody Sat Jun 13 07:15:45 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7C84837BE65 for ; Sat, 9 May 2026 02:59:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778295563; cv=none; b=sSkLgj5yHfiE+1NU641OjFc6wZou1xR+r9u1yGwlKkl/Lqf6uxeUOYBwWM3bXOkBPP/PyiGm7qvIR7HBKHsWqPcTpiY7cNrogNKcD2KsXhbxV16o7iNJvTp62NkXXaY1SKzmp1LmtB90GBvszpzVmTwudRBrKYSkpM08qOXnZOo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778295563; c=relaxed/simple; bh=BdV0X3nZR8PCcjenjPa8imJgl1N26Nzy4KidKMtGhmg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=m82OvF59ae9+K+SyNXU+jtCensifNVpbO39DgLN/ca7jqs7Uz9TlW8PFHvZ23BvzXOp/NnJqeEq8i1tm46EUHX4cMNuG58WTehJQOF+yOrjqeH1MN/COQHK3ggewAWOnccjn9aAljWLyELUVLyOJB8+/T+uhDVnSgq5cX+zU9P4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=ZzZkJusr; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Ya8AzCrY; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="ZzZkJusr"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Ya8AzCrY" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6492Xk2j2769685 for ; Sat, 9 May 2026 02:59:20 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=AwM5k+UWfUT Ut59a3ABR2UlFzgDmzYoEve9ZdYQTTxU=; b=ZzZkJusr3zRgZqckksdkRkWZK4x yHRSOKtSxuREkWNS5Ox3w5y8XxyPZaWb+T5AyXeVXYcUo534BBHMf0GTSlmd6qS3 fX70zAFLZ/0GxPBu5SaUdRlM9W6Y1YU1yyGMNBZGGsLY96/l0u2PN+9ocw15iyUj /ndcZTAit+TmeMO1pFTQqNXMw87+Ta/pNjPZOyLNrh8DhNoBrqjR7zPuUKTUL3e6 89Utbz7KWhrQPz1OJVG7TGzmv1oF8HCrgjvcJR3CQecN/6YKk2WGrp5o4M20SvnB n5bSne9vhUBqDS3rTbFVrK9kDnGGZRclCHMjSF30eqV2U7lGpLbkcRgGG8Q== Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e1v8gr19k-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 09 May 2026 02:59:20 +0000 (GMT) Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-c81086bf930so2154376a12.1 for ; Fri, 08 May 2026 19:59:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778295559; x=1778900359; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=AwM5k+UWfUTUt59a3ABR2UlFzgDmzYoEve9ZdYQTTxU=; b=Ya8AzCrYJjJlWRjGXhHWutp0Hmq2NBpapLeQ9UyV3UekMHa5yXxsT27mvKJtvhS5ls F/goapwZDdPh83INeP4z8jEgaGAhRoNj7xdzmiqs8BVceg8UQjBm/Ka/1O4kMoE9DxoZ jTq0+YDFLWOEFp07jL5/x9MrtaFq5jJbFnTVBi5LNfiQPKaG1Y7LM88TTi49afDLlbSK h0fd5yjouJRgArrW6l/0vOMVFRkOlC6bM7vjzF/2cWlWObEL5BrC6fMWRtjRK4EF8eTp UfwtTIiYgJMjHqLYd5Vd3l4TLKyNAfNyURcoEXKFsIiQLGWxCFgXYjv5ZJBRq4HJlJca R8TA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778295559; x=1778900359; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=AwM5k+UWfUTUt59a3ABR2UlFzgDmzYoEve9ZdYQTTxU=; b=alNqoYZjNa6dlBqUfHRrXvdy0dq8yV1LAv2NNFpoBxCISfBGXtABbPq5SDuraBh01i TpXpbtmdvzrGuFJJnA2skG8uEAJsMDtJP6SP1Ov6i/ziTa3tlxKgN42FKfiWJc3XwtGt M6QymH+U2TcEZbwK3nbzX6lVirNGP6j6m8WDUUJbNxrP7VSWjI2tVnt542nAU0+YwERJ gRZLLDenBYkROd868L7za5SUNp7q00hkZQjnLgbnTqsDJikXfOVMd+64sxJ6fATRKv7k VIxgV/s5l0XLyWuvW655tGcgiQn4B0gtGu5j9KFaY44cMes0fHkU9j6jT1Fb4tc32Z1o hq8g== X-Forwarded-Encrypted: i=1; AFNElJ8AVYCViouuYncnihYzVKkhw04JJq3852RINq75uxw9kNrZvRFwJEPJ8Jk8FuRk85kxBwN84Cunm8RwYfY=@vger.kernel.org X-Gm-Message-State: AOJu0Yye5wdkv67sSwjNDZUw5yw5F1MrpcaZDt1oj0wX5ygkJ9uVS2jv SSeC5Q+JyhJNqyfKcMfl3f6mne9u5TO25FKwzsA9dkoWYHDr8JEUgeksXMlQoqPRlkGkObhyM0h Ji6j0snt/CXCz57I+9EwL4Ukwl20QVxw6uApqW8VqO7inod3PlIhiwshagU9BKORB280= X-Gm-Gg: Acq92OGTaK8B8ZIUFKZEIgs/6bFWnfJySWJdNFa040u3nogcv1ZyGnBVLZ/L4Om/xdK tZ8JAwUxMcvBMzfVK6TP51Tz0cyEjn9LfUuhRXM67026RiuCpFrp/hMjCuiTWOiuKGdp///M1KK +HekwJPho8BXgjKvmDMIC3Giw/zZr0mCWyvhWkxMf/YBdVmQhtSzSpDlSuikIXQ7HrYRkJTinuV i4j02+G6B9H4fH3iWawjNty8zC+Us7L3I+4Ny6wdiRNnEyppvplbhSY91QNIshpDUVR9VgxT/PF eCrLD0uMgTxsJH1SuYttc6RupXTc4qGgCDDiWMJ0mZ1F83CZbkCwyYyYycZ26Y1YW3alO8R/YcP 3GKG4v7jT5RtZm/cqsqzQL8IUQox5LCIZodqaNKb6Z4LkriMm/3e1i+DfgYP1YCuI1K0JF/LbhN +YtHRF3T0sni0O8uw= X-Received: by 2002:a17:90b:2707:b0:35c:1d65:7867 with SMTP id 98e67ed59e1d1-36605a524admr9707138a91.15.1778295559119; Fri, 08 May 2026 19:59:19 -0700 (PDT) X-Received: by 2002:a17:90b:2707:b0:35c:1d65:7867 with SMTP id 98e67ed59e1d1-36605a524admr9707110a91.15.1778295558548; Fri, 08 May 2026 19:59:18 -0700 (PDT) Received: from Z2-SFF-G9-MQ.ap.qualcomm.com (i-global052.qualcomm.com. [199.106.103.52]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-367be8be938sm750899a91.4.2026.05.08.19.59.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 19:59:18 -0700 (PDT) From: Miaoqing Pan To: jjohnson@kernel.org Cc: ath12k@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Miaoqing Pan Subject: [PATCH ath-next 3/5] wifi: ath12k: add HAL ops for monitor TLV header decode and alignment Date: Sat, 9 May 2026 10:58:17 +0800 Message-Id: <20260509025819.1641630-4-miaoqing.pan@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260509025819.1641630-1-miaoqing.pan@oss.qualcomm.com> References: <20260509025819.1641630-1-miaoqing.pan@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: ynRUYDqqqij6Tyx2ESjpsTBdyvyYoI8P X-Proofpoint-ORIG-GUID: ynRUYDqqqij6Tyx2ESjpsTBdyvyYoI8P X-Authority-Analysis: v=2.4 cv=RMCD2Yi+ c=1 sm=1 tr=0 ts=69fea308 cx=c_pps a=oF/VQ+ItUULfLr/lQ2/icg==:117 a=b9+bayejhc3NMeqCNyeLQQ==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=cBALExdzTAL-QLrJbW0A:9 a=3WC7DwWrALyhR5TkjVHa:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTA5MDAyNyBTYWx0ZWRfX5IQU5FFCB+gb EzD7nvHt/Wsk/9W3Qm3sO+kyaL6n0eadCUMribUJ/jytaPQEX1U/3LYlUFcomWVy/aw9zEMw1Pr eQyTlgWgkIs9VkwBUWlTEzejJjRqgjH9ylgz0xN6q2z20M2ooJ/Bk0s+zmy2kURF1zQ0+35isvf 90+ersrsTvYmOeButLRi8uiU3uksSmiqmd/7U11FqfqGPCbAWBbc9kCn3u2YMrM7s30oLrj0Hxe Ijpguxe3z27JTKwro2Prt7jP2Tt4BbQ/NDGup/df64yps9Lz5h/kXPRaRjfor+wACUnV8poAZOj x1gJ9nAuvTCnNgD/4W6If5+4UFZmMxco1kyr+AgguRA6xp6KlVYa3NvZDQ4m7PJTOxA4Xln87u6 w3Wjghero9/G/1288bA2iqQlf3OvyxkFObjaFyvMihfkfyKhnGakRCtFy8ZSThsa5pVjfP1HY9x ZoA2WQ/lH1itHZALuxw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-09_01,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 lowpriorityscore=0 bulkscore=0 suspectscore=0 clxscore=1015 malwarescore=0 spamscore=0 priorityscore=1501 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605090027 Content-Type: text/plain; charset="utf-8" Wi-Fi 7 monitor RX status TLV parsing needs to decode TLV headers and advance the pointer with the correct header alignment. Different targets use different TLV header layouts (32-bit vs 64-bit), but the HAL ops for dp_mon RX status header decode and header alignment were not populated for all wifi7 targets. Add dp_mon RX status TLV header decode callbacks and TLV header alignment helpers to the wifi7 HAL ops for QCC2072, QCN9274 and WCN7850. Export helpers to query the required TLV header alignment for 32-bit and 64-bit TLV headers so the caller can align the TLV walk correctly across targets. Tested-on: QCC2072 hw1.0 PCI WLAN.COL.1.0.c2-00068-QCACOLSWPL_V1_TO_SILICON= Z-1 Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00302-QCAHMTSWPL_V1.0_V2.0_SIL= ICONZ-1.115823.3 Signed-off-by: Miaoqing Pan --- drivers/net/wireless/ath/ath12k/hal.c | 12 ++++++++++++ drivers/net/wireless/ath/ath12k/hal.h | 4 ++++ drivers/net/wireless/ath/ath12k/wifi7/hal_qcc2072.c | 2 ++ drivers/net/wireless/ath/ath12k/wifi7/hal_qcn9274.c | 2 ++ drivers/net/wireless/ath/ath12k/wifi7/hal_wcn7850.c | 2 ++ 5 files changed, 22 insertions(+) diff --git a/drivers/net/wireless/ath/ath12k/hal.c b/drivers/net/wireless/a= th/ath12k/hal.c index d940f83cd92f..c0c3d2f047ef 100644 --- a/drivers/net/wireless/ath/ath12k/hal.c +++ b/drivers/net/wireless/ath/ath12k/hal.c @@ -875,3 +875,15 @@ void *ath12k_hal_decode_tlv32_hdr(void *tlv, u16 *tag,= u16 *len, u16 *usrid) return tlv32->value; } EXPORT_SYMBOL(ath12k_hal_decode_tlv32_hdr); + +u32 ath12k_hal_get_tlv64_hdr_align(void) +{ + return HAL_TLV_64_ALIGN; +} +EXPORT_SYMBOL(ath12k_hal_get_tlv64_hdr_align); + +u32 ath12k_hal_get_tlv32_hdr_align(void) +{ + return HAL_TLV_ALIGN; +} +EXPORT_SYMBOL(ath12k_hal_get_tlv32_hdr_align); diff --git a/drivers/net/wireless/ath/ath12k/hal.h b/drivers/net/wireless/a= th/ath12k/hal.h index 3158c1881c76..312993d3d5d4 100644 --- a/drivers/net/wireless/ath/ath12k/hal.h +++ b/drivers/net/wireless/ath/ath12k/hal.h @@ -1439,6 +1439,8 @@ struct hal_ops { u8 *rbm, u32 *msdu_cnt); void *(*reo_cmd_enc_tlv_hdr)(void *tlv, u64 tag, u64 len); u16 (*reo_status_dec_tlv_hdr)(void *tlv, void **desc); + void *(*mon_rx_status_dec_tlv_hdr)(void *tlv, u16 *tag, u16 *len, u16 *us= rid); + u32 (*get_tlv_hdr_align)(void); }; =20 #define HAL_TLV_HDR_TAG GENMASK(9, 1) @@ -1553,4 +1555,6 @@ void *ath12k_hal_encode_tlv64_hdr(void *tlv, u64 tag,= u64 len); void *ath12k_hal_encode_tlv32_hdr(void *tlv, u64 tag, u64 len); void *ath12k_hal_decode_tlv64_hdr(void *tlv, u16 *tag, u16 *len, u16 *usri= d); void *ath12k_hal_decode_tlv32_hdr(void *tlv, u16 *tag, u16 *len, u16 *usri= d); +u32 ath12k_hal_get_tlv64_hdr_align(void); +u32 ath12k_hal_get_tlv32_hdr_align(void); #endif diff --git a/drivers/net/wireless/ath/ath12k/wifi7/hal_qcc2072.c b/drivers/= net/wireless/ath/ath12k/wifi7/hal_qcc2072.c index c0583c3a2191..80ffadc47d48 100644 --- a/drivers/net/wireless/ath/ath12k/wifi7/hal_qcc2072.c +++ b/drivers/net/wireless/ath/ath12k/wifi7/hal_qcc2072.c @@ -490,6 +490,8 @@ const struct hal_ops hal_qcc2072_ops =3D { .rx_reo_ent_buf_paddr_get =3D ath12k_wifi7_hal_rx_reo_ent_buf_paddr_get, .reo_cmd_enc_tlv_hdr =3D ath12k_hal_encode_tlv32_hdr, .reo_status_dec_tlv_hdr =3D ath12k_hal_reo_status_dec_tlv_hdr_qcc2072, + .mon_rx_status_dec_tlv_hdr =3D ath12k_hal_decode_tlv32_hdr, + .get_tlv_hdr_align =3D ath12k_hal_get_tlv32_hdr_align, }; =20 u32 ath12k_hal_rx_desc_get_mpdu_start_offset_qcc2072(void) diff --git a/drivers/net/wireless/ath/ath12k/wifi7/hal_qcn9274.c b/drivers/= net/wireless/ath/ath12k/wifi7/hal_qcn9274.c index 8d8d1a9c05d3..129f6b1919e3 100644 --- a/drivers/net/wireless/ath/ath12k/wifi7/hal_qcn9274.c +++ b/drivers/net/wireless/ath/ath12k/wifi7/hal_qcn9274.c @@ -1132,4 +1132,6 @@ const struct hal_ops hal_qcn9274_ops =3D { .rx_reo_ent_buf_paddr_get =3D ath12k_wifi7_hal_rx_reo_ent_buf_paddr_get, .reo_cmd_enc_tlv_hdr =3D ath12k_hal_encode_tlv64_hdr, .reo_status_dec_tlv_hdr =3D ath12k_hal_reo_status_dec_tlv_hdr_qcn9274, + .mon_rx_status_dec_tlv_hdr =3D ath12k_hal_decode_tlv64_hdr, + .get_tlv_hdr_align =3D ath12k_hal_get_tlv64_hdr_align, }; diff --git a/drivers/net/wireless/ath/ath12k/wifi7/hal_wcn7850.c b/drivers/= net/wireless/ath/ath12k/wifi7/hal_wcn7850.c index 4bef64ac9150..881986075548 100644 --- a/drivers/net/wireless/ath/ath12k/wifi7/hal_wcn7850.c +++ b/drivers/net/wireless/ath/ath12k/wifi7/hal_wcn7850.c @@ -815,4 +815,6 @@ const struct hal_ops hal_wcn7850_ops =3D { .rx_reo_ent_buf_paddr_get =3D ath12k_wifi7_hal_rx_reo_ent_buf_paddr_get, .reo_cmd_enc_tlv_hdr =3D ath12k_hal_encode_tlv64_hdr, .reo_status_dec_tlv_hdr =3D ath12k_hal_reo_status_dec_tlv_hdr_wcn7850, + .mon_rx_status_dec_tlv_hdr =3D ath12k_hal_decode_tlv64_hdr, + .get_tlv_hdr_align =3D ath12k_hal_get_tlv64_hdr_align, }; --=20 2.34.1 From nobody Sat Jun 13 07:15:45 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D37B037CD32 for ; Sat, 9 May 2026 02:59:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778295565; cv=none; b=lqY+r+Zd1H9lNukl7I6s4a4XYUAheKDSXiFaDsG+BAGsR0dJHRWyZc+kmj/iAsoGLi8QlNEtKvSUQLZm7qUasggrJWq1ZW88mug3ca9nA70V7SHmouNDDCEhGswYH/2IV3ur/t1PeIgcoKqfY8QwbdM1s24k0TfHMYrDYiJlIoQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778295565; c=relaxed/simple; bh=u63+KuXmPCim3hS/50nWwD4V8vIGSzhRIFi4PdleYL0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=e7rbZ1d+eeAggFFWAZejQS5jHCZJOI5hProPXRU5fuwEFTk4Le1nDl6bdEZ75V0kp52X8omJZiywEhdlfR+wSJOKjCYYDXIa2KzObJ9/6qdRTuw5ZaJfcHwbHdHB7ovDfoj/yotwaJoZdpT90B4EwWxelTEM5p7k9VxvXrTQoeA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=HnvAIrt8; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=MlWV8yuz; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="HnvAIrt8"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="MlWV8yuz" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 648KKSIC852376 for ; Sat, 9 May 2026 02:59:22 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=SiDz0P/Mnp1 qjre9Pw1n3xWLk8C6LBzQ/tAeEv9bMZw=; b=HnvAIrt8TH3Yjvc8U/knIwoABcf nTLhOx+6kjt41UC7OcTMJ3yHk8EDZoJU4jbFO3xHKoxUUZVS38+KSlGm7igmb4nk HNI1sk5jQBwnEDCE2yulS1RnUtmQddG6MgXGJUquBouJyXFyQ615w3u7TurSsq3L LjSgGnJIU2UZM4gdeyCtl3ye+IA6CHADwKgPCNuU3nkd9/dqIs45bPal40TF9jc/ NUSD7D5vwOfbjNAJl+l47QS+U+oR6lq5uBy521ivNJLI8zWVZGsmPqsL7WEKKduO TbfABSfU5ns7VjYfx+yRqKlqO2J9/5hdMQLGPEjhf5ilEAFjAh+doK3xEtQ== Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e1fptjp7k-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 09 May 2026 02:59:22 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-367d73504f0so302785a91.1 for ; Fri, 08 May 2026 19:59:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778295561; x=1778900361; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SiDz0P/Mnp1qjre9Pw1n3xWLk8C6LBzQ/tAeEv9bMZw=; b=MlWV8yuzerBP+AP5mueMB/9HiS4UK6mezNDHPHHFt2ZeobVMT+2eNqcxGNZ+C6TwEo I83MiaY/mqT3WSOK5Pn8BmQ0lSssO2jXNXznWzrXqTBLgb0jKzatQAuf+vxkuDqSDu/p RhIHcPhzfE762O8b7QeRIpNqLuwLPa7b8PVASvbpmVIQnp9YCv9ibe94jwlo+Mn5Kv9N c62+l02w+4IqA1L/QFN3Acr+fpjgycRjL0dsaSIjMztz9ded0OvXlK/AAImRR63ST7o1 Sbs3OLbXXybRk7zpqK8E67hVETXwAI/rFSK8KGwVbeAdrPPRovl864556mGlmj7yKaPb c7BQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778295561; x=1778900361; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=SiDz0P/Mnp1qjre9Pw1n3xWLk8C6LBzQ/tAeEv9bMZw=; b=jS4reHt/xT1ZPtpm6rkpkzz52lFT2yJ1KnAbYNUJslBAoHJwurZuzqVP13JiePnfVn PsxnLpbMQeVmH8yArxeiWMtJXRKotNfueLtdtmj1DHxnSDiAbSGgeKMeauFCMg2FHbUo Oc9UqMykTOFd/FVm7jmC+1C9Vm1XiCqwAp3fbivJnmybnGBcUqYmTLIiEdnLzBlNGhoe NeDfnHmv3pnGmYdBb5xCvIgNAp+GYl919dfZT4laVWEickKk9f1g+3KH0xgPm65geAY8 h4ZwfkfqNhutCNHUMrXvpjE1PWzm8/LyGlSGuA/qocBHQuByOdhujpHbXFnTNfONCsqC JZmA== X-Forwarded-Encrypted: i=1; AFNElJ/HVt5edc/ewniTp3LU0SiCcp/wwtaraoQxrMFSD9FjxOEcRA5untBWXWljlw/c89yzC1netn3QAmmn9A4=@vger.kernel.org X-Gm-Message-State: AOJu0Yz+iGWPD0ErHnMZ3QD7lh/O331CNeY88pFRXqPxWj4DRXQoDqk6 1I3T9S1UYMWeomN8Y0rspWsgLmNq8jy5y2aBrOOWDQETWi52OvmHbRSGSeEsuN1KPAJLNoEOa8f oiwZeW9dr6DsSEBxh2aam1lo5OSFBCPQwZnug6Bpu4O23e2I4dxDgNKJpMudOLXuf+sg= X-Gm-Gg: Acq92OFtuTdHVkfTqmZYgUMalq62y+mtl3v/iiAAX+z/H0zpZ1RjQkIT9p17kF34dKh qrWYAKoEO7ROfPQoBeEwIUEsCiAEvFvpIYdOPCnwWflxloAlZywaybLPxJ3yN8lykGwvMhDjQMR D8CvGdfN0x6xbVKXdTibNDjWoun8Elq1fB3jLJipGFCZ2Alg8CUmZ4OQIyfTZGjewO9Ax+psDI7 R6BTVIbFQowf97ioxCl2uw50mZIcjCIdN23qGkh/eJmiaORg/SLoabIu9E4k8Q/n+r1uzE7sb+g F2KRRTZJU2evxNdztXd/mdLTWxD8HaPibevD5aQyL2NQew4QrngU7oxivck2NnIYKuMCmEpFlzR imIhIuP01rUBLd0ytl7vCgqKEbuhy9owq4jvGvEIqp5WSk9nTfEA60JkLroFDPZRzQAtsYxi8VI 5YaEB9 X-Received: by 2002:a17:90b:4a03:b0:35e:58d3:329f with SMTP id 98e67ed59e1d1-367d4845b95mr1127709a91.13.1778295561416; Fri, 08 May 2026 19:59:21 -0700 (PDT) X-Received: by 2002:a17:90b:4a03:b0:35e:58d3:329f with SMTP id 98e67ed59e1d1-367d4845b95mr1127687a91.13.1778295560880; Fri, 08 May 2026 19:59:20 -0700 (PDT) Received: from Z2-SFF-G9-MQ.ap.qualcomm.com (i-global052.qualcomm.com. [199.106.103.52]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-367be8be938sm750899a91.4.2026.05.08.19.59.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 19:59:20 -0700 (PDT) From: Miaoqing Pan To: jjohnson@kernel.org Cc: ath12k@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Miaoqing Pan Subject: [PATCH ath-next 4/5] wifi: ath12k: add dp_mon support 32-bit TLV headers Date: Sat, 9 May 2026 10:58:18 +0800 Message-Id: <20260509025819.1641630-5-miaoqing.pan@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260509025819.1641630-1-miaoqing.pan@oss.qualcomm.com> References: <20260509025819.1641630-1-miaoqing.pan@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: 7aFo9facYBEtL_aBtGvN6uk-6qCCvCOk X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTA5MDAyNyBTYWx0ZWRfXyVUTtNi3RFGG tuQ40oLKb3GKm4+HuSw73AYzHNAMaFk8mfK5t4yTsK1lE07LhWnQjI+z/wtsRGXjNTwCy0/N4eK XNR4gazFNm7EKQTFpdQFxWfTub9ux6HeT7r/go6gQjiVQbKpQHD+HWsWVCCRXsVX1K9oOYkjYSL PDMpiHH3nTzj5fFTUNby+Vs0g+8ZE+3OV9/97dT/IGDKZUGUvshJy1cKu07kZjVc9YjqyjTpYgb o3FZtF8spWnLEKxyaFjheaaQ+YPOov2XpDQH8v9Ccar5s1x+30b7N0KtcDosrLtks4dO20KKtMB 40bE3s8x1OKfpWnND4G+U/usAO9D6J5DBqIAEt14i0R0r9CsBcs/pGAmtcwT6VW77ibwmj7lpGz eGyX6Ghanu87AeDc7qU1i8d/TLH7FI9PGkxUgpXa2oyxmOUv14jG7aisHbEluUTUfikTsUbefqT nQLMe9XcvAkSEM379Dw== X-Proofpoint-GUID: 7aFo9facYBEtL_aBtGvN6uk-6qCCvCOk X-Authority-Analysis: v=2.4 cv=IYi3n2qa c=1 sm=1 tr=0 ts=69fea30a cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=b9+bayejhc3NMeqCNyeLQQ==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=JST6KbR4yvz285-FHA0A:9 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-09_01,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 adultscore=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 priorityscore=1501 clxscore=1015 bulkscore=0 malwarescore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605090027 Content-Type: text/plain; charset="utf-8" Wi-Fi 7 monitor status parsing in dp_mon currently assumes a 64-bit TLV header and directly decodes tag/len/userid from struct hal_tlv_64_hdr. On chips using a 32-bit TLV header (e.g. QCC2072), this causes monitor RX status packets to be dropped during TLV parsing. Introduce HAL helpers to decode TLV header fields (tag/len/userid/value) for both 32-bit and 64-bit header layouts. Without changing the actual TLV parsing logic. Tested-on: QCC2072 hw1.0 PCI WLAN.COL.1.0.c2-00068-QCACOLSWPL_V1_TO_SILICON= Z-1 Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00302-QCAHMTSWPL_V1.0_V2.0_SIL= ICONZ-1.115823.3 Signed-off-by: Miaoqing Pan --- .../net/wireless/ath/ath12k/wifi7/dp_mon.c | 57 ++++++++++--------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c b/drivers/net/w= ireless/ath/ath12k/wifi7/dp_mon.c index 77f5d23be78d..4266bd1d0d3d 100644 --- a/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c +++ b/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c @@ -1565,16 +1565,17 @@ ath12k_wifi7_dp_mon_parse_status_msdu_end(struct at= h12k_mon_data *pmon, static enum hal_rx_mon_status ath12k_wifi7_dp_mon_rx_parse_status_tlv(struct ath12k_pdev_dp *dp_pdev, struct ath12k_mon_data *pmon, - const struct hal_tlv_64_hdr *tlv) + const void *tlv) { struct hal_rx_mon_ppdu_info *ppdu_info =3D &pmon->mon_ppdu_info; - const void *tlv_data =3D tlv->value; - u32 info[7], userid; - u16 tlv_tag, tlv_len; + struct ath12k *ar =3D ath12k_pdev_dp_to_ar(dp_pdev); + struct ath12k_hal *hal =3D &ar->ab->hal; + u16 tlv_tag, tlv_len, userid; + void *tlv_data; + u32 info[7]; =20 - tlv_tag =3D le64_get_bits(tlv->tl, HAL_TLV_64_HDR_TAG); - tlv_len =3D le64_get_bits(tlv->tl, HAL_TLV_64_HDR_LEN); - userid =3D le64_get_bits(tlv->tl, HAL_TLV_64_USR_ID); + tlv_data =3D hal->ops->mon_rx_status_dec_tlv_hdr((void *)tlv, &tlv_tag, + &tlv_len, &userid); =20 if (ppdu_info->tlv_aggr.in_progress && ppdu_info->tlv_aggr.tlv_tag !=3D t= lv_tag) { ath12k_wifi7_dp_mon_parse_eht_sig_hdr(ppdu_info, @@ -2931,11 +2932,12 @@ static enum dp_mon_status_buf_state ath12k_wifi7_dp_rx_mon_buf_done(struct ath12k_base *ab, struct hal_srng *s= rng, struct dp_rxdma_mon_ring *rx_ring) { + struct ath12k_hal *hal =3D &ab->hal; struct ath12k_skb_rxcb *rxcb; - struct hal_tlv_64_hdr *tlv; struct sk_buff *skb; void *status_desc; dma_addr_t paddr; + u16 tlv_tag; u32 cookie; int buf_id; u8 rbm; @@ -2960,8 +2962,8 @@ ath12k_wifi7_dp_rx_mon_buf_done(struct ath12k_base *a= b, struct hal_srng *srng, skb->len + skb_tailroom(skb), DMA_FROM_DEVICE); =20 - tlv =3D (struct hal_tlv_64_hdr *)skb->data; - if (le64_get_bits(tlv->tl, HAL_TLV_HDR_TAG) !=3D HAL_RX_STATUS_BUFFER_DON= E) + hal->ops->mon_rx_status_dec_tlv_hdr(skb->data, &tlv_tag, NULL, NULL); + if (tlv_tag !=3D HAL_RX_STATUS_BUFFER_DONE) return DP_MON_STATUS_NO_DMA; =20 return DP_MON_STATUS_REPLINISH; @@ -2973,39 +2975,38 @@ ath12k_wifi7_dp_mon_parse_rx_dest(struct ath12k_pde= v_dp *dp_pdev, struct sk_buff *skb) { struct ath12k *ar =3D ath12k_pdev_dp_to_ar(dp_pdev); - struct hal_tlv_64_hdr *tlv; + struct ath12k_hal *hal =3D &ar->ab->hal; + u8 *tlv_value, *tlv =3D skb->data; struct ath12k_skb_rxcb *rxcb; enum hal_rx_mon_status hal_status; u16 tlv_tag, tlv_len; - u8 *ptr =3D skb->data; + u32 tlv_hdr_len; + + tlv_hdr_len =3D hal->ops->get_tlv_hdr_align(); =20 do { - tlv =3D (struct hal_tlv_64_hdr *)ptr; - tlv_tag =3D le64_get_bits(tlv->tl, HAL_TLV_64_HDR_TAG); + tlv_value =3D hal->ops->mon_rx_status_dec_tlv_hdr(tlv, &tlv_tag, + &tlv_len, NULL); =20 /* The actual length of PPDU_END is the combined length of many PHY * TLVs that follow. Skip the TLV header and * rx_rxpcu_classification_overview that follows the header to get to * next TLV. */ - if (tlv_tag =3D=3D HAL_RX_PPDU_END) tlv_len =3D sizeof(struct hal_rx_rxpcu_classification_overview); - else - tlv_len =3D le64_get_bits(tlv->tl, HAL_TLV_64_HDR_LEN); =20 hal_status =3D ath12k_wifi7_dp_mon_rx_parse_status_tlv(dp_pdev, pmon, tlv); =20 if (ar->monitor_started && ar->ab->hw_params->rxdma1_enable && ath12k_wifi7_dp_mon_parse_rx_dest_tlv(dp_pdev, pmon, hal_status, - tlv->value)) + tlv_value)) return HAL_RX_MON_STATUS_PPDU_DONE; =20 - ptr +=3D sizeof(*tlv) + tlv_len; - ptr =3D PTR_ALIGN(ptr, HAL_TLV_64_ALIGN); + tlv =3D PTR_ALIGN(tlv + tlv_len + tlv_hdr_len, tlv_hdr_len); =20 - if ((ptr - skb->data) > skb->len) + if ((tlv - skb->data) > skb->len) break; =20 } while ((hal_status =3D=3D HAL_RX_MON_STATUS_PPDU_NOT_DONE) || @@ -3057,15 +3058,16 @@ ath12k_wifi7_dp_rx_reap_mon_status_ring(struct ath1= 2k_base *ab, int mac_id, int buf_id, srng_id, num_buffs_reaped =3D 0; enum dp_mon_status_buf_state reap_status; struct dp_rxdma_mon_ring *rx_ring; + struct ath12k_hal *hal =3D &ab->hal; struct ath12k_mon_data *pmon; struct ath12k_skb_rxcb *rxcb; - struct hal_tlv_64_hdr *tlv; void *rx_mon_status_desc; struct hal_srng *srng; struct ath12k_dp *dp; struct sk_buff *skb; struct ath12k *ar; dma_addr_t paddr; + u16 tlv_tag; u32 cookie; u8 rbm; =20 @@ -3110,14 +3112,13 @@ ath12k_wifi7_dp_rx_reap_mon_status_ring(struct ath1= 2k_base *ab, int mac_id, skb->len + skb_tailroom(skb), DMA_FROM_DEVICE); =20 - tlv =3D (struct hal_tlv_64_hdr *)skb->data; - if (le64_get_bits(tlv->tl, HAL_TLV_HDR_TAG) !=3D - HAL_RX_STATUS_BUFFER_DONE) { + hal->ops->mon_rx_status_dec_tlv_hdr(skb->data, &tlv_tag, + NULL, NULL); + if (tlv_tag !=3D HAL_RX_STATUS_BUFFER_DONE) { pmon->buf_state =3D DP_MON_STATUS_NO_DMA; ath12k_warn(ab, - "mon status DONE not set %llx, buf_id %d\n", - le64_get_bits(tlv->tl, HAL_TLV_HDR_TAG), - buf_id); + "mon status DONE not set %x, buf_id %d\n", + tlv_tag, buf_id); /* RxDMA status done bit might not be set even * though tp is moved by HW. */ --=20 2.34.1 From nobody Sat Jun 13 07:15:45 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DF9E337CD2F for ; Sat, 9 May 2026 02:59:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778295575; cv=none; b=TZCPlkOP+J3CdLH3/bwRIjmAuiWKDOgMp+ALI+c4lzNotJ7RAF77UZ6C01gnlsd+Q7fIUenng2mDmAnRaSMjXoPcTbdC0AlSOLp/159zOIb+veNVsCtiO3THs8YSRUEsD8X20SgmPIrUsdPd5bGtFZ3hOmqR/mxafo5jBpS3iio= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778295575; c=relaxed/simple; bh=5HuJkt7QZUt61V+AOH+qcrZ/T1KhKZ34I2bVa5rdHak=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dodCM/vOjkr1onfCO9PxM4d93M4XkyQ1vtGtfvaZqKc9E9DC1Ud3YXnw3VqSad6aRTx7INbNi9nSu5DgMPZSwYUpRifQXBkE/uND6ab9wEHK/beAANY5W+wDz2diT0dz8Un3Fr9p7ZUWmky5SAvTaPlhjbDhsDpieYAj9/+ujbM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=jeFLZMvo; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=S+Mz8Ebg; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="jeFLZMvo"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="S+Mz8Ebg" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6492XfcC2769346 for ; Sat, 9 May 2026 02:59:25 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=rV/ieMDnbXj j5KK/swB/oQaY+V1P3A2uOWUDsQmGtmU=; b=jeFLZMvoY5L+SN5melJ7Pofcw7l PDFns0BRSpMkAMKm55YT6lv5R9PbjoYUW0CSIaaoz0WMuC92cRNfj2D1fhfzmKDy qS0l/4TKpzYpUc+G3CKBDvej51jKTFamVAib7J9ITNvuNJfkSC3kccbbjoQ1s33I 3VhgnQVVuLnnk+3onnc06cbRPFKD2zdiotyVD8yhwWSPBdWem25sT+Nsvn6l4wNo 97vjaKjqeq5vv3n3EYk2XCrTRafGf8LD1v7HvCnyYilpch9jDUQo0jcXgAax9RlB MrriXWXrlK5X3el4p/FokOGnmDNMFOZVbVPe9F1nphQv5esFQgCSVYv8tqA== Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e1v8gr19v-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 09 May 2026 02:59:24 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-365e70c39d0so3390137a91.0 for ; Fri, 08 May 2026 19:59:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778295564; x=1778900364; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=rV/ieMDnbXjj5KK/swB/oQaY+V1P3A2uOWUDsQmGtmU=; b=S+Mz8EbgFxZGZDZoGYUIf4QF+XMSDPmvF80Mh1sL7ThlM7vK0XrT+nVhyQQr5b4QVA Ni1gHm5/srm2E03x+R96gf4K2F4edxI4CQPUoPNp5boxf+li4qTyBMzAXKUWH3pjh4fT YhUhff4vGs012pKoYaWrUmxPVtWSJ8soWEAGD1oUVPHmF4LABNrN0CYDgTI5jVwlCD19 63NcZxuGSlQ0zlQ7ARjdbu23XZu6ky0+m3vv8Z4lmStvJaOAESkxYCqpCNmEih68vMGe TDhY/DqN1Q/zVH4batm6Ktn664m/PbuDprj6kfvbGSJI0Sa4MGwnsum1ykNsjUL0Gl4T QI1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778295564; x=1778900364; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=rV/ieMDnbXjj5KK/swB/oQaY+V1P3A2uOWUDsQmGtmU=; b=OOmRRsllKP0ukZj+aCObAl/z6xrS9WTtN4T8TsWqMdT6IpguPaMPfpxCkD+6ylHK2T 5Fg6exkTnkOHk2owAHCJqlMrMS9eh/mhFUseG/N3RBP9VQ9nTi8ftcF+Vuviw8xxcUdK NtNMe/y5FSoIa4FZ0HRI5p9wGcz1vX2o+onZO13lraCohv+L0wSm2ld/tVaqFHvrxn92 OvJ4OIEl+un7FRx+8+XVttvjhZ0kdpXk/mkmTmwEGhT6J/ASfIK+6wZi3HczSJWIPZb/ E5bH98UL4xpsY+AergNohHxfALWJjpCKsGiqop1F15KD849IX6tzf3qtNVMdP9VfMhXz h8Xw== X-Forwarded-Encrypted: i=1; AFNElJ9+W67vj91krY7L1a+lgdryrbl7SJy2tXOgcWZe9VpEW1EA05c1dgd2xtToF84S8saElHUFq9sqQpLteKs=@vger.kernel.org X-Gm-Message-State: AOJu0YyIIJCshuIPyfhAoibFa4/1akqtQ1yKggXUhr5QMCZEHWI2Z7wA 3v0yU5W9DczFn46T2cqzoHdocIk/KyqM+FKjJnpi9+ThUcTYotZf9T63cDqsnh0aBcruvRqkCN7 XateBuWj1UVyjWtgPkIFzHuLKsTiICdcf+S0OzBUSaHKIR1fKptFJiC40lg3GWG69GNc= X-Gm-Gg: Acq92OENsqibJP2z5SBvUSJ4OfMHf/CwhBqxTF7eaCD7NfQSgHjhPI1gCn42XLpyPkq uDaioZCyscXHMyyMiFIbjDVxJSEMalG7VGbLu9otITX574mG7MFqdw27Ru0FWec68Z4lDo8rdLI 0QgI/bp2ZkKJop7+CupCeoOw5QpG0nyy1UxXK8CLftkxJb16RxXNSet9Z9lEal3KoOVDw0In9o7 PwvtEb5b2LZfwf+l+hG67rp1DjautXrbo9Ch1tihZnCm5yVxYPaVjOWGiHFDypi1Okzir+UTsiR IZlQdeb+KQU1re9mkvrRQ6H5ujCKd6Cp7gW/hJJ/LRwC2fG19zA9euOAbDZl8jDyhSmu9rUO9Lz pNxptaQXK61gH24z+cohbYAfgFvNOyXyl6F+HFqPUiKBbwjMiVj7lyLwcoJdz6SdXHfkqST1ju+ bHQTEV X-Received: by 2002:a17:90b:224f:b0:35f:b714:e516 with SMTP id 98e67ed59e1d1-365abe8a2d4mr15400041a91.16.1778295563727; Fri, 08 May 2026 19:59:23 -0700 (PDT) X-Received: by 2002:a17:90b:224f:b0:35f:b714:e516 with SMTP id 98e67ed59e1d1-365abe8a2d4mr15400005a91.16.1778295563184; Fri, 08 May 2026 19:59:23 -0700 (PDT) Received: from Z2-SFF-G9-MQ.ap.qualcomm.com (i-global052.qualcomm.com. [199.106.103.52]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-367be8be938sm750899a91.4.2026.05.08.19.59.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 19:59:22 -0700 (PDT) From: Miaoqing Pan To: jjohnson@kernel.org Cc: ath12k@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Miaoqing Pan Subject: [PATCH ath-next 5/5] wifi: ath12k: tighten RX monitor TLV bounds check Date: Sat, 9 May 2026 10:58:19 +0800 Message-Id: <20260509025819.1641630-6-miaoqing.pan@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260509025819.1641630-1-miaoqing.pan@oss.qualcomm.com> References: <20260509025819.1641630-1-miaoqing.pan@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: JburCjsIaOXUeF9dvO-npKs1ag1tjy_c X-Proofpoint-ORIG-GUID: JburCjsIaOXUeF9dvO-npKs1ag1tjy_c X-Authority-Analysis: v=2.4 cv=RMCD2Yi+ c=1 sm=1 tr=0 ts=69fea30c cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=b9+bayejhc3NMeqCNyeLQQ==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=OJgDPCsnPsfhouAcpvQA:9 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTA5MDAyNyBTYWx0ZWRfX+zkSA+WkSvmw tCPsCoHecAae+jVb3RcSo9ZchtMHOXVXzUTFgeQl7ipBhmckN8FgxRa2I4PC7tr/UhEEwO8XxuH qhuqOzePWcBQ3QIsMWR05wv7z2Km0YDuFxQjY4+VRqpIE+RmHQp78NhZnH4BqEVynJ7RVyxVfxd ao2E/tSUzzQiWU3Bbn3lHmrGAz1pU9pzR88xFDQQIXyf/cFxRQKyoYaFot6hB9Jhim5rDFLiyMy t703Xrqy1X79yQXBQZkxFsCfEOd37eYimPJm+nuvlXhS3OOdebU+39Ogh+FDbUhNzocU0ZM5n8n HGvAd36Mq7oj3mvUlfgovSVvRv0ZzJs54qIkxelOgUfIxp/LRup7LsiB+Yyh2KX6iEqKQkziLWG y1vtbm7LCXeMhxWW++Q+AnNjahutTgMCjYR6xy6iLPZqiiaEsevpcLwmuSxQEvYUS4oK4Q+iAht P7S7ECu+aJUCXktnW4A== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-09_01,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 lowpriorityscore=0 bulkscore=0 suspectscore=0 clxscore=1011 malwarescore=0 spamscore=0 priorityscore=1501 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605090027 Content-Type: text/plain; charset="utf-8" Validate the pointer to the next RX monitor TLV more strictly by ensuring that at least a full TLV header is available within the status buffer before continuing TLV parsing. Prevent potential out-of-bounds access when handling malformed or truncated RX monitor status data. Tested-on: QCC2072 hw1.0 PCI WLAN.COL.1.0.c2-00068-QCACOLSWPL_V1_TO_SILICON= Z-1 Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00302-QCAHMTSWPL_V1.0_V2.0_SIL= ICONZ-1.115823.3 Signed-off-by: Miaoqing Pan --- drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c b/drivers/net/w= ireless/ath/ath12k/wifi7/dp_mon.c index 4266bd1d0d3d..23ba0cc824a7 100644 --- a/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c +++ b/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c @@ -3006,9 +3006,9 @@ ath12k_wifi7_dp_mon_parse_rx_dest(struct ath12k_pdev_= dp *dp_pdev, =20 tlv =3D PTR_ALIGN(tlv + tlv_len + tlv_hdr_len, tlv_hdr_len); =20 - if ((tlv - skb->data) > skb->len) + if (unlikely(tlv - skb->data > skb->len || + skb->len - (tlv - skb->data) < tlv_hdr_len)) break; - } while ((hal_status =3D=3D HAL_RX_MON_STATUS_PPDU_NOT_DONE) || (hal_status =3D=3D HAL_RX_MON_STATUS_BUF_ADDR) || (hal_status =3D=3D HAL_RX_MON_STATUS_MPDU_START) || --=20 2.34.1