Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.1/patches/2229884/?format=api
{ "id": 2229884, "url": "http://patchwork.ozlabs.org/api/1.1/patches/2229884/?format=api", "web_url": "http://patchwork.ozlabs.org/project/hostap/patch/20260428200639.40243-78-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-78-andrei.otcheretianski@intel.com>", "date": "2026-04-28T20:06:18", "name": "[77/97] NAN: Update peer schedule when ULW attributes change", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "6a1fc6086517abaa1b95cdf7bbb586538c03f389", "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-78-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/2229884/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2229884/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=Lz/TAYqz;\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=hepWpyHQ;\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=a1D6WcCo;\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 4g4s9H6QkCz1xrS\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 29 Apr 2026 06:14:43 +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 1wHoov-00000002LIa-05hw;\n\tTue, 28 Apr 2026 20:14:13 +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 1wHokt-00000002Fha-0MiZ\n\tfor hostap@bombadil.infradead.org;\n\tTue, 28 Apr 2026 20:10:03 +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 1wHokp-00000004NBq-0AhS\n\tfor hostap@lists.infradead.org;\n\tTue, 28 Apr 2026 20:10:01 +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:14 -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:13 -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=o+LtlwiI6VX6J8s/G+GvXKtIDiSTXD9mKLM6omNqdX4=; b=Lz/TAYqzr4SgPs\n\tAedvTLSoQvDNUQXfFI5hWhWPamh4QqYexMePlkBVkkAgCBs0J0/lss2xGvBK/qhTHr9Jw8LSpFX9z\n\t+K7uoUtnoXpyfJ3fdgj3YPZKU4tv/x6ijiNY0zFpt794z21Ym1i7+a1Bnp+h97un/dBrf0pJBf/gI\n\tNxP9orXyw9bxpcGqlod3strGQkwGSM4Svpmulv2cnTMDV739tABZiwiVlJREDpxak44GEVjc9UGWk\n\t4GvUTJRqgxNu/SMSDVadtxc7xmQdiBH3eB3M0IdMQCXBztw8blQ7Nae4sndFgHTwzk6zZ+zvgTmbO\n\tR2EB4y5FmWi32c55W65Q==;", "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=Jm5HNSr2ljMxF4JdgtUkx1yC/z8BGMkjoPss0gG/Lh8=; b=hepWpyHQ1tRDGVtAOjQp6zhiE0\n\tYSK1brspVsONgurXNCe2jJdxcieGDBFxjZRCulUhl6XYNw8C1rP7dU1bIMMxrUR3Ni6qmhcCwzG/W\n\tBw3foY6nVSyKRUmHS8UPOjjGPMU0OPoWhkM73f7nxmnBx/Nb4pgNfciQu+nDPEBhq8JmtfpsFLS90\n\t0g3kl0qV5TvRwLO84g0zuXiuJ6Gb95pXUl9tOvdT4AhsH+QuB1/F+uSXUYm7BogcA448xUYyS19qJ\n\tpA+ghjtZtab2Nr3YTKSP89+e0Z9yrfEZUzZ1TyWFMN4cBWnU2WbilWh1WBIrv1GkFe5YX1gor6vSe\n\tN5kRen9Q==;", "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1777406999; x=1808942999;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=ZH24acexuw6WKS3vHuNMWyZ+2v39iSxrlCjwzU4KdYA=;\n b=a1D6WcCobAU6OZxBvIQ5fRCNWS8rnO8uOyvTK/C1jXu9dbpSt/XpeAQM\n uHWOf1PHljFRs0M8noGPs5JRsYevk1G7LaEaMLkk80xuV5z+iP9WsVzcu\n sGYn0zbZi8GnKGU54DBiCHjhjhm7lObK5rQxnIF+Jy1BvBS+eYorEMDAG\n oRfdUkgYghuxyat644j1IPRDHOSMPDD9YpkurQM+KDOrFEe7IcKj2PpCN\n K1qSLMHbeqnGoyNJafnPBH7MjhqgF6C2vwUJiCrbly0/1LL4g8uz2R398\n N3xzri7UR5+GzNz5LrAb/fg8u/qAC8a9+W7nF4mWwHOCoJcMel82M/16j\n g==;" ], "X-CSE-ConnectionGUID": [ "WezxEjrgS62Hk39lGcuLAA==", "eVVVCUE2SiGSyxidadRkrg==" ], "X-CSE-MsgGUID": [ "juKo8CTUSm6szM9t7x6C4g==", "T8oAlAzdQYmsEDLHHbSP6A==" ], "X-IronPort-AV": [ "E=McAfee;i=\"6800,10657,11770\"; a=\"78519541\"", "E=Sophos;i=\"6.23,204,1770624000\";\n d=\"scan'208\";a=\"78519541\"", "E=Sophos;i=\"6.23,204,1770624000\";\n d=\"scan'208\";a=\"257610795\"" ], "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 77/97] NAN: Update peer schedule when ULW attributes change", "Date": "Tue, 28 Apr 2026 23:06:18 +0300", "Message-ID": "<20260428200639.40243-78-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_210959_431972_453F7803 ", "X-CRM114-Status": "GOOD ( 17.31 )", "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\nAdd a list of ULW attributes to the peer info. When the peer sends\nnew ULW attribute with a higher sequence ID than the last ULW, update\nthe peer schedule with the new ULW attributes.\n\nSigned-off-by: Avraham Stern <avraham.stern@intel.com>\n---\n src/nan/nan.c | 136 ++++++++++++++++++++++++++++++++++++++++++++++--\n src/nan/nan_i.h | 15 ++++++\n 2 files changed, 147 insertions(+), 4 deletions(-)", "diff": "diff --git a/src/nan/nan.c b/src/nan/nan.c\nindex 0d7110c98a..dafc59e250 100644\n--- a/src/nan/nan.c\n+++ b/src/nan/nan.c\n@@ -103,6 +103,48 @@ static void nan_peer_flush_elem_container(struct nan_peer_info *info)\n }\n \n \n+static void nan_peer_flush_ulw(struct nan_peer_info *info)\n+{\n+\tstruct nan_ulw_entry *cur, *next;\n+\n+\tdl_list_for_each_safe(cur, next, &info->ulw,\n+\t\t\t struct nan_ulw_entry, list) {\n+\t\tdl_list_del(&cur->list);\n+\t\tos_free(cur);\n+\t}\n+}\n+\n+\n+static struct wpabuf *\n+nan_peer_build_ulw_attrs(const struct nan_peer_info *info)\n+{\n+\tstruct nan_ulw_entry *entry;\n+\tstruct wpabuf *buf;\n+\tsize_t len = 0;\n+\n+\tif (dl_list_empty(&info->ulw))\n+\t\treturn NULL;\n+\n+\tdl_list_for_each(entry, &info->ulw, struct nan_ulw_entry, list)\n+\t\tlen += NAN_ATTR_HDR_LEN + entry->len;\n+\n+\tbuf = wpabuf_alloc(len);\n+\tif (!buf) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t \"NAN: Failed to allocate buffer for ULW attrs\");\n+\t\treturn NULL;\n+\t}\n+\n+\tdl_list_for_each(entry, &info->ulw, struct nan_ulw_entry, list) {\n+\t\twpabuf_put_u8(buf, NAN_ATTR_UNALIGNED_SCHEDULE);\n+\t\twpabuf_put_le16(buf, entry->len);\n+\t\twpabuf_put_data(buf, entry->data, entry->len);\n+\t}\n+\n+\treturn buf;\n+}\n+\n+\n static void nan_ndp_setup_stop(struct nan_data *nan, struct nan_peer *peer)\n {\n \teloop_cancel_timeout(nan_peer_state_timeout, nan, peer);\n@@ -204,6 +246,7 @@ static void nan_del_peer(struct nan_data *nan, struct nan_peer *peer)\n \tnan_bootstrap_reset(nan, peer);\n \tdl_list_del(&peer->list);\n \tnan_peer_flush_avail(&peer->info);\n+\tnan_peer_flush_ulw(&peer->info);\n \tnan_peer_flush_dev_capa(&peer->info);\n \tnan_peer_flush_elem_container(&peer->info);\n \tnan_remove_group_keys(nan, peer);\n@@ -1018,11 +1061,14 @@ static void nan_peer_update_schedule(struct nan_data *nan,\n * Update the old peer info with information from the new peer info.\n * Information that is available in the old peer info but is not available\n * in the new peer info will not be changed.\n+ * Peer schedule may be updated if the peer availabilty or ULW changed.\n */\n static void nan_merge_peer_info(struct nan_data *nan, struct nan_peer *peer,\n \t\t\t\tstruct nan_peer_info *old,\n \t\t\t\tstruct nan_peer_info *new)\n {\n+\tbool schedule_changed = false;\n+\n \tif (!dl_list_empty(&new->avail_entries)) {\n \t\tstruct nan_avail_entry *avail, *tmp;\n \n@@ -1035,14 +1081,30 @@ static void nan_merge_peer_info(struct nan_data *nan, struct nan_peer *peer,\n \t\t\tdl_list_add(&old->avail_entries, &avail->list);\n \t\t}\n \t\told->seq_id = new->seq_id;\n+\t\tschedule_changed = true;\n+\t}\n \n-\t\tif (peer->ndl && peer->ndl->state == NAN_NDL_STATE_DONE)\n-\t\t\tnan_peer_update_schedule(nan, peer, &nan->sched);\n+\tif (!dl_list_empty(&new->ulw)) {\n+\t\tstruct nan_ulw_entry *entry, *tmp;\n+\n+\t\tnan_peer_flush_ulw(old);\n+\t\tdl_list_init(&old->ulw);\n+\n+\t\tdl_list_for_each_safe(entry, tmp, &new->ulw,\n+\t\t\t\t struct nan_ulw_entry, list) {\n+\t\t\tdl_list_del(&entry->list);\n+\t\t\tdl_list_add(&old->ulw, &entry->list);\n+\t\t}\n+\n+\t\tschedule_changed = true;\n \t}\n \n \told->last_seen = new->last_seen;\n-}\n \n+\tif (schedule_changed && peer->ndl &&\n+\t peer->ndl->state == NAN_NDL_STATE_DONE)\n+\t\tnan_peer_update_schedule(nan, peer, &nan->sched);\n+}\n \n static int nan_avail_info(struct nan_data *nan, struct nan_peer *peer,\n \t\t\t struct nan_attrs *attrs, struct nan_peer_info *info)\n@@ -1198,6 +1260,59 @@ static void nan_parse_peer_elem_container(struct nan_data *nan,\n }\n \n \n+static int nan_parse_peer_ulw(const struct nan_attrs *attrs,\n+\t\t\t const struct nan_peer_info *cur_info,\n+\t\t\t struct nan_peer_info *info)\n+{\n+\tstruct nan_ulw_entry *cur;\n+\tstruct nan_attrs_entry *attr;\n+\tu8 max_seq_id = 0;\n+\tbool max_seq_id_valid = false;\n+\n+\tif (dl_list_empty(&attrs->ulw))\n+\t\treturn 0;\n+\n+\tdl_list_for_each(cur, &cur_info->ulw, struct nan_ulw_entry, list) {\n+\t\tconst struct nan_unaligned_sched *ulw;\n+\n+\t\tulw = (const struct nan_unaligned_sched *)cur->data;\n+\t\tif (!max_seq_id_valid || ulw->seq_id > max_seq_id) {\n+\t\t\tmax_seq_id = ulw->seq_id;\n+\t\t\tmax_seq_id_valid = true;\n+\t\t}\n+\t}\n+\n+\tdl_list_for_each(attr, &attrs->ulw, struct nan_attrs_entry, list) {\n+\t\tstruct nan_ulw_entry *entry;\n+\t\tconst struct nan_unaligned_sched *ulw =\n+\t\t\t(const struct nan_unaligned_sched *)attr->ptr;\n+\n+\t\tif (max_seq_id_valid && ulw->seq_id <= max_seq_id) {\n+\t\t\twpa_printf(MSG_DEBUG,\n+\t\t\t\t \"NAN: Skip old ULW entry with seq_id=%u\",\n+\t\t\t\t ulw->seq_id);\n+\t\t\tcontinue;\n+\t\t}\n+\n+\t\tentry = os_zalloc(sizeof(*entry) + attr->len);\n+\t\tif (!entry) {\n+\t\t\twpa_printf(MSG_DEBUG,\n+\t\t\t\t \"NAN: Failed to allocate ULW entry\");\n+\t\t\tnan_peer_flush_ulw(info);\n+\t\t\treturn -1;\n+\t\t}\n+\n+\t\tdl_list_init(&entry->list);\n+\t\tdl_list_add(&info->ulw, &entry->list);\n+\n+\t\tentry->len = attr->len;\n+\t\tos_memcpy(entry->data, attr->ptr, entry->len);\n+\t}\n+\n+\treturn 0;\n+}\n+\n+\n void nan_parse_peer_dev_capa_ext(struct nan_data *nan, struct nan_peer *peer,\n \t\t\t\t struct nan_attrs *attrs)\n {\n@@ -1268,6 +1383,7 @@ int nan_parse_device_attrs(struct nan_data *nan, struct nan_peer *peer,\n \n \tos_memset(&info, 0, sizeof(info));\n \tdl_list_init(&info.avail_entries);\n+\tdl_list_init(&info.ulw);\n \tos_get_reltime(&info.last_seen);\n \n \tif (nan_parse_attrs(nan, attrs_data, attrs_len, &attrs)) {\n@@ -1282,6 +1398,11 @@ int nan_parse_device_attrs(struct nan_data *nan, struct nan_peer *peer,\n \t\tgoto out;\n \t}\n \n+\tif (nan_parse_peer_ulw(&attrs, &peer->info, &info)) {\n+\t\tret = -1;\n+\t\tgoto out;\n+\t}\n+\n \tnan_merge_peer_info(nan, peer, &peer->info, &info);\n \tnan_parse_peer_device_capa(nan, peer, &attrs);\n \tnan_parse_peer_elem_container(nan, peer, &attrs);\n@@ -1292,6 +1413,8 @@ int nan_parse_device_attrs(struct nan_data *nan, struct nan_peer *peer,\n \tnan_peer_dump(nan, peer);\n \tret = 0;\n out:\n+\tnan_peer_flush_avail(&info);\n+\tnan_peer_flush_ulw(&info);\n \tnan_attrs_clear(nan, &attrs);\n \treturn ret;\n }\n@@ -1333,6 +1456,7 @@ static struct nan_peer * nan_alloc_peer(struct nan_data *nan)\n \t\treturn NULL;\n \n \tdl_list_init(&peer->info.avail_entries);\n+\tdl_list_init(&peer->info.ulw);\n \tdl_list_init(&peer->info.dev_capa);\n \tdl_list_init(&peer->info.element_container);\n \tdl_list_init(&peer->info.sec);\n@@ -1516,6 +1640,7 @@ int nan_configure_peer_schedule(struct nan_data *nan, struct nan_peer *peer,\n \tstruct nan_device_capabilities *capa = NULL;\n \tstruct nan_peer_schedule sched;\n \tstruct bitfield *common_bf;\n+\tstruct wpabuf *ulw_elems;\n \n \twpa_printf(MSG_DEBUG, \"NAN: Configure peer schedule for \" MACSTR,\n \t\t MAC2STR(peer->nmi_addr));\n@@ -1552,11 +1677,14 @@ int nan_configure_peer_schedule(struct nan_data *nan, struct nan_peer *peer,\n \t\treturn -1;\n \t}\n \n+\tulw_elems = nan_peer_build_ulw_attrs(&peer->info);\n+\n \tret = nan->cfg->set_peer_schedule(nan->cfg->cb_ctx, peer->nmi_addr,\n \t\t\t\t\t !peer->configured, capa->cdw_info,\n \t\t\t\t\t peer->info.seq_id,\n \t\t\t\t\t capa->channel_switch_time, &sched,\n-\t\t\t\t\t NULL);\n+\t\t\t\t\t ulw_elems);\n+\twpabuf_free(ulw_elems);\n \tif (ret) {\n \t\twpa_printf(MSG_DEBUG, \"NAN: Failed to set peer schedule\");\n \t\treturn ret;\ndiff --git a/src/nan/nan_i.h b/src/nan/nan_i.h\nindex 264eaa0131..9ce0b99789 100644\n--- a/src/nan/nan_i.h\n+++ b/src/nan/nan_i.h\n@@ -295,6 +295,19 @@ struct nan_elem_container_entry {\n \tu8 data[];\n };\n \n+/**\n+ * struct nan_ulw_entry - NAN Unaligned Schedule attribute entry\n+ *\n+ * @list: Used for linking in the ULW entries list\n+ * @len: Length of the ULW attribute payload\n+ * @data: Pointer to the ULW attribute payload\n+ */\n+struct nan_ulw_entry {\n+\tstruct dl_list list;\n+\tu16 len;\n+\tu8 data[];\n+};\n+\n /**\n * struct nan_peer_sec_info_entry - NAN peer security information entry\n *\n@@ -330,6 +343,7 @@ struct nan_peer_sec_info_entry {\n * @last_seen: Timestamp of the last update of the peer info\n * @seq_id: Sequence id of the last availability update\n * @avail_entries: List of availability entries of the peer\n+ * @ulw: List of Unaligned Schedule attribute payloads of the peer\n * @dev_capa: List of device capabilities of the peer\n *\t(struct nan_dev_capa_entry::list entries)\n * @element_container: List of element container entries of the peer\n@@ -341,6 +355,7 @@ struct nan_peer_info {\n \tstruct os_reltime last_seen;\n \tu8 seq_id;\n \tstruct dl_list avail_entries;\n+\tstruct dl_list ulw;\n \tstruct dl_list dev_capa;\n \tstruct dl_list element_container;\n \tstruct dl_list sec;\n", "prefixes": [ "77/97" ] }