diff options
Diffstat (limited to 'include/linux/ieee80211.h')
| -rw-r--r-- | include/linux/ieee80211.h | 69 | 
1 files changed, 54 insertions, 15 deletions
| diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index 694264503119..11d7af260f20 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h @@ -1143,7 +1143,7 @@ struct ieee80211_mgmt {  			__le16 auth_transaction;  			__le16 status_code;  			/* possibly followed by Challenge text */ -			u8 variable[0]; +			u8 variable[];  		} __packed auth;  		struct {  			__le16 reason_code; @@ -1152,26 +1152,26 @@ struct ieee80211_mgmt {  			__le16 capab_info;  			__le16 listen_interval;  			/* followed by SSID and Supported rates */ -			u8 variable[0]; +			u8 variable[];  		} __packed assoc_req;  		struct {  			__le16 capab_info;  			__le16 status_code;  			__le16 aid;  			/* followed by Supported rates */ -			u8 variable[0]; +			u8 variable[];  		} __packed assoc_resp, reassoc_resp;  		struct {  			__le16 capab_info;  			__le16 status_code; -			u8 variable[0]; +			u8 variable[];  		} __packed s1g_assoc_resp, s1g_reassoc_resp;  		struct {  			__le16 capab_info;  			__le16 listen_interval;  			u8 current_ap[ETH_ALEN];  			/* followed by SSID and Supported rates */ -			u8 variable[0]; +			u8 variable[];  		} __packed reassoc_req;  		struct {  			__le16 reason_code; @@ -1182,11 +1182,11 @@ struct ieee80211_mgmt {  			__le16 capab_info;  			/* followed by some of SSID, Supported rates,  			 * FH Params, DS Params, CF Params, IBSS Params, TIM */ -			u8 variable[0]; +			u8 variable[];  		} __packed beacon;  		struct {  			/* only variable items: SSID, Supported rates */ -			u8 variable[0]; +			DECLARE_FLEX_ARRAY(u8, variable);  		} __packed probe_req;  		struct {  			__le64 timestamp; @@ -1194,7 +1194,7 @@ struct ieee80211_mgmt {  			__le16 capab_info;  			/* followed by some of SSID, Supported rates,  			 * FH Params, DS Params, CF Params, IBSS Params */ -			u8 variable[0]; +			u8 variable[];  		} __packed probe_resp;  		struct {  			u8 category; @@ -1203,16 +1203,16 @@ struct ieee80211_mgmt {  					u8 action_code;  					u8 dialog_token;  					u8 status_code; -					u8 variable[0]; +					u8 variable[];  				} __packed wme_action;  				struct{  					u8 action_code; -					u8 variable[0]; +					u8 variable[];  				} __packed chan_switch;  				struct{  					u8 action_code;  					struct ieee80211_ext_chansw_ie data; -					u8 variable[0]; +					u8 variable[];  				} __packed ext_chan_switch;  				struct{  					u8 action_code; @@ -1228,7 +1228,7 @@ struct ieee80211_mgmt {  					__le16 timeout;  					__le16 start_seq_num;  					/* followed by BA Extension */ -					u8 variable[0]; +					u8 variable[];  				} __packed addba_req;  				struct{  					u8 action_code; @@ -1244,11 +1244,11 @@ struct ieee80211_mgmt {  				} __packed delba;  				struct {  					u8 action_code; -					u8 variable[0]; +					u8 variable[];  				} __packed self_prot;  				struct{  					u8 action_code; -					u8 variable[0]; +					u8 variable[];  				} __packed mesh_action;  				struct {  					u8 action; @@ -1292,7 +1292,7 @@ struct ieee80211_mgmt {  					u8 toa[6];  					__le16 tod_error;  					__le16 toa_error; -					u8 variable[0]; +					u8 variable[];  				} __packed ftm;  				struct {  					u8 action_code; @@ -1988,6 +1988,44 @@ int ieee80211_get_vht_max_nss(struct ieee80211_vht_cap *cap,  			      int mcs, bool ext_nss_bw_capable,  			      unsigned int max_vht_nss); +/** + * enum ieee80211_ap_reg_power - regulatory power for a Access Point + * + * @IEEE80211_REG_UNSET_AP: Access Point has no regulatory power mode + * @IEEE80211_REG_LPI: Indoor Access Point + * @IEEE80211_REG_SP: Standard power Access Point + * @IEEE80211_REG_VLP: Very low power Access Point + * @IEEE80211_REG_AP_POWER_AFTER_LAST: internal + * @IEEE80211_REG_AP_POWER_MAX: maximum value + */ +enum ieee80211_ap_reg_power { +	IEEE80211_REG_UNSET_AP, +	IEEE80211_REG_LPI_AP, +	IEEE80211_REG_SP_AP, +	IEEE80211_REG_VLP_AP, +	IEEE80211_REG_AP_POWER_AFTER_LAST, +	IEEE80211_REG_AP_POWER_MAX = +		IEEE80211_REG_AP_POWER_AFTER_LAST - 1, +}; + +/** + * enum ieee80211_client_reg_power - regulatory power for a client + * + * @IEEE80211_REG_UNSET_CLIENT: Client has no regulatory power mode + * @IEEE80211_REG_DEFAULT_CLIENT: Default Client + * @IEEE80211_REG_SUBORDINATE_CLIENT: Subordinate Client + * @IEEE80211_REG_CLIENT_POWER_AFTER_LAST: internal + * @IEEE80211_REG_CLIENT_POWER_MAX: maximum value + */ +enum ieee80211_client_reg_power { +	IEEE80211_REG_UNSET_CLIENT, +	IEEE80211_REG_DEFAULT_CLIENT, +	IEEE80211_REG_SUBORDINATE_CLIENT, +	IEEE80211_REG_CLIENT_POWER_AFTER_LAST, +	IEEE80211_REG_CLIENT_POWER_MAX = +		IEEE80211_REG_CLIENT_POWER_AFTER_LAST - 1, +}; +  /* 802.11ax HE MAC capabilities */  #define IEEE80211_HE_MAC_CAP0_HTC_HE				0x01  #define IEEE80211_HE_MAC_CAP0_TWT_REQ				0x02 @@ -2084,6 +2122,7 @@ int ieee80211_get_vht_max_nss(struct ieee80211_vht_cap *cap,  #define IEEE80211_HE_VHT_MAX_AMPDU_FACTOR	20  #define IEEE80211_HE_HT_MAX_AMPDU_FACTOR	16 +#define IEEE80211_HE_6GHZ_MAX_AMPDU_FACTOR	13  /* 802.11ax HE PHY capabilities */  #define IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_IN_2G		0x02 |