Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2218365/?format=api
{ "id": 2218365, "url": "http://patchwork.ozlabs.org/api/patches/2218365/?format=api", "web_url": "http://patchwork.ozlabs.org/project/hostap/patch/20260401054901.3780435-19-peddolla.reddy@oss.qualcomm.com/", "project": { "id": 22, "url": "http://patchwork.ozlabs.org/api/projects/22/?format=api", "name": "HostAP Development", "link_name": "hostap", "list_id": "hostap.lists.infradead.org", "list_email": "hostap@lists.infradead.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260401054901.3780435-19-peddolla.reddy@oss.qualcomm.com>", "list_archive_url": null, "date": "2026-04-01T05:48:56", "name": "[RFC,18/23] PR: Add extended ranging parameters to PASN peer structure", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "dd281202ee3e41067f5cb96dc4ef7c8339a5cadc", "submitter": { "id": 93026, "url": "http://patchwork.ozlabs.org/api/people/93026/?format=api", "name": "Peddolla Harshavardhan Reddy", "email": "peddolla.reddy@oss.qualcomm.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/hostap/patch/20260401054901.3780435-19-peddolla.reddy@oss.qualcomm.com/mbox/", "series": [ { "id": 498276, "url": "http://patchwork.ozlabs.org/api/series/498276/?format=api", "web_url": "http://patchwork.ozlabs.org/project/hostap/list/?series=498276", "date": "2026-04-01T05:48:44", "name": "PR: Add nl80211 support and ranging for Proximity Detection", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/498276/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2218365/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2218365/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=lists.infradead.org header.i=@lists.infradead.org\n header.a=rsa-sha256 header.s=bombadil.20210309 header.b=av6Nkwo7;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256\n header.s=qcppdkim1 header.b=ofwdHaBV;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.a=rsa-sha256 header.s=google header.b=ExoDIUdZ;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=none (no SPF record) smtp.mailfrom=lists.infradead.org\n (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org;\n envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org;\n receiver=patchwork.ozlabs.org)" ], "Received": [ "from bombadil.infradead.org (bombadil.infradead.org\n [IPv6:2607:7c80:54:3::133])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4flvHB3r7dz1yGH\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 01 Apr 2026 16:51:02 +1100 (AEDT)", "from localhost ([::1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1w7oTE-0000000E1Uq-3vaM;\n\tWed, 01 Apr 2026 05:50:28 +0000", "from mx0a-0031df01.pphosted.com ([205.220.168.131])\n\tby bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1w7oSv-0000000E10w-49IQ\n\tfor hostap@lists.infradead.org;\n\tWed, 01 Apr 2026 05:50:14 +0000", "from pps.filterd (m0279867.ppops.net [127.0.0.1])\n\tby mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 6312dxjR3081986\n\tfor <hostap@lists.infradead.org>; Wed, 1 Apr 2026 05:50:09 GMT", "from mail-pl1-f199.google.com (mail-pl1-f199.google.com\n [209.85.214.199])\n\tby mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d8kdktej7-1\n\t(version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n\tfor <hostap@lists.infradead.org>; Wed, 01 Apr 2026 05:50:09 +0000 (GMT)", "by mail-pl1-f199.google.com with SMTP id\n d9443c01a7336-2b249541063so36345835ad.3\n for <hostap@lists.infradead.org>;\n Tue, 31 Mar 2026 22:50:09 -0700 (PDT)", "from hu-peddolla-hyd.qualcomm.com ([202.46.23.25])\n by smtp.gmail.com with ESMTPSA id\n d9443c01a7336-2b24268aa4fsm129919665ad.36.2026.03.31.22.50.06\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Tue, 31 Mar 2026 22:50:07 -0700 (PDT)" ], "DKIM-Signature": [ "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20210309; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:\n\tMessage-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=XhEDixr3+vihdofxBNfXodELeXMqObeaUCVL18QcRBs=; b=av6Nkwo7fYxJrv\n\tgLVrPyzXRZgb7D/ZAR9V0OGTapVfdZ9BnraW6/ilmo5hUMxm6PV5QE9em0w/+dSd647VouxXJiDqI\n\tIu/g3+zekr9dDz5Gi0oCv4tNoDAxqt60rWQUvUOFpI7TQ16hN+u1G8vGWzdS6Tllvv1feA+u2PUed\n\t7SYjbA4hCyV9YoRdPdKtthQUJb5viKDRtFkp91WCBHNSYzIeV8zy9sLG6w96YsoDKx3sysnm2fZST\n\tqqmwllcDh9pIy6NWL4Eya5vsXeHbv4Ri9Z9B0ueP4C6Rq5E6dAJeV4ky8g3RT1zbPxuhPANPrYDIq\n\tHVYbcLsBjH6AMhs3eEjA==;", "v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n\tcc:content-transfer-encoding:content-type:date:from:in-reply-to\n\t:message-id:mime-version:references:subject:to; s=qcppdkim1; bh=\n\tLmuWSL+gQAuZI0lRsv3OePkQXWy/IEuwVeY3OeaFmWE=; b=ofwdHaBVaYmaHDqK\n\tgj0La2+cnReHoX6rkauYqJRFCq+4bkiT13wWO1rpui44ZxRPbfsAHjr31S5xybTr\n\tn/fxg750/lzMi1/M1rrS9NxTSlF2JgG26k+FeRykPlbdQRBNCT1E2cDMVXehcrx/\n\tN/M1nX/FoidhZRo92nMPFQKeGifdKGFWKI+DOiAb1Q8NupAMETrRSv4uejxYmD1F\n\tThQHH/M6VhS00Lj8Bk59/lTuXvAnepMcqwLOJWikOWu9d6pP5P8uiqC3er35DhlW\n\t7hobUrKAs7yvugxHRlMeBh49/pfDfO5D/3BULtUQh0/7wmGEOFyA35jTp+fEc1QN\n\tM1cFqA==", "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1775022608; x=1775627408;\n darn=lists.infradead.org;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=LmuWSL+gQAuZI0lRsv3OePkQXWy/IEuwVeY3OeaFmWE=;\n b=ExoDIUdZ4cJfoCnVoq6/odxfTaudIg2G0UO3UqFN4NpbcQTucL8ZMyKM81udXkyv+S\n Yeg8IHINPupxqeOZjAlcQFm/TdZF2Oy63rrEya7q6aYCrwxYtOIoSGvSc/PoVV2SW5+A\n r30wqYIsnS09dg+FUVZCJCqXIcVz3FhpvyTOMwPoFuDlSLp6UYnoRaZTlWghZ0NHqnb4\n 5dqhT6mo/uPZAQ8n4Ueft4RJxS/ZqDQZu0CnLJFGD+b7YFjqCKDQiA+s8z1/Jl2C1TP2\n xRN1DDFoE6n+fFuRnroArq8V6aNr2YTMYgRh3ZGlPZ+kPQKHoREpE+xRRMox0g7fOlxn\n NzXA==" ], "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775022608; x=1775627408;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=LmuWSL+gQAuZI0lRsv3OePkQXWy/IEuwVeY3OeaFmWE=;\n b=PFBKfzDNMvtvEkotiTjquKqGD/5kFDBpkKyuiqcmtWHaG6qvMq6WsfSTxv+riR9Iet\n O1NXq9zaGIjzf99O2+4EBWEG4lC1PtQiy62GytSsc6qbZMXqfeUl6ltTNPyciUvy+jiA\n xsGYmBl21i8nwODbcR3bRNXquAdbAG6B+LZeS5nF4H67giZZutIuM3KsgkD1alT3wiaR\n Jj6kwfNWySckWqwsxRqaKZXCyTPyR3/U1/Yqe7Qt5ws3jsS7ILQpXTolMgccHEgJPzPl\n Qn5meAigM5xygUpInp8Gg95OQQ9EyDkZw2zyWxO3OCXVntuLCbAcrgrmPhUj7XU2OKXe\n fUyQ==", "X-Gm-Message-State": "AOJu0YzTgVMa+Ai6ODMb2HEAxnbU4neYc56vclvBP6upbAq0ZHh6+aI7\n\tS3Jgm+dnsvy8FyaAqtT74rT7jhCBRcKSTchBup/vbCshmDtpRzrly2fDrXqAtdgFedBxbBYP//u\n\tYq0vCJ/6ffzaQLjFp9Cmc0ZfjZzwBjTw+lEkogri/4WVAleDdeK46eOiOi6/sGZ7TSylRZnk=", "X-Gm-Gg": "ATEYQzzICn6EewJRxIF3uzKh7q2hl+pYDSIPGEls/z06prMwckk1PXdlbINSclM1hEi\n\tPOXzWqbAYF7j3xvtd4v2bM0hHCw8Qg5Tq94sd/YGWdDiTj/89h4b7PnrFew5hyg9rDlZ64Tss+N\n\tCCXqhX8oXnHPjue06Qgyghkq3x1N2fVHeuudkHSWXMbHUHjzpJIm+mZJbYb9We5dhYgRjNnrFYw\n\tpMBuNx+9k6gkdNtwj5/kuA8o7dCffoBh98x2e0vqWE67MG3duu5FyqpfhgXImwoa/4HUoPYU6ta\n\tJzdEoDGg437tuoaaiHizm35hXuvxNiEqQeiiY9VcXA8ZRkuFE99EBilMR/AapI/5xNH/PDW5U9H\n\tIi0z/5JlDTBe2qCUqgWpjlmeASdmvtbv556c8ZDaXPl+uGylbuLbthbk=", "X-Received": [ "by 2002:a17:903:40cf:b0:2b0:68d1:2537 with SMTP id\n d9443c01a7336-2b269cf051fmr21333235ad.42.1775022608347;\n Tue, 31 Mar 2026 22:50:08 -0700 (PDT)", "by 2002:a17:903:40cf:b0:2b0:68d1:2537 with SMTP id\n d9443c01a7336-2b269cf051fmr21332985ad.42.1775022607763;\n Tue, 31 Mar 2026 22:50:07 -0700 (PDT)" ], "From": "Peddolla Harshavardhan Reddy <peddolla.reddy@oss.qualcomm.com>", "To": "hostap@lists.infradead.org", "Cc": "vjakkam@qti.qualcomm.com", "Subject": "[RFC PATCH 18/23] PR: Add extended ranging parameters to PASN peer\n structure", "Date": "Wed, 1 Apr 2026 11:18:56 +0530", "Message-Id": "<20260401054901.3780435-19-peddolla.reddy@oss.qualcomm.com>", "X-Mailer": "git-send-email 2.34.1", "In-Reply-To": "<20260401054901.3780435-1-peddolla.reddy@oss.qualcomm.com>", "References": "<20260401054901.3780435-1-peddolla.reddy@oss.qualcomm.com>", "MIME-Version": "1.0", "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNDAxMDA0OCBTYWx0ZWRfX0PXVdrHm1Nw0\n lEcrhKMIuveEavapHyJbcqwIV+Bn7w/NH95xPZzqwU0wvJRCP6+synpKMb9Kj/dsi8UjoRp4zMX\n 0PpohRGHA1srrdhII4MnQYQ3kUQijRO/ir6OSWmpKb9u/tLMCvaBUDyCyhhyH/6McG82F86AVUF\n zhizAR5Nq2fWweZBm9YZ543L+ZqAps4SFqTHxJEGCXmqGDTELEotJX4jCJPfvE4nKrIn+lmJULj\n PcDNIaKIjiwfpyJNyXZIQf2pbETyVPuuDq8QwTummXAVm3R1KE9NEKj6wZE7P8vo7iaF/gphOpd\n eyPOTY5v55LnL+uDKTGR5H4kVAJ+Xp8RtNzgD9D/Rj0j8vdTMADYE4ARerb4iip4uRJPGwtBtD6\n 2pajrYSskMPApSaEgsW4PLdx/2yY6upH5Y9TzZ7675meYwHllIwDGNccPM6SFlJHr3SOIUuNSUD\n nt3vSnxv4a1o24/l/bw==", "X-Proofpoint-GUID": "hVeeCwIHtCR-QkXBSDpn0XQqCYQhlIQ6", "X-Authority-Analysis": "v=2.4 cv=YsQChoYX c=1 sm=1 tr=0 ts=69ccb211 cx=c_pps\n a=JL+w9abYAAE89/QcEU+0QA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17\n a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10\n a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22\n a=EUspDBNiAAAA:8 a=ecPNSHiOCd9iSH9Hwy8A:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10\n a=324X-CrmTo6CU4MGRt3R:22", "X-Proofpoint-ORIG-GUID": "hVeeCwIHtCR-QkXBSDpn0XQqCYQhlIQ6", "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-01_02,2026-03-31_02,2025-10-01_01", "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n suspectscore=0 spamscore=0 bulkscore=0 clxscore=1015 impostorscore=0\n phishscore=0 lowpriorityscore=0 adultscore=0 priorityscore=1501\n malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc=\n route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001\n definitions=main-2604010048", "X-CRM114-Version": "20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ", "X-CRM114-CacheID": "sfid-20260331_225010_138842_92DE1658 ", "X-CRM114-Status": "GOOD ( 25.76 )", "X-Spam-Score": "0.2 (/)", "X-Spam-Report": "Spam detection software,\n running on the system \"bombadil.infradead.org\",\n has NOT identified this incoming email as spam. The original\n message has been attached to this so you can view it or label\n similar future email. If you have any questions, see\n the administrator of that system for details.\n Content preview: Add EDCA, NTB,\n and continuous ranging parameters to the single-peer\n pr_pasn_ranging_params structure. This enables comprehensive ranging\n configuration\n for proximity ranging operations. EDCA parameters: - burst_period,\n num_bursts_exp,\n ftms_per_burst - ftmr_retries, burst_duration\n Content analysis details: (0.2 points, 5.0 required)\n pts rule name description\n ---- ----------------------\n --------------------------------------------------\n -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low\n trust\n [205.220.168.131 listed in list.dnswl.org]\n 1.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to\n Validity was blocked. See\n https://knowledge.validity.com/hc/en-us/articles/20961730681243\n for more information.\n [205.220.168.131 listed in\n bl.score.senderscore.com]\n 1.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE: The\n query to Validity was blocked. See\n https://knowledge.validity.com/hc/en-us/articles/20961730681243\n for more information.\n [205.220.168.131 listed in\n sa-trusted.bondedsender.org]\n 1.0 RCVD_IN_VALIDITY_SAFE_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to\n Validity was blocked. See\n https://knowledge.validity.com/hc/en-us/articles/20961730681243\n for more information.\n [205.220.168.131 listed in\n sa-accredit.habeas.com]\n 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record\n -0.0 SPF_PASS SPF: sender matches SPF record\n 0.1 DKIM_SIGNED Message has a DKIM or DK signature,\n not necessarily valid\n -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from\n envelope-from domain\n -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from\n author's\n domain\n -0.1 DKIM_VALID Message has at least one valid DKIM or DK\n signature\n -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1%\n [score: 0.0000]", "X-BeenThere": "hostap@lists.infradead.org", "X-Mailman-Version": "2.1.34", "Precedence": "list", "List-Id": "<hostap.lists.infradead.org>", "List-Unsubscribe": "<http://lists.infradead.org/mailman/options/hostap>,\n <mailto:hostap-request@lists.infradead.org?subject=unsubscribe>", "List-Archive": "<http://lists.infradead.org/pipermail/hostap/>", "List-Post": "<mailto:hostap@lists.infradead.org>", "List-Help": "<mailto:hostap-request@lists.infradead.org?subject=help>", "List-Subscribe": "<http://lists.infradead.org/mailman/listinfo/hostap>,\n <mailto:hostap-request@lists.infradead.org?subject=subscribe>", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "base64", "Sender": "\"Hostap\" <hostap-bounces@lists.infradead.org>", "Errors-To": "hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org" }, "content": "Add EDCA, NTB, and continuous ranging parameters to the single-peer\npr_pasn_ranging_params structure. This enables comprehensive ranging\nconfiguration for proximity ranging operations.\n\nEDCA parameters:\n- burst_period, num_bursts_exp, ftms_per_burst\n- ftmr_retries, burst_duration\n\nNTB parameters:\n- min_time_between_measurements, max_time_between_measurements\n- availability_window, nominal_time, measurements_per_aw\n\nContinuous ranging and location parameters:\n- request_lci, request_civicloc\n- trigger_continuous_ranging\n- continuous_ranging_interval, continuous_ranging_session_time\n\nEnhanced wpas_pr_pasn_trigger() with debug logging for all parameter\ncategories to aid in debugging and verification of ranging operations.\n\nSigned-off-by: Peddolla Harshavardhan Reddy <peddolla.reddy@oss.qualcomm.com>\n---\n src/common/proximity_ranging.h | 78 +++++++++++++\n wpa_supplicant/pr_supplicant.c | 203 ++++++++++++++++++++++++++++++++-\n 2 files changed, 280 insertions(+), 1 deletion(-)", "diff": "diff --git a/src/common/proximity_ranging.h b/src/common/proximity_ranging.h\nindex b7e9da303..cd12aaa50 100644\n--- a/src/common/proximity_ranging.h\n+++ b/src/common/proximity_ranging.h\n@@ -275,6 +275,84 @@ struct pr_pasn_ranging_params {\n \tint freq;\n \tu8 src_addr[ETH_ALEN];\n \tenum pr_pasn_role pasn_role;\n+\n+\t/**\n+\t * EDCA based ranging specific parameters\n+\t *\n+\t * @burst_period: Burst period in units of 100 ms\n+\t * @num_bursts_exp: Number of bursts exponent\n+\t * @ftms_per_burst: Number of FTM frames per burst\n+\t * @ftmr_retries: Number of retries for FTM Request frame\n+\t * @burst_duration: Burst duration as defined in IEEE 2024 std\n+\t * Table 9-322—Burst Duration subfield encoding.\n+\t */\n+\tu16 burst_period;\n+\tu8 num_bursts_exp;\n+\tu8 ftms_per_burst;\n+\tu8 ftmr_retries;\n+\tu8 burst_duration;\n+\n+\t/**\n+\t * NTB ranging specific parameters\n+\t *\n+\t * @min_time_between_measurements: Minimum time between two consecutive\n+\t * range measurements in units of 100 micro seconds.\n+\t * @max_time_between_measurements: Maximum time between two consecutive\n+\t * range measurements in units of 10 milli seconds, to avoid FTM\n+\t * negotiation.\n+\t * @availability_window: Duration of the Availability Window (AW) in\n+\t * units of 1 millisecond (0-255 ms).\n+\t * @nominal_time: Nominal duration between adjacent Availability Windows\n+\t * in units of milliseconds.\n+\t * @measurements_per_aw: Number of measurement attempts per Availability\n+\t * Window.\n+\t */\n+\tu32 min_time_between_measurements;\n+\tu32 max_time_between_measurements;\n+\tu8 availability_window;\n+\tu32 nominal_time;\n+\tu8 measurements_per_aw;\n+\n+\t/**\n+\t * @request_lci: Whether to request LCI\n+\t * @request_civicloc: Whether to request civic location\n+\t */\n+\tbool request_lci;\n+\tbool request_civicloc;\n+\n+\t/**\n+\t * @lmr_feedback: Negotiate LMR feedback for NTB ranging.\n+\t * Only valid when NTB ranging type is set. Required for RSTA\n+\t * to report measurement results back to the initiator.\n+\t */\n+\tbool lmr_feedback;\n+\n+\t/**\n+\t * @ingress_threshold: Ingress range threshold in millimeters.\n+\t * Only valid when NL80211_PMSR_PEER_ATTR_PD_REQUEST is set.\n+\t * The kernel reports a measurement result when the device\n+\t * moves INTO this range.\n+\t */\n+\tu64 ingress_threshold;\n+\n+\t/**\n+\t * @egress_threshold: Egress range threshold in millimeters.\n+\t * Only valid when NL80211_PMSR_PEER_ATTR_PD_REQUEST is set.\n+\t * The kernel reports a measurement result when the device\n+\t * moves OUT OF this range.\n+\t */\n+\tu64 egress_threshold;\n+\n+\t/**\n+\t * @pr_suppress_results: Suppress ranging results for PD requests.\n+\t * Only valid when NL80211_PMSR_PEER_ATTR_PD_REQUEST is set.\n+\t * Cannot be used with range_report or lmr_feedback.\n+\t */\n+\tbool pr_suppress_results;\n+\n+\tu32 continuous_ranging_session_time;\n+\n+\tint forced_pr_freq;\n };\n \n struct pr_dev_ik {\ndiff --git a/wpa_supplicant/pr_supplicant.c b/wpa_supplicant/pr_supplicant.c\nindex f820a0466..2504a2030 100644\n--- a/wpa_supplicant/pr_supplicant.c\n+++ b/wpa_supplicant/pr_supplicant.c\n@@ -920,6 +920,136 @@ int wpas_pr_initiate_pasn_auth(struct wpa_supplicant *wpa_s,\n }\n \n \n+/**\n+ * wpas_pr_validate_ranging_request - Validate PR ranging request parameters\n+ * @wpa_s: Pointer to wpa_supplicant data\n+ * @pr_pasn_params: Pointer to PR PASN ranging parameters to validate\n+ * Returns: 0 on success, -1 on validation failure\n+ *\n+ * This function validates the ranging request against device capabilities,\n+ * driver support, and parameter compatibility before triggering PASN.\n+ */\n+static int wpas_pr_validate_ranging_request(struct wpa_supplicant *wpa_s,\n+\t\t\t\t\t struct pr_pasn_ranging_params *pr_pasn_params)\n+{\n+\tstruct pr_data *pr = wpa_s->global->pr;\n+\tstruct pr_config *cfg;\n+\tbool is_edca, is_ntb, is_ista;\n+\n+\tif (!pr || !pr->cfg) {\n+\t\twpa_printf(MSG_DEBUG, \"PR: PR not initialized\");\n+\t\treturn -1;\n+\t}\n+\n+\tcfg = pr->cfg;\n+\n+\t/* Peer address must not be all-zeros */\n+\tif (is_zero_ether_addr(pr_pasn_params->peer_addr)) {\n+\t\twpa_printf(MSG_DEBUG, \"PR: Invalid peer address (all zeros)\");\n+\t\treturn -1;\n+\t}\n+\n+\t/* Frequency must be set */\n+\tif (!pr_pasn_params->freq) {\n+\t\twpa_printf(MSG_DEBUG, \"PR: Invalid frequency (zero)\");\n+\t\treturn -1;\n+\t}\n+\n+\t/* ranging_type must have at least one valid bit and no unknown bits */\n+\tif (!pr_pasn_params->ranging_type ||\n+\t (pr_pasn_params->ranging_type &\n+\t ~(PR_EDCA_BASED_RANGING | PR_NTB_SECURE_LTF_BASED_RANGING |\n+\t PR_NTB_OPEN_BASED_RANGING))) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t \"PR: Invalid ranging_type=0x%x\",\n+\t\t\t pr_pasn_params->ranging_type);\n+\t\treturn -1;\n+\t}\n+\n+\t/* ranging_role must have at least one valid bit and no unknown bits */\n+\tif (!pr_pasn_params->ranging_role ||\n+\t (pr_pasn_params->ranging_role &\n+\t ~(PR_ISTA_SUPPORT | PR_RSTA_SUPPORT))) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t \"PR: Invalid ranging_role=0x%x\",\n+\t\t\t pr_pasn_params->ranging_role);\n+\t\treturn -1;\n+\t}\n+\n+\tis_edca = !!(pr_pasn_params->ranging_type & PR_EDCA_BASED_RANGING);\n+\tis_ntb = !!(pr_pasn_params->ranging_type &\n+\t\t (PR_NTB_SECURE_LTF_BASED_RANGING |\n+\t\t PR_NTB_OPEN_BASED_RANGING));\n+\tis_ista = !!(pr_pasn_params->ranging_role & PR_ISTA_SUPPORT);\n+\n+\t/* Validate ranging type against device capabilities */\n+\tif (is_edca) {\n+\t\tif (is_ista && !cfg->edca_ista_support) {\n+\t\t\twpa_printf(MSG_DEBUG,\n+\t\t\t\t \"PR: EDCA ISTA ranging not supported by device\");\n+\t\t\treturn -1;\n+\t\t}\n+\t\tif (!is_ista && !cfg->edca_rsta_support) {\n+\t\t\twpa_printf(MSG_DEBUG,\n+\t\t\t\t \"PR: EDCA RSTA ranging not supported by device\");\n+\t\t\treturn -1;\n+\t\t}\n+\t}\n+\n+\tif (is_ntb) {\n+\t\tif (is_ista && !cfg->ntb_ista_support) {\n+\t\t\twpa_printf(MSG_DEBUG,\n+\t\t\t\t \"PR: NTB ISTA ranging not supported by device\");\n+\t\t\treturn -1;\n+\t\t}\n+\t\tif (!is_ista && !cfg->ntb_rsta_support) {\n+\t\t\twpa_printf(MSG_DEBUG,\n+\t\t\t\t \"PR: NTB RSTA ranging not supported by device\");\n+\t\t\treturn -1;\n+\t\t}\n+\n+\t\t/* Secure LTF requires explicit device support */\n+\t\tif ((pr_pasn_params->ranging_type &\n+\t\t PR_NTB_SECURE_LTF_BASED_RANGING) &&\n+\t\t !cfg->secure_he_ltf) {\n+\t\t\twpa_printf(MSG_DEBUG,\n+\t\t\t\t \"PR: Secure HE-LTF NTB ranging not supported by device\");\n+\t\t\treturn -1;\n+\t\t}\n+\n+\t\t/* measurements_per_aw max value is 4 per spec */\n+\t\tif (pr_pasn_params->measurements_per_aw > 4) {\n+\t\t\twpa_printf(MSG_DEBUG,\n+\t\t\t\t \"PR: measurements_per_aw=%u exceeds max (4)\",\n+\t\t\t\t pr_pasn_params->measurements_per_aw);\n+\t\t\treturn -1;\n+\t\t}\n+\n+\t\t/* min must not exceed max time between measurements */\n+\t\tif (pr_pasn_params->min_time_between_measurements &&\n+\t\t pr_pasn_params->max_time_between_measurements &&\n+\t\t pr_pasn_params->min_time_between_measurements >\n+\t\t pr_pasn_params->max_time_between_measurements) {\n+\t\t\twpa_printf(MSG_DEBUG,\n+\t\t\t\t \"PR: min_time_between_measurements=%u > max=%u\",\n+\t\t\t\t pr_pasn_params->min_time_between_measurements,\n+\t\t\t\t pr_pasn_params->max_time_between_measurements);\n+\t\t\treturn -1;\n+\t\t}\n+\t}\n+\n+\t/* lmr_feedback is only valid for NTB ranging */\n+\tif (pr_pasn_params->lmr_feedback && !is_ntb) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t \"PR: lmr_feedback is only valid for NTB ranging\");\n+\t\treturn -1;\n+\t}\n+\n+\twpa_printf(MSG_DEBUG, \"PR: Ranging request validation successful\");\n+\treturn 0;\n+}\n+\n+\n /**\n * wpas_pr_pasn_trigger - Trigger PASN authentication for a single peer\n * @wpa_s: Pointer to wpa_supplicant data\n@@ -952,6 +1082,13 @@ void wpas_pr_pasn_trigger(struct wpa_supplicant *wpa_s,\n \t\treturn;\n \t}\n \n+\t/* VALIDATE REQUEST BEFORE PROCEEDING */\n+\tif (wpas_pr_validate_ranging_request(wpa_s, pr_pasn_params) < 0) {\n+\t\twpa_printf(MSG_DEBUG, \"PR PASN: Request validation failed\");\n+\t\tpr_pasn_params->pr_pasn_status = PASN_STATUS_FAILURE;\n+\t\treturn;\n+\t}\n+\n \tif (pr_pasn_params->action == PR_PASN_AND_RANGING) {\n \t\twpa_printf(MSG_DEBUG,\n \t\t\t \"PR PASN: Triggering PASN authentication for \" MACSTR\n@@ -983,12 +1120,76 @@ void wpas_pr_pasn_trigger(struct wpa_supplicant *wpa_s,\n \t\tos_memcpy(dst->src_addr, pr_pasn_params->src_addr, ETH_ALEN);\n \t\tdst->pasn_role = pr_pasn_params->pasn_role;\n \n+\t\t/* Copy EDCA parameters */\n+\t\tdst->burst_period = pr_pasn_params->burst_period;\n+\t\tdst->num_bursts_exp = pr_pasn_params->num_bursts_exp;\n+\t\tdst->ftms_per_burst = pr_pasn_params->ftms_per_burst;\n+\t\tdst->ftmr_retries = pr_pasn_params->ftmr_retries;\n+\t\tdst->burst_duration = pr_pasn_params->burst_duration;\n+\n+\t\t/* Copy NTB parameters */\n+\t\tdst->min_time_between_measurements =\n+\t\t\tpr_pasn_params->min_time_between_measurements;\n+\t\tdst->max_time_between_measurements =\n+\t\t\tpr_pasn_params->max_time_between_measurements;\n+\t\tdst->availability_window = pr_pasn_params->availability_window;\n+\t\tdst->nominal_time = pr_pasn_params->nominal_time;\n+\t\tdst->measurements_per_aw = pr_pasn_params->measurements_per_aw;\n+\n+\t\t/* Copy continuous ranging and location parameters */\n+\t\tdst->request_lci = pr_pasn_params->request_lci;\n+\t\tdst->request_civicloc = pr_pasn_params->request_civicloc;\n+\t\tdst->continuous_ranging_session_time =\n+\t\t\tpr_pasn_params->continuous_ranging_session_time;\n+\n+\t\t/* Copy PD-specific parameters */\n+\t\tdst->lmr_feedback = pr_pasn_params->lmr_feedback;\n+\t\tdst->ingress_threshold = pr_pasn_params->ingress_threshold;\n+\t\tdst->egress_threshold = pr_pasn_params->egress_threshold;\n+\t\tdst->pr_suppress_results = pr_pasn_params->pr_suppress_results;\n+\t\tdst->forced_pr_freq = pr_pasn_params->forced_pr_freq;\n+\n+\t\t/* Log EDCA parameters if applicable */\n+\t\tif (pr_pasn_params->ranging_type & PR_EDCA_BASED_RANGING) {\n+\t\t\twpa_printf(MSG_DEBUG,\n+\t\t\t\t \"PR PASN: EDCA params - burst_period=%u num_bursts_exp=%u \"\n+\t\t\t\t \"ftms_per_burst=%u ftmr_retries=%u burst_duration=%u\",\n+\t\t\t\t pr_pasn_params->burst_period,\n+\t\t\t\t pr_pasn_params->num_bursts_exp,\n+\t\t\t\t pr_pasn_params->ftms_per_burst,\n+\t\t\t\t pr_pasn_params->ftmr_retries,\n+\t\t\t\t pr_pasn_params->burst_duration);\n+\t\t}\n+\n+\t\t/* Log NTB parameters if applicable */\n+\t\tif (pr_pasn_params->ranging_type & (PR_NTB_SECURE_LTF_BASED_RANGING |\n+\t\t\t\t\t\t PR_NTB_OPEN_BASED_RANGING)) {\n+\t\t\twpa_printf(MSG_DEBUG,\n+\t\t\t\t \"PR PASN: NTB params - min_time=%u max_time=%u \"\n+\t\t\t\t \"aw=%u nominal_time=%u meas_per_aw=%u\",\n+\t\t\t\t pr_pasn_params->min_time_between_measurements,\n+\t\t\t\t pr_pasn_params->max_time_between_measurements,\n+\t\t\t\t pr_pasn_params->availability_window,\n+\t\t\t\t pr_pasn_params->nominal_time,\n+\t\t\t\t pr_pasn_params->measurements_per_aw);\n+\t\t}\n+\n+\t\t/* Log location request parameters */\n+\t\tif (pr_pasn_params->request_lci ||\n+\t\t pr_pasn_params->request_civicloc) {\n+\t\t\twpa_printf(MSG_DEBUG,\n+\t\t\t\t \"PR PASN: Location requests - LCI=%d CivicLoc=%d\",\n+\t\t\t\t pr_pasn_params->request_lci,\n+\t\t\t\t pr_pasn_params->request_civicloc);\n+\t\t}\n+\n \t\t/* Initiate PASN authentication for the peer */\n \t\tif (wpas_pr_initiate_pasn_auth(wpa_s, pr_pasn_params->peer_addr,\n \t\t\t\t\t pr_pasn_params->freq,\n \t\t\t\t\t pr_pasn_params->auth_mode,\n \t\t\t\t\t pr_pasn_params->ranging_role,\n-\t\t\t\t\t pr_pasn_params->ranging_type, 0,\n+\t\t\t\t\t pr_pasn_params->ranging_type,\n+\t\t\t\t\t dst->forced_pr_freq,\n \t\t\t\t\t pr_pasn_params->src_addr,\n \t\t\t\t\t pr_pasn_params->pasn_role)) {\n \t\t\twpa_printf(MSG_DEBUG,\n", "prefixes": [ "RFC", "18/23" ] }