get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2229880,
    "url": "http://patchwork.ozlabs.org/api/1.1/patches/2229880/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/hostap/patch/20260428200639.40243-72-andrei.otcheretianski@intel.com/",
    "project": {
        "id": 22,
        "url": "http://patchwork.ozlabs.org/api/1.1/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": "<20260428200639.40243-72-andrei.otcheretianski@intel.com>",
    "date": "2026-04-28T20:06:12",
    "name": "[71/97] wpa_supplicant: Handle NAN schedule update notification",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "7c5d567c3bf225644d8b76298757d570794d0303",
    "submitter": {
        "id": 62065,
        "url": "http://patchwork.ozlabs.org/api/1.1/people/62065/?format=api",
        "name": "Andrei Otcheretianski",
        "email": "andrei.otcheretianski@intel.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/hostap/patch/20260428200639.40243-72-andrei.otcheretianski@intel.com/mbox/",
    "series": [
        {
            "id": 501927,
            "url": "http://patchwork.ozlabs.org/api/1.1/series/501927/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/hostap/list/?series=501927",
            "date": "2026-04-28T20:05:05",
            "name": "NAN: Group keys support, schedule update and more",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/501927/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2229880/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2229880/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=Cyo0Xz7u;\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=casper.20170209 header.b=wQxsawy7;\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=dnJ2Tvv4;\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 4g4s8v5c3fz1xrS\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 29 Apr 2026 06:14:23 +1000 (AEST)",
            "from localhost ([::1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1wHooZ-00000002Knm-1bzP;\n\tTue, 28 Apr 2026 20:13:51 +0000",
            "from casper.infradead.org ([2001:8b0:10b:1236::1])\n\tby bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1wHokm-00000002FXL-2baC\n\tfor hostap@bombadil.infradead.org;\n\tTue, 28 Apr 2026 20:09:56 +0000",
            "from mgamail.intel.com ([198.175.65.16])\n\tby casper.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1wHokd-00000004NBq-3IQh\n\tfor hostap@lists.infradead.org;\n\tTue, 28 Apr 2026 20:09:54 +0000",
            "from fmviesa001.fm.intel.com ([10.60.135.141])\n  by orvoesa108.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 28 Apr 2026 13:09:05 -0700",
            "from iapp347.iil.intel.com (HELO 87c02287900a.iil.intel.com)\n ([10.167.28.6])\n  by smtpauth.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 28 Apr 2026 13:09:03 -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: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=yGtpZxXgCfZjTsebtuZXves3LGWo8kJpJGOHtzM9Dpk=; b=Cyo0Xz7ujITzBe\n\tBXQGpg6f6X/0z59mDyQO4nM9ZHT/d9KRnAziWknD5eS/WuCSX4JBQBDJY+VCGkF5+G3OUAcma2tUP\n\tG1SSG9+qt/lMclydEulom8vNavBAExwUn78l5F4aoz/e86cZ21yKcE7wvmkHz0EjwoQpwEcOwOaq5\n\tQ5ILMv5VPaL5biqb1x1KdhFih46qGyKDQbQ0AnDNLwL0c8i2r7BNUcV1FxJgdc2V7DXrNVtoZ/jHa\n\tJzMKdnQlrQNIeDrqDfAi1lEtphp48VD9e1vZdmeMdejsFm+oC4OT/lTh/H443Gbz2Rr2xobjSByZh\n\tjW0IUZFQNcx4Cum90lLQ==;",
            "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version:\n\tReferences:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:\n\tContent-Type:Content-ID:Content-Description;\n\tbh=hk+yEkuYLTeCS4pb3bsx3Mg+X7Hbc46JsPgVDOKvIuA=; b=wQxsawy7s4lhyUF20quIqs2uXt\n\tb+AwqLF8mPAr+D0KV1kmGWSb6wI5tHseTVZsKSzUApo4//R86PwF80H2Cfa4SFxK+0Us76Axvgx2U\n\tStqiHVvulShoY1bX1mcoCR2jVLc9ANmSoiHtxNigZOAPrHasgFpKuLzJIyBcfSiV/tGwJ+mStqhEv\n\tLjjbebuZYvLGI1UGLJfB264+JjPMJHL2HXEuQLoHqNReD/vqNkt5/Rv+YKDs9k5jo+IH9zW2LxomG\n\trqpZb/SDhqVOa9geH6eKb5tME5CQMI/cQ0O5y6mE8c1k4zHk/O31UyaG4Xi6yPff5Pl7IamGDufq3\n\tvXgXq/Vw==;",
            "v=1; a=rsa-sha256; c=relaxed/simple;\n  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n  t=1777406987; x=1808942987;\n  h=from:to:cc:subject:date:message-id:in-reply-to:\n   references:mime-version:content-transfer-encoding;\n  bh=JeMzuceYRqsBNy4RvfWeL4Q03DcOwT3lhVa8d68ycLM=;\n  b=dnJ2Tvv42gUXQNwCApNKhO2jCvk0baWvVuHP02mtJiESiLOpqZ60aDUX\n   qFgsaJP1PGwRcytYc20CPCvfrPvyirvUXDu4eSVYcSzMgNA5jTvOZIdz7\n   ZwvWVd1Hzjp3qZEWF8HvwjZP7sYWd39Ic9ApElbWdb4089pMsL1B4X5mi\n   LskUX3rPUh3ZbXdEcyCcMxi+ydPAL4mhhf1HLn9BD3hVEn90x05Ez8ve+\n   v/zHmxMOd+IXiqsQaWqHDcb6+6kOfJ9/5aZsGkSUntgDxlt+x3tFe60nu\n   Bx5LWZuZqlOhUeVmSPzn+fr7ixeQMXXV/BTrw74KuQ4lrefnw9r078+m3\n   g==;"
        ],
        "X-CSE-ConnectionGUID": [
            "PBAG1BSNTIGdoroxZj/1lQ==",
            "j7CoJ3w0SE+DzwC7OFtfSQ=="
        ],
        "X-CSE-MsgGUID": [
            "m7ldymtuReautVGk/Pm1gA==",
            "cGXklsHdSNui50TZVZdfxw=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6800,10657,11770\"; a=\"78519519\"",
            "E=Sophos;i=\"6.23,204,1770624000\";\n   d=\"scan'208\";a=\"78519519\"",
            "E=Sophos;i=\"6.23,204,1770624000\";\n   d=\"scan'208\";a=\"257610741\""
        ],
        "X-ExtLoop1": "1",
        "From": "Andrei Otcheretianski <andrei.otcheretianski@intel.com>",
        "To": "hostap@lists.infradead.org",
        "Cc": "vamsin@qti.qualcomm.com,\n\tmaheshkkv@google.com,\n\tAvraham Stern <avraham.stern@intel.com>",
        "Subject": "[PATCH 71/97] wpa_supplicant: Handle NAN schedule update notification",
        "Date": "Tue, 28 Apr 2026 23:06:12 +0300",
        "Message-ID": "<20260428200639.40243-72-andrei.otcheretianski@intel.com>",
        "X-Mailer": "git-send-email 2.53.0",
        "In-Reply-To": "<20260428200639.40243-1-andrei.otcheretianski@intel.com>",
        "References": "<20260428200639.40243-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-20260428_210948_162484_4675912F ",
        "X-CRM114-Status": "GOOD (  14.43  )",
        "X-Spam-Score": "-4.4 (----)",
        "X-Spam-Report": "SpamAssassin version 4.0.1 on casper.infradead.org summary:\n Content analysis details:   (-4.4 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.16 listed in list.dnswl.org]\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_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.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from\n author's\n                             domain\n -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n                             [score: 0.0000]\n -0.0 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": "From: Avraham Stern <avraham.stern@intel.com>\n\nWhen the driver notifies that a deferred schedule update is completed,\nupdate the NAN availability attribute to be used in SDF frames and\nthe internal schedule database. In addition, update the peers\nschedules as they may be affected by the local schedule change.\nIf the deferred schedule update failed, keep using the old schedule.\n\nSigned-off-by: Avraham Stern <avraham.stern@intel.com>\n---\n src/common/wpa_ctrl.h           |  1 +\n src/drivers/driver.h            | 16 ++++++++++++++++\n src/drivers/driver_common.c     |  1 +\n wpa_supplicant/events.c         |  3 +++\n wpa_supplicant/nan_supplicant.c | 34 +++++++++++++++++++++++++++++++++\n wpa_supplicant/nan_supplicant.h |  6 ++++++\n wpa_supplicant/notify.c         |  9 +++++++++\n wpa_supplicant/notify.h         |  2 ++\n 8 files changed, 72 insertions(+)",
    "diff": "diff --git a/src/common/wpa_ctrl.h b/src/common/wpa_ctrl.h\nindex 65e81b5451..e5aa42649a 100644\n--- a/src/common/wpa_ctrl.h\n+++ b/src/common/wpa_ctrl.h\n@@ -257,6 +257,7 @@ extern \"C\" {\n #define NAN_NIK_RECEIVED \"NAN-NIK-RECEIVED \"\n #define NAN_PAIRING_REQUEST \"NAN-PAIRING-REQUEST \"\n #define NAN_PEER_SCHEDULE_CHANGED \"NAN-PEER-SCHEDULE-CHANGED \"\n+#define NAN_SCHEDULE_UPDATE_DONE \"NAN-SCHEDULE-UPDATE-DONE \"\n \n /* NAN Pairing status\n  * addr=<peer address> akmp=<SAE|PASN> cipher=<CCMP|GCMP-256>\ndiff --git a/src/drivers/driver.h b/src/drivers/driver.h\nindex 202e0fe2b6..c38ad98d6a 100644\n--- a/src/drivers/driver.h\n+++ b/src/drivers/driver.h\n@@ -6499,6 +6499,14 @@ enum wpa_event_type {\n \t * interference detection.\n \t */\n \tEVENT_INCUMBT_SIG_INTF_DETECTED,\n+\n+\t/**\n+\t * EVENT_NAN_SCHED_UPDATE_DONE - NAN schedule update completed\n+\t *\n+\t * This event is used to notify wpa_supplicant that a NAN schedule\n+\t * update has been completed by the driver/firmware.\n+\t */\n+\tEVENT_NAN_SCHED_UPDATE_DONE,\n };\n \n \n@@ -7521,6 +7529,14 @@ union wpa_event_data {\n \t\tu32 chan_bw_interference_bitmap;\n \t\tint link_id;\n \t} incumbt_sig_intf_event;\n+\n+\t/**\n+\t * struct nan_sched_update_done_info - Data for EVENT_NAN_SCHED_UPDATE_DONE\n+\t * @success: Indicates whether the NAN schedule update was successful\n+\t */\n+\tstruct nan_sched_update_done_info {\n+\t\tbool success;\n+\t} nan_sched_update_done_info;\n };\n \n /**\ndiff --git a/src/drivers/driver_common.c b/src/drivers/driver_common.c\nindex 50a0b682d9..5a3a07a89e 100644\n--- a/src/drivers/driver_common.c\n+++ b/src/drivers/driver_common.c\n@@ -105,6 +105,7 @@ const char * event_to_string(enum wpa_event_type event)\n \tE2S(NAN_CLUSTER_JOIN);\n \tE2S(NAN_NEXT_DW);\n \tE2S(INCUMBT_SIG_INTF_DETECTED);\n+\tE2S(NAN_SCHED_UPDATE_DONE);\n \t}\n \n \treturn \"UNKNOWN\";\ndiff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c\nindex 2a281e4c4b..dcf1af5f49 100644\n--- a/wpa_supplicant/events.c\n+++ b/wpa_supplicant/events.c\n@@ -7652,6 +7652,9 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,\n \tcase EVENT_NAN_NEXT_DW:\n \t\twpas_nan_next_dw(wpa_s, data->nan_next_dw_info.freq);\n \t\tbreak;\n+\tcase EVENT_NAN_SCHED_UPDATE_DONE:\n+\t\twpas_nan_sched_update_done(wpa_s, data);\n+\t\tbreak;\n #endif /* CONFIG_NAN */\n \tdefault:\n \t\twpa_msg(wpa_s, MSG_INFO, \"Unknown event %d\", event);\ndiff --git a/wpa_supplicant/nan_supplicant.c b/wpa_supplicant/nan_supplicant.c\nindex 97a7b78c2b..eb2ac88e4a 100644\n--- a/wpa_supplicant/nan_supplicant.c\n+++ b/wpa_supplicant/nan_supplicant.c\n@@ -3392,6 +3392,40 @@ void wpas_nan_next_dw(struct wpa_supplicant *wpa_s, u32 freq)\n }\n \n \n+void wpas_nan_sched_update_done(struct wpa_supplicant *wpa_s,\n+\t\t\t\tconst union wpa_event_data *data)\n+{\n+\tu8 map_id = wpa_s->nan_sched_update.map_id;\n+\tbool success = data->nan_sched_update_done_info.success;\n+\n+\tif (!wpas_nan_ready(wpa_s))\n+\t\treturn;\n+\n+\tif (!wpa_s->nan_sched_update.sched.deferred) {\n+\t\twpa_printf(MSG_DEBUG, \"NAN: Schedule update not in progress\");\n+\t\treturn;\n+\t}\n+\n+\twpas_notify_nan_sched_update_done(wpa_s, success);\n+\n+\tif (!success) {\n+\t\tclear_sched_config(&wpa_s->nan_sched_update.sched);\n+\t\twpa_printf(MSG_DEBUG, \"NAN: Schedule update failed\");\n+\t\treturn;\n+\t}\n+\n+\tclear_sched_config(&wpa_s->nan_sched[map_id - 1]);\n+\tos_memcpy(&wpa_s->nan_sched[map_id - 1],\n+\t\t  &wpa_s->nan_sched_update.sched,\n+\t\t  sizeof(wpa_s->nan_sched_update.sched));\n+\tos_memset(&wpa_s->nan_sched_update.sched, 0,\n+\t\t  sizeof(wpa_s->nan_sched_update.sched));\n+\twpa_s->schedule_sequence_id++;\n+\n+\twpas_nan_update_local_schedule(wpa_s);\n+}\n+\n+\n #ifdef CONFIG_PASN\n \n static int wpas_nan_pasn_update_station(struct wpa_supplicant *wpa_s,\ndiff --git a/wpa_supplicant/nan_supplicant.h b/wpa_supplicant/nan_supplicant.h\nindex e7c831ff36..3105dc54f0 100644\n--- a/wpa_supplicant/nan_supplicant.h\n+++ b/wpa_supplicant/nan_supplicant.h\n@@ -24,6 +24,8 @@ void wpas_nan_cluster_join(struct wpa_supplicant *wpa_s,\n \t\t\t   const u8 *cluster_id,\n \t\t\t   bool new_cluster);\n void wpas_nan_next_dw(struct wpa_supplicant *wpa_s, u32 freq);\n+void wpas_nan_sched_update_done(struct wpa_supplicant *wpa_s,\n+\t\t\t\tconst union wpa_event_data *data);\n int wpas_nan_sched_config_map(struct wpa_supplicant *wpa_s, const char *cmd);\n int wpas_nan_ndp_request(struct wpa_supplicant *wpa_s, char *cmd);\n void wpas_nan_rx_naf(struct wpa_supplicant *wpa_s,\n@@ -87,6 +89,10 @@ static inline void wpas_nan_cluster_join(struct wpa_supplicant *wpa_s,\n static inline void wpas_nan_next_dw(struct wpa_supplicant *wpa_s, u32 freq)\n {}\n \n+static inline void wpas_nan_sched_update_done(struct wpa_supplicant *wpa_s,\n+\t\t\t\t\t      const union wpa_event_data *data)\n+{}\n+\n static inline void wpas_nan_rx_naf(struct wpa_supplicant *wpa_s,\n \t\t\t\t   const struct ieee80211_mgmt *mgmt,\n \t\t\t\t   size_t len)\ndiff --git a/wpa_supplicant/notify.c b/wpa_supplicant/notify.c\nindex 8d91eed132..d8aba5a331 100644\n--- a/wpa_supplicant/notify.c\n+++ b/wpa_supplicant/notify.c\n@@ -1481,6 +1481,15 @@ void wpas_notify_nan_schedule_changed(struct wpa_supplicant *wpa_s,\n }\n \n \n+void wpas_notify_nan_sched_update_done(struct wpa_supplicant *wpa_s,\n+\t\t\t\t\t       bool success)\n+{\n+\twpa_msg_global(wpa_s, MSG_INFO,\n+\t\t       NAN_SCHEDULE_UPDATE_DONE \"status=%s\",\n+\t\t       success ? \"success\" : \"failure\");\n+}\n+\n+\n void wpas_notify_nan_pairing_status(struct wpa_supplicant *wpa_s,\n \t\t\t\t    const u8 *peer_addr, int akmp,\n \t\t\t\t    int cipher, u16 status,\ndiff --git a/wpa_supplicant/notify.h b/wpa_supplicant/notify.h\nindex 4748a57db8..260173e928 100644\n--- a/wpa_supplicant/notify.h\n+++ b/wpa_supplicant/notify.h\n@@ -250,6 +250,8 @@ void wpas_notify_nan_cluster_join(struct wpa_supplicant *wpa_s,\n \t\t\t\t  const u8 *cluster_id, bool new_cluster);\n void wpas_notify_nan_schedule_changed(struct wpa_supplicant *wpa_s,\n \t\t\t\t      const u8 *peer_nmi);\n+void wpas_notify_nan_sched_update_done(struct wpa_supplicant *wpa_s,\n+\t\t\t\t\t       bool success);\n void wpas_notify_nan_pairing_status(struct wpa_supplicant *wpa_s,\n \t\t\t\t    const u8 *peer_addr, int akmp, int cipher,\n \t\t\t\t    u16 status, const u8 *nd_pmk);\n",
    "prefixes": [
        "71/97"
    ]
}