From nobody Fri Jun 12 23:05:48 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 BB2213793B8 for ; Tue, 12 May 2026 02:57:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778554660; cv=none; b=YVHWLee2VYzAofav7toTl/qWpLoRuB6zWJZqq2R8dnh9LhpH8dlqA7RLSxwcQD8oiXCwi6KAxEGE7xk96y+dxxFvDOB6pp9bCRHUPYsSipZPde1QqposWSev7ih0EA5v0Y8ho57+kNTgtRvKivV/lLphlQaRqHh1rOtcpXFMLTY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778554660; c=relaxed/simple; bh=zWHPz5IxtD8j7Re9smQ+JkkwTIsXhzzeghN4ySkYfvk=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=BCNW8+PYyOwuFwmsmndh9dQgyMjT7O7OOCnOBSqnY4uyVKRRg6IMjQr26VByqtDv5gu46Q5AEson1THA0xxYmj+6iMSOOwOnNhRoFA3FOriyif/zpD6WJAbWNKdy8hZiczlrC5fNyYpZLPPZfDOw81GANMA32Khoo4tWfoSAuao= 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=Cu3K0mSN; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=OXbVo45c; arc=none smtp.client-ip=205.220.168.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="Cu3K0mSN"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="OXbVo45c" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64BK6Vdm2202322 for ; Tue, 12 May 2026 02:57:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:message-id:mime-version :subject:to; s=qcppdkim1; bh=bLWysuD+JTHP8GAppUvWBnsTI/f5K974IU5 qM6OkPC8=; b=Cu3K0mSNc9zf5yQ4xBmZQXC4mHoKof9GSH/MSyJ6eJBT2SdFTWJ FdY5QjANGRLh4WSttJgCcDcbKoNXQ8f5twfBZD8gzXRyVn48ZpPzj+bzJh/dN5z6 fvMUt9x0Immb04l6pk1oU4jb/oo2U/dbdXIMcZub4/4KSdZAs6Jx5ZL5OucPAOBI 8qlpWNUKoKyxwfPK9KQdzY+guy2nFUx14KRWLgqpzhoFd1v9XW4GgC3oFEwE7sxD CgBASlkpaqqJ6p3IoYitkO4xZYDyPuu+RTH7xFI56mLbRUKdMxJkwZNFATc8xSgh s8A5ZD/BqRuQNFkmIu7Y5YvigTqjwBGE7mQ== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e3nuyh4wk-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 12 May 2026 02:57:37 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2b2e8bba2e6so65681675ad.1 for ; Mon, 11 May 2026 19:57:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778554657; x=1779159457; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=bLWysuD+JTHP8GAppUvWBnsTI/f5K974IU5qM6OkPC8=; b=OXbVo45c1ZXms8lGa6IkpFxQiL90ZoG5BqReh5/q5EFMpNH2T8EMpyjcdz1KtP6HkX 8eBbefCMvuV+oQxK2cdRdkno6rkxIhRJEv5kZ189pJrcsJBHvKwAHoBLUUHBX/Rf/Yil 8rv2X9u+FL6kYfjwHWjGtmIJAbXvW2qjnEW5NZ3gMJ3NfsjxXusdCI1EpWoRPflSPAPW 2TUdWonX4kLXoK7m33gUZOg4A6lvmDKoh8seX7uEB5WRxUEKKWK7W2+41dKX9iXgt1+f KdmurSuyis0sXJ5qlJD9OILGu++k9DOwFd1lB4zqT8IbtRDq4iU6CFWB/+Qm5Vl2Ujgb JSHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778554657; x=1779159457; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=bLWysuD+JTHP8GAppUvWBnsTI/f5K974IU5qM6OkPC8=; b=O2VZ8MdYC52w/wflZS6uou9DCCgw453AvJzVN1cTfivsHyGg4pmTjuw9JbAjP7Dww4 Wgtl4bZIi9OqlYrKbfLeHRORzUBllIsFWNP6A9PHTy9Kr7/ailNOFeXrDbEMFZGiefXr 6Yb5fPEzXbMGHGeJZ13LJI3q+BQDX+Y0FV+I6dd8GW9tKr7K5w8eJr7RLfrxSZC0VgDT 9uzrjoOSiBi6A1Gu+jyg4HjUAx/y5RlFEb8z2wjPvVWYNT5wOFluXuk5NTDbdDMGdpjl KCOkiJKjJiGtUe5gmZ/S7Uuog95JO8595SbZ+V7kT7I316Ew/Pmh1D5KwmntzXobAoyu QHlg== X-Forwarded-Encrypted: i=1; AFNElJ/lRz2/SKTLRU1/0uehI49bwoJg7eg3liuZYZYWKouK7gGCFEoG1kAVi/PdLnPF0/g3umFFardDXbOsF8s=@vger.kernel.org X-Gm-Message-State: AOJu0YxPCSbH6oN3DX22Jw2vtDqrIht1+AK8sMT27FSCRMFQtF/brbVV cmFwE5Ed9Um7R/c2PdPK0Pr8gE2zjYSZfEzP/iUL7XENhJODqICSU7XsaoCGcsxLdDNzO8+Rcf6 teMW4l7Y7OkdRLosrK93lozLSIBgL/Azp5CsRqdCOtXbJeuFevCJPHazXIMkevfWevsArb+v+Kz fYFA== X-Gm-Gg: Acq92OEvKRTTgWsx64Dp2MPiUMtF9NziPviFQdeRMgib1eeiYdD4Lxk9OeabG6+LvQ2 /DbY6XpjqStDm+Gk7rg53VMS5Ol53BLWFWT+PkXv5SBCn6WhcQLKVc+sqxu9zks0LjS1utgojt5 hNDmPVF/Rs7gLn988hjHMXB7EmXGoBTdDu5sLyAGzO8d/q/8fQBgPasXIddnVptvpzYx4/M+rJN OaHwVxUEH8E6lh9/KWWdtvRw/i38UsWXsW2KXzORLv65jt9uykhNVbRoH20nTtU3wzd+4fDdFSq 0Tj26g0LXdNOwX+a1mWp4v1RZCip6PDWt0LBUoTcBtP3afG7Ys1m9YACsavoVtPSVEq3eG8ZOqD ngcSU2ugkA0IjqbUUxTsOSgBWHj9i1ovu3yMIwsLE3UYz9OhhgWgTLZOXnGute9r5M77HKSpCvU UAqwoS2oPs0A== X-Received: by 2002:a17:903:988:b0:2b2:6b58:9317 with SMTP id d9443c01a7336-2bc7ac6a996mr138788005ad.39.1778554656981; Mon, 11 May 2026 19:57:36 -0700 (PDT) X-Received: by 2002:a17:903:988:b0:2b2:6b58:9317 with SMTP id d9443c01a7336-2bc7ac6a996mr138787555ad.39.1778554656454; Mon, 11 May 2026 19:57:36 -0700 (PDT) Received: from hangtian-z2-2004.ap.qualcomm.com (i-global052.qualcomm.com. [199.106.103.52]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2baf1e3571dsm116711225ad.42.2026.05.11.19.57.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 19:57:36 -0700 (PDT) From: Hangtian Zhu To: jjohnson@kernel.org Cc: ath12k@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] wifi: ath12k: allow peer_id 0 in dp peer lookup Date: Tue, 12 May 2026 10:57:32 +0800 Message-Id: <20260512025732.1297849-1-hangtian.zhu@oss.qualcomm.com> X-Mailer: git-send-email 2.25.1 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: AW1haW4tMjYwNTEyMDAyNSBTYWx0ZWRfXxnH7P6JwuV+U J6VkAfZhHITo/wE8IYqH4r/trYh+g6opc5pk6kDDos3Yxq1EAZ0HphleJTVnSUvhtyBd1Z3yuIU RtH/yVF3ZlKbBrWZDSBBGWpSi49e8ITTVDe3xIgwhc/iBaae100bmrkRI77k4txymL+0/OZQDPO MRRRpMnoiSkMiUD7JyeUHKucrAlo8Zj5+6KQ6huh6yDhikVfC4/B+oMPQIMo1lznX/raYEYCc5U 7RfZzuU+SDZd3r+Pczikj7jvAhBApj0td2hurG4e5oLDGiVz7UGRL79mFhyH44y//OAwVKCWkUU OzwqRUqGcBuKAbdq7k3tV3ak/J8m4WHsR8Bzd0zPAhJ8jAHXWfs3FujL3irlF+Jgx6Kx0zY+FiQ mFnadajgZHv5zweHqFLr33jt7vYEBrD/Hs8izVWfNU18nScsmDQ02N1OPNhxOIxezoYomhfiJrd aN9coU4iraRJE+t20Qw== X-Proofpoint-GUID: dz24xrYC6vpXuxg_fICrpzYILPI8nenQ X-Proofpoint-ORIG-GUID: dz24xrYC6vpXuxg_fICrpzYILPI8nenQ X-Authority-Analysis: v=2.4 cv=Y5XIdBeN c=1 sm=1 tr=0 ts=6a029721 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=b9+bayejhc3NMeqCNyeLQQ==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=657lBeYTMEBjGhVbk1cA:9 a=1OuFwYUASf3TG4hYMiVC: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-11_05,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 malwarescore=0 lowpriorityscore=0 impostorscore=0 suspectscore=0 adultscore=0 phishscore=0 priorityscore=1501 clxscore=1011 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605120025 Content-Type: text/plain; charset="utf-8" For some chipsets, firmware can report HTT_T2H_MSG_TYPE_PEER_MAP2 with peer_id 0 as a valid value for mapping ath12k_dp_link_peer to ath12k_dp_peer. ath12k_dp_peer_find_by_peerid() currently treats peer_id 0 as invalid. When firmware assigns peer_id 0, peer lookup fails. As a result, DHCP OFFER packets are dropped in __ieee80211_rx_handle_packet() because pubsta is NULL. ath12k_dp_rx_deliver_msdu() <- rx_info->peer_id 0 ath12k_dp_peer_find_by_peerid -> peer NULL ieee80211_rx_napi <- pubsta NULL ieee80211_rx_list __ieee80211_rx_handle_packet <- pubsta NULL, skb undelivered The following error in the TX completion path is caused by the same issue: ath12k_wifi7_pci 0000:04:00.0: dp_tx: failed to find the peer with peer_id 0 The error message is triggered by: ath12k_wifi7_dp_tx_complete_msdu ath12k_dp_link_peer_find_by_peerid <- ts->peer_id 0 ath12k_dp_peer_find_by_peerid -> peer NULL ath12k_dp_tx_htt_tx_complete_buf ath12k_dp_link_peer_find_by_peerid <- peer_id 0 ath12k_dp_peer_find_by_peerid -> peer NULL Fix this by allowing peer_id 0 in ath12k_dp_peer_find_by_peerid() and rejecting only values >=3D ATH12K_DP_PEER_ID_INVALID. Also update peer_id 0 handling in monitor path: Always call ath12k_dp_link_peer_find_by_peerid() in ath12k_dp_rx_h_find_link_peer() to fetch the peer, including when peer_id is 0. Always store peer_id in ppdu_info->peer_id in ath12k_wifi7_dp_mon_rx_parse_status_tlv(), including peer_id 0. Tested-on: QCC2072 hw1.0 PCI WLAN.COL.1.0.c2-00074-QCACOLSWPL_V1_TO_SILICON= Z-1 Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c7-00108-QCAHMTSWPL_V1.0_V2.0_SIL= ICONZ_UPSTREAM-3 Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.6-01243-QCAHKSWPL_SILICONZ-1 Signed-off-by: Hangtian Zhu Reviewed-by: Baochen Qiang Reviewed-by: Rameshkumar Sundaram --- drivers/net/wireless/ath/ath12k/dp_peer.c | 2 +- drivers/net/wireless/ath/ath12k/dp_rx.c | 3 +-- drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c | 3 +-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/dp_peer.c b/drivers/net/wirele= ss/ath/ath12k/dp_peer.c index a1100782d45e..47d009a0d61f 100644 --- a/drivers/net/wireless/ath/ath12k/dp_peer.c +++ b/drivers/net/wireless/ath/ath12k/dp_peer.c @@ -419,7 +419,7 @@ struct ath12k_dp_peer *ath12k_dp_peer_find_by_peerid(st= ruct ath12k_pdev_dp *dp_p RCU_LOCKDEP_WARN(!rcu_read_lock_held(), "ath12k dp peer find by peerid index called without rcu lock"); =20 - if (!peer_id || peer_id >=3D ATH12K_DP_PEER_ID_INVALID) + if (peer_id >=3D ATH12K_DP_PEER_ID_INVALID) return NULL; =20 index =3D ath12k_dp_peer_get_peerid_index(dp, peer_id); diff --git a/drivers/net/wireless/ath/ath12k/dp_rx.c b/drivers/net/wireless= /ath/ath12k/dp_rx.c index cae00e0539df..bc7889826e50 100644 --- a/drivers/net/wireless/ath/ath12k/dp_rx.c +++ b/drivers/net/wireless/ath/ath12k/dp_rx.c @@ -1194,8 +1194,7 @@ ath12k_dp_rx_h_find_link_peer(struct ath12k_pdev_dp *= dp_pdev, struct sk_buff *ms =20 lockdep_assert_held(&dp->dp_lock); =20 - if (rxcb->peer_id) - peer =3D ath12k_dp_link_peer_find_by_peerid(dp_pdev, rxcb->peer_id); + peer =3D ath12k_dp_link_peer_find_by_peerid(dp_pdev, rxcb->peer_id); =20 if (peer) return peer; 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..7dd4a49d64d5 100644 --- a/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c +++ b/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c @@ -1779,8 +1779,7 @@ ath12k_wifi7_dp_mon_rx_parse_status_tlv(struct ath12k= _pdev_dp *dp_pdev, =20 info[1] =3D __le32_to_cpu(mpdu_start->info1); peer_id =3D u32_get_bits(info[1], HAL_RX_MPDU_START_INFO1_PEERID); - if (peer_id) - ppdu_info->peer_id =3D peer_id; + ppdu_info->peer_id =3D peer_id; =20 ppdu_info->mpdu_len +=3D u32_get_bits(info[1], HAL_RX_MPDU_START_INFO2_MPDU_LEN); base-commit: e12d2d3983acb150fd987d19ec6a2a530da110df --=20 2.25.1