From bee631cec56aa227389a6003fe6148f3551d9e39 Mon Sep 17 00:00:00 2001 From: Veerendranath Jakkam Date: Mon, 6 Jun 2022 08:46:09 +0530 Subject: [PATCH] ANDROID: nl80211/cfg80211: Add support to do API changes after GKI freeze Reserve sufficient nl80211 attributes in enum nl80211_commands and enum nl80211_attr to backport upstream UAPI changes. Reserve data fields for upstream backport changes and vendor hooks. Also, add vendor hooks to set/get additional info from driver based on the cfg80211 current context. These APIs can be used to configure/fetch data of the new params added in upstream cfg80211_op calls. Ex: upstream kernel added a new param to existing cfg80211_op "add_key()". The addtional param info added in the upstream kernel can be configured using "android_vh_cfg80211_set_context" before calling "add_key". Bug: 233387627 Change-Id: I99f696ad291ae5965fc6d91bf565cc0c9d423dd5 Signed-off-by: Veerendranath Jakkam --- drivers/android/vendor_hooks.c | 3 + include/net/cfg80211.h | 279 +++++++++++++++++++++++++++++++++ include/trace/hooks/cfg80211.h | 25 +++ include/uapi/linux/nl80211.h | 87 ++++++++++ net/wireless/nl80211.c | 2 +- 5 files changed, 395 insertions(+), 1 deletion(-) create mode 100644 include/trace/hooks/cfg80211.h diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index b6ddaaa58149..25dbae018f86 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -67,6 +67,7 @@ #include #include #include +#include /* * Export tracepoints that act as a bare tracehook (ie: have no trace event @@ -370,3 +371,5 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sd_update_bus_speed_mode); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmc_attach_sd); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sdhci_get_cd); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmc_gpio_cd_irqt); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cfg80211_set_context); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cfg80211_get_context); diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 2ae04b0d1680..590d5df2db5c 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -434,6 +434,16 @@ struct ieee80211_sband_iftype_data { const u8 *data; unsigned int len; } vendor_elems; + + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + ANDROID_BACKPORT_RESERVED(4); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); + ANDROID_VENDOR_DATA(4); }; /** @@ -543,6 +553,16 @@ struct ieee80211_supported_band { struct ieee80211_edmg edmg_cap; u16 n_iftype_data; const struct ieee80211_sband_iftype_data *iftype_data; + + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + ANDROID_BACKPORT_RESERVED(4); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); + ANDROID_VENDOR_DATA(4); }; /** @@ -729,6 +749,12 @@ struct key_params { u16 vlan_id; u32 cipher; enum nl80211_key_mode mode; + + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); }; /** @@ -751,6 +777,16 @@ struct cfg80211_chan_def { u32 center_freq2; struct ieee80211_edmg edmg; u16 freq1_offset; + + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + ANDROID_BACKPORT_RESERVED(4); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); + ANDROID_VENDOR_DATA(4); }; /* @@ -1126,6 +1162,12 @@ struct cfg80211_crypto_settings { u8 sae_pwd_len; enum nl80211_sae_pwe_mechanism sae_pwe; + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_KABI_RESERVE(1); }; @@ -1211,6 +1253,16 @@ struct cfg80211_beacon_data { struct cfg80211_he_bss_color he_bss_color; bool he_bss_color_valid; + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + ANDROID_BACKPORT_RESERVED(4); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); + ANDROID_VENDOR_DATA(4); + ANDROID_KABI_RESERVE(1); }; @@ -1339,6 +1391,18 @@ struct cfg80211_ap_settings { struct cfg80211_unsol_bcast_probe_resp unsol_bcast_probe_resp; struct cfg80211_mbssid_config mbssid_config; + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + ANDROID_BACKPORT_RESERVED(4); + ANDROID_BACKPORT_RESERVED(5); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); + ANDROID_VENDOR_DATA(4); + ANDROID_VENDOR_DATA(5); + ANDROID_KABI_RESERVE(1); }; @@ -1370,6 +1434,12 @@ struct cfg80211_csa_settings { bool block_tx; u8 count; + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_KABI_RESERVE(1); }; @@ -1537,6 +1607,16 @@ struct station_parameters { const struct ieee80211_eht_cap_elem *eht_capa; u8 eht_capa_len; + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + ANDROID_BACKPORT_RESERVED(4); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); + ANDROID_VENDOR_DATA(4); + ANDROID_KABI_RESERVE(1); }; @@ -1686,6 +1766,12 @@ struct rate_info { u8 n_bonded_ch; u8 eht_gi; u8 eht_ru_alloc; + + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); }; /** @@ -1898,6 +1984,16 @@ struct station_info { u8 connected_to_as; + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + ANDROID_BACKPORT_RESERVED(4); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); + ANDROID_VENDOR_DATA(4); + ANDROID_KABI_RESERVE(1); }; @@ -2415,6 +2511,16 @@ struct cfg80211_scan_request { u32 n_6ghz_params; struct cfg80211_scan_6ghz_params *scan_6ghz_params; + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + ANDROID_BACKPORT_RESERVED(4); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); + ANDROID_VENDOR_DATA(4); + ANDROID_KABI_RESERVE(1); /* keep last */ @@ -2563,6 +2669,16 @@ struct cfg80211_sched_scan_request { bool nl_owner_dead; struct list_head list; + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + ANDROID_BACKPORT_RESERVED(4); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); + ANDROID_VENDOR_DATA(4); + ANDROID_KABI_RESERVE(1); /* keep last */ @@ -2611,6 +2727,12 @@ struct cfg80211_inform_bss { u8 parent_bssid[ETH_ALEN] __aligned(2); u8 chains; s8 chain_signal[IEEE80211_MAX_CHAINS]; + + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); }; /** @@ -2688,6 +2810,16 @@ struct cfg80211_bss { u8 bssid_index; u8 max_bssid_indicator; + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + ANDROID_BACKPORT_RESERVED(4); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); + ANDROID_VENDOR_DATA(4); + ANDROID_KABI_RESERVE(1); u8 priv[] __aligned(sizeof(void *)); @@ -3037,6 +3169,18 @@ struct cfg80211_connect_params { bool want_1x; struct ieee80211_edmg edmg; + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + ANDROID_BACKPORT_RESERVED(4); + ANDROID_BACKPORT_RESERVED(5); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); + ANDROID_VENDOR_DATA(4); + ANDROID_VENDOR_DATA(5); + ANDROID_KABI_RESERVE(1); }; @@ -3130,6 +3274,14 @@ struct cfg80211_pmksa { const u8 *cache_id; u32 pmk_lifetime; u8 pmk_reauth_threshold; + + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); }; /** @@ -3315,6 +3467,14 @@ struct cfg80211_gtk_rekey_data { const u8 *kek, *kck, *replay_ctr; u32 akm; u8 kek_len, kck_len; + + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); }; /** @@ -3357,6 +3517,12 @@ struct cfg80211_mgmt_tx_params { bool dont_wait_for_ack; int n_csa_offsets; const u16 *csa_offsets; + + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); }; /** @@ -3543,6 +3709,14 @@ struct cfg80211_external_auth_params { unsigned int key_mgmt_suite; u16 status; const u8 *pmkid; + + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); }; /** @@ -3804,6 +3978,14 @@ struct cfg80211_update_owe_info { u16 status; const u8 *ie; size_t ie_len; + + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); }; /** @@ -4528,6 +4710,18 @@ struct cfg80211_ops { int (*set_radar_background)(struct wiphy *wiphy, struct cfg80211_chan_def *chandef); + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + ANDROID_BACKPORT_RESERVED(4); + ANDROID_BACKPORT_RESERVED(5); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); + ANDROID_VENDOR_DATA(4); + ANDROID_VENDOR_DATA(5); + ANDROID_KABI_RESERVE(1); ANDROID_KABI_RESERVE(2); ANDROID_KABI_RESERVE(3); @@ -4619,6 +4813,12 @@ enum wiphy_flags { struct ieee80211_iface_limit { u16 max; u16 types; + + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); }; /** @@ -4736,6 +4936,18 @@ struct ieee80211_iface_combination { * combination must be greater or equal to this value. */ u32 beacon_int_min_gcd; + + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + ANDROID_BACKPORT_RESERVED(4); + + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); + ANDROID_VENDOR_DATA(4); + }; struct ieee80211_txrx_stypes { @@ -5321,6 +5533,29 @@ struct wiphy { u8 mbssid_max_interfaces; u8 ema_max_profile_periodicity; + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + ANDROID_BACKPORT_RESERVED(4); + ANDROID_BACKPORT_RESERVED(5); + ANDROID_BACKPORT_RESERVED(6); + ANDROID_BACKPORT_RESERVED(7); + ANDROID_BACKPORT_RESERVED(8); + ANDROID_BACKPORT_RESERVED(9); + ANDROID_BACKPORT_RESERVED(10); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); + ANDROID_VENDOR_DATA(4); + ANDROID_VENDOR_DATA(5); + ANDROID_VENDOR_DATA(6); + ANDROID_VENDOR_DATA(7); + ANDROID_VENDOR_DATA(8); + ANDROID_VENDOR_DATA(9); + ANDROID_VENDOR_DATA(10); + + ANDROID_KABI_RESERVE(1); char priv[] __aligned(NETDEV_ALIGN); @@ -5682,6 +5917,18 @@ struct wireless_dev { unsigned long unprot_beacon_reported; + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + ANDROID_BACKPORT_RESERVED(4); + ANDROID_BACKPORT_RESERVED(5); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); + ANDROID_VENDOR_DATA(4); + ANDROID_VENDOR_DATA(5); + ANDROID_KABI_RESERVE(1); ANDROID_KABI_RESERVE(2); }; @@ -7196,6 +7443,12 @@ struct cfg80211_fils_resp_params { const u8 *pmk; size_t pmk_len; const u8 *pmkid; + + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); }; /** @@ -7237,6 +7490,16 @@ struct cfg80211_connect_resp_params { size_t resp_ie_len; struct cfg80211_fils_resp_params fils; enum nl80211_timeout_reason timeout_reason; + + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + ANDROID_BACKPORT_RESERVED(4); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); + ANDROID_VENDOR_DATA(4); }; /** @@ -7396,6 +7659,16 @@ struct cfg80211_roam_info { const u8 *resp_ie; size_t resp_ie_len; struct cfg80211_fils_resp_params fils; + + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + ANDROID_BACKPORT_RESERVED(3); + ANDROID_BACKPORT_RESERVED(4); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); + ANDROID_VENDOR_DATA(3); + ANDROID_VENDOR_DATA(4); }; /** @@ -8055,6 +8328,12 @@ struct cfg80211_ft_event_params { const u8 *target_ap; const u8 *ric_ies; size_t ric_ies_len; + + ANDROID_BACKPORT_RESERVED(1); + ANDROID_BACKPORT_RESERVED(2); + + ANDROID_VENDOR_DATA(1); + ANDROID_VENDOR_DATA(2); }; /** diff --git a/include/trace/hooks/cfg80211.h b/include/trace/hooks/cfg80211.h new file mode 100644 index 000000000000..ccb31ccc29ac --- /dev/null +++ b/include/trace/hooks/cfg80211.h @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM cfg80211 + +#define TRACE_INCLUDE_PATH trace/hooks + +#if !defined(_TRACE_HOOK_CFG80211_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_HOOK_CFG80211_H + +#include +#include + +DECLARE_HOOK(android_vh_cfg80211_set_context, + TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, int context_id, + const void *data), + TP_ARGS(wiphy, wdev, context_id, data)); + +DECLARE_HOOK(android_vh_cfg80211_get_context, + TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, int context_id, + void *data, size_t max_data_len), + TP_ARGS(wiphy, wdev, context_id, data, max_data_len)); + +#endif /* _TRACE_HOOK_CFG80211_H */ +/* This part must be outside protection */ +#include diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h index 03c0a63ab13a..964bcbd3b692 100644 --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h @@ -1481,6 +1481,17 @@ enum nl80211_commands { NL80211_CMD_ASSOC_COMEBACK, + NL80211_CMD_RESERVED_DO_NOT_USE_1 = 148, + NL80211_CMD_RESERVED_DO_NOT_USE_2 = 149, + NL80211_CMD_RESERVED_DO_NOT_USE_3 = 150, + NL80211_CMD_RESERVED_DO_NOT_USE_4 = 151, + NL80211_CMD_RESERVED_DO_NOT_USE_5 = 152, + NL80211_CMD_RESERVED_DO_NOT_USE_6 = 153, + NL80211_CMD_RESERVED_DO_NOT_USE_7 = 154, + NL80211_CMD_RESERVED_DO_NOT_USE_8 = 155, + NL80211_CMD_RESERVED_DO_NOT_USE_9 = 156, + NL80211_CMD_RESERVED_DO_NOT_USE_10 = 157, + /* add new commands above here */ /* used to define NL80211_CMD_MAX below */ @@ -3177,6 +3188,32 @@ enum nl80211_attrs { NL80211_ATTR_DISABLE_EHT, + NL80211_ATTR_RESERVED_DO_NOT_USE_1 = 312, + NL80211_ATTR_RESERVED_DO_NOT_USE_2 = 313, + NL80211_ATTR_RESERVED_DO_NOT_USE_3 = 314, + NL80211_ATTR_RESERVED_DO_NOT_USE_4 = 315, + NL80211_ATTR_RESERVED_DO_NOT_USE_5 = 316, + NL80211_ATTR_RESERVED_DO_NOT_USE_6 = 317, + NL80211_ATTR_RESERVED_DO_NOT_USE_7 = 318, + NL80211_ATTR_RESERVED_DO_NOT_USE_8 = 319, + NL80211_ATTR_RESERVED_DO_NOT_USE_9 = 320, + NL80211_ATTR_RESERVED_DO_NOT_USE_10 = 321, + NL80211_ATTR_RESERVED_DO_NOT_USE_11 = 322, + NL80211_ATTR_RESERVED_DO_NOT_USE_12 = 323, + NL80211_ATTR_RESERVED_DO_NOT_USE_13 = 324, + NL80211_ATTR_RESERVED_DO_NOT_USE_14 = 325, + NL80211_ATTR_RESERVED_DO_NOT_USE_15 = 326, + NL80211_ATTR_RESERVED_DO_NOT_USE_16 = 327, + NL80211_ATTR_RESERVED_DO_NOT_USE_17 = 328, + NL80211_ATTR_RESERVED_DO_NOT_USE_18 = 329, + NL80211_ATTR_RESERVED_DO_NOT_USE_19 = 330, + NL80211_ATTR_RESERVED_DO_NOT_USE_20 = 331, + NL80211_ATTR_RESERVED_DO_NOT_USE_21 = 332, + NL80211_ATTR_RESERVED_DO_NOT_USE_22 = 333, + NL80211_ATTR_RESERVED_DO_NOT_USE_23 = 334, + NL80211_ATTR_RESERVED_DO_NOT_USE_24 = 335, + NL80211_ATTR_RESERVED_DO_NOT_USE_25 = 336, + /* add attributes here, update the policy in nl80211.c */ __NL80211_ATTR_AFTER_LAST, @@ -3524,6 +3561,11 @@ enum nl80211_rate_info { NL80211_RATE_INFO_EHT_NSS, NL80211_RATE_INFO_EHT_GI, NL80211_RATE_INFO_EHT_RU_ALLOC, + NL80211_RATE_INFO_RESERVED_DO_NOT_USE_1 = 23, + NL80211_RATE_INFO_RESERVED_DO_NOT_USE_2 = 24, + NL80211_RATE_INFO_RESERVED_DO_NOT_USE_3 = 25, + NL80211_RATE_INFO_RESERVED_DO_NOT_USE_4 = 26, + NL80211_RATE_INFO_RESERVED_DO_NOT_USE_5 = 27, /* keep last */ __NL80211_RATE_INFO_AFTER_LAST, @@ -3554,6 +3596,9 @@ enum nl80211_sta_bss_param { NL80211_STA_BSS_PARAM_SHORT_SLOT_TIME, NL80211_STA_BSS_PARAM_DTIM_PERIOD, NL80211_STA_BSS_PARAM_BEACON_INTERVAL, + NL80211_STA_BSS_PARAM_RESERVED_DO_NOT_USE_1 = 6, + NL80211_STA_BSS_PARAM_RESERVED_DO_NOT_USE_2 = 7, + NL80211_STA_BSS_PARAM_RESERVED_DO_NOT_USE_3 = 8, /* keep last */ __NL80211_STA_BSS_PARAM_AFTER_LAST, @@ -3688,6 +3733,11 @@ enum nl80211_sta_info { NL80211_STA_INFO_AIRTIME_LINK_METRIC, NL80211_STA_INFO_ASSOC_AT_BOOTTIME, NL80211_STA_INFO_CONNECTED_TO_AS, + NL80211_STA_INFO_RESERVED_DO_NOT_USE_1 = 44, + NL80211_STA_INFO_RESERVED_DO_NOT_USE_2 = 45, + NL80211_STA_INFO_RESERVED_DO_NOT_USE_3 = 46, + NL80211_STA_INFO_RESERVED_DO_NOT_USE_4 = 47, + NL80211_STA_INFO_RESERVED_DO_NOT_USE_5 = 48, /* keep last */ __NL80211_STA_INFO_AFTER_LAST, @@ -3863,6 +3913,11 @@ enum nl80211_band_iftype_attr { NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY, NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET, NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE, + NL80211_BAND_IFTYPE_ATTR_RESERVED_DO_NOT_USE_1 = 12, + NL80211_BAND_IFTYPE_ATTR_RESERVED_DO_NOT_USE_2 = 13, + NL80211_BAND_IFTYPE_ATTR_RESERVED_DO_NOT_USE_3 = 14, + NL80211_BAND_IFTYPE_ATTR_RESERVED_DO_NOT_USE_4 = 15, + NL80211_BAND_IFTYPE_ATTR_RESERVED_DO_NOT_USE_5 = 16, /* keep last */ __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST, @@ -3912,6 +3967,10 @@ enum nl80211_band_attr { NL80211_BAND_ATTR_EDMG_CHANNELS, NL80211_BAND_ATTR_EDMG_BW_CONFIG, + NL80211_BAND_ATTR_RESERVED_DO_NOT_USE_1 = 12, + NL80211_BAND_ATTR_RESERVED_DO_NOT_USE_2 = 13, + NL80211_BAND_ATTR_RESERVED_DO_NOT_USE_3 = 14, + /* keep last */ __NL80211_BAND_ATTR_AFTER_LAST, NL80211_BAND_ATTR_MAX = __NL80211_BAND_ATTR_AFTER_LAST - 1 @@ -4878,6 +4937,11 @@ enum nl80211_bss { NL80211_BSS_PARENT_BSSID, NL80211_BSS_CHAIN_SIGNAL, NL80211_BSS_FREQUENCY_OFFSET, + NL80211_BSS_RESERVED_DO_NOT_USE_1 = 21, + NL80211_BSS_RESERVED_DO_NOT_USE_2 = 22, + NL80211_BSS_RESERVED_DO_NOT_USE_3 = 23, + NL80211_BSS_RESERVED_DO_NOT_USE_4 = 24, + NL80211_BSS_RESERVED_DO_NOT_USE_5 = 25, /* keep last */ __NL80211_BSS_AFTER_LAST, @@ -5023,6 +5087,11 @@ enum nl80211_key_attributes { NL80211_KEY_DEFAULT_TYPES, NL80211_KEY_MODE, NL80211_KEY_DEFAULT_BEACON, + NL80211_KEY_RESERVED_DO_NOT_USE_1 = 11, + NL80211_KEY_RESERVED_DO_NOT_USE_2 = 12, + NL80211_KEY_RESERVED_DO_NOT_USE_3 = 13, + NL80211_KEY_RESERVED_DO_NOT_USE_4 = 14, + NL80211_KEY_RESERVED_DO_NOT_USE_5 = 15, /* keep last */ __NL80211_KEY_AFTER_LAST, @@ -5057,6 +5126,11 @@ enum nl80211_tx_rate_attributes { NL80211_TXRATE_HE, NL80211_TXRATE_HE_GI, NL80211_TXRATE_HE_LTF, + NL80211_TXRATE_RESERVED_DO_NOT_USE_1 = 8, + NL80211_TXRATE_RESERVED_DO_NOT_USE_2 = 9, + NL80211_TXRATE_RESERVED_DO_NOT_USE_3 = 10, + NL80211_TXRATE_RESERVED_DO_NOT_USE_4 = 11, + NL80211_TXRATE_RESERVED_DO_NOT_USE_5 = 12, /* keep last */ __NL80211_TXRATE_AFTER_LAST, @@ -6241,6 +6315,16 @@ enum nl80211_ext_feature_index { NL80211_EXT_FEATURE_BSS_COLOR, NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD, NL80211_EXT_FEATURE_RADAR_BACKGROUND, + NL80211_EXT_FEATURE_RESERVED_DO_NOT_USE_1 = 62, + NL80211_EXT_FEATURE_RESERVED_DO_NOT_USE_2 = 63, + NL80211_EXT_FEATURE_RESERVED_DO_NOT_USE_3 = 64, + NL80211_EXT_FEATURE_RESERVED_DO_NOT_USE_4 = 65, + NL80211_EXT_FEATURE_RESERVED_DO_NOT_USE_5 = 66, + NL80211_EXT_FEATURE_RESERVED_DO_NOT_USE_6 = 67, + NL80211_EXT_FEATURE_RESERVED_DO_NOT_USE_7 = 68, + NL80211_EXT_FEATURE_RESERVED_DO_NOT_USE_8 = 69, + NL80211_EXT_FEATURE_RESERVED_DO_NOT_USE_9 = 70, + NL80211_EXT_FEATURE_RESERVED_DO_NOT_USE_10 = 71, /* add new features before the definition below */ NUM_NL80211_EXT_FEATURES, @@ -6545,6 +6629,9 @@ enum nl80211_tdls_peer_capability { NL80211_TDLS_PEER_VHT = 1<<1, NL80211_TDLS_PEER_WMM = 1<<2, NL80211_TDLS_PEER_HE = 1<<3, + NL80211_TDLS_PEER_RESERVED_DO_NOT_USE_1 = 1<<4, + NL80211_TDLS_PEER_RESERVED_DO_NOT_USE_2 = 1<<5, + NL80211_TDLS_PEER_RESERVED_DO_NOT_USE_3 = 1<<6, }; /** diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index b29bb5f430e7..261d93b9f536 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -16347,7 +16347,7 @@ static struct genl_family nl80211_fam __ro_after_init = { .name = NL80211_GENL_NAME, /* have users key off the name instead */ .hdrsize = 0, /* no private header */ .version = 1, /* no particular meaning now */ - .maxattr = NL80211_ATTR_MAX, + .maxattr = NL80211_ATTR_DISABLE_EHT, .policy = nl80211_policy, .netnsok = true, .pre_doit = nl80211_pre_doit,