From 704abf4b20e88d9dcc1cb2ef9d866d10eb060ed1 Mon Sep 17 00:00:00 2001 From: Chung-Hsien Hsu Date: Tue, 30 Apr 2019 17:52:41 -0500 Subject: [PATCH 020/296] nl80211: add authorized flag to CONNECT event Add authorized flag to CONNECT event. It is used for 802.1X 4-way handshake offload with PMK caching. Signed-off-by: Chung-Hsien Hsu Signed-off-by: Chi-hsien Lin --- include/net/cfg80211.h | 4 +++- net/wireless/nl80211.c | 2 ++ net/wireless/sme.c | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 3a4a140bc95a..c3955df4dd11 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -7770,6 +7770,8 @@ struct cfg80211_fils_resp_params { * @links.status: per-link status code, to report a status code that's not * %WLAN_STATUS_SUCCESS for a given link, it must also be in the * @valid_links bitmap and may have a BSS pointer (which is then released) + * @authorized: Indicates whether the connection is ready to transport + * data packets. */ struct cfg80211_connect_resp_params { int status; @@ -7779,7 +7781,6 @@ struct cfg80211_connect_resp_params { size_t resp_ie_len; struct cfg80211_fils_resp_params fils; enum nl80211_timeout_reason timeout_reason; - const u8 *ap_mld_addr; u16 valid_links; struct { @@ -7788,6 +7789,7 @@ struct cfg80211_connect_resp_params { struct cfg80211_bss *bss; u16 status; } links[IEEE80211_MLD_MAX_NUM_LINKS]; + bool authorized; }; /** diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 66eff379b5f3..1c3d32faaf2e 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -18094,6 +18094,8 @@ void nl80211_send_connect_result(struct cfg80211_registered_device *rdev, (nla_put_flag(msg, NL80211_ATTR_TIMED_OUT) || nla_put_u32(msg, NL80211_ATTR_TIMEOUT_REASON, cr->timeout_reason))) || + (cr->authorized && + nla_put_flag(msg, NL80211_ATTR_PORT_AUTHORIZED)) || (cr->req_ie && nla_put(msg, NL80211_ATTR_REQ_IE, cr->req_ie_len, cr->req_ie)) || (cr->resp_ie && diff --git a/net/wireless/sme.c b/net/wireless/sme.c index 7e8a56d49717..f8c62b3f88ac 100644 --- a/net/wireless/sme.c +++ b/net/wireless/sme.c @@ -1075,6 +1075,7 @@ void cfg80211_connect_done(struct net_device *dev, } ev->cr.status = params->status; ev->cr.timeout_reason = params->timeout_reason; + ev->cr.authorized = params->authorized; spin_lock_irqsave(&wdev->event_lock, flags); list_add_tail(&ev->list, &wdev->event_list); -- 2.25.1