xref: /aosp_15_r20/external/iw/ieee80211.h (revision 92022041c981f431db0b590d0c3272306d0ea2a2)
1*92022041SSam Saccone #ifndef __IEEE80211
2*92022041SSam Saccone #define __IEEE80211
3*92022041SSam Saccone 
4*92022041SSam Saccone /* 802.11n HT capability AMPDU settings (for ampdu_params_info) */
5*92022041SSam Saccone #define IEEE80211_HT_AMPDU_PARM_FACTOR          0x03
6*92022041SSam Saccone #define IEEE80211_HT_AMPDU_PARM_DENSITY         0x1C
7*92022041SSam Saccone 
8*92022041SSam Saccone #define IEEE80211_HT_CAP_SUP_WIDTH_20_40        0x0002
9*92022041SSam Saccone #define IEEE80211_HT_CAP_SGI_40                 0x0040
10*92022041SSam Saccone #define IEEE80211_HT_CAP_MAX_AMSDU              0x0800
11*92022041SSam Saccone 
12*92022041SSam Saccone #define IEEE80211_HT_MCS_MASK_LEN               10
13*92022041SSam Saccone 
14*92022041SSam Saccone /**
15*92022041SSam Saccone  * struct ieee80211_mcs_info - MCS information
16*92022041SSam Saccone  * @rx_mask: RX mask
17*92022041SSam Saccone  * @rx_highest: highest supported RX rate. If set represents
18*92022041SSam Saccone  *      the highest supported RX data rate in units of 1 Mbps.
19*92022041SSam Saccone  *      If this field is 0 this value should not be used to
20*92022041SSam Saccone  *      consider the highest RX data rate supported.
21*92022041SSam Saccone  * @tx_params: TX parameters
22*92022041SSam Saccone  */
23*92022041SSam Saccone struct ieee80211_mcs_info {
24*92022041SSam Saccone 	__u8 rx_mask[IEEE80211_HT_MCS_MASK_LEN];
25*92022041SSam Saccone 	__u16 rx_highest;
26*92022041SSam Saccone 	__u8 tx_params;
27*92022041SSam Saccone 	__u8 reserved[3];
28*92022041SSam Saccone } __attribute__ ((packed));
29*92022041SSam Saccone 
30*92022041SSam Saccone 
31*92022041SSam Saccone /**
32*92022041SSam Saccone  * struct ieee80211_ht_cap - HT capabilities
33*92022041SSam Saccone  *
34*92022041SSam Saccone  * This structure is the "HT capabilities element" as
35*92022041SSam Saccone  * described in 802.11n D5.0 7.3.2.57
36*92022041SSam Saccone  */
37*92022041SSam Saccone struct ieee80211_ht_cap {
38*92022041SSam Saccone 	__u16 cap_info;
39*92022041SSam Saccone 	__u8 ampdu_params_info;
40*92022041SSam Saccone 
41*92022041SSam Saccone 	/* 16 bytes MCS information */
42*92022041SSam Saccone 	struct ieee80211_mcs_info mcs;
43*92022041SSam Saccone 
44*92022041SSam Saccone 	__u16 extended_ht_cap_info;
45*92022041SSam Saccone 	__u32 tx_BF_cap_info;
46*92022041SSam Saccone 	__u8 antenna_selection_info;
47*92022041SSam Saccone } __attribute__ ((packed));
48*92022041SSam Saccone 
49*92022041SSam Saccone struct ieee80211_vht_mcs_info {
50*92022041SSam Saccone 	__u16 rx_vht_mcs;
51*92022041SSam Saccone 	__u16 rx_highest;
52*92022041SSam Saccone 	__u16 tx_vht_mcs;
53*92022041SSam Saccone 	__u16 tx_highest;
54*92022041SSam Saccone } __attribute__ ((packed));
55*92022041SSam Saccone 
56*92022041SSam Saccone struct ieee80211_vht_cap {
57*92022041SSam Saccone 	__u32 cap_info;
58*92022041SSam Saccone 	struct ieee80211_vht_mcs_info mcs;
59*92022041SSam Saccone } __attribute__ ((packed));
60*92022041SSam Saccone 
61*92022041SSam Saccone #define SUITE(oui, id)  (((oui) << 8) | (id))
62*92022041SSam Saccone 
63*92022041SSam Saccone /* cipher suite selectors */
64*92022041SSam Saccone #define WLAN_CIPHER_SUITE_USE_GROUP     SUITE(0x000FAC, 0)
65*92022041SSam Saccone #define WLAN_CIPHER_SUITE_WEP40         SUITE(0x000FAC, 1)
66*92022041SSam Saccone #define WLAN_CIPHER_SUITE_TKIP          SUITE(0x000FAC, 2)
67*92022041SSam Saccone /* reserved:                            SUITE(0x000FAC, 3) */
68*92022041SSam Saccone #define WLAN_CIPHER_SUITE_CCMP          SUITE(0x000FAC, 4)
69*92022041SSam Saccone #define WLAN_CIPHER_SUITE_WEP104        SUITE(0x000FAC, 5)
70*92022041SSam Saccone #define WLAN_CIPHER_SUITE_AES_CMAC      SUITE(0x000FAC, 6)
71*92022041SSam Saccone #define WLAN_CIPHER_SUITE_GCMP          SUITE(0x000FAC, 8)
72*92022041SSam Saccone #define WLAN_CIPHER_SUITE_GCMP_256      SUITE(0x000FAC, 9)
73*92022041SSam Saccone #define WLAN_CIPHER_SUITE_CCMP_256      SUITE(0x000FAC, 10)
74*92022041SSam Saccone #define WLAN_CIPHER_SUITE_BIP_GMAC_128  SUITE(0x000FAC, 11)
75*92022041SSam Saccone #define WLAN_CIPHER_SUITE_BIP_GMAC_256  SUITE(0x000FAC, 12)
76*92022041SSam Saccone #define WLAN_CIPHER_SUITE_BIP_CMAC_256  SUITE(0x000FAC, 13)
77*92022041SSam Saccone 
78*92022041SSam Saccone #endif /* __IEEE80211 */
79