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 <quic_vjakkam@quicinc.com>
This commit is contained in:
Veerendranath Jakkam 2022-06-06 08:46:09 +05:30 committed by Carlos Llamas
parent 3dc56c75d2
commit bee631cec5
5 changed files with 395 additions and 1 deletions

View File

@ -67,6 +67,7 @@
#include <trace/hooks/evdev.h>
#include <trace/hooks/ipv4.h>
#include <trace/hooks/signal.h>
#include <trace/hooks/cfg80211.h>
/*
* 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);

View File

@ -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);
};
/**

View File

@ -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 <trace/hooks/vendor_hooks.h>
#include <net/cfg80211.h>
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 <trace/define_trace.h>

View File

@ -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,
};
/**

View File

@ -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,