1 /* 2 * Copyright (c) 2010 Broadcom Corporation 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 11 * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 13 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 14 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 #ifndef _802_11_H_ 18 #define _802_11_H_ 19 20 #include <linux/if_ether.h> 21 22 #define DOT11_A3_HDR_LEN 24 23 #define DOT11_A4_HDR_LEN 30 24 #define DOT11_MAC_HDR_LEN DOT11_A3_HDR_LEN 25 #define DOT11_ICV_AES_LEN 8 26 #define DOT11_QOS_LEN 2 27 28 #define DOT11_IV_MAX_LEN 8 29 30 #define DOT11_DEFAULT_RTS_LEN 2347 31 32 #define DOT11_MIN_FRAG_LEN 256 33 #define DOT11_MAX_FRAG_LEN 2346 34 #define DOT11_DEFAULT_FRAG_LEN 2346 35 36 #define DOT11_MIN_BEACON_PERIOD 1 37 #define DOT11_MAX_BEACON_PERIOD 0xFFFF 38 39 #define DOT11_MIN_DTIM_PERIOD 1 40 #define DOT11_MAX_DTIM_PERIOD 0xFF 41 42 #define DOT11_OUI_LEN 3 43 44 #define DOT11_RTS_LEN 16 45 #define DOT11_CTS_LEN 10 46 #define DOT11_ACK_LEN 10 47 48 #define DOT11_BA_BITMAP_LEN 128 49 #define DOT11_BA_LEN 4 50 51 #define WME_OUI "\x00\x50\xf2" 52 #define WME_VER 1 53 #define WME_TYPE 2 54 #define WME_SUBTYPE_PARAM_IE 1 55 56 #define AC_BE 0 57 #define AC_BK 1 58 #define AC_VI 2 59 #define AC_VO 3 60 #define AC_COUNT 4 61 62 typedef u8 ac_bitmap_t; 63 64 #define AC_BITMAP_ALL 0xf 65 #define AC_BITMAP_TST(ab, ac) (((ab) & (1 << (ac))) != 0) 66 67 struct edcf_acparam { 68 u8 ACI; 69 u8 ECW; 70 u16 TXOP; 71 } __attribute__((packed)); 72 typedef struct edcf_acparam edcf_acparam_t; 73 74 struct wme_param_ie { 75 u8 oui[3]; 76 u8 type; 77 u8 subtype; 78 u8 version; 79 u8 qosinfo; 80 u8 rsvd; 81 edcf_acparam_t acparam[AC_COUNT]; 82 } __attribute__((packed)); 83 typedef struct wme_param_ie wme_param_ie_t; 84 #define WME_PARAM_IE_LEN 24 85 86 #define EDCF_AIFSN_MIN 1 87 #define EDCF_AIFSN_MAX 15 88 #define EDCF_AIFSN_MASK 0x0f 89 #define EDCF_ACM_MASK 0x10 90 #define EDCF_ACI_MASK 0x60 91 #define EDCF_ACI_SHIFT 5 92 93 #define EDCF_ECW2CW(exp) ((1 << (exp)) - 1) 94 #define EDCF_ECWMIN_MASK 0x0f 95 #define EDCF_ECWMAX_MASK 0xf0 96 #define EDCF_ECWMAX_SHIFT 4 97 98 #define EDCF_TXOP2USEC(txop) ((txop) << 5) 99 100 #define EDCF_AC_BE_ACI_STA 0x03 101 #define EDCF_AC_BE_ECW_STA 0xA4 102 #define EDCF_AC_BE_TXOP_STA 0x0000 103 #define EDCF_AC_BK_ACI_STA 0x27 104 #define EDCF_AC_BK_ECW_STA 0xA4 105 #define EDCF_AC_BK_TXOP_STA 0x0000 106 #define EDCF_AC_VI_ACI_STA 0x42 107 #define EDCF_AC_VI_ECW_STA 0x43 108 #define EDCF_AC_VI_TXOP_STA 0x005e 109 #define EDCF_AC_VO_ACI_STA 0x62 110 #define EDCF_AC_VO_ECW_STA 0x32 111 #define EDCF_AC_VO_TXOP_STA 0x002f 112 113 #define EDCF_AC_VO_TXOP_AP 0x002f 114 115 #define SEQNUM_SHIFT 4 116 #define SEQNUM_MAX 0x1000 117 #define FRAGNUM_MASK 0xF 118 119 #define DOT11_MNG_RSN_ID 48 120 #define DOT11_MNG_WPA_ID 221 121 #define DOT11_MNG_VS_ID 221 122 123 #define DOT11_BSSTYPE_INFRASTRUCTURE 0 124 #define DOT11_BSSTYPE_ANY 2 125 #define DOT11_SCANTYPE_ACTIVE 0 126 127 #define PREN_PREAMBLE 24 128 #define PREN_MM_EXT 12 129 #define PREN_PREAMBLE_EXT 4 130 131 #define RIFS_11N_TIME 2 132 133 #define APHY_SLOT_TIME 9 134 #define APHY_SIFS_TIME 16 135 #define APHY_PREAMBLE_TIME 16 136 #define APHY_SIGNAL_TIME 4 137 #define APHY_SYMBOL_TIME 4 138 #define APHY_SERVICE_NBITS 16 139 #define APHY_TAIL_NBITS 6 140 #define APHY_CWMIN 15 141 142 #define BPHY_SLOT_TIME 20 143 #define BPHY_SIFS_TIME 10 144 #define BPHY_PLCP_TIME 192 145 #define BPHY_PLCP_SHORT_TIME 96 146 147 #define DOT11_OFDM_SIGNAL_EXTENSION 6 148 149 #define PHY_CWMAX 1023 150 151 #define DOT11_MAXNUMFRAGS 16 152 153 typedef struct d11cnt { 154 u32 txfrag; 155 u32 txmulti; 156 u32 txfail; 157 u32 txretry; 158 u32 txretrie; 159 u32 rxdup; 160 u32 txrts; 161 u32 txnocts; 162 u32 txnoack; 163 u32 rxfrag; 164 u32 rxmulti; 165 u32 rxcrc; 166 u32 txfrmsnt; 167 u32 rxundec; 168 } d11cnt_t; 169 170 #define MCSSET_LEN 16 171 172 #define HT_CAP_IE_LEN 26 173 174 #define HT_CAP_RX_STBC_NO 0x0 175 #define HT_CAP_RX_STBC_ONE_STREAM 0x1 176 177 #define AMPDU_MAX_MPDU_DENSITY IEEE80211_HT_MPDU_DENSITY_16 178 179 #define AMPDU_DELIMITER_LEN 4 180 181 #define DOT11N_TXBURST 0x0008 182 183 #define WPA_VERSION 1 184 #define WPA_OUI "\x00\x50\xF2" 185 186 #define WFA_OUI "\x00\x50\xF2" 187 #define WFA_OUI_LEN 3 188 189 #define WFA_OUI_TYPE_WPA 1 190 191 #define RSN_AKM_NONE 0 192 #define RSN_AKM_UNSPECIFIED 1 193 #define RSN_AKM_PSK 2 194 195 #define DOT11_MAX_DEFAULT_KEYS 4 196 #define DOT11_WPA_KEY_RSC_LEN 8 197 198 #define BRCM_OUI "\x00\x10\x18" 199 200 #endif /* _802_11_H_ */ 201