Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2218586/?format=api
{ "id": 2218586, "url": "http://patchwork.ozlabs.org/api/patches/2218586/?format=api", "web_url": "http://patchwork.ozlabs.org/project/hostap/patch/20260401052713.3761478-23-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": "<20260401052713.3761478-23-peddolla.reddy@oss.qualcomm.com>", "list_archive_url": null, "date": "2026-04-01T05:27:12", "name": "[RFC,22/23] nl80211: Add dedicated ranging handle for peer measurements", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "d10e02c7f7160644f06184b7954fecd49964c29c", "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/20260401052713.3761478-23-peddolla.reddy@oss.qualcomm.com/mbox/", "series": [ { "id": 498338, "url": "http://patchwork.ozlabs.org/api/series/498338/?format=api", "web_url": "http://patchwork.ozlabs.org/project/hostap/list/?series=498338", "date": "2026-04-01T05:26:59", "name": "[RFC,01/23] nl80211_copy.h changes related to Proximity Ranging", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/498338/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2218586/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2218586/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=0vh1NYNs;\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=gktuqoJj;\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=Xz35ata/;\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 4fm6KQ0Jfxz1xtJ\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 02 Apr 2026 01:08:42 +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 1w7wEm-0000000FNtq-12VF;\n\tWed, 01 Apr 2026 14:08:04 +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 1w7o8F-0000000DzvC-2yFR\n\tfor hostap@lists.infradead.org;\n\tWed, 01 Apr 2026 05:28:48 +0000", "from pps.filterd (m0279863.ppops.net [127.0.0.1])\n\tby mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 631166fZ3103832\n\tfor <hostap@lists.infradead.org>; Wed, 1 Apr 2026 05:28:47 GMT", "from mail-pf1-f198.google.com (mail-pf1-f198.google.com\n [209.85.210.198])\n\tby mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d8js22mu8-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:28:47 +0000 (GMT)", "by mail-pf1-f198.google.com with SMTP id\n d2e1a72fcca58-82c675116f1so12387928b3a.2\n for <hostap@lists.infradead.org>;\n Tue, 31 Mar 2026 22:28:47 -0700 (PDT)", "from hu-peddolla-hyd.qualcomm.com ([202.46.23.25])\n by smtp.gmail.com with ESMTPSA id\n d2e1a72fcca58-82ca843e1desm15021223b3a.4.2026.03.31.22.28.44\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Tue, 31 Mar 2026 22:28:45 -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=vHDuJ7je9lrJmZ371n4Th+RgS6EoIaJX7YZjpjRTuYw=; b=0vh1NYNsZPvZdJ\n\tldjKqlNuoFpImWkBJUWC46krJA7Wmn5XYLLmkKwVThBc+H31w7Al50kyd64wkOYGXPM+MHTFnfRRh\n\tyYYeY2r1CblJRJGCRMJhTmEEZOpaKRuhNZuRQCgjqj5PZlfJXKVRqmkeCFUvoO/ENfg1CPfby+ED0\n\t202EtbdawzXAfjVfj/uXFGoG2Lu89qkdDtuQQUXX1uwo0pe8f4h9BJEgSybSL53WiUfHyy17JdXJX\n\t+I98F0GDzNI8cVR9J6c5S+QIGbWgNDv3yFJFjpLTBrr0hXm5xem/gPFLuPi8aE4HvcyE4MF+Wc42C\n\tbcLJCSO3273/9JoryFMA==;", "v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n\tcc:content-transfer-encoding:date:from:in-reply-to:message-id\n\t:mime-version:references:subject:to; s=qcppdkim1; bh=RRhx8zyP0GH\n\tjeWPhiAbq1QLNfCbG+GlGQO9vujepXec=; b=gktuqoJjt03V02W+sqoK9yms88g\n\tV2egauIv2gRUVGsSpFKMQVZ+VFteN2iP3TyDgNuWu7WfvhQeXI1dMyAmHKQboOBy\n\txGv61TfhC4lDQmtImPpBKMZRUdzGr8+lYpT9cZxM0ZCKX8Y2pgAL2xS3jRV9/gch\n\tuaayooffC9FC1sPyF14IJKpxNbnwOv39E7KmavJ156FDR7CjEgqHK0Zi17FYqyxX\n\tODCyN1NDII+oLr3kd7El+SFCXBou/jG9DkQO8AOgal6AWOVuqIPAKx7HiEfxswXE\n\tP5Xzv3VLqRiJ2P2aqH2VKggpw7e8PuatmglhsoKp7PHQnXvju7oUV2nni5w==", "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1775021326; x=1775626126;\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=RRhx8zyP0GHjeWPhiAbq1QLNfCbG+GlGQO9vujepXec=;\n b=Xz35ata/IAb7/8xyqFNEzVUAYc6DOEzbkINa8nSWPc9n+H8iPtcHDJgNB3e+S+wL8e\n 9skSIs0eNXvjXXSqhoyWeKFOQ3JF/dfL6FIlMC70/lQDwwywiKYXyOrRujF3P8X+hFba\n iVCen/ylxajcF69xDqH2Cw5UBIVpXMBoYj/pfSdVdYH1Lhzxd04QWS2M1Z6oESXJNb5a\n 6Fc485lYijKAoqNF0CvQHDANcM/w+TghN+W+h0ebD6IuiK/bhkR8nmrznBkBahUbv5+O\n tByIY4riCf3yPM3Hl6036HuYpzYvSkkcFx564phsuQutQ/J8p1FXEKcEuKHg5lygEspT\n 9DYg==" ], "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775021326; x=1775626126;\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=RRhx8zyP0GHjeWPhiAbq1QLNfCbG+GlGQO9vujepXec=;\n b=kNMKR/W9h5TTRl7Wja/U+Qy6SVL1hb20LaOu5aBHV6UoR6SsMIVu/33Ajh/tWN4rkl\n qiQCJ6Qm9ruX2wNg/SZBxsvkon++Adv4w3nUj//epT4PTK7TvtCmn6vSwsB2kOsMyfrB\n y8MErbM8bcLRxGxEkvydyF+f1rKGwLylEgUcdO5y1Qr+/6VW9OFSKy5SowyxApbsYnmi\n mhyJGid6V+ecjMP1NCyT33xCXoXz8MkECJ0Oi4XzPmOukR/8UZTFVDWtEvF8Rusm8ryo\n 4t0yGlCuaiaJzhl4yksIKTl0M2y0t3rdxSat6oXpO1Fx4kwNoOpO5o8qn/W78XW0j+S3\n gJzg==", "X-Gm-Message-State": "AOJu0YyX/lf8SUrsOGJFYHLl9KNWibC0t905jw8I6/HOVV5wD5xEDuSk\n\tuINJidUVIMup+KqKuHHAeCwASu1dWAILWOL1gMOUIhPMcj4wQULiPWH0RluYx55HSPF8a5ssGoF\n\t0sTdDn2RhUIOsxDDZzT1ayQrejydywonZ6vm/ROz4qXnJ8w+slg6Fi/rCgDLocZUm5ULpvkk=", "X-Gm-Gg": "ATEYQzxHpurjYOCbhWKePHvUxtuQ15zu6G+06gm2pxwm2Dc26GdYJ+JkplwCmhA8HkM\n\tJt0DHbCfF0vopHBPkWFR031IOvayxJKLyUCCdC7nuy5IqIbxbdCcUKJEHHMSasYSDbfFNAqAqpy\n\taim3Z/1wSWgomqTI7XIZw4gX1v04eXvin3R6M118WEB00FTQJixj5N95r6/t8A51BFd6Vhknouc\n\thLuBt2EBiV48KIbPYTwRwQ/RFx0kc8fTl9Mn5ie7CtisVRdykJbvywHcC7JcbEvBw4Qr3gTC0u2\n\ttkPh7WIZIuYOrBp41dHl3QpX09XZKxHeKB3srZU9Y2WfFBuZcxEGLp+2f222fTpSLgxcHV5LaRn\n\tf3Ap2hPUPCXSLyVSJrjo6WosKM8/f4lRQnNPb8GuVt8/1+34S/ykegHw=", "X-Received": [ "by 2002:a05:6a00:3318:b0:827:370b:2695 with SMTP id\n d2e1a72fcca58-82ce8991cd1mr2540331b3a.29.1775021326460;\n Tue, 31 Mar 2026 22:28:46 -0700 (PDT)", "by 2002:a05:6a00:3318:b0:827:370b:2695 with SMTP id\n d2e1a72fcca58-82ce8991cd1mr2540308b3a.29.1775021325870;\n Tue, 31 Mar 2026 22:28:45 -0700 (PDT)" ], "From": "Peddolla Harshavardhan Reddy <peddolla.reddy@oss.qualcomm.com>", "To": "hostap@lists.infradead.org", "Cc": "vjakkam@qti.qualcomm.com", "Subject": "[RFC PATCH 22/23] nl80211: Add dedicated ranging handle for peer\n measurements", "Date": "Wed, 1 Apr 2026 10:57:12 +0530", "Message-Id": "<20260401052713.3761478-23-peddolla.reddy@oss.qualcomm.com>", "X-Mailer": "git-send-email 2.34.1", "In-Reply-To": "<20260401052713.3761478-1-peddolla.reddy@oss.qualcomm.com>", "References": "<20260401052713.3761478-1-peddolla.reddy@oss.qualcomm.com>", "MIME-Version": "1.0", "X-Proofpoint-ORIG-GUID": "RjYZz-FolaZ1iUg22VBueinLi8S3O_1V", "X-Authority-Analysis": "v=2.4 cv=XfqEDY55 c=1 sm=1 tr=0 ts=69ccad0f cx=c_pps\n a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17\n a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22\n a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8\n a=Ata8lCslr-7Ja9tBJa8A:9 a=IoOABgeZipijB_acs4fv:22", "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNDAxMDA0NCBTYWx0ZWRfX0XAM2hKgtLrn\n FmAwlZJOlWosr5m7E3KKLdcx6SniMxetsCf1MSc422P48CYbnA0zOOH/pkT2NfI6Bz/9JFIHerE\n DkSTo+9SYOzKn+pkN0zpDIAXkQKjJGhWwYU/y5rFEYa8POwbt+nx1ad11fA+ZKOGF+SAi+MHc6P\n hhnhgMTq0+A/99ybVUl8WVN2bX5qRzEXALZZoxBG5a0SbUhnW57QABik7oWnyjQrjDe22P416Uh\n orjL+7nW/9j+7xs3EU5AG2NFh4Lqap41H5gYsy5BOzw9ew+NkW4+o7h4THee5FSx+tL4IJ1N0IJ\n ykSK+aAANb1IeL8p9T1wIWo59GHk+Vyot57ZbGxIQ5r/emsU0mYYD883a9JRAnpYcDXffLPb07B\n g6heU8x42JwEpcPRe/9E5nmjUywl5jNxD2gcmioROM/sHXol0thjPwPwOtwXIZ9NOibWgG+f4v0\n lwh/H3qXa4+i/dYrEhQ==", "X-Proofpoint-GUID": "RjYZz-FolaZ1iUg22VBueinLi8S3O_1V", "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 spamscore=0 adultscore=0 priorityscore=1501 impostorscore=0\n lowpriorityscore=0 phishscore=0 suspectscore=0 clxscore=1015 bulkscore=0\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-2604010044", "X-CRM114-Version": "20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ", "X-CRM114-CacheID": "sfid-20260331_222847_754582_B1307339 ", "X-CRM114-Status": "GOOD ( 27.08 )", "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: From: Veerendranath Jakkam <vjakkam@qti.qualcomm.com>\n Introduce\n a driver-agnostic ranging handle for PR/PD peer measurements and plumb it\n through the nl80211 driver and wpa_supplicant: - Extend\n wpa_driver_ops::start_peer_measurement()\n to take a driver-specific ranging handle (socket) and update the nl80211\n implementation to use it when issuing NL80211_CMD_PEER_MEASUREMENT_START.\n - A [...]\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-Mailman-Approved-At": "Wed, 01 Apr 2026 07:07:49 -0700", "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=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Sender": "\"Hostap\" <hostap-bounces@lists.infradead.org>", "Errors-To": "hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org" }, "content": "From: Veerendranath Jakkam <vjakkam@qti.qualcomm.com>\n\nIntroduce a driver-agnostic ranging handle for PR/PD peer measurements and\nplumb it through the nl80211 driver and wpa_supplicant:\n\n- Extend wpa_driver_ops::start_peer_measurement() to take a driver-specific\n ranging handle (socket) and update the nl80211 implementation to use it\n when issuing NL80211_CMD_PEER_MEASUREMENT_START.\n- Add new driver ops:\n - create_ranging_handle()\n - destroy_ranging_handle()\n - register_ranging_eloop()\n and implement them for nl80211 using a dedicated nl_sock.\n- Use nl80211_cmd_msg() instead of nl80211_bss_msg() for\n NL80211_CMD_PEER_MEASUREMENT_START to support PD interfaces which are\n non-netdev (ifindex = 0, use wdev-based addressing).\n- Register the ranging socket with eloop so that\n NL80211_CMD_PEER_MEASUREMENT_RESULT events are delivered to the existing\n nl80211 event handler, and ensure proper unregister/free on destroy.\n\nThis separates ranging traffic from the main nl80211 control socket, ensures\ncorrect handling for PD interfaces, and provides a clean lifecycle for the\nranging socket via the new driver callbacks.\n\nSigned-off-by: Veerendranath Jakkam <vjakkam@qti.qualcomm.com>\n---\n src/drivers/driver.h | 37 +++++++++++++++++-\n src/drivers/driver_nl80211.c | 70 +++++++++++++++++++++++++++++++++-\n src/drivers/driver_nl80211.h | 6 +++\n wpa_supplicant/driver_i.h | 29 +++++++++++++-\n wpa_supplicant/pr_supplicant.c | 2 +-\n 5 files changed, 138 insertions(+), 6 deletions(-)", "diff": "diff --git a/src/drivers/driver.h b/src/drivers/driver.h\nindex 8ccc0d6f0..786f52fa8 100644\n--- a/src/drivers/driver.h\n+++ b/src/drivers/driver.h\n@@ -5677,7 +5677,42 @@ struct wpa_driver_ops {\n \t */\n \tint (*start_peer_measurement)(void *priv, const u8 *peer_addr,\n \t\t\t\t int freq, u8 channel, int bw,\n-\t\t\t\t struct pr_pasn_ranging_params *params);\n+\t\t\t\t struct pr_pasn_ranging_params *params,\n+\t\t\t\t void *ranging_sock);\n+\n+\t/**\n+\t * create_ranging_handle - Create a driver-specific ranging socket handle\n+\t * @priv: Private driver interface data\n+\t * Returns: Opaque pointer to the ranging handle, or %NULL on failure\n+\t *\n+\t * Allocates and initialises a driver-specific socket/handle that will\n+\t * be used to send NL80211_CMD_PEER_MEASUREMENT_START and to receive\n+\t * NL80211_CMD_PEER_MEASUREMENT_RESULT events. The returned pointer is\n+\t * treated as opaque by the core; it must be freed with\n+\t * destroy_ranging_handle().\n+\t */\n+\tvoid * (*create_ranging_handle)(void *priv);\n+\n+\t/**\n+\t * destroy_ranging_handle - Destroy a ranging socket handle\n+\t * @priv: Private driver interface data\n+\t * @handle: Pointer to the ranging handle pointer (set to %NULL on return)\n+\t *\n+\t * Unregisters the handle from eloop (if registered) and frees all\n+\t * resources associated with it.\n+\t */\n+\tvoid (*destroy_ranging_handle)(void *priv, void **handle);\n+\n+\t/**\n+\t * register_ranging_eloop - Register ranging handle with eloop\n+\t * @priv: Private driver interface data\n+\t * @handle: Pointer to the ranging handle pointer\n+\t *\n+\t * Registers the ranging socket with the event loop so that\n+\t * NL80211_CMD_PEER_MEASUREMENT_RESULT events are delivered to the\n+\t * driver event handler.\n+\t */\n+\tvoid (*register_ranging_eloop)(void *priv, void **handle);\n #endif /* CONFIG_PR */\n \n #ifdef CONFIG_NAN\ndiff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c\nindex 370701aa5..19ce3d007 100644\n--- a/src/drivers/driver_nl80211.c\n+++ b/src/drivers/driver_nl80211.c\n@@ -9113,6 +9113,68 @@ static int i802_sta_disassoc(void *priv, const u8 *own_addr, const u8 *addr,\n \n #ifdef CONFIG_PR\n \n+struct nl_sock * nl80211_create_pr_ranging_handle(struct nl80211_global *global)\n+{\n+\treturn nl_create_handle(global->nl_cb, \"pr_ranging\");\n+}\n+\n+\n+void nl80211_destroy_pr_ranging_handle(void **handle)\n+{\n+\tif (!handle || !*handle)\n+\t\treturn;\n+\t/*\n+\t * Unregister from eloop before destroying the socket. If the socket\n+\t * was never registered this is a safe no-op.\n+\t */\n+\teloop_unregister_read_sock(nl_socket_get_fd((struct nl_sock *)*handle));\n+\tnl_destroy_handles((struct nl_sock **) handle);\n+}\n+\n+\n+/**\n+ * nl80211_register_pr_ranging_eloop - Register ranging socket with eloop\n+ * @global: nl80211 global state\n+ * @ranging_sock: Pointer to the ranging socket handle (void **)\n+ *\n+ * After NL80211_CMD_PEER_MEASUREMENT_START is sent on the ranging socket,\n+ * the kernel delivers NL80211_CMD_PEER_MEASUREMENT_RESULT as an event on\n+ * that same socket. Register it with eloop (persist=1 so the handle\n+ * remains valid for potential abort commands) so those events are received.\n+ */\n+void nl80211_register_pr_ranging_eloop(struct nl80211_global *global,\n+\t\t\t\t void **ranging_sock)\n+{\n+\tnl80211_register_eloop_read((struct nl_sock **)ranging_sock,\n+\t\t\t\t wpa_driver_nl80211_event_receive,\n+\t\t\t\t global->nl_cb, 1);\n+}\n+\n+\n+/* Driver ops wrappers for ranging handle management */\n+\n+static void * nl80211_drv_create_ranging_handle(void *priv)\n+{\n+\tstruct i802_bss *bss = priv;\n+\n+\treturn nl80211_create_pr_ranging_handle(bss->drv->global);\n+}\n+\n+\n+static void nl80211_drv_destroy_ranging_handle(void *priv, void **handle)\n+{\n+\tnl80211_destroy_pr_ranging_handle(handle);\n+}\n+\n+\n+static void nl80211_drv_register_ranging_eloop(void *priv, void **handle)\n+{\n+\tstruct i802_bss *bss = priv;\n+\n+\tnl80211_register_pr_ranging_eloop(bss->drv->global, handle);\n+}\n+\n+\n static u8 get_pr_preamble(u8 ranging_type, u8 format_bw)\n {\n \t/* Determine preamble based on ranging type and format_bw */\n@@ -9156,7 +9218,8 @@ static u8 get_pr_preamble(u8 ranging_type, u8 format_bw)\n */\n static int nl80211_start_peer_measurement(void *priv, const u8 *peer_addr,\n \t\t\t\t\t int freq, u8 channel, int bw,\n-\t\t\t\t\t struct pr_pasn_ranging_params *params)\n+\t\t\t\t\t struct pr_pasn_ranging_params *params,\n+\t\t\t\t\t void *ranging_sock)\n {\n \tstruct i802_bss *bss = priv;\n \tstruct i802_bss *pd_bss;\n@@ -9387,7 +9450,7 @@ static int nl80211_start_peer_measurement(void *priv, const u8 *peer_addr,\n \tcookie = 0;\n \tos_memset(&ack_arg, 0, sizeof(struct nl80211_ack_ext_arg));\n \tack_arg.ext_data = &cookie;\n-\tret = send_and_recv(drv, drv->global->nl, msg, NULL, NULL,\n+\tret = send_and_recv(drv, ranging_sock, msg, NULL, NULL,\n \t\t\t ack_handler_cookie, &ack_arg, NULL);\n \n \tif (ret < 0) {\n@@ -16185,5 +16248,8 @@ const struct wpa_driver_ops wpa_driver_nl80211_ops = {\n \t.pd_stop = nl80211_pd_stop,\n \t.get_pd_addr = nl80211_get_pd_addr,\n \t.start_peer_measurement = nl80211_start_peer_measurement,\n+\t.create_ranging_handle = nl80211_drv_create_ranging_handle,\n+\t.destroy_ranging_handle = nl80211_drv_destroy_ranging_handle,\n+\t.register_ranging_eloop = nl80211_drv_register_ranging_eloop,\n #endif /* CONFIG_PR */\n };\ndiff --git a/src/drivers/driver_nl80211.h b/src/drivers/driver_nl80211.h\nindex 1d1187f62..6136b0b45 100644\n--- a/src/drivers/driver_nl80211.h\n+++ b/src/drivers/driver_nl80211.h\n@@ -485,4 +485,10 @@ u32 get_nl80211_protocol_features(struct wpa_driver_nl80211_data *drv);\n \n int get_sta_mlo_interface_info(struct i802_bss *bss);\n \n+/* PR/PD ranging socket management */\n+struct nl_sock * nl80211_create_pr_ranging_handle(struct nl80211_global *global);\n+void nl80211_register_pr_ranging_eloop(struct nl80211_global *global,\n+\t\t\t\t void **ranging_sock);\n+void nl80211_destroy_pr_ranging_handle(void **handle);\n+\n #endif /* DRIVER_NL80211_H */\ndiff --git a/wpa_supplicant/driver_i.h b/wpa_supplicant/driver_i.h\nindex 3d1988fd3..f2e3ddfbf 100644\n--- a/wpa_supplicant/driver_i.h\n+++ b/wpa_supplicant/driver_i.h\n@@ -763,13 +763,38 @@ wpa_drv_pd_stop(struct wpa_supplicant *wpa_s)\n static inline int\n wpa_drv_start_peer_measurement(struct wpa_supplicant *wpa_s, const u8 *peer,\n \t\t\t int freq, u8 channel, int bw,\n-\t\t\t struct pr_pasn_ranging_params *params)\n+\t\t\t struct pr_pasn_ranging_params *params,\n+\t\t\t void *ranging_sock)\n {\n \tif (!wpa_s->driver->start_peer_measurement)\n \t\treturn -1;\n \treturn wpa_s->driver->start_peer_measurement(wpa_s->drv_priv, peer,\n \t\t\t\t\t\t freq, channel, bw,\n-\t\t\t\t\t\t params);\n+\t\t\t\t\t\t params, ranging_sock);\n+}\n+\n+static inline void *\n+wpa_drv_create_ranging_handle(struct wpa_supplicant *wpa_s)\n+{\n+\tif (!wpa_s->driver->create_ranging_handle)\n+\t\treturn NULL;\n+\treturn wpa_s->driver->create_ranging_handle(wpa_s->drv_priv);\n+}\n+\n+static inline void\n+wpa_drv_destroy_ranging_handle(struct wpa_supplicant *wpa_s, void **handle)\n+{\n+\tif (!wpa_s->driver->destroy_ranging_handle)\n+\t\treturn;\n+\twpa_s->driver->destroy_ranging_handle(wpa_s->drv_priv, handle);\n+}\n+\n+static inline void\n+wpa_drv_register_ranging_eloop(struct wpa_supplicant *wpa_s, void **handle)\n+{\n+\tif (!wpa_s->driver->register_ranging_eloop)\n+\t\treturn;\n+\twpa_s->driver->register_ranging_eloop(wpa_s->drv_priv, handle);\n }\n \n #endif /* CONFIG_PR */\ndiff --git a/wpa_supplicant/pr_supplicant.c b/wpa_supplicant/pr_supplicant.c\nindex 4ac092835..787fbc354 100644\n--- a/wpa_supplicant/pr_supplicant.c\n+++ b/wpa_supplicant/pr_supplicant.c\n@@ -465,7 +465,7 @@ static int wpas_pr_trigger_ranging(struct wpa_supplicant *wpa_s,\n \n \t/* Call driver operation to start peer measurement */\n \tif (wpa_drv_start_peer_measurement(wpa_s, peer_addr, freq, op_channel,\n-\t\t\t\t\t channel_width, params) < 0) {\n+\t\t\t\t\t channel_width, params, NULL) < 0) {\n \t\twpa_printf(MSG_ERROR, \"PR: Failed to start peer measurement\");\n \t\tgoto fail;\n \t}\n", "prefixes": [ "RFC", "22/23" ] }