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/evdev.h>
#include <trace/hooks/ipv4.h> #include <trace/hooks/ipv4.h>
#include <trace/hooks/signal.h> #include <trace/hooks/signal.h>
#include <trace/hooks/cfg80211.h>
/* /*
* Export tracepoints that act as a bare tracehook (ie: have no trace event * 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_mmc_attach_sd);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sdhci_get_cd); 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_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; const u8 *data;
unsigned int len; unsigned int len;
} vendor_elems; } 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; struct ieee80211_edmg edmg_cap;
u16 n_iftype_data; u16 n_iftype_data;
const struct ieee80211_sband_iftype_data *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; u16 vlan_id;
u32 cipher; u32 cipher;
enum nl80211_key_mode mode; 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; u32 center_freq2;
struct ieee80211_edmg edmg; struct ieee80211_edmg edmg;
u16 freq1_offset; 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; u8 sae_pwd_len;
enum nl80211_sae_pwe_mechanism sae_pwe; 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); ANDROID_KABI_RESERVE(1);
}; };
@ -1211,6 +1253,16 @@ struct cfg80211_beacon_data {
struct cfg80211_he_bss_color he_bss_color; struct cfg80211_he_bss_color he_bss_color;
bool he_bss_color_valid; 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); ANDROID_KABI_RESERVE(1);
}; };
@ -1339,6 +1391,18 @@ struct cfg80211_ap_settings {
struct cfg80211_unsol_bcast_probe_resp unsol_bcast_probe_resp; struct cfg80211_unsol_bcast_probe_resp unsol_bcast_probe_resp;
struct cfg80211_mbssid_config mbssid_config; 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); ANDROID_KABI_RESERVE(1);
}; };
@ -1370,6 +1434,12 @@ struct cfg80211_csa_settings {
bool block_tx; bool block_tx;
u8 count; u8 count;
ANDROID_BACKPORT_RESERVED(1);
ANDROID_BACKPORT_RESERVED(2);
ANDROID_VENDOR_DATA(1);
ANDROID_VENDOR_DATA(2);
ANDROID_KABI_RESERVE(1); ANDROID_KABI_RESERVE(1);
}; };
@ -1537,6 +1607,16 @@ struct station_parameters {
const struct ieee80211_eht_cap_elem *eht_capa; const struct ieee80211_eht_cap_elem *eht_capa;
u8 eht_capa_len; 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); ANDROID_KABI_RESERVE(1);
}; };
@ -1686,6 +1766,12 @@ struct rate_info {
u8 n_bonded_ch; u8 n_bonded_ch;
u8 eht_gi; u8 eht_gi;
u8 eht_ru_alloc; 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; 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); ANDROID_KABI_RESERVE(1);
}; };
@ -2415,6 +2511,16 @@ struct cfg80211_scan_request {
u32 n_6ghz_params; u32 n_6ghz_params;
struct cfg80211_scan_6ghz_params *scan_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); ANDROID_KABI_RESERVE(1);
/* keep last */ /* keep last */
@ -2563,6 +2669,16 @@ struct cfg80211_sched_scan_request {
bool nl_owner_dead; bool nl_owner_dead;
struct list_head list; 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); ANDROID_KABI_RESERVE(1);
/* keep last */ /* keep last */
@ -2611,6 +2727,12 @@ struct cfg80211_inform_bss {
u8 parent_bssid[ETH_ALEN] __aligned(2); u8 parent_bssid[ETH_ALEN] __aligned(2);
u8 chains; u8 chains;
s8 chain_signal[IEEE80211_MAX_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 bssid_index;
u8 max_bssid_indicator; 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); ANDROID_KABI_RESERVE(1);
u8 priv[] __aligned(sizeof(void *)); u8 priv[] __aligned(sizeof(void *));
@ -3037,6 +3169,18 @@ struct cfg80211_connect_params {
bool want_1x; bool want_1x;
struct ieee80211_edmg edmg; 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); ANDROID_KABI_RESERVE(1);
}; };
@ -3130,6 +3274,14 @@ struct cfg80211_pmksa {
const u8 *cache_id; const u8 *cache_id;
u32 pmk_lifetime; u32 pmk_lifetime;
u8 pmk_reauth_threshold; 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; const u8 *kek, *kck, *replay_ctr;
u32 akm; u32 akm;
u8 kek_len, kck_len; 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; bool dont_wait_for_ack;
int n_csa_offsets; int n_csa_offsets;
const u16 *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; unsigned int key_mgmt_suite;
u16 status; u16 status;
const u8 *pmkid; 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; u16 status;
const u8 *ie; const u8 *ie;
size_t ie_len; 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, int (*set_radar_background)(struct wiphy *wiphy,
struct cfg80211_chan_def *chandef); 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(1);
ANDROID_KABI_RESERVE(2); ANDROID_KABI_RESERVE(2);
ANDROID_KABI_RESERVE(3); ANDROID_KABI_RESERVE(3);
@ -4619,6 +4813,12 @@ enum wiphy_flags {
struct ieee80211_iface_limit { struct ieee80211_iface_limit {
u16 max; u16 max;
u16 types; 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. * combination must be greater or equal to this value.
*/ */
u32 beacon_int_min_gcd; 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 { struct ieee80211_txrx_stypes {
@ -5321,6 +5533,29 @@ struct wiphy {
u8 mbssid_max_interfaces; u8 mbssid_max_interfaces;
u8 ema_max_profile_periodicity; 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); ANDROID_KABI_RESERVE(1);
char priv[] __aligned(NETDEV_ALIGN); char priv[] __aligned(NETDEV_ALIGN);
@ -5682,6 +5917,18 @@ struct wireless_dev {
unsigned long unprot_beacon_reported; 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(1);
ANDROID_KABI_RESERVE(2); ANDROID_KABI_RESERVE(2);
}; };
@ -7196,6 +7443,12 @@ struct cfg80211_fils_resp_params {
const u8 *pmk; const u8 *pmk;
size_t pmk_len; size_t pmk_len;
const u8 *pmkid; 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; size_t resp_ie_len;
struct cfg80211_fils_resp_params fils; struct cfg80211_fils_resp_params fils;
enum nl80211_timeout_reason timeout_reason; 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; const u8 *resp_ie;
size_t resp_ie_len; size_t resp_ie_len;
struct cfg80211_fils_resp_params fils; 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 *target_ap;
const u8 *ric_ies; const u8 *ric_ies;
size_t ric_ies_len; 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_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 */ /* add new commands above here */
/* used to define NL80211_CMD_MAX below */ /* used to define NL80211_CMD_MAX below */
@ -3177,6 +3188,32 @@ enum nl80211_attrs {
NL80211_ATTR_DISABLE_EHT, 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 */ /* add attributes here, update the policy in nl80211.c */
__NL80211_ATTR_AFTER_LAST, __NL80211_ATTR_AFTER_LAST,
@ -3524,6 +3561,11 @@ enum nl80211_rate_info {
NL80211_RATE_INFO_EHT_NSS, NL80211_RATE_INFO_EHT_NSS,
NL80211_RATE_INFO_EHT_GI, NL80211_RATE_INFO_EHT_GI,
NL80211_RATE_INFO_EHT_RU_ALLOC, 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 */ /* keep last */
__NL80211_RATE_INFO_AFTER_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_SHORT_SLOT_TIME,
NL80211_STA_BSS_PARAM_DTIM_PERIOD, NL80211_STA_BSS_PARAM_DTIM_PERIOD,
NL80211_STA_BSS_PARAM_BEACON_INTERVAL, 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 */ /* keep last */
__NL80211_STA_BSS_PARAM_AFTER_LAST, __NL80211_STA_BSS_PARAM_AFTER_LAST,
@ -3688,6 +3733,11 @@ enum nl80211_sta_info {
NL80211_STA_INFO_AIRTIME_LINK_METRIC, NL80211_STA_INFO_AIRTIME_LINK_METRIC,
NL80211_STA_INFO_ASSOC_AT_BOOTTIME, NL80211_STA_INFO_ASSOC_AT_BOOTTIME,
NL80211_STA_INFO_CONNECTED_TO_AS, 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 */ /* keep last */
__NL80211_STA_INFO_AFTER_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_PHY,
NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET, NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET,
NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE, 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 */ /* keep last */
__NL80211_BAND_IFTYPE_ATTR_AFTER_LAST, __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
@ -3912,6 +3967,10 @@ enum nl80211_band_attr {
NL80211_BAND_ATTR_EDMG_CHANNELS, NL80211_BAND_ATTR_EDMG_CHANNELS,
NL80211_BAND_ATTR_EDMG_BW_CONFIG, 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 */ /* keep last */
__NL80211_BAND_ATTR_AFTER_LAST, __NL80211_BAND_ATTR_AFTER_LAST,
NL80211_BAND_ATTR_MAX = __NL80211_BAND_ATTR_AFTER_LAST - 1 NL80211_BAND_ATTR_MAX = __NL80211_BAND_ATTR_AFTER_LAST - 1
@ -4878,6 +4937,11 @@ enum nl80211_bss {
NL80211_BSS_PARENT_BSSID, NL80211_BSS_PARENT_BSSID,
NL80211_BSS_CHAIN_SIGNAL, NL80211_BSS_CHAIN_SIGNAL,
NL80211_BSS_FREQUENCY_OFFSET, 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 */ /* keep last */
__NL80211_BSS_AFTER_LAST, __NL80211_BSS_AFTER_LAST,
@ -5023,6 +5087,11 @@ enum nl80211_key_attributes {
NL80211_KEY_DEFAULT_TYPES, NL80211_KEY_DEFAULT_TYPES,
NL80211_KEY_MODE, NL80211_KEY_MODE,
NL80211_KEY_DEFAULT_BEACON, 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 */ /* keep last */
__NL80211_KEY_AFTER_LAST, __NL80211_KEY_AFTER_LAST,
@ -5057,6 +5126,11 @@ enum nl80211_tx_rate_attributes {
NL80211_TXRATE_HE, NL80211_TXRATE_HE,
NL80211_TXRATE_HE_GI, NL80211_TXRATE_HE_GI,
NL80211_TXRATE_HE_LTF, 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 */ /* keep last */
__NL80211_TXRATE_AFTER_LAST, __NL80211_TXRATE_AFTER_LAST,
@ -6241,6 +6315,16 @@ enum nl80211_ext_feature_index {
NL80211_EXT_FEATURE_BSS_COLOR, NL80211_EXT_FEATURE_BSS_COLOR,
NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD, NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD,
NL80211_EXT_FEATURE_RADAR_BACKGROUND, 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 */ /* add new features before the definition below */
NUM_NL80211_EXT_FEATURES, NUM_NL80211_EXT_FEATURES,
@ -6545,6 +6629,9 @@ enum nl80211_tdls_peer_capability {
NL80211_TDLS_PEER_VHT = 1<<1, NL80211_TDLS_PEER_VHT = 1<<1,
NL80211_TDLS_PEER_WMM = 1<<2, NL80211_TDLS_PEER_WMM = 1<<2,
NL80211_TDLS_PEER_HE = 1<<3, 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 */ .name = NL80211_GENL_NAME, /* have users key off the name instead */
.hdrsize = 0, /* no private header */ .hdrsize = 0, /* no private header */
.version = 1, /* no particular meaning now */ .version = 1, /* no particular meaning now */
.maxattr = NL80211_ATTR_MAX, .maxattr = NL80211_ATTR_DISABLE_EHT,
.policy = nl80211_policy, .policy = nl80211_policy,
.netnsok = true, .netnsok = true,
.pre_doit = nl80211_pre_doit, .pre_doit = nl80211_pre_doit,