get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2218853,
    "url": "http://patchwork.ozlabs.org/api/1.0/patches/2218853/?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": "<20260401220220.4418-65-andrei.otcheretianski@intel.com>",
    "date": "2026-04-01T22:02:13",
    "name": "[64/71] NAN: Extend transmit function to allow additional NAN attributes",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "ba4de0e882d1d29bdb3f9238b8fc326985285b51",
    "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/20260401220220.4418-65-andrei.otcheretianski@intel.com/mbox/",
    "series": [
        {
            "id": 498402,
            "url": "http://patchwork.ozlabs.org/api/1.0/series/498402/?format=api",
            "date": "2026-04-01T22:01:09",
            "name": "NAN Data Path and Bootstrapping support",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/498402/mbox/"
        }
    ],
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2218853/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=VEwMfjnv;\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=IurhdZ8b;\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 4fmK1c4h2vz1xtJ\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 02 Apr 2026 09:10:44 +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 1w83lJ-0000000GG0u-2VKl;\n\tWed, 01 Apr 2026 22:10:09 +0000",
            "from mgamail.intel.com ([198.175.65.20])\n\tby bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1w83i4-0000000G9s8-2GTP\n\tfor hostap@lists.infradead.org;\n\tWed, 01 Apr 2026 22:06:55 +0000",
            "from fmviesa003.fm.intel.com ([10.60.135.143])\n  by orvoesa112.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 01 Apr 2026 15:06:18 -0700",
            "from iapp347.iil.intel.com (HELO 87c02287900a.iil.intel.com)\n ([10.167.28.6])\n  by fmviesa003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 01 Apr 2026 15:06:17 -0700"
        ],
        "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:To:From:Reply-To:Cc:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=8WeRzE+uPdtYwFps8OMdwhJFUAbsICEzmeFvXVc3LfQ=; b=VEwMfjnvuqolEz\n\tb3UXsw7SO2iIkWGh1plvzgvNTtJk99h7ZqXlL185nDEeo7Exr3cxznAo44hJ5pDn5mfxnKwv0bzG/\n\tHrLt5xF3m7x52dlE6bguTmBHoDQ5+WmCDvuUijTbJL1pef/Fu5eWKH4iocsULEUBbJKJpj8ruuzFQ\n\tu55sCJpmqJ1PcK88RHVzuND91kkVvYWnqH2z5I/GV/mhmPm3q2wS+zde98SjJ6ZpZRGGJyynADU7/\n\tUO3v7HkqWiTTFCXpHHTcmz15hKQK2H54P2riUYENXHAgcWd2xvm/v9WbTdpjg1GFTCSxjdeHZPZto\n\tLooWlP4FJshvOUmvEjqw==;",
            "v=1; a=rsa-sha256; c=relaxed/simple;\n  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n  t=1775081208; x=1806617208;\n  h=from:to:subject:date:message-id:in-reply-to:references:\n   mime-version:content-transfer-encoding;\n  bh=WZuuaQkumS1V0rqvsIeMAJJ38b7elLg4W2PuJumWgUo=;\n  b=IurhdZ8bNgFqZmpDJ03VfmTN3TEjtDnaAEADId2k1oCbJORLxxLTu+Ij\n   bqpAd1Jb7oPE5eeGR5q7sXGmgfQ20BevL58sMYv2L7b3HRcyiKkdlZcrP\n   Yuf1hI3CHvXX1veE63rOSSwv+WgTuM09nlzhY1gukfkdgHg1qJiS/XLSz\n   jlvKDjI0G5YzsqE/6GwRwQmp+eNTVBBJhIILrTKggk4FKBRIzyEqmLvyj\n   SY+ikrYkZm9yEaETt8XpB5oedQ47Vj+K2K2p2+Gxglf3EwY+07N1TQC88\n   7/R+j1axeh+xmRccB2oyEvLY3/xYHoJnWqOyfEw+Gv0Z3FEnlLzPTS9yz\n   g==;"
        ],
        "X-CSE-ConnectionGUID": [
            "MvdtGsVuQEycM1oj5b7/1Q==",
            "qxuqgT7vSj2q3snwXZavNg=="
        ],
        "X-CSE-MsgGUID": [
            "6URkGIxsRdiIvo/RVHPXCQ==",
            "kPS6t5p2TFuyMWKQSIaSCA=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6800,10657,11746\"; a=\"75851678\"",
            "E=Sophos;i=\"6.23,153,1770624000\";\n   d=\"scan'208\";a=\"75851678\""
        ],
        "X-ExtLoop1": "1",
        "From": "Andrei Otcheretianski <andrei.otcheretianski@intel.com>",
        "To": "hostap@lists.infradead.org",
        "Subject": "[PATCH 64/71] NAN: Extend transmit function to allow additional NAN\n attributes",
        "Date": "Thu,  2 Apr 2026 01:02:13 +0300",
        "Message-ID": "<20260401220220.4418-65-andrei.otcheretianski@intel.com>",
        "X-Mailer": "git-send-email 2.53.0",
        "In-Reply-To": "<20260401220220.4418-1-andrei.otcheretianski@intel.com>",
        "References": "<20260401220220.4418-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-20260401_150648_708797_8AD139DD ",
        "X-CRM114-Status": "GOOD (  12.93  )",
        "X-Spam-Score": "-1.9 (-)",
        "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:  Transmit DE callback is used to send follow up SDF frames.\n    These frames can carry additional attributes which may be generated\n outside\n    of NAN DE module. Extend the API accordingly. Signed-off-by: Andrei\n Otcheretianski\n    <andrei.otcheretianski@intel.com> Signed-off-by: Ilan Peer\n <ilan.peer@intel.com>\n    --- src/ap/nan_usd_ap.c | 2 +- src/common/nan_de.c | 22\n ++++++++++++++++------\n    src [...]\n Content analysis details:   (-1.9 points, 5.0 required)\n  pts rule name              description\n ---- ----------------------\n --------------------------------------------------\n -2.3 RCVD_IN_DNSWL_MED      RBL: Sender listed at https://www.dnswl.org/,\n                             medium trust\n                             [198.175.65.20 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                             [198.175.65.20 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                          [198.175.65.20 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                             [198.175.65.20 listed in 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]\n -0.5 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender",
        "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": "Transmit DE callback is used to send follow up SDF frames. These frames\ncan carry additional attributes which may be generated outside of NAN\nDE module. Extend the API accordingly.\n\nSigned-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>\nSigned-off-by: Ilan Peer <ilan.peer@intel.com>\n---\n src/ap/nan_usd_ap.c             |  2 +-\n src/common/nan_de.c             | 22 ++++++++++++++++------\n src/common/nan_de.h             |  4 +++-\n wpa_supplicant/nan_supplicant.c |  2 +-\n 4 files changed, 21 insertions(+), 9 deletions(-)",
    "diff": "diff --git a/src/ap/nan_usd_ap.c b/src/ap/nan_usd_ap.c\nindex e862e9b31d..34f268d880 100644\n--- a/src/ap/nan_usd_ap.c\n+++ b/src/ap/nan_usd_ap.c\n@@ -279,5 +279,5 @@ int hostapd_nan_usd_transmit(struct hostapd_data *hapd, int handle,\n \tif (!hapd->nan_de)\n \t\treturn -1;\n \treturn nan_de_transmit(hapd->nan_de, handle, ssi, elems, peer_addr,\n-\t\t\t       req_instance_id);\n+\t\t\t       req_instance_id, NULL);\n }\ndiff --git a/src/common/nan_de.c b/src/common/nan_de.c\nindex 47e76cae69..35eb51c57a 100644\n--- a/src/common/nan_de.c\n+++ b/src/common/nan_de.c\n@@ -294,7 +294,8 @@ static void nan_de_tx_sdf(struct nan_de *de, struct nan_de_service *srv,\n \t\t\t  unsigned int wait_time,\n \t\t\t  enum nan_service_control_type type,\n \t\t\t  const u8 *dst, const u8 *a3, u8 req_instance_id,\n-\t\t\t  const struct wpabuf *ssi)\n+\t\t\t  const struct wpabuf *ssi,\n+\t\t\t  const struct wpabuf *attrs)\n {\n \tstruct wpabuf *buf;\n \tsize_t len = 0, sda_len, sdea_len;\n@@ -339,6 +340,8 @@ static void nan_de_tx_sdf(struct nan_de *de, struct nan_de_service *srv,\n \tif (de->cb.add_extra_attrs)\n \t\tlen += 256;\n \n+\tlen += attrs ? wpabuf_len(attrs) : 0;\n+\n \tbuf = nan_de_alloc_sdf(len);\n \tif (!buf)\n \t\treturn;\n@@ -412,6 +415,11 @@ static void nan_de_tx_sdf(struct nan_de *de, struct nan_de_service *srv,\n \tif (de->cb.add_extra_attrs)\n \t\tde->cb.add_extra_attrs(de->cb.ctx, buf);\n \n+\tif (attrs) {\n+\t\twpa_printf(MSG_DEBUG, \"NAN: Add extra NAN attributes\");\n+\t\twpabuf_put_buf(buf, attrs);\n+\t}\n+\n \tnan_de_tx(de, srv->sync ? 0 : srv->freq, srv->sync ? 0 : wait_time,\n \t\t  dst, forced_addr, a3, buf);\n \twpabuf_free(buf);\n@@ -518,7 +526,7 @@ static void nan_de_tx_multicast(struct nan_de *de, struct nan_de_service *srv,\n \t}\n \n \tnan_de_tx_sdf(de, srv, wait_time, type, network_id, bssid,\n-\t\t      req_instance_id, srv->ssi);\n+\t\t      req_instance_id, srv->ssi, NULL);\n \tos_get_reltime(&srv->last_multicast);\n }\n \n@@ -1238,7 +1246,7 @@ static bool nan_de_rx_publish(struct nan_de *de, struct nan_de_service *srv,\n \t\t * Service Specific Info field if it received a matching\n \t\t * unsolicited Publish message. */\n \t\tnan_de_transmit(de, srv->id, NULL, NULL, peer_addr,\n-\t\t\t\tinstance_id);\n+\t\t\t\tinstance_id, NULL);\n \t}\n \n send_event:\n@@ -1308,7 +1316,8 @@ static bool nan_de_rx_subscribe(struct nan_de *de, struct nan_de_service *srv,\n \n \tnan_de_tx_sdf(de, srv, 100, NAN_SRV_CTRL_PUBLISH,\n \t\t      srv->publish.solicited_multicast ?\n-\t\t      network_id : peer_addr, a3, instance_id, srv->ssi);\n+\t\t      network_id : peer_addr, a3, instance_id, srv->ssi,\n+\t\t      NULL);\n \n \tif (!srv->is_p2p && !srv->sync)\n \t\tnan_de_pause_state(srv, peer_addr, instance_id);\n@@ -2098,7 +2107,8 @@ void nan_de_cancel_subscribe(struct nan_de *de, int subscribe_id)\n \n int nan_de_transmit(struct nan_de *de, int handle,\n \t\t    const struct wpabuf *ssi, const struct wpabuf *elems,\n-\t\t    const u8 *peer_addr, u8 req_instance_id)\n+\t\t    const u8 *peer_addr, u8 req_instance_id,\n+\t\t    const struct wpabuf *nan_attrs)\n {\n \tstruct nan_de_service *srv;\n \tconst u8 *a3;\n@@ -2129,7 +2139,7 @@ int nan_de_transmit(struct nan_de *de, int handle,\n \telse\n \t\ta3 = network_id;\n \tnan_de_tx_sdf(de, srv, 100, NAN_SRV_CTRL_FOLLOW_UP,\n-\t\t      peer_addr, a3, req_instance_id, ssi);\n+\t\t      peer_addr, a3, req_instance_id, ssi, nan_attrs);\n \n \tsrv->listen_stopped = false;\n \treturn 0;\ndiff --git a/src/common/nan_de.h b/src/common/nan_de.h\nindex 8b881ab455..9be6aa644b 100644\n--- a/src/common/nan_de.h\n+++ b/src/common/nan_de.h\n@@ -228,7 +228,9 @@ void nan_de_cancel_subscribe(struct nan_de *de, int subscribe_id);\n  * req_instance_id = peer publish_id or subscribe_id */\n int nan_de_transmit(struct nan_de *de, int handle,\n \t\t    const struct wpabuf *ssi, const struct wpabuf *elems,\n-\t\t    const u8 *peer_addr, u8 req_instance_id);\n+\t\t    const u8 *peer_addr, u8 req_instance_id,\n+\t\t    const struct wpabuf *nan_attrs);\n+\n void nan_de_dw_trigger(struct nan_de *de, int freq);\n void nan_de_set_cluster_id(struct nan_de *de, const u8 *cluster_id);\n bool nan_de_is_valid_instance_id(struct nan_de *de, int handle,\ndiff --git a/wpa_supplicant/nan_supplicant.c b/wpa_supplicant/nan_supplicant.c\nindex 6cc7cc1dc5..a943d2f1ed 100644\n--- a/wpa_supplicant/nan_supplicant.c\n+++ b/wpa_supplicant/nan_supplicant.c\n@@ -3053,7 +3053,7 @@ int wpas_nan_transmit(struct wpa_supplicant *wpa_s, int handle,\n \tif (!wpa_s->nan_de)\n \t\treturn -1;\n \treturn nan_de_transmit(wpa_s->nan_de, handle, ssi, elems, peer_addr,\n-\t\t\t       req_instance_id);\n+\t\t\t       req_instance_id, NULL);\n }\n \n \n",
    "prefixes": [
        "64/71"
    ]
}