From nobody Mon Sep 28 23:55:53 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 5EBAB231832 for ; Sat, 15 Aug 2026 01:43:38 +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=1786758219; cv=none; b=JHCkTCOXohVbhCXSleqgaMVMgdDLLs8paLcghIumBS0aPJcv59hCfm/raQVH+Yj/05wgE2pDRWBKdQJxwZHm1xZadkO2COYLCmR9oaKp10eIEsn7D+6z/pRV1YhGdVGwPs+5B69Su0rl7TnlLR0QBlvhirZMySrVva5016PEvxY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786758219; c=relaxed/simple; bh=+JaYK3lvTGqZWfDgrV6pHHo5zKiraVEFX0Wr9MgC5fY=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=YQonelGR62J2ITpx7Sj86Pfr8LQz2fOD8f950Lq2qXIcZa4z329bkViUNZbzBf9/M+yew5sws/K4/evnKgZ0Dg1WTPsYWzKPTwZR/1fBZWxIM/8NnkC6rr8Y2QDChTNleztwQwjbL6JwNAF2Uk/UEXjjo2kAs/nXAG7FSyS3dTI= 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=Zbngagli; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=XWSlEp3s; 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="Zbngagli"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="XWSlEp3s" 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 67ENC4ca2713410 for ; Sat, 15 Aug 2026 01:43:37 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=HJICPyMYD71slts6QyaSLY21UYKJuFWLkG8 AaM+C45g=; b=ZbngagliMlc2ECMrHwp8wE39CJ2cv8CVHJ0SC9loOJkoQOtpkR2 bx6TPxeoSk6li+fwBgnM6xu7+LtUIGeoLQjiqhxItJqdcxJqZJI5UwtRgL2cdXbG YWcXXGHaX13hXl1MyaOtiJZv1HdJbD48QDatxoIDxptka2XNN+3HtkYKl9szNxkn bem1rAmSwso8+kTBEotLm5kAA+UJhNjmMSaVSMofoz2XtP2x8Yj9W6ycZiwH4F// 3bgt15me8eD5bNn8oRNwRU0vhDrxsA0zu3ochmA/xnvAYp9YVSEjgaXqTSMIpH+g H8OpaAjtopO5lu0R96cpULXELXnCTxNqjUw== 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 4g20tr3eub-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 15 Aug 2026 01:43:37 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2cacd6d37edso23403095ad.0 for ; Fri, 14 Aug 2026 18:43:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786758216; x=1787363016; 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:content-type; bh=HJICPyMYD71slts6QyaSLY21UYKJuFWLkG8AaM+C45g=; b=XWSlEp3sB+PUIYvLWQBjIOqSA+Cu6qMaFZ5sjQb71KWPSqh/k0BHRFfavdeGQBgF5P cZgQNshoxQMtmJjdxrFm/CYrP84jJUusocdCpgWlyCqv4BMT84JkpPc01EMa74lf9qoS X9sWVQVKMdpsXWU/gaSdUVslTEViVZHtMmcw7rtPUJY5G3f0zMMysiP7q21QDxq0uf1E l5JXGr/XiZOeZG57XMtl4krkdkEn6+JZ8P+oG098G2xCcnmM5biMJFFt6QvCPev/ZtJ3 Kjr6nB5MfGCknvv3FvAnkEvEgobHZUuD+Mfn9OPw7aisooK6aX5pIOTz1A9Ba5LAQ5QR 6W+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786758216; x=1787363016; 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:content-type; bh=HJICPyMYD71slts6QyaSLY21UYKJuFWLkG8AaM+C45g=; b=J4jvzCH1LblCjiqGb1Jg2+9Wsctqu2wHTxmmm1AdG9AZ7T2RDAVnkyXKizXNSvqJnw 2KcQlk5ZyPT8Rs61VWOgO9FRZs5plL2GcxaynZsM6vT/RKFseTW/9s+SEF1K+8msWkQm cTx8Wc02DHxK6tkHcZMGTKEh+a3AMivL8zaGDlvv58++D/nD9RNTfvl+r0+wBFjLdGZA Z5ToYwoW6GoiBBvdoQtRUIIZBP60SJ8ICPGaLlPFYhTqT+ooj+OpympWVfCIDyo7BQV1 wctaU6QMAUGOwfVn/ow1UAsv8O9jBlz5yBGdhiExwMv+zDMvPMsx00t3qvvxv4RHoFiP F6hQ== X-Forwarded-Encrypted: i=1; AHgh+RpmGAClmnBunhBPSdHmnvxkpQ3rCMa1GRA2s7b3ifRQFLPvwYwp7ICTHuNwekbb8tWMXC0RQ5KxHxobZ/0=@vger.kernel.org X-Gm-Message-State: AOJu0YwGwdKDYeHvMfrxHGGr8EFYrutCMvTbDunKbBuAPQhzTgl2DfOT zp3XtWzVaN6hNF0oBX5/vIj2w0hhWsvq2Dixzp44R7wpEPZCneCMYUNOJhGKROjAbzHgWXWEVJu LbBBjlLCIWlsZpzOVcOduv44fyERjk0JNZ62BXz4xCwynSQRwaRz5iZc4faTyOBVUQ1o= X-Gm-Gg: AR+sD11X8LuYNVXFgWSE+6FYzST03+2x619JJr6l9CDyX+Mfi4QBpL45N5bc1hJuRjq i2UkCgqqTvQhB97QAIWkgUjxMr6QofoPB6gH1bebygR6ZzLy5ZaXPE2DTsYg0bLgUN7uGtGhd+z T/rTbhqMjJ4vd4sRwtxmzvzZovCELB+HkGIV5CGgm3suSl5uPRvD2CCTZ2Xopcwocrdbu/dHEHX RfkLm978oRdHdp1WuLvo0hF68vlHPtNedgyE+Oum7W6PtpgEspdqGVYOejIQzpymTioMCqWl7o6 w6Fi83WyUwa8ZldRvT+m1THg37Y7hWJYqLC2MALSmakuX9Kfejc24dHuUiiMdfJPURGdJ/VJ4wR XkEMgD7YM3jBNfzAhFwxkmoh/kmdzJ0C0C4zlGbcZGivxKKxtNwm4qrTPvhQ= X-Received: by 2002:a17:902:e948:b0:2d0:cc92:f7a7 with SMTP id d9443c01a7336-2d3b0e440a4mr122923795ad.13.1786758216083; Fri, 14 Aug 2026 18:43:36 -0700 (PDT) X-Received: by 2002:a17:902:e948:b0:2d0:cc92:f7a7 with SMTP id d9443c01a7336-2d3b0e440a4mr122923445ad.13.1786758215670; Fri, 14 Aug 2026 18:43:35 -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 d9443c01a7336-2d3aeb8937bsm16418705ad.65.2026.08.14.18.43.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Aug 2026 18:43:35 -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] wifi: ath12k: fix MLO 4-way handshake timeout on QCC2072 Date: Sat, 15 Aug 2026 09:43:29 +0800 Message-Id: <20260815014329.3748059-1-miaoqing.pan@oss.qualcomm.com> X-Mailer: git-send-email 2.34.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-GUID: JjHOoub2YhXIe2SWBGo1jQ24wxXMJ72P X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE1MDAxMCBTYWx0ZWRfX47iIhA/RtL7y zhpBwZWIg4WIUKeUJVzdUG+sGfQhZCCjYxU9d5wMzaWmrsTzkjvnpustKNeVy0ueQDliMERTouX BwEZCcixgkgtRFVd2RWrFiXL4LcGjusRg5f5ydS4VVPEzrCQ5+i1com+5InWoB1AFMI3NkfVM2R 00Fb+mY1XPkmDOToW2aGh2tKQ72SiAgiuMfYbQmUZZHs78zZaYhMydKR6G6Mi2QW+M5LgaEmAJa C8DHQKDgtvCUhY0MqJ6q+m+9TBbflEPoR/Qh+v6/hxH7nIXjvb8wis/G2bsF0JI6tW16hCQMTqc a5kiWHc6+hjjsKftAP5EQXDeQUMeymC7KE2ICZ/DIpyPgYGyYoKLl63lXIrH4h0jrgWTxILABAG tIVptRd+jHqtPKCthj9LElfxpA84Mw81OlXcDY208SD5OomcJZCNaiZBSLvD2sJPxyoTpw2iVU1 GA+lzOKj36afu3lrizA== X-Authority-Analysis: v=2.4 cv=UrdT8ewB c=1 sm=1 tr=0 ts=6a7fc449 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=b9+bayejhc3NMeqCNyeLQQ==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=wvyN2lhKwasRc6zrnsMA:9 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-ORIG-GUID: JjHOoub2YhXIe2SWBGo1jQ24wxXMJ72P X-Proofpoint-Spam-Info: AW1haW4tMjYwODE1MDAxMCBTYWx0ZWRfX3jijPo52wRtw Bjl7SRDFDDzwoEfA+oCS3cjg+QTvwFvJea3kkhQ4wIBethrrErZsrL6flVSkwDJUMKFPE64irbJ Vw6l8n5wN3Hr/XK9ejv7Vb7Om7ZwsrA= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-14_08,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 clxscore=1015 lowpriorityscore=0 phishscore=0 spamscore=0 suspectscore=0 adultscore=0 malwarescore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608150010 Content-Type: text/plain; charset="utf-8" In MLO connections, ath12k_wifi7_dp_rx_set_link_id_wcn7850() attempts to resolve the IEEE 802.11 link ID for received frames by matching rxcb->peer_id against the link_peer->peer_id entries in dp_peer->link_peers[]. This fails for EAPOL frames because the firmware delivers them via the MLD peer path. In this case, rxcb->peer_id contains an MLD peer ID while link_peer->peer_id contains a link peer ID. The mismatch prevents status->link_valid from being set. When mac80211 receives a data frame with link_valid=3D0 for an MLO station, it calls link_sta_info_get_bss() with hdr->addr2 to resolve the link ID. If hdr->addr2 contains the AP MLD address rather than a link address, the lookup fails because link_sta_info_get_bss() indexes by link address, and the frame is dropped in __ieee80211_rx_handle_packet(). This is observed on QCC2072 where EAPOL M3 uses the MLD address, deauthenticated (Reason: 15=3D4WAY_HANDSHAKE_TIMEOUT) Fix this by resolving the link peer using the current operating frequency associated with each link peer. For 6 GHz links, the received frequency corresponds to the operating center frequency, while for other bands it corresponds to the primary channel frequency. Match the received frame against associated links using the appropriate frequency for each band. The frequency-based lookup is used only when exactly one associated link matches the received frequency. If multiple links share the same frequency, the match becomes ambiguous and no link ID is assigned. In that case, leave status->link_valid unset and let mac80211 fall back to its own link resolution logic. Tested-on: QCC2072 hw1.0 PCI WLAN.COL.1.0.c2-00228-QCACOLSWPL_V1_TO_SILICON= -1 Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c7-00108-QCAHMTSWPL_V1.0_V2.0_SIL= ICONZ_UPSTREAM-3 Fixes: a2fe9dc70f3b ("wifi: ath12k: Fix low MLO RX throughput on WCN7850") Signed-off-by: Miaoqing Pan --- drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c | 55 +++++++++++++++++-- 1 file changed, 49 insertions(+), 6 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c b/drivers/net/wi= reless/ath/ath12k/wifi7/dp_rx.c index 95d87dd67872..a3d016d0fb5c 100644 --- a/drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c +++ b/drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c @@ -2331,20 +2331,63 @@ ath12k_wifi7_dp_rx_set_link_id_wcn7850(struct ath12= k_dp_peer *dp_peer, struct ath12k_skb_rxcb *rxcb, struct ieee80211_rx_status *status) { - struct ath12k_dp_link_peer *link_peer; + struct ath12k_dp_link_peer *lp, *link_peer =3D NULL; + struct ieee80211_bss_conf *link_conf; + struct ieee80211_chanctx_conf *ctx; + struct ieee80211_vif *vif; + struct ath12k_sta *ahsta; unsigned long links_map; + int freq; int i; =20 RCU_LOCKDEP_WARN(!rcu_read_lock_held(), "ath12k set rx link id called without rcu lock"); =20 + if (!status->freq) + return; + links_map =3D READ_ONCE(dp_peer->link_peers_map); for_each_set_bit(i, &links_map, ATH12K_NUM_MAX_LINKS) { - link_peer =3D rcu_dereference(dp_peer->link_peers[i]); - if (link_peer && link_peer->peer_id =3D=3D rxcb->peer_id) { - status->link_valid =3D 1; - status->link_id =3D link_peer->link_id; - return; + lp =3D rcu_dereference(dp_peer->link_peers[i]); + if (!lp || !lp->sta) + continue; + + ahsta =3D ath12k_sta_to_ahsta(lp->sta); + if (unlikely(!ahsta->ahvif)) + continue; + + vif =3D ahsta->ahvif->vif; + link_conf =3D rcu_dereference(vif->link_conf[lp->link_id]); + if (!link_conf) + continue; + + ctx =3D rcu_dereference(link_conf->chanctx_conf); + if (!ctx) + continue; + + /* + * For 6 GHz, rx_status->freq contains the operating center frequency. + * For other bands, it contains the primary channel frequency. + */ + freq =3D status->band =3D=3D NL80211_BAND_6GHZ ? + ctx->def.center_freq1 : ctx->def.chan->center_freq; + if (freq !=3D status->freq) + continue; + + /* + * Skip freq-based lookup if multiple links share + * the same frequency; the match would be ambiguous. + */ + if (link_peer) { + link_peer =3D NULL; + break; } + + link_peer =3D lp; + } + + if (likely(link_peer)) { + status->link_valid =3D 1; + status->link_id =3D link_peer->link_id; } } base-commit: e07447e654476262558bee570f4cf456e2b32565 --=20 2.34.1