1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Fundamental types and constants relating to WPA 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (C) 2020, Broadcom. 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Unless you and Broadcom execute a separate written software license 7*4882a593Smuzhiyun * agreement governing use of this software, this software is licensed to you 8*4882a593Smuzhiyun * under the terms of the GNU General Public License version 2 (the "GPL"), 9*4882a593Smuzhiyun * available at http://www.broadcom.com/licenses/GPLv2.php, with the 10*4882a593Smuzhiyun * following added to such license: 11*4882a593Smuzhiyun * 12*4882a593Smuzhiyun * As a special exception, the copyright holders of this software give you 13*4882a593Smuzhiyun * permission to link this software with independent modules, and to copy and 14*4882a593Smuzhiyun * distribute the resulting executable under terms of your choice, provided that 15*4882a593Smuzhiyun * you also meet, for each linked independent module, the terms and conditions of 16*4882a593Smuzhiyun * the license of that module. An independent module is a module which is not 17*4882a593Smuzhiyun * derived from this software. The special exception does not apply to any 18*4882a593Smuzhiyun * modifications of the software. 19*4882a593Smuzhiyun * 20*4882a593Smuzhiyun * 21*4882a593Smuzhiyun * <<Broadcom-WL-IPTag/Dual:>> 22*4882a593Smuzhiyun */ 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun #ifndef _proto_wpa_h_ 25*4882a593Smuzhiyun #define _proto_wpa_h_ 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun #include <typedefs.h> 28*4882a593Smuzhiyun #include <ethernet.h> 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun /* This marks the start of a packed structure section. */ 31*4882a593Smuzhiyun #include <packed_section_start.h> 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun /* Reason Codes */ 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun /* 13 through 23 taken from IEEE Std 802.11i-2004 */ 36*4882a593Smuzhiyun #define DOT11_RC_INVALID_WPA_IE 13 /* Invalid info. element */ 37*4882a593Smuzhiyun #define DOT11_RC_MIC_FAILURE 14 /* Michael failure */ 38*4882a593Smuzhiyun #define DOT11_RC_4WH_TIMEOUT 15 /* 4-way handshake timeout */ 39*4882a593Smuzhiyun #define DOT11_RC_GTK_UPDATE_TIMEOUT 16 /* Group key update timeout */ 40*4882a593Smuzhiyun #define DOT11_RC_WPA_IE_MISMATCH 17 /* WPA IE in 4-way handshake differs from 41*4882a593Smuzhiyun * (re-)assoc. request/probe response 42*4882a593Smuzhiyun */ 43*4882a593Smuzhiyun #define DOT11_RC_INVALID_MC_CIPHER 18 /* Invalid multicast cipher */ 44*4882a593Smuzhiyun #define DOT11_RC_INVALID_UC_CIPHER 19 /* Invalid unicast cipher */ 45*4882a593Smuzhiyun #define DOT11_RC_INVALID_AKMP 20 /* Invalid authenticated key management protocol */ 46*4882a593Smuzhiyun #define DOT11_RC_BAD_WPA_VERSION 21 /* Unsupported WPA version */ 47*4882a593Smuzhiyun #define DOT11_RC_INVALID_WPA_CAP 22 /* Invalid WPA IE capabilities */ 48*4882a593Smuzhiyun #define DOT11_RC_8021X_AUTH_FAIL 23 /* 802.1X authentication failure */ 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun #define WPA2_PMKID_LEN 16 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun /* WPA IE fixed portion */ 53*4882a593Smuzhiyun typedef BWL_PRE_PACKED_STRUCT struct 54*4882a593Smuzhiyun { 55*4882a593Smuzhiyun uint8 tag; /* TAG */ 56*4882a593Smuzhiyun uint8 length; /* TAG length */ 57*4882a593Smuzhiyun uint8 oui[3]; /* IE OUI */ 58*4882a593Smuzhiyun uint8 oui_type; /* OUI type */ 59*4882a593Smuzhiyun BWL_PRE_PACKED_STRUCT struct { 60*4882a593Smuzhiyun uint8 low; 61*4882a593Smuzhiyun uint8 high; 62*4882a593Smuzhiyun } BWL_POST_PACKED_STRUCT version; /* IE version */ 63*4882a593Smuzhiyun } BWL_POST_PACKED_STRUCT wpa_ie_fixed_t; 64*4882a593Smuzhiyun #define WPA_IE_OUITYPE_LEN 4 65*4882a593Smuzhiyun #define WPA_IE_FIXED_LEN 8 66*4882a593Smuzhiyun #define WPA_IE_TAG_FIXED_LEN 6 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun #define BIP_OUI_TYPE WPA2_OUI "\x06" 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun typedef BWL_PRE_PACKED_STRUCT struct { 71*4882a593Smuzhiyun uint8 tag; /* TAG */ 72*4882a593Smuzhiyun uint8 length; /* TAG length */ 73*4882a593Smuzhiyun BWL_PRE_PACKED_STRUCT struct { 74*4882a593Smuzhiyun uint8 low; 75*4882a593Smuzhiyun uint8 high; 76*4882a593Smuzhiyun } BWL_POST_PACKED_STRUCT version; /* IE version */ 77*4882a593Smuzhiyun } BWL_POST_PACKED_STRUCT wpa_rsn_ie_fixed_t; 78*4882a593Smuzhiyun #define WPA_RSN_IE_FIXED_LEN 4 79*4882a593Smuzhiyun #define WPA_RSN_IE_TAG_FIXED_LEN 2 80*4882a593Smuzhiyun typedef uint8 wpa_pmkid_t[WPA2_PMKID_LEN]; 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun #define WFA_OSEN_IE_FIXED_LEN 6 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun /* WPA suite/multicast suite */ 85*4882a593Smuzhiyun typedef BWL_PRE_PACKED_STRUCT struct 86*4882a593Smuzhiyun { 87*4882a593Smuzhiyun uint8 oui[3]; 88*4882a593Smuzhiyun uint8 type; 89*4882a593Smuzhiyun } BWL_POST_PACKED_STRUCT wpa_suite_t, wpa_suite_mcast_t; 90*4882a593Smuzhiyun #define WPA_SUITE_LEN 4 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun /* WPA unicast suite list/key management suite list */ 93*4882a593Smuzhiyun typedef BWL_PRE_PACKED_STRUCT struct 94*4882a593Smuzhiyun { 95*4882a593Smuzhiyun BWL_PRE_PACKED_STRUCT struct { 96*4882a593Smuzhiyun uint8 low; 97*4882a593Smuzhiyun uint8 high; 98*4882a593Smuzhiyun } BWL_POST_PACKED_STRUCT count; 99*4882a593Smuzhiyun wpa_suite_t list[1]; 100*4882a593Smuzhiyun } BWL_POST_PACKED_STRUCT wpa_suite_ucast_t, wpa_suite_auth_key_mgmt_t; 101*4882a593Smuzhiyun #define WPA_IE_SUITE_COUNT_LEN 2 102*4882a593Smuzhiyun typedef BWL_PRE_PACKED_STRUCT struct 103*4882a593Smuzhiyun { 104*4882a593Smuzhiyun BWL_PRE_PACKED_STRUCT struct { 105*4882a593Smuzhiyun uint8 low; 106*4882a593Smuzhiyun uint8 high; 107*4882a593Smuzhiyun } BWL_POST_PACKED_STRUCT count; 108*4882a593Smuzhiyun wpa_pmkid_t list[1]; 109*4882a593Smuzhiyun } BWL_POST_PACKED_STRUCT wpa_pmkid_list_t; 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun /* WPA cipher suites */ 112*4882a593Smuzhiyun #define WPA_CIPHER_NONE 0 /* None */ 113*4882a593Smuzhiyun #define WPA_CIPHER_WEP_40 1 /* WEP (40-bit) */ 114*4882a593Smuzhiyun #define WPA_CIPHER_TKIP 2 /* TKIP: default for WPA */ 115*4882a593Smuzhiyun #define WPA_CIPHER_AES_OCB 3 /* AES (OCB) */ 116*4882a593Smuzhiyun #define WPA_CIPHER_AES_CCM 4 /* AES (CCM) */ 117*4882a593Smuzhiyun #define WPA_CIPHER_WEP_104 5 /* WEP (104-bit) */ 118*4882a593Smuzhiyun #define WPA_CIPHER_BIP 6 /* WEP (104-bit) */ 119*4882a593Smuzhiyun #define WPA_CIPHER_TPK 7 /* Group addressed traffic not allowed */ 120*4882a593Smuzhiyun #ifdef BCMCCX 121*4882a593Smuzhiyun #define WPA_CIPHER_CKIP 8 /* KP with no MIC */ 122*4882a593Smuzhiyun #define WPA_CIPHER_CKIP_MMH 9 /* KP with MIC ("CKIP/MMH", "CKIP+CMIC") */ 123*4882a593Smuzhiyun #define WPA_CIPHER_WEP_MMH 10 /* MIC with no KP ("WEP/MMH", "CMIC") */ 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun #define IS_CCX_CIPHER(cipher) ((cipher) == WPA_CIPHER_CKIP || \ 126*4882a593Smuzhiyun (cipher) == WPA_CIPHER_CKIP_MMH || \ 127*4882a593Smuzhiyun (cipher) == WPA_CIPHER_WEP_MMH) 128*4882a593Smuzhiyun #endif /* BCMCCX */ 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun #define WPA_CIPHER_AES_GCM 8 /* AES (GCM) */ 131*4882a593Smuzhiyun #define WPA_CIPHER_AES_GCM256 9 /* AES (GCM256) */ 132*4882a593Smuzhiyun #define WPA_CIPHER_CCMP_256 10 /* CCMP-256 */ 133*4882a593Smuzhiyun #define WPA_CIPHER_BIP_GMAC_128 11 /* BIP_GMAC_128 */ 134*4882a593Smuzhiyun #define WPA_CIPHER_BIP_GMAC_256 12 /* BIP_GMAC_256 */ 135*4882a593Smuzhiyun #define WPA_CIPHER_BIP_CMAC_256 13 /* BIP_CMAC_256 */ 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun #ifdef BCMWAPI_WAI 138*4882a593Smuzhiyun #define WAPI_CIPHER_NONE WPA_CIPHER_NONE 139*4882a593Smuzhiyun #define WAPI_CIPHER_SMS4 11 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun #define WAPI_CSE_WPI_SMS4 1 142*4882a593Smuzhiyun #endif /* BCMWAPI_WAI */ 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun #define IS_WPA_CIPHER(cipher) ((cipher) == WPA_CIPHER_NONE || \ 145*4882a593Smuzhiyun (cipher) == WPA_CIPHER_WEP_40 || \ 146*4882a593Smuzhiyun (cipher) == WPA_CIPHER_WEP_104 || \ 147*4882a593Smuzhiyun (cipher) == WPA_CIPHER_TKIP || \ 148*4882a593Smuzhiyun (cipher) == WPA_CIPHER_AES_OCB || \ 149*4882a593Smuzhiyun (cipher) == WPA_CIPHER_AES_CCM || \ 150*4882a593Smuzhiyun (cipher) == WPA_CIPHER_AES_GCM || \ 151*4882a593Smuzhiyun (cipher) == WPA_CIPHER_AES_GCM256 || \ 152*4882a593Smuzhiyun (cipher) == WPA_CIPHER_CCMP_256 || \ 153*4882a593Smuzhiyun (cipher) == WPA_CIPHER_TPK) 154*4882a593Smuzhiyun 155*4882a593Smuzhiyun #define IS_WPA_BIP_CIPHER(cipher) ((cipher) == WPA_CIPHER_BIP || \ 156*4882a593Smuzhiyun (cipher) == WPA_CIPHER_BIP_GMAC_128 || \ 157*4882a593Smuzhiyun (cipher) == WPA_CIPHER_BIP_GMAC_256 || \ 158*4882a593Smuzhiyun (cipher) == WPA_CIPHER_BIP_CMAC_256) 159*4882a593Smuzhiyun 160*4882a593Smuzhiyun #ifdef BCMWAPI_WAI 161*4882a593Smuzhiyun #define IS_WAPI_CIPHER(cipher) ((cipher) == WAPI_CIPHER_NONE || \ 162*4882a593Smuzhiyun (cipher) == WAPI_CSE_WPI_SMS4) 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun /* convert WAPI_CSE_WPI_XXX to WAPI_CIPHER_XXX */ 165*4882a593Smuzhiyun #define WAPI_CSE_WPI_2_CIPHER(cse) ((cse) == WAPI_CSE_WPI_SMS4 ? \ 166*4882a593Smuzhiyun WAPI_CIPHER_SMS4 : WAPI_CIPHER_NONE) 167*4882a593Smuzhiyun 168*4882a593Smuzhiyun #define WAPI_CIPHER_2_CSE_WPI(cipher) ((cipher) == WAPI_CIPHER_SMS4 ? \ 169*4882a593Smuzhiyun WAPI_CSE_WPI_SMS4 : WAPI_CIPHER_NONE) 170*4882a593Smuzhiyun #endif /* BCMWAPI_WAI */ 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun #define IS_VALID_AKM(akm) ((akm) == RSN_AKM_NONE || \ 173*4882a593Smuzhiyun (akm) == RSN_AKM_UNSPECIFIED || \ 174*4882a593Smuzhiyun (akm) == RSN_AKM_PSK || \ 175*4882a593Smuzhiyun (akm) == RSN_AKM_FBT_1X || \ 176*4882a593Smuzhiyun (akm) == RSN_AKM_FBT_PSK || \ 177*4882a593Smuzhiyun (akm) == RSN_AKM_MFP_1X || \ 178*4882a593Smuzhiyun (akm) == RSN_AKM_MFP_PSK || \ 179*4882a593Smuzhiyun (akm) == RSN_AKM_SHA256_1X || \ 180*4882a593Smuzhiyun (akm) == RSN_AKM_SHA256_PSK || \ 181*4882a593Smuzhiyun (akm) == RSN_AKM_TPK || \ 182*4882a593Smuzhiyun (akm) == RSN_AKM_SAE_PSK || \ 183*4882a593Smuzhiyun (akm) == RSN_AKM_SAE_FBT || \ 184*4882a593Smuzhiyun (akm) == RSN_AKM_FILS_SHA256 || \ 185*4882a593Smuzhiyun (akm) == RSN_AKM_FILS_SHA384 || \ 186*4882a593Smuzhiyun (akm) == RSN_AKM_OWE || \ 187*4882a593Smuzhiyun (akm) == RSN_AKM_SUITEB_SHA256_1X || \ 188*4882a593Smuzhiyun (akm) == RSN_AKM_SUITEB_SHA384_1X) 189*4882a593Smuzhiyun 190*4882a593Smuzhiyun #define IS_VALID_BIP_CIPHER(cipher) ((cipher) == WPA_CIPHER_BIP || \ 191*4882a593Smuzhiyun (cipher) == WPA_CIPHER_BIP_GMAC_128 || \ 192*4882a593Smuzhiyun (cipher) == WPA_CIPHER_BIP_GMAC_256 || \ 193*4882a593Smuzhiyun (cipher) == WPA_CIPHER_BIP_CMAC_256) 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun #define WPA_IS_FT_AKM(akm) ((akm) == RSN_AKM_FBT_SHA256 || \ 196*4882a593Smuzhiyun (akm) == RSN_AKM_FBT_SHA384) 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun #define WPA_IS_FILS_AKM(akm) ((akm) == RSN_AKM_FILS_SHA256 || \ 199*4882a593Smuzhiyun (akm) == RSN_AKM_FILS_SHA384) 200*4882a593Smuzhiyun 201*4882a593Smuzhiyun #define WPA_IS_FILS_FT_AKM(akm) ((akm) == RSN_AKM_FBT_SHA256_FILS || \ 202*4882a593Smuzhiyun (akm) == RSN_AKM_FBT_SHA384_FILS) 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun /* WPA TKIP countermeasures parameters */ 205*4882a593Smuzhiyun #define WPA_TKIP_CM_DETECT 60 /* multiple MIC failure window (seconds) */ 206*4882a593Smuzhiyun #define WPA_TKIP_CM_BLOCK 60 /* countermeasures active window (seconds) */ 207*4882a593Smuzhiyun 208*4882a593Smuzhiyun /* RSN IE defines */ 209*4882a593Smuzhiyun #define RSN_CAP_LEN 2 /* Length of RSN capabilities field (2 octets) */ 210*4882a593Smuzhiyun 211*4882a593Smuzhiyun /* RSN Capabilities defined in 802.11i */ 212*4882a593Smuzhiyun #define RSN_CAP_PREAUTH 0x0001 213*4882a593Smuzhiyun #define RSN_CAP_NOPAIRWISE 0x0002 214*4882a593Smuzhiyun #define RSN_CAP_PTK_REPLAY_CNTR_MASK 0x000C 215*4882a593Smuzhiyun #define RSN_CAP_PTK_REPLAY_CNTR_SHIFT 2 216*4882a593Smuzhiyun #define RSN_CAP_GTK_REPLAY_CNTR_MASK 0x0030 217*4882a593Smuzhiyun #define RSN_CAP_GTK_REPLAY_CNTR_SHIFT 4 218*4882a593Smuzhiyun #define RSN_CAP_1_REPLAY_CNTR 0 219*4882a593Smuzhiyun #define RSN_CAP_2_REPLAY_CNTRS 1 220*4882a593Smuzhiyun #define RSN_CAP_4_REPLAY_CNTRS 2 221*4882a593Smuzhiyun #define RSN_CAP_16_REPLAY_CNTRS 3 222*4882a593Smuzhiyun #define RSN_CAP_MFPR 0x0040 223*4882a593Smuzhiyun #define RSN_CAP_MFPC 0x0080 224*4882a593Smuzhiyun #define RSN_CAP_SPPC 0x0400 225*4882a593Smuzhiyun #define RSN_CAP_SPPR 0x0800 226*4882a593Smuzhiyun #define RSN_CAP_OCVC 0x4000 227*4882a593Smuzhiyun 228*4882a593Smuzhiyun /* WPA capabilities defined in 802.11i */ 229*4882a593Smuzhiyun #define WPA_CAP_4_REPLAY_CNTRS RSN_CAP_4_REPLAY_CNTRS 230*4882a593Smuzhiyun #define WPA_CAP_16_REPLAY_CNTRS RSN_CAP_16_REPLAY_CNTRS 231*4882a593Smuzhiyun #define WPA_CAP_REPLAY_CNTR_SHIFT RSN_CAP_PTK_REPLAY_CNTR_SHIFT 232*4882a593Smuzhiyun #define WPA_CAP_REPLAY_CNTR_MASK RSN_CAP_PTK_REPLAY_CNTR_MASK 233*4882a593Smuzhiyun 234*4882a593Smuzhiyun /* WPA capabilities defined in 802.11zD9.0 */ 235*4882a593Smuzhiyun #define WPA_CAP_PEER_KEY_ENABLE (0x1 << 1) /* bit 9 */ 236*4882a593Smuzhiyun 237*4882a593Smuzhiyun /* WPA Specific defines */ 238*4882a593Smuzhiyun #define WPA_CAP_LEN RSN_CAP_LEN /* Length of RSN capabilities in RSN IE (2 octets) */ 239*4882a593Smuzhiyun #define WPA_PMKID_CNT_LEN 2 /* Length of RSN PMKID count (2 octests) */ 240*4882a593Smuzhiyun 241*4882a593Smuzhiyun #define WPA_CAP_WPA2_PREAUTH RSN_CAP_PREAUTH 242*4882a593Smuzhiyun 243*4882a593Smuzhiyun #define WPA2_PMKID_COUNT_LEN 2 244*4882a593Smuzhiyun 245*4882a593Smuzhiyun /* RSN dev type in rsn_info struct */ 246*4882a593Smuzhiyun typedef enum { 247*4882a593Smuzhiyun DEV_NONE = 0, 248*4882a593Smuzhiyun DEV_STA = 1, 249*4882a593Smuzhiyun DEV_AP = 2 250*4882a593Smuzhiyun } device_type_t; 251*4882a593Smuzhiyun 252*4882a593Smuzhiyun typedef uint32 rsn_akm_mask_t; /* RSN_AKM_... see 802.11.h */ 253*4882a593Smuzhiyun typedef uint8 rsn_cipher_t; /* WPA_CIPHER_xxx */ 254*4882a593Smuzhiyun typedef uint32 rsn_ciphers_t; /* mask of rsn_cipher_t */ 255*4882a593Smuzhiyun typedef uint8 rsn_akm_t; 256*4882a593Smuzhiyun typedef uint8 auth_ie_type_mask_t; 257*4882a593Smuzhiyun 258*4882a593Smuzhiyun /* Old location for this structure. Moved to bcmwpa.h */ 259*4882a593Smuzhiyun #ifndef RSN_IE_INFO_STRUCT_RELOCATED 260*4882a593Smuzhiyun typedef struct rsn_ie_info { 261*4882a593Smuzhiyun uint8 version; 262*4882a593Smuzhiyun rsn_cipher_t g_cipher; 263*4882a593Smuzhiyun uint8 p_count; 264*4882a593Smuzhiyun uint8 akm_count; 265*4882a593Smuzhiyun uint8 pmkid_count; 266*4882a593Smuzhiyun rsn_akm_t sta_akm; /* single STA akm */ 267*4882a593Smuzhiyun uint16 caps; 268*4882a593Smuzhiyun rsn_ciphers_t p_ciphers; 269*4882a593Smuzhiyun rsn_akm_mask_t akms; 270*4882a593Smuzhiyun uint8 pmkids_offset; /* offset into the IE */ 271*4882a593Smuzhiyun rsn_cipher_t g_mgmt_cipher; 272*4882a593Smuzhiyun device_type_t dev_type; /* AP or STA */ 273*4882a593Smuzhiyun rsn_cipher_t sta_cipher; /* single STA cipher */ 274*4882a593Smuzhiyun uint16 key_desc; /* key descriptor version as STA */ 275*4882a593Smuzhiyun int parse_status; 276*4882a593Smuzhiyun uint16 mic_len; /* unused. keep for ROM compatibility. */ 277*4882a593Smuzhiyun auth_ie_type_mask_t auth_ie_type; /* bit field of WPA, WPA2 and (not yet) CCX WAPI */ 278*4882a593Smuzhiyun uint8 pmk_len; /* EAPOL PMK */ 279*4882a593Smuzhiyun uint8 kck_mic_len; /* EAPOL MIC (by KCK) */ 280*4882a593Smuzhiyun uint8 kck_len; /* EAPOL KCK */ 281*4882a593Smuzhiyun uint8 kek_len; /* EAPOL KEK */ 282*4882a593Smuzhiyun uint8 tk_len; /* EAPOL TK */ 283*4882a593Smuzhiyun uint8 ptk_len; /* EAPOL PTK */ 284*4882a593Smuzhiyun uint8 kck2_len; /* EAPOL KCK2 */ 285*4882a593Smuzhiyun uint8 kek2_len; /* EAPOL KEK2 */ 286*4882a593Smuzhiyun } rsn_ie_info_t; 287*4882a593Smuzhiyun #endif /* RSN_IE_INFO_STRUCT_RELOCATED */ 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun #ifdef BCMWAPI_WAI 290*4882a593Smuzhiyun #define WAPI_CAP_PREAUTH RSN_CAP_PREAUTH 291*4882a593Smuzhiyun 292*4882a593Smuzhiyun /* Other WAI definition */ 293*4882a593Smuzhiyun #define WAPI_WAI_REQUEST 0x00F1 294*4882a593Smuzhiyun #define WAPI_UNICAST_REKEY 0x00F2 295*4882a593Smuzhiyun #define WAPI_STA_AGING 0x00F3 296*4882a593Smuzhiyun #define WAPI_MUTIL_REKEY 0x00F4 297*4882a593Smuzhiyun #define WAPI_STA_STATS 0x00F5 298*4882a593Smuzhiyun 299*4882a593Smuzhiyun #define WAPI_USK_REKEY_COUNT 0x4000000 /* 0xA00000 */ 300*4882a593Smuzhiyun #define WAPI_MSK_REKEY_COUNT 0x4000000 /* 0xA00000 */ 301*4882a593Smuzhiyun #endif /* BCMWAPI_WAI */ 302*4882a593Smuzhiyun 303*4882a593Smuzhiyun /* This marks the end of a packed structure section. */ 304*4882a593Smuzhiyun #include <packed_section_end.h> 305*4882a593Smuzhiyun 306*4882a593Smuzhiyun #endif /* _proto_wpa_h_ */ 307