From patchwork Tue Dec 6 09:22:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vinayak Yadawad X-Patchwork-Id: 1712606 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=4h2s3gHx; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=broadcom.com header.i=@broadcom.com header.a=rsa-sha256 header.s=google header.b=CO29SgX3; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NRFP71kCjz23ys for ; Tue, 6 Dec 2022 20:24:41 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: List-Subscribe:List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id: MIME-Version:Message-Id:Date:Subject:Cc:To:From:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=vbxtXQofeatzlR5bxEnaadmv9wMwkTCjrvnK5kwB3Zw=; b=4h2 s3gHxpr1qCYfyQ34Z2gFdgGjTzP5zZ7UnU+LGAtGKCxjb/qpgYPkHZjb0zehtSWSCn1hMfvOHAAkr YHxYJVigNpUehr7Sm8aK++tVwS2pRnmrrwvKvGlTHvxW4xWeDPOCDu4rOA6R1VJI7dko33LklLcZE VbbcKHifBKrFdIJvsWcgod8QHln7bw8qOYWQR9ZgCxzU8kNPKyJhkafO9VE5viuutRKfVCDqWqd9t 55lhndM+4H+YYvU99Iy6VRbmfYEJrMscNIDBCWx5cqgLEbr5gNznbP7VywzervErFxmBWe+A8Q0eh uFCJ1VrLwUNd56c6mnqXGtCpH8Gi/uQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p2UA2-005pLt-JX; Tue, 06 Dec 2022 09:22:46 +0000 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p2U9x-005p6g-4h for hostap@lists.infradead.org; Tue, 06 Dec 2022 09:22:43 +0000 Received: by mail-pf1-x431.google.com with SMTP id g1so5941201pfk.2 for ; Tue, 06 Dec 2022 01:22:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=mime-version:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=FIGjH1uExdhVlViQJk7EOKUn7q5kiessWmmYxml9hgU=; b=CO29SgX3MlU6kJwczmxBL0BJsY1p5PAjJCblx9r9Jr9PzpByMkQsVI4PrmWTp6KtE0 YKa3+fy3g3SBQuLvobq4elad/CwCp3DXTTCN/p/DzE2ScW5PuhxA68OoMBpygBCnFQkV hmSTPKghEm7kJMBEn61DAuVs/Lfn3T4UuNurU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:message-id:date:subject:cc:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=FIGjH1uExdhVlViQJk7EOKUn7q5kiessWmmYxml9hgU=; b=vf0n+bjKOeAHLxES/67EgfSw57HGe1SOsEd3jjH51MfMmaMJXGSbzcMHLkZVdK0JLY Dpai0hZlZoLzjBPqkwntk62bKBHw11PKvuNsk/9LlO7kgq71CuZ+E8ibn+9pRuAR1Y5s MtNVyd/XoloDNNKk0I5BPsH5mrw+V3jFHRWPyv2oLC4wGfBz4s2xjuZMqFcDCqAFlu1k qfxuC0SzO7MK6k8x5W+LfB/MZ7eeOHgOPoiCwaaHHymXlixm93j+8xyprt5TisujWKTF IvTIofHuoM84LdUWirO+GnMxvgywCxyDj8Ka2trcMOH7LV6TR10VViRf1Wn5nRpXvy81 +26w== X-Gm-Message-State: ANoB5pnIjL34817MLg2FREjmMhzdiZbHd+NINxRqrdrcFbRDlft9Ftrh Ugff9rt2u1GlmICwkcBZdyi1k5UlDUuVN9dTffZiAVZZ83U6pm5apR1kMGhZuUNheufNwl1kjT0 NZwQzAdz0vViWDfU1dV8Z4K6SsDsXXbZcjbz0aCMuUp0S7eQxs9VD/xgBEhNPWAXLNHhS7b4Eqo Mh5oudSb02qxo= X-Google-Smtp-Source: AA0mqf7D+BDISStEhULm7mJ6+Qb+jadRYcW+VffI2mTgzoP3EMbwG1ogks8vnPGbtyQMgULp7toXWg== X-Received: by 2002:a63:f354:0:b0:476:db6f:e79d with SMTP id t20-20020a63f354000000b00476db6fe79dmr60185381pgj.399.1670318556949; Tue, 06 Dec 2022 01:22:36 -0800 (PST) Received: from ibnvda0196.ibn.broadcom.net ([192.19.252.250]) by smtp.gmail.com with ESMTPSA id mm8-20020a17090b358800b00200461cfa99sm12377845pjb.11.2022.12.06.01.22.34 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Dec 2022 01:22:36 -0800 (PST) From: Vinayak Yadawad To: hostap@lists.infradead.org Cc: jithu.jance@broadcom.com, Vinayak Yadawad Subject: [PATCH 1/1] TD Bitmap: Set transition disable value received from port authorized event. Date: Tue, 6 Dec 2022 14:52:27 +0530 Message-Id: X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221206_012241_299300_7FAA339E X-CRM114-Status: GOOD ( 18.62 ) X-Spam-Score: 0.6 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: In case of drivers involving 4-way HS offloaded to driver, there currently exist no way of updating transition disable bitmap recieved as part EAPOL 3/4. With latest provisions in cfg80211_port_author [...] Content analysis details: (0.6 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:431 listed in] [list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 1.0 MIME_NO_TEXT No (properly identified) text body parts -0.2 DKIMWL_WL_HIGH DKIMwl.org - High trust sender X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org In case of drivers involving 4-way HS offloaded to driver, there currently exist no way of updating transition disable bitmap recieved as part EAPOL 3/4. With latest provisions in cfg80211_port_authorized, the td bitmap can be sent to the upper layer. In the current change the same is parsed as part port authorized event and according transition disable is set. Signed-off-by: Vinayak Yadawad --- src/drivers/driver.h | 7 +++++++ src/drivers/driver_nl80211_event.c | 11 ++++++++++- src/drivers/nl80211_copy.h | 4 ++++ wpa_supplicant/events.c | 6 ++++++ wpa_supplicant/wpas_glue.c | 2 +- wpa_supplicant/wpas_glue.h | 1 + 6 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/drivers/driver.h b/src/drivers/driver.h index 0b019e3af..adbf18a61 100644 --- a/src/drivers/driver.h +++ b/src/drivers/driver.h @@ -6365,6 +6365,13 @@ union wpa_event_data { */ struct pasn_auth pasn_auth; + /** + * struct port_authorized - Data for EVENT_PORT_AUTHORIZED + */ + struct port_authorized { + u8 *td_bitmap; + u8 td_bitmap_len; + } port_authorized; }; /** diff --git a/src/drivers/driver_nl80211_event.c b/src/drivers/driver_nl80211_event.c index 8f0361fd8..091ab40db 100644 --- a/src/drivers/driver_nl80211_event.c +++ b/src/drivers/driver_nl80211_event.c @@ -3152,7 +3152,9 @@ static void nl80211_port_authorized(struct wpa_driver_nl80211_data *drv, struct nlattr **tb) { const u8 *addr; + union wpa_event_data event; + os_memset(&event, 0, sizeof(event)); if (!tb[NL80211_ATTR_MAC] || nla_len(tb[NL80211_ATTR_MAC]) != ETH_ALEN) { wpa_printf(MSG_DEBUG, @@ -3169,7 +3171,14 @@ static void nl80211_port_authorized(struct wpa_driver_nl80211_data *drv, return; } - wpa_supplicant_event(drv->ctx, EVENT_PORT_AUTHORIZED, NULL); + if (tb[NL80211_ATTR_TD_BITMAP]) { + event.port_authorized.td_bitmap_len = nla_len(tb[NL80211_ATTR_TD_BITMAP]); + if (event.port_authorized.td_bitmap_len > 0) { + event.port_authorized.td_bitmap = nla_data(tb[NL80211_ATTR_TD_BITMAP]); + } + } + + wpa_supplicant_event(drv->ctx, EVENT_PORT_AUTHORIZED, &event); } diff --git a/src/drivers/nl80211_copy.h b/src/drivers/nl80211_copy.h index ffb7c573e..3b9fb11ea 100644 --- a/src/drivers/nl80211_copy.h +++ b/src/drivers/nl80211_copy.h @@ -2741,6 +2741,8 @@ enum nl80211_commands { * When used with %NL80211_CMD_FRAME_TX_STATUS, indicates the ack RX * timestamp. When used with %NL80211_CMD_FRAME RX notification, indicates * the incoming frame RX timestamp. + * @NL80211_ATTR_TD_BITMAP: Transition Disable bitmap, for subsequent + * (re)associations. * @NUM_NL80211_ATTR: total number of nl80211_attrs available * @NL80211_ATTR_MAX: highest attribute number currently defined * @__NL80211_ATTR_AFTER_LAST: internal use @@ -3269,6 +3271,8 @@ enum nl80211_attrs { NL80211_ATTR_TX_HW_TIMESTAMP, NL80211_ATTR_RX_HW_TIMESTAMP, + NL80211_ATTR_TD_BITMAP, + /* add attributes here, update the policy in nl80211.c */ __NL80211_ATTR_AFTER_LAST, diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c index fe8ab50ff..fff58f684 100644 --- a/wpa_supplicant/events.c +++ b/wpa_supplicant/events.c @@ -6047,6 +6047,12 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event, break; #endif /* CONFIG_PASN */ case EVENT_PORT_AUTHORIZED: + if (data->port_authorized.td_bitmap_len) { + wpa_printf(MSG_INFO, "TD_BITMAP: 0x%x", + data->port_authorized.td_bitmap[0]); + wpa_supplicant_transition_disable(wpa_s, + data->port_authorized.td_bitmap[0]); + } wpa_supplicant_event_port_authorized(wpa_s); break; case EVENT_STATION_OPMODE_CHANGED: diff --git a/wpa_supplicant/wpas_glue.c b/wpa_supplicant/wpas_glue.c index a309ea278..49994ac68 100644 --- a/wpa_supplicant/wpas_glue.c +++ b/wpa_supplicant/wpas_glue.c @@ -1282,7 +1282,7 @@ static void disable_wpa_wpa2(struct wpa_ssid *ssid) } -static void wpa_supplicant_transition_disable(void *_wpa_s, u8 bitmap) +void wpa_supplicant_transition_disable(void *_wpa_s, u8 bitmap) { struct wpa_supplicant *wpa_s = _wpa_s; struct wpa_ssid *ssid; diff --git a/wpa_supplicant/wpas_glue.h b/wpa_supplicant/wpas_glue.h index 338af4e65..2ceb56d56 100644 --- a/wpa_supplicant/wpas_glue.h +++ b/wpa_supplicant/wpas_glue.h @@ -27,4 +27,5 @@ enum wpa_ctrl_req_type wpa_supplicant_ctrl_req_from_string(const char *field); void wpas_send_ctrl_req(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid, const char *field_name, const char *txt); +void wpa_supplicant_transition_disable(void *_wpa_s, u8 bitmap); #endif /* WPAS_GLUE_H */