From nobody Fri Apr 18 14:37:10 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZfHQt4fT2z5stRG; Fri, 18 Apr 2025 14:37:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZfHQt2n6Zz3KnW; Fri, 18 Apr 2025 14:37:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1744987030; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2Zb4AZmPWNJBsOZYWXLkTYo4vOKDZoLnpwRMnYWsEMM=; b=mQsBDU6D2ibCdjD8oBWu4YPXzf8DyGKaOJTXBRoxlhJXzXAM8i4YFvDrWKDaVTVip+FHdh 2J8YpDec9g5ZPRcaqSs8YrDzuya3dFSH9u1np7XC21vJIW3r7Rbq1Tl7VEyTGlEN0n0eQM J3nS6SgE4IxukXlw9ptfLt/U0g/cGb3gATA2yudEs2ohG98ruMLS/0yVilkHR+Egyx/X0l irB5o9s4t/2qimlCA5whhMSkP1BAp0B6CqjZ39/pVZx0sUlJdHX8Z3GXLPjhfCaM09fCcB IxEIefCpKwsLt1PEYz5CEUei4A4r9XZOIshRseJd0clPIMY20PvAhgw9HNbwsQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1744987030; a=rsa-sha256; cv=none; b=K9eJ4RyG64FmkQQKJ5jEE4jXUH46mZxz/HWyqczue36YOwTmic5WeKVj4q2RLAANCpzPtn fjBMdxiW2JHJUlrWO5n+UCDIdw6O3X3ULC3l2NtQHcnIjDESKL7IDLEYPoy1xYtV0aETkU GFQZlW16/IGtBik+lIK0839AsAjXudWbm9byZ4Oks2rEKU+YntD9IDR9QiNEQUdlIT3EHa LIZoa1GAGkxt7qclxT0yEolZj24v74eJs8t3OmmcJ6B69EideCpb3+1cINk7SOgqx8dmL7 eAoPNSKSgq1ZdPWO9qwSQ3T19Ci23R0gGRsTu+euU4l9q1SaPqdnliTWjfQBUQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1744987030; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2Zb4AZmPWNJBsOZYWXLkTYo4vOKDZoLnpwRMnYWsEMM=; b=OtdLNkolJ5cQID1IF9Z6gYCAVwT3GJkaSvmI0nCTNO65ujdDz7d06k8371nkFqWHZA/s4S IQYfdMesQfI+HHkw8LRVh3Gqio+Muxk1C3RgSUUaplOeBj7xvVrLIuI+/5ewRhRzdpFxwH MDrx4M+cslEmCAMscm+LzTcQpm7pV/NWw2fZMh/26FqX7ICGaan4IplfP1R0EVzs+iUjJn IUijle5FWCQd3IG+7L/J2oeFh5oHb50z8J4wUW6OWZU3TFnEbU/ElgYNYWXdO/uhDNVDOG e2UyfjWGEb0pK+RFIrEy57fPkd+e0yX67Ir0NcJ0yXuH7SoT+NirP3PxVqK2Lg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZfHQt24cTzf3r; Fri, 18 Apr 2025 14:37:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 53IEbAod091726; Fri, 18 Apr 2025 14:37:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 53IEbARs091723; Fri, 18 Apr 2025 14:37:10 GMT (envelope-from git) Date: Fri, 18 Apr 2025 14:37:10 GMT Message-Id: <202504181437.53IEbARs091723@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: f4aa407e89fe - stable/14 - LinuxKPI: 802.11: CONFIG_PM_SLEEP / WoWLAN header adjustments List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f4aa407e89fe8961efe722a53ae463c25ef5ea20 Auto-Submitted: auto-generated The branch stable/14 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=f4aa407e89fe8961efe722a53ae463c25ef5ea20 commit f4aa407e89fe8961efe722a53ae463c25ef5ea20 Author: Bjoern A. Zeeb AuthorDate: 2025-03-15 00:30:38 +0000 Commit: Bjoern A. Zeeb CommitDate: 2025-04-18 14:36:00 +0000 LinuxKPI: 802.11: CONFIG_PM_SLEEP / WoWLAN header adjustments Sort out some (though not yet all) changes needed for CONFIG_PM_SLEEP and respectively WoWLAN support (so we can compile it in). This is just one further step towards proper suspend/resume support. Sponsored by: The FreeBSD Foundation (cherry picked from commit b42c339c59fd00f2d97f6854b17b54b340019d0c) --- .../linuxkpi/common/include/linux/ieee80211.h | 7 ++++++ sys/compat/linuxkpi/common/include/net/cfg80211.h | 26 +++++++++++++++++----- sys/compat/linuxkpi/common/include/net/mac80211.h | 16 +++++++++---- 3 files changed, 40 insertions(+), 9 deletions(-) diff --git a/sys/compat/linuxkpi/common/include/linux/ieee80211.h b/sys/compat/linuxkpi/common/include/linux/ieee80211.h index 964fd970ecf0..efac2a26e27e 100644 --- a/sys/compat/linuxkpi/common/include/linux/ieee80211.h +++ b/sys/compat/linuxkpi/common/include/linux/ieee80211.h @@ -147,6 +147,7 @@ enum ieee80211_key_len { WLAN_KEY_LEN_WEP104 = 13, WLAN_KEY_LEN_TKIP = 32, WLAN_KEY_LEN_CCMP = 16, + WLAN_KEY_LEN_CCMP_256 = 32, WLAN_KEY_LEN_GCMP = 16, WLAN_KEY_LEN_AES_CMAC = 16, WLAN_KEY_LEN_GCMP_256 = 32, @@ -507,6 +508,12 @@ struct ieee80211_mgmt { uint16_t capab_info; uint8_t variable[0]; } beacon; + /* 9.3.3.5 Association Request frame format */ + struct { + uint16_t capab_info; + uint16_t listen_interval; + uint8_t variable[0]; + } assoc_req; /* 9.3.3.10 Probe Request frame format */ struct { uint8_t variable[0]; diff --git a/sys/compat/linuxkpi/common/include/net/cfg80211.h b/sys/compat/linuxkpi/common/include/net/cfg80211.h index 3454b58f1db7..2cdb96ffccdf 100644 --- a/sys/compat/linuxkpi/common/include/net/cfg80211.h +++ b/sys/compat/linuxkpi/common/include/net/cfg80211.h @@ -1033,9 +1033,12 @@ struct cfg80211_wowlan_nd_info { enum wiphy_wowlan_support_flags { WIPHY_WOWLAN_DISCONNECT, - WIPHY_WOWLAN_GTK_REKEY_FAILURE, WIPHY_WOWLAN_MAGIC_PKT, WIPHY_WOWLAN_SUPPORTS_GTK_REKEY, + WIPHY_WOWLAN_GTK_REKEY_FAILURE, + WIPHY_WOWLAN_EAP_IDENTITY_REQ, + WIPHY_WOWLAN_4WAY_HANDSHAKE, + WIPHY_WOWLAN_RFKILL_RELEASE, WIPHY_WOWLAN_NET_DETECT, }; @@ -1049,6 +1052,7 @@ struct cfg80211_wowlan_wakeup { /* XXX TODO */ uint16_t pattern_idx; bool disconnect; + bool unprot_deauth_disassoc; bool eap_identity_req; bool four_way_handshake; bool gtk_rekey_failure; @@ -1066,11 +1070,22 @@ struct cfg80211_wowlan_wakeup { struct cfg80211_wowlan { /* XXX TODO */ - int disconnect, gtk_rekey_failure, magic_pkt; - int eap_identity_req, four_way_handshake, rfkill_release, tcp, any; + bool any; + bool disconnect; + bool magic_pkt; + bool gtk_rekey_failure; + bool eap_identity_req; + bool four_way_handshake; + bool rfkill_release; + + /* Magic packet patterns. */ int n_patterns; - struct cfg80211_sched_scan_request *nd_config; struct cfg80211_pkt_pattern *patterns; + + /* netdetect? if not assoc? */ + struct cfg80211_sched_scan_request *nd_config; + + void *tcp; /* XXX ? */ }; struct cfg80211_gtk_rekey_data { @@ -1244,7 +1259,8 @@ struct wiphy { unsigned long ext_features[BITS_TO_LONGS(NUM_NL80211_EXT_FEATURES)]; struct dentry *debugfsdir; - struct cfg80211_wowlan_support *wowlan; + const struct wiphy_wowlan_support *wowlan; + struct cfg80211_wowlan *wowlan_config; /* Lower layer (driver/mac80211) specific data. */ /* Must stay last. */ uint8_t priv[0] __aligned(CACHE_LINE_SIZE); diff --git a/sys/compat/linuxkpi/common/include/net/mac80211.h b/sys/compat/linuxkpi/common/include/net/mac80211.h index baac9fe67fdd..5c155a4c1cc8 100644 --- a/sys/compat/linuxkpi/common/include/net/mac80211.h +++ b/sys/compat/linuxkpi/common/include/net/mac80211.h @@ -42,6 +42,7 @@ #include #include #include +#include #define ARPHRD_IEEE80211_RADIOTAP __LINE__ /* XXX TODO brcmfmac */ @@ -1075,9 +1076,7 @@ struct ieee80211_ops { int (*set_tim)(struct ieee80211_hw *, struct ieee80211_sta *, bool); int (*set_key)(struct ieee80211_hw *, enum set_key_cmd, struct ieee80211_vif *, struct ieee80211_sta *, struct ieee80211_key_conf *); - void (*set_default_unicast_key)(struct ieee80211_hw *, struct ieee80211_vif *, int); void (*update_tkip_key)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_key_conf *, struct ieee80211_sta *, u32, u16 *); - void (*set_rekey_data)(struct ieee80211_hw *, struct ieee80211_vif *, struct cfg80211_gtk_rekey_data *); int (*start_pmsr)(struct ieee80211_hw *, struct ieee80211_vif *, struct cfg80211_pmsr_request *); void (*abort_pmsr)(struct ieee80211_hw *, struct ieee80211_vif *, struct cfg80211_pmsr_request *); @@ -1121,9 +1120,18 @@ struct ieee80211_ops { void (*link_sta_add_debugfs)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_link_sta *, struct dentry *); void (*link_add_debugfs)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_bss_conf *, struct dentry *); /* #endif */ +/* #ifdef CONFIG_PM_SLEEP */ /* Do not change depending on compile-time option. */ + int (*suspend)(struct ieee80211_hw *, struct cfg80211_wowlan *); + int (*resume)(struct ieee80211_hw *); + void (*set_wakeup)(struct ieee80211_hw *, bool); + void (*set_rekey_data)(struct ieee80211_hw *, struct ieee80211_vif *, struct cfg80211_gtk_rekey_data *); + void (*set_default_unicast_key)(struct ieee80211_hw *, struct ieee80211_vif *, int); +/* #if IS_ENABLED(CONFIG_IPV6) */ + void (*ipv6_addr_change)(struct ieee80211_hw *, struct ieee80211_vif *, struct inet6_dev *); +/* #endif */ +/* #endif CONFIG_PM_SLEEP */ }; - /* -------------------------------------------------------------------------- */ /* linux_80211.c */ @@ -2411,7 +2419,7 @@ ieee80211_get_tkip_p1k_iv(struct ieee80211_key_conf *key, static __inline struct ieee80211_key_conf * ieee80211_gtk_rekey_add(struct ieee80211_vif *vif, - struct ieee80211_key_conf *key) + struct ieee80211_key_conf *key, int link_id) { TODO(); return (NULL);