get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.0/patches/2198441/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2198441,
    "url": "http://patchwork.ozlabs.org/api/1.0/patches/2198441/?format=api",
    "project": {
        "id": 22,
        "url": "http://patchwork.ozlabs.org/api/1.0/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": ""
    },
    "msgid": "<20260219202514.5781-54-andrei.otcheretianski@intel.com>",
    "date": "2026-02-19T20:25:09",
    "name": "[53/58] NAN: Support parsing peer device capability extension attribute",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "eea1f30e32aeb815ee94d4347542eb649c822a83",
    "submitter": {
        "id": 62065,
        "url": "http://patchwork.ozlabs.org/api/1.0/people/62065/?format=api",
        "name": "Andrei Otcheretianski",
        "email": "andrei.otcheretianski@intel.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/hostap/patch/20260219202514.5781-54-andrei.otcheretianski@intel.com/mbox/",
    "series": [
        {
            "id": 492721,
            "url": "http://patchwork.ozlabs.org/api/1.0/series/492721/?format=api",
            "date": "2026-02-19T20:24:21",
            "name": "NAN: Add NAN Data Path (NDP) support",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/492721/mbox/"
        }
    ],
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2198441/checks/",
    "tags": {},
    "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=BXmbOVvG;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n secure) header.d=infradead.org header.i=@infradead.org header.a=rsa-sha256\n header.s=desiato.20200630 header.b=Bl9ehnda;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=AcuFcoU0;\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 4fH4jb4bBSz1xpY\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 20 Feb 2026 07:29:23 +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 1vtAds-0000000C04h-3lAZ;\n\tThu, 19 Feb 2026 20:28:56 +0000",
            "from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05])\n\tby bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1vtAdF-0000000BzBo-3Sud\n\tfor hostap@bombadil.infradead.org;\n\tThu, 19 Feb 2026 20:28:18 +0000",
            "from mgamail.intel.com ([198.175.65.18])\n\tby desiato.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1vtAd4-00000001qHa-3jlr\n\tfor hostap@lists.infradead.org;\n\tThu, 19 Feb 2026 20:28:11 +0000",
            "from orviesa004.jf.intel.com ([10.64.159.144])\n  by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 19 Feb 2026 12:28:02 -0800",
            "from aotchere-mobl1.ger.corp.intel.com (HELO\n aotchere-mobl1.intel.com) ([10.245.246.171])\n  by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 19 Feb 2026 12:27:58 -0800"
        ],
        "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=ntBTz8hNJKxXue040aiZ8WSUWEomoUSxMkMQIwjl764=; b=BXmbOVvGuIzypF\n\tQ9oqDPylsPxmLPvJ6NlR7/S3sgEumdJM2hn69DLx9SAB3Bc9eglrdLXoqEB5CbQ3VcyEJMD8tR0PH\n\t+X5DUeVsxnLUfRQp8PTKqeNYPFLTqrMM6NAKux5QiBpysZMtfZq+1WULSDznx/0BYUmb2sN3kum8x\n\tuwQySiYxjxXsP4brgikFGY5NIm4pdnSLxUvb/2UPU/wCLrrRvYJg1T9wVBOA2ogToluFnKbR6Xl5X\n\t6RJE7kqB55nEMU3PsfcBRLrSin9CiQFO7wsBCEwG4OrcUEcMalOu8Jc8o0+XZ5JDLEDuAqGeRC6iZ\n\tfxLzwcfbWJfF4y7QgAWg==;",
            "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:MIME-Version\n\t:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:\n\tContent-Type:Content-ID:Content-Description;\n\tbh=8BkSrIRRk4VU2pG3OV7ALPS1+OM81IXqtbUnobWF0Hg=; b=Bl9ehnda4jmtKqSBB69WXSdFmg\n\tH7PDZ5yYReuSy8/cMT/KIJ6TJK/DgcP41bUr4xcLWoM2Ry2+dO89/JlgaEKVTKK/11MQR4T9gICUE\n\tIvH8yZc7jo0QTA1+RAaTHyf2M68DQJ7VFAA4SBUxXGvgreTB2UP92KNy2EsQlCpYgEuElhnpwV/WW\n\t1peA2DLfW047zbxDncHp82fpGfnaluAffojbUYaMSXVwmIUinYMj4xSKFfG9q+nTsUl5e5D1P4hn5\n\t2RMkjzdBUH9mOd4/9tihklB5q61PEv0c3raKg6hjYrvkICQBxH81HzMw/FK8dEAJzmdWI766NAlPR\n\tyqU36pTQ==;",
            "v=1; a=rsa-sha256; c=relaxed/simple;\n  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n  t=1771532888; x=1803068888;\n  h=from:to:cc:subject:date:message-id:in-reply-to:\n   references:mime-version:content-transfer-encoding;\n  bh=IJAO+NeOQKYtNLuN37eLEHas5q4iqF//7eGhldZNn3w=;\n  b=AcuFcoU0qXgX6vkkSsZJUQIHeLNdYbwx2nBYFWND+2WnDoX9P3EJIcwW\n   CcTl4R3me3QJWdBhOSFIZIUqvWh/Y9pb7mA+4W8kh4LkPBw+TTYcnwrQT\n   hW07nfM9BkdlNh5u0bXO5bsHYR6YuARLhrOz8IyvBTcInysPoeobTfRjf\n   YcvymL4Mv37ZvbI/bqvxED33GlfCp39GyQinaAKqTLvUXsuD8oYu+xSLw\n   A50+LNug150nMCPeC0P7SLnTSwPS4fdgQaAZvdDu+7s70mn0mT9NgQVCD\n   nZ8HcSl8k7Avs4RNvjxBssaPXMQpU+TolGkPAAqoZerRx+8jM/HYYi4kY\n   Q==;"
        ],
        "X-CSE-ConnectionGUID": [
            "fQySQjjpRa6JS1G0IWAygg==",
            "Lq5eo4yARNOT0QhqWINyNA=="
        ],
        "X-CSE-MsgGUID": [
            "fb8DqsDWSKywvM+lM7OQjA==",
            "M41U8UneR5andTqbx7usxw=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6800,10657,11706\"; a=\"72674086\"",
            "E=Sophos;i=\"6.21,300,1763452800\";\n   d=\"scan'208\";a=\"72674086\"",
            "E=Sophos;i=\"6.21,300,1763452800\";\n   d=\"scan'208\";a=\"219154120\""
        ],
        "X-ExtLoop1": "1",
        "From": "Andrei Otcheretianski <andrei.otcheretianski@intel.com>",
        "To": "hostap@lists.infradead.org,\n\tvamsin@qti.qualcomm.com,\n\tvganneva@qti.qualcomm.com,\n\tmaheshkkv@google.com",
        "Cc": "Ilan Peer <ilan.peer@intel.com>",
        "Subject": "[PATCH 53/58] NAN: Support parsing peer device capability extension\n attribute",
        "Date": "Thu, 19 Feb 2026 22:25:09 +0200",
        "Message-ID": "<20260219202514.5781-54-andrei.otcheretianski@intel.com>",
        "X-Mailer": "git-send-email 2.52.0",
        "In-Reply-To": "<20260219202514.5781-1-andrei.otcheretianski@intel.com>",
        "References": "<20260219202514.5781-1-andrei.otcheretianski@intel.com>",
        "MIME-Version": "1.0",
        "X-CRM114-Version": "20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ",
        "X-CRM114-CacheID": "sfid-20260219_202809_252842_1FD0C00E ",
        "X-CRM114-Status": "GOOD (  14.12  )",
        "X-Spam-Score": "-0.9 (/)",
        "X-Spam-Report": "Spam detection software,\n running on the system \"desiato.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: Ilan Peer <ilan.peer@intel.com> Store the peer's\n support\n    for pairing and NPK/NIK caching and add API to retrieve this information.\n    Signed-off-by: Ilan Peer <ilan.peer@intel.com> --- src/common/nan_defs.h\n   | 11 +++++++++++ src/nan/nan.c | 46\n +++++++++++++++++++++++++++++++++++++++++++\n    src/nan/nan.h | 2 ++ src/nan/nan_i.h | 7 ++++++ [...]\n Content analysis details:   (-0.9 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                             [198.175.65.18 listed in list.dnswl.org]\n -0.0 SPF_PASS               SPF: sender matches SPF record\n  0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record\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 -0.1 DKIM_VALID_EF          Message has a valid DKIM or DK signature from\n                             envelope-from domain\n  0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n not necessarily valid\n  0.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                             [198.175.65.18 listed in sa-accredit.habeas.com]\n  0.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                          [198.175.65.18 listed in\n sa-trusted.bondedsender.org]\n -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender\n  0.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                             [198.175.65.18 listed in\n bl.score.senderscore.com]",
        "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: Ilan Peer <ilan.peer@intel.com>\n\nStore the peer's support for pairing and NPK/NIK caching and\nadd API to retrieve this information.\n\nSigned-off-by: Ilan Peer <ilan.peer@intel.com>\n---\n src/common/nan_defs.h | 11 +++++++++++\n src/nan/nan.c         | 46 +++++++++++++++++++++++++++++++++++++++++++\n src/nan/nan.h         |  2 ++\n src/nan/nan_i.h       |  7 +++++++\n src/nan/nan_util.c    |  5 ++++-\n 5 files changed, 70 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/src/common/nan_defs.h b/src/common/nan_defs.h\nindex a5fa13ff7c..750c530135 100644\n--- a/src/common/nan_defs.h\n+++ b/src/common/nan_defs.h\n@@ -525,4 +525,15 @@ struct nan_shared_key {\n \tu8 key[0];\n } STRUCT_PACKED;\n \n+/* See Table 141 (Capability Info Field) */\n+#define NAN_DEV_CAPA_EXT_INFO_0_REG_VALID         BIT(0)\n+#define NAN_DEV_CAPA_EXT_INFO_0_INDOOR_AP         BIT(1)\n+#define NAN_DEV_CAPA_EXT_INFO_0_SP_AP             BIT(2)\n+#define NAN_DEV_CAPA_EXT_INFO_0_VLP               BIT(3)\n+#define NAN_DEV_CAPA_EXT_INFO_0_INDOOR_ENABLED_AP BIT(4)\n+#define NAN_DEV_CAPA_EXT_INFO_0_INDOOR_SP_AP      BIT(5)\n+\n+#define NAN_DEV_CAPA_EXT_INFO_1_PAIRING_SETUP     BIT(0)\n+#define NAN_DEV_CAPA_EXT_INFO_1_NPK_NIK_CACHING   BIT(1)\n+\n #endif /* NAN_DEFS_H */\ndiff --git a/src/nan/nan.c b/src/nan/nan.c\nindex 9d01309f4f..d0f1c6822a 100644\n--- a/src/nan/nan.c\n+++ b/src/nan/nan.c\n@@ -920,6 +920,20 @@ static void nan_parse_peer_elem_container(struct nan_data *nan,\n }\n \n \n+static void nan_parse_peer_dev_capa_ext(struct nan_data *nan,\n+\t\t\t\t\tstruct nan_peer *peer,\n+\t\t\t\t\tstruct nan_attrs *attrs)\n+{\n+\tif (!attrs->dev_capa_ext || attrs->dev_capa_ext_len <= 1)\n+\t\treturn;\n+\n+\tpeer->info.pairing_support = attrs->dev_capa_ext[1] &\n+\t\tNAN_DEV_CAPA_EXT_INFO_1_PAIRING_SETUP;\n+\tpeer->info.npk_nik_caching_support = attrs->dev_capa_ext[1] &\n+\t\tNAN_DEV_CAPA_EXT_INFO_1_NPK_NIK_CACHING;\n+}\n+\n+\n /*\n  * nan_parse_device_attrs - Parse device attributes and build availability info\n  *\n@@ -955,6 +969,7 @@ int nan_parse_device_attrs(struct nan_data *nan, struct nan_peer *peer,\n \tnan_merge_peer_info(&peer->info, &info);\n \tnan_parse_peer_device_capa(nan, peer, &attrs);\n \tnan_parse_peer_elem_container(nan, peer, &attrs);\n+\tnan_parse_peer_dev_capa_ext(nan, peer, &attrs);\n \n \tnan_peer_dump(nan, peer);\n \tret = 0;\n@@ -2089,3 +2104,34 @@ int nan_convert_sched_to_avail_attrs(struct nan_data *nan, u8 sequence_id,\n \t\t\t\t   NAN_AVAIL_ENTRY_CTRL_TYPE_COND,\n \t\t\t\t   n_chans, chans, buf);\n }\n+\n+\n+bool nan_peer_pairing_supported(struct nan_data *nan, const u8 *addr)\n+{\n+\tstruct nan_peer *peer;\n+\n+\tif (!nan)\n+\t\treturn false;\n+\n+\tpeer = nan_get_peer(nan, addr);\n+\tif (!peer)\n+\t\treturn false;\n+\n+\treturn peer->info.pairing_support;\n+}\n+\n+\n+bool nan_peer_npk_nik_caching_supported(struct nan_data *nan,\n+\t\t\t\t\tconst u8 *addr)\n+{\n+\tstruct nan_peer *peer;\n+\n+\tif (!nan)\n+\t\treturn false;\n+\n+\tpeer = nan_get_peer(nan, addr);\n+\tif (!peer)\n+\t\treturn false;\n+\n+\treturn peer->info.npk_nik_caching_support;\n+}\ndiff --git a/src/nan/nan.h b/src/nan/nan.h\nindex 3d383378cc..73ecaa13bb 100644\n--- a/src/nan/nan.h\n+++ b/src/nan/nan.h\n@@ -538,4 +538,6 @@ int nan_convert_sched_to_avail_attrs(struct nan_data *nan, u8 sequence_id,\n \t\t\t\t     size_t n_chans,\n \t\t\t\t     struct nan_chan_schedule *chans,\n \t\t\t\t     struct wpabuf *buf);\n+bool nan_peer_pairing_supported(struct nan_data *nan, const u8 *addr);\n+bool nan_peer_npk_nik_caching_supported(struct nan_data *nan, const u8 *addr);\n #endif /* NAN_H */\ndiff --git a/src/nan/nan_i.h b/src/nan/nan_i.h\nindex a53d3ac1dc..7de3500d0f 100644\n--- a/src/nan/nan_i.h\n+++ b/src/nan/nan_i.h\n@@ -303,6 +303,8 @@ struct nan_peer_sec_info_entry {\n  * @dev_capa: List of device capabilities of the peer.\n  * @element_container: List of element container entries of the peer.\n  * @sec: List of security information entries of the peer.\n+ * @pairing_support: Indicates if the peer supports pairing.\n+ * @npk_nik_caching_support: Indicates if the peer supports NPK/NIK caching.\n  */\n struct nan_peer_info {\n \tstruct os_reltime last_seen;\n@@ -311,6 +313,9 @@ struct nan_peer_info {\n \tstruct dl_list dev_capa;\n \tstruct dl_list element_container;\n \tstruct dl_list sec;\n+\n+\tbool pairing_support;\n+\tbool npk_nik_caching_support;\n };\n \n /**\n@@ -460,6 +465,7 @@ struct nan_attrs {\n \tconst u8 *cipher_suite_info;\n \tconst u8 *sec_ctxt_info;\n \tconst u8 *shared_key_desc;\n+\tconst u8 *dev_capa_ext;\n \n \tu16 ndp_len;\n \tu16 ndl_len;\n@@ -467,6 +473,7 @@ struct nan_attrs {\n \tu16 cipher_suite_info_len;\n \tu16 sec_ctxt_info_len;\n \tu16 shared_key_desc_len;\n+\tu16 dev_capa_ext_len;\n };\n \n struct nan_msg {\ndiff --git a/src/nan/nan_util.c b/src/nan/nan_util.c\nindex 5d8447a2a8..70015474e5 100644\n--- a/src/nan/nan_util.c\n+++ b/src/nan/nan_util.c\n@@ -192,6 +192,10 @@ int nan_parse_attrs(struct nan_data *nan, const u8 *data, size_t len,\n \t\t\tattrs->shared_key_desc = pos;\n \t\t\tattrs->shared_key_desc_len = attr_len;\n \t\t\tbreak;\n+\t\tcase NAN_ATTR_DCEA:\n+\t\t\tattrs->dev_capa_ext = pos;\n+\t\t\tattrs->dev_capa_ext_len = attr_len;\n+\t\t\tbreak;\n \t\tcase NAN_ATTR_MASTER_INDICATION:\n \t\tcase NAN_ATTR_CLUSTER:\n \t\tcase NAN_ATTR_NAN_ATTR_SERVICE_ID_LIST:\n@@ -217,7 +221,6 @@ int nan_parse_attrs(struct nan_data *nan, const u8 *data, size_t len,\n \t\tcase NAN_ATTR_PUBLIC_AVAILABILITY:\n \t\tcase NAN_ATTR_SUBSC_SERVICE_ID_LIST:\n \t\tcase NAN_ATTR_NDP_EXT:\n-\t\tcase NAN_ATTR_DCEA:\n \t\tcase NAN_ATTR_NIRA:\n \t\tcase NAN_ATTR_BPBA:\n \t\tcase NAN_ATTR_S3:\n",
    "prefixes": [
        "53/58"
    ]
}