1 /* src/prism2/include/prism2/hfa384x.h 2 * 3 * Defines the constants and data structures for the hfa384x 4 * 5 * Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved. 6 * -------------------------------------------------------------------- 7 * 8 * linux-wlan 9 * 10 * The contents of this file are subject to the Mozilla Public 11 * License Version 1.1 (the "License"); you may not use this file 12 * except in compliance with the License. You may obtain a copy of 13 * the License at http://www.mozilla.org/MPL/ 14 * 15 * Software distributed under the License is distributed on an "AS 16 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or 17 * implied. See the License for the specific language governing 18 * rights and limitations under the License. 19 * 20 * Alternatively, the contents of this file may be used under the 21 * terms of the GNU Public License version 2 (the "GPL"), in which 22 * case the provisions of the GPL are applicable instead of the 23 * above. If you wish to allow the use of your version of this file 24 * only under the terms of the GPL and not to allow others to use 25 * your version of this file under the MPL, indicate your decision 26 * by deleting the provisions above and replace them with the notice 27 * and other provisions required by the GPL. If you do not delete 28 * the provisions above, a recipient may use your version of this 29 * file under either the MPL or the GPL. 30 * 31 * -------------------------------------------------------------------- 32 * 33 * Inquiries regarding the linux-wlan Open Source project can be 34 * made directly to: 35 * 36 * AbsoluteValue Systems Inc. 37 * info (at) linux-wlan.com 38 * http://www.linux-wlan.com 39 * 40 * -------------------------------------------------------------------- 41 * 42 * Portions of the development of this software were funded by 43 * Intersil Corporation as part of PRISM(R) chipset product development. 44 * 45 * -------------------------------------------------------------------- 46 * 47 * [Implementation and usage notes] 48 * 49 * [References] 50 * CW10 Programmer's Manual v1.5 51 * IEEE 802.11 D10.0 52 * 53 * -------------------------------------------------------------------- 54 */ 55 56 FILE_LICENCE ( GPL2_ONLY ); 57 58 #ifndef _HFA384x_H 59 #define _HFA384x_H 60 61 /*=============================================================*/ 62 #define HFA384x_FIRMWARE_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) 63 64 #define HFA384x_LEVEL_TO_dBm(v) (0x100 + (v) * 100 / 255 - 100) 65 66 /*------ Constants --------------------------------------------*/ 67 /*--- Mins & Maxs -----------------------------------*/ 68 #define HFA384x_CMD_ALLOC_LEN_MIN ((UINT16)4) 69 #define HFA384x_CMD_ALLOC_LEN_MAX ((UINT16)2400) 70 #define HFA384x_BAP_DATALEN_MAX ((UINT16)4096) 71 #define HFA384x_BAP_OFFSET_MAX ((UINT16)4096) 72 #define HFA384x_PORTID_MAX ((UINT16)7) 73 #define HFA384x_NUMPORTS_MAX ((UINT16)(HFA384x_PORTID_MAX+1)) 74 #define HFA384x_PDR_LEN_MAX ((UINT16)512) /* in bytes, from EK */ 75 #define HFA384x_PDA_RECS_MAX ((UINT16)200) /* a guess */ 76 #define HFA384x_PDA_LEN_MAX ((UINT16)1024) /* in bytes, from EK */ 77 #define HFA384x_SCANRESULT_MAX ((UINT16)31) 78 #define HFA384x_HSCANRESULT_MAX ((UINT16)31) 79 #define HFA384x_CHINFORESULT_MAX ((UINT16)16) 80 #define HFA384x_DRVR_FIDSTACKLEN_MAX (10) 81 #define HFA384x_DRVR_TXBUF_MAX (sizeof(hfa384x_tx_frame_t) + \ 82 WLAN_DATA_MAXLEN - \ 83 WLAN_WEP_IV_LEN - \ 84 WLAN_WEP_ICV_LEN + 2) 85 #define HFA384x_DRVR_MAGIC (0x4a2d) 86 #define HFA384x_INFODATA_MAXLEN (sizeof(hfa384x_infodata_t)) 87 #define HFA384x_INFOFRM_MAXLEN (sizeof(hfa384x_InfFrame_t)) 88 #define HFA384x_RID_GUESSING_MAXLEN 2048 /* I'm not really sure */ 89 #define HFA384x_RIDDATA_MAXLEN HFA384x_RID_GUESSING_MAXLEN 90 #define HFA384x_USB_RWMEM_MAXLEN 2048 91 92 /*--- Support Constants -----------------------------*/ 93 #define HFA384x_BAP_PROC ((UINT16)0) 94 #define HFA384x_BAP_INT ((UINT16)1) 95 #define HFA384x_PORTTYPE_IBSS ((UINT16)0) 96 #define HFA384x_PORTTYPE_BSS ((UINT16)1) 97 #define HFA384x_PORTTYPE_WDS ((UINT16)2) 98 #define HFA384x_PORTTYPE_PSUEDOIBSS ((UINT16)3) 99 #define HFA384x_PORTTYPE_HOSTAP ((UINT16)6) 100 #define HFA384x_WEPFLAGS_PRIVINVOKED ((UINT16)BIT0) 101 #define HFA384x_WEPFLAGS_EXCLUDE ((UINT16)BIT1) 102 #define HFA384x_WEPFLAGS_DISABLE_TXCRYPT ((UINT16)BIT4) 103 #define HFA384x_WEPFLAGS_DISABLE_RXCRYPT ((UINT16)BIT7) 104 #define HFA384x_WEPFLAGS_DISALLOW_MIXED ((UINT16)BIT11) 105 #define HFA384x_WEPFLAGS_IV_INTERVAL1 ((UINT16)0) 106 #define HFA384x_WEPFLAGS_IV_INTERVAL10 ((UINT16)BIT5) 107 #define HFA384x_WEPFLAGS_IV_INTERVAL50 ((UINT16)BIT6) 108 #define HFA384x_WEPFLAGS_IV_INTERVAL100 ((UINT16)(BIT5 | BIT6)) 109 #define HFA384x_WEPFLAGS_FIRMWARE_WPA ((UINT16)BIT8) 110 #define HFA384x_WEPFLAGS_HOST_MIC ((UINT16)BIT9) 111 #define HFA384x_ROAMMODE_FWSCAN_FWROAM ((UINT16)1) 112 #define HFA384x_ROAMMODE_FWSCAN_HOSTROAM ((UINT16)2) 113 #define HFA384x_ROAMMODE_HOSTSCAN_HOSTROAM ((UINT16)3) 114 #define HFA384x_PORTSTATUS_DISABLED ((UINT16)1) 115 #define HFA384x_PORTSTATUS_INITSRCH ((UINT16)2) 116 #define HFA384x_PORTSTATUS_CONN_IBSS ((UINT16)3) 117 #define HFA384x_PORTSTATUS_CONN_ESS ((UINT16)4) 118 #define HFA384x_PORTSTATUS_OOR_ESS ((UINT16)5) 119 #define HFA384x_PORTSTATUS_CONN_WDS ((UINT16)6) 120 #define HFA384x_PORTSTATUS_HOSTAP ((UINT16)8) 121 #define HFA384x_RATEBIT_1 ((UINT16)1) 122 #define HFA384x_RATEBIT_2 ((UINT16)2) 123 #define HFA384x_RATEBIT_5dot5 ((UINT16)4) 124 #define HFA384x_RATEBIT_11 ((UINT16)8) 125 126 /*--- Just some symbolic names for legibility -------*/ 127 #define HFA384x_TXCMD_NORECL ((UINT16)0) 128 #define HFA384x_TXCMD_RECL ((UINT16)1) 129 130 /*--- MAC Internal memory constants and macros ------*/ 131 /* masks and macros used to manipulate MAC internal memory addresses. */ 132 /* MAC internal memory addresses are 23 bit quantities. The MAC uses 133 * a paged address space where the upper 16 bits are the page number 134 * and the lower 7 bits are the offset. There are various Host API 135 * elements that require two 16-bit quantities to specify a MAC 136 * internal memory address. Unfortunately, some of the API's use a 137 * page/offset format where the offset value is JUST the lower seven 138 * bits and the page is the remaining 16 bits. Some of the API's 139 * assume that the 23 bit address has been split at the 16th bit. We 140 * refer to these two formats as AUX format and CMD format. The 141 * macros below help handle some of this. 142 */ 143 144 /* Handy constant */ 145 #define HFA384x_ADDR_AUX_OFF_MAX ((UINT16)0x007f) 146 147 /* Mask bits for discarding unwanted pieces in a flat address */ 148 #define HFA384x_ADDR_FLAT_AUX_PAGE_MASK (0x007fff80) 149 #define HFA384x_ADDR_FLAT_AUX_OFF_MASK (0x0000007f) 150 #define HFA384x_ADDR_FLAT_CMD_PAGE_MASK (0xffff0000) 151 #define HFA384x_ADDR_FLAT_CMD_OFF_MASK (0x0000ffff) 152 153 /* Mask bits for discarding unwanted pieces in AUX format 16-bit address parts */ 154 #define HFA384x_ADDR_AUX_PAGE_MASK (0xffff) 155 #define HFA384x_ADDR_AUX_OFF_MASK (0x007f) 156 157 /* Mask bits for discarding unwanted pieces in CMD format 16-bit address parts */ 158 #define HFA384x_ADDR_CMD_PAGE_MASK (0x007f) 159 #define HFA384x_ADDR_CMD_OFF_MASK (0xffff) 160 161 /* Make a 32-bit flat address from AUX format 16-bit page and offset */ 162 #define HFA384x_ADDR_AUX_MKFLAT(p,o) \ 163 (((UINT32)(((UINT16)(p))&HFA384x_ADDR_AUX_PAGE_MASK)) <<7) | \ 164 ((UINT32)(((UINT16)(o))&HFA384x_ADDR_AUX_OFF_MASK)) 165 166 /* Make a 32-bit flat address from CMD format 16-bit page and offset */ 167 #define HFA384x_ADDR_CMD_MKFLAT(p,o) \ 168 (((UINT32)(((UINT16)(p))&HFA384x_ADDR_CMD_PAGE_MASK)) <<16) | \ 169 ((UINT32)(((UINT16)(o))&HFA384x_ADDR_CMD_OFF_MASK)) 170 171 /* Make AUX format offset and page from a 32-bit flat address */ 172 #define HFA384x_ADDR_AUX_MKPAGE(f) \ 173 ((UINT16)((((UINT32)(f))&HFA384x_ADDR_FLAT_AUX_PAGE_MASK)>>7)) 174 #define HFA384x_ADDR_AUX_MKOFF(f) \ 175 ((UINT16)(((UINT32)(f))&HFA384x_ADDR_FLAT_AUX_OFF_MASK)) 176 177 /* Make CMD format offset and page from a 32-bit flat address */ 178 #define HFA384x_ADDR_CMD_MKPAGE(f) \ 179 ((UINT16)((((UINT32)(f))&HFA384x_ADDR_FLAT_CMD_PAGE_MASK)>>16)) 180 #define HFA384x_ADDR_CMD_MKOFF(f) \ 181 ((UINT16)(((UINT32)(f))&HFA384x_ADDR_FLAT_CMD_OFF_MASK)) 182 183 /*--- Aux register masks/tests ----------------------*/ 184 /* Some of the upper bits of the AUX offset register are used to */ 185 /* select address space. */ 186 #define HFA384x_AUX_CTL_EXTDS (0x00) 187 #define HFA384x_AUX_CTL_NV (0x01) 188 #define HFA384x_AUX_CTL_PHY (0x02) 189 #define HFA384x_AUX_CTL_ICSRAM (0x03) 190 191 /* Make AUX register offset and page values from a flat address */ 192 #define HFA384x_AUX_MKOFF(f, c) \ 193 (HFA384x_ADDR_AUX_MKOFF(f) | (((UINT16)(c))<<12)) 194 #define HFA384x_AUX_MKPAGE(f) HFA384x_ADDR_AUX_MKPAGE(f) 195 196 197 /*--- Controller Memory addresses -------------------*/ 198 #define HFA3842_PDA_BASE (0x007f0000UL) 199 #define HFA3841_PDA_BASE (0x003f0000UL) 200 #define HFA3841_PDA_BOGUS_BASE (0x00390000UL) 201 202 /*--- Driver Download states -----------------------*/ 203 #define HFA384x_DLSTATE_DISABLED 0 204 #define HFA384x_DLSTATE_RAMENABLED 1 205 #define HFA384x_DLSTATE_FLASHENABLED 2 206 #define HFA384x_DLSTATE_FLASHWRITTEN 3 207 #define HFA384x_DLSTATE_FLASHWRITEPENDING 4 208 #define HFA384x_DLSTATE_GENESIS 5 209 210 /*--- Register I/O offsets --------------------------*/ 211 #if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX)) 212 213 #define HFA384x_CMD_OFF (0x00) 214 #define HFA384x_PARAM0_OFF (0x02) 215 #define HFA384x_PARAM1_OFF (0x04) 216 #define HFA384x_PARAM2_OFF (0x06) 217 #define HFA384x_STATUS_OFF (0x08) 218 #define HFA384x_RESP0_OFF (0x0A) 219 #define HFA384x_RESP1_OFF (0x0C) 220 #define HFA384x_RESP2_OFF (0x0E) 221 #define HFA384x_INFOFID_OFF (0x10) 222 #define HFA384x_RXFID_OFF (0x20) 223 #define HFA384x_ALLOCFID_OFF (0x22) 224 #define HFA384x_TXCOMPLFID_OFF (0x24) 225 #define HFA384x_SELECT0_OFF (0x18) 226 #define HFA384x_OFFSET0_OFF (0x1C) 227 #define HFA384x_DATA0_OFF (0x36) 228 #define HFA384x_SELECT1_OFF (0x1A) 229 #define HFA384x_OFFSET1_OFF (0x1E) 230 #define HFA384x_DATA1_OFF (0x38) 231 #define HFA384x_EVSTAT_OFF (0x30) 232 #define HFA384x_INTEN_OFF (0x32) 233 #define HFA384x_EVACK_OFF (0x34) 234 #define HFA384x_CONTROL_OFF (0x14) 235 #define HFA384x_SWSUPPORT0_OFF (0x28) 236 #define HFA384x_SWSUPPORT1_OFF (0x2A) 237 #define HFA384x_SWSUPPORT2_OFF (0x2C) 238 #define HFA384x_AUXPAGE_OFF (0x3A) 239 #define HFA384x_AUXOFFSET_OFF (0x3C) 240 #define HFA384x_AUXDATA_OFF (0x3E) 241 242 #elif (WLAN_HOSTIF == WLAN_PCI || WLAN_HOSTIF == WLAN_USB) 243 244 #define HFA384x_CMD_OFF (0x00) 245 #define HFA384x_PARAM0_OFF (0x04) 246 #define HFA384x_PARAM1_OFF (0x08) 247 #define HFA384x_PARAM2_OFF (0x0c) 248 #define HFA384x_STATUS_OFF (0x10) 249 #define HFA384x_RESP0_OFF (0x14) 250 #define HFA384x_RESP1_OFF (0x18) 251 #define HFA384x_RESP2_OFF (0x1c) 252 #define HFA384x_INFOFID_OFF (0x20) 253 #define HFA384x_RXFID_OFF (0x40) 254 #define HFA384x_ALLOCFID_OFF (0x44) 255 #define HFA384x_TXCOMPLFID_OFF (0x48) 256 #define HFA384x_SELECT0_OFF (0x30) 257 #define HFA384x_OFFSET0_OFF (0x38) 258 #define HFA384x_DATA0_OFF (0x6c) 259 #define HFA384x_SELECT1_OFF (0x34) 260 #define HFA384x_OFFSET1_OFF (0x3c) 261 #define HFA384x_DATA1_OFF (0x70) 262 #define HFA384x_EVSTAT_OFF (0x60) 263 #define HFA384x_INTEN_OFF (0x64) 264 #define HFA384x_EVACK_OFF (0x68) 265 #define HFA384x_CONTROL_OFF (0x28) 266 #define HFA384x_SWSUPPORT0_OFF (0x50) 267 #define HFA384x_SWSUPPORT1_OFF (0x54) 268 #define HFA384x_SWSUPPORT2_OFF (0x58) 269 #define HFA384x_AUXPAGE_OFF (0x74) 270 #define HFA384x_AUXOFFSET_OFF (0x78) 271 #define HFA384x_AUXDATA_OFF (0x7c) 272 #define HFA384x_PCICOR_OFF (0x4c) 273 #define HFA384x_PCIHCR_OFF (0x5c) 274 #define HFA384x_PCI_M0_ADDRH_OFF (0x80) 275 #define HFA384x_PCI_M0_ADDRL_OFF (0x84) 276 #define HFA384x_PCI_M0_LEN_OFF (0x88) 277 #define HFA384x_PCI_M0_CTL_OFF (0x8c) 278 #define HFA384x_PCI_STATUS_OFF (0x98) 279 #define HFA384x_PCI_M1_ADDRH_OFF (0xa0) 280 #define HFA384x_PCI_M1_ADDRL_OFF (0xa4) 281 #define HFA384x_PCI_M1_LEN_OFF (0xa8) 282 #define HFA384x_PCI_M1_CTL_OFF (0xac) 283 284 #endif 285 286 /*--- Register Field Masks --------------------------*/ 287 #define HFA384x_CMD_BUSY ((UINT16)BIT15) 288 #define HFA384x_CMD_AINFO ((UINT16)(BIT14 | BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8)) 289 #define HFA384x_CMD_MACPORT ((UINT16)(BIT10 | BIT9 | BIT8)) 290 #define HFA384x_CMD_RECL ((UINT16)BIT8) 291 #define HFA384x_CMD_WRITE ((UINT16)BIT8) 292 #define HFA384x_CMD_PROGMODE ((UINT16)(BIT9 | BIT8)) 293 #define HFA384x_CMD_CMDCODE ((UINT16)(BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0)) 294 295 #define HFA384x_STATUS_RESULT ((UINT16)(BIT14 | BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8)) 296 #define HFA384x_STATUS_CMDCODE ((UINT16)(BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0)) 297 298 #define HFA384x_OFFSET_BUSY ((UINT16)BIT15) 299 #define HFA384x_OFFSET_ERR ((UINT16)BIT14) 300 #define HFA384x_OFFSET_DATAOFF ((UINT16)(BIT11 | BIT10 | BIT9 | BIT8 | BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1)) 301 302 #define HFA384x_EVSTAT_TICK ((UINT16)BIT15) 303 #define HFA384x_EVSTAT_WTERR ((UINT16)BIT14) 304 #define HFA384x_EVSTAT_INFDROP ((UINT16)BIT13) 305 #define HFA384x_EVSTAT_INFO ((UINT16)BIT7) 306 #define HFA384x_EVSTAT_DTIM ((UINT16)BIT5) 307 #define HFA384x_EVSTAT_CMD ((UINT16)BIT4) 308 #define HFA384x_EVSTAT_ALLOC ((UINT16)BIT3) 309 #define HFA384x_EVSTAT_TXEXC ((UINT16)BIT2) 310 #define HFA384x_EVSTAT_TX ((UINT16)BIT1) 311 #define HFA384x_EVSTAT_RX ((UINT16)BIT0) 312 313 #define HFA384x_INT_BAP_OP (HFA384x_EVSTAT_INFO|HFA384x_EVSTAT_RX|HFA384x_EVSTAT_TX|HFA384x_EVSTAT_TXEXC) 314 315 #define HFA384x_INT_NORMAL (HFA384x_EVSTAT_INFO|HFA384x_EVSTAT_RX|HFA384x_EVSTAT_TX|HFA384x_EVSTAT_TXEXC|HFA384x_EVSTAT_INFDROP|HFA384x_EVSTAT_ALLOC|HFA384x_EVSTAT_DTIM) 316 317 #define HFA384x_INTEN_TICK ((UINT16)BIT15) 318 #define HFA384x_INTEN_WTERR ((UINT16)BIT14) 319 #define HFA384x_INTEN_INFDROP ((UINT16)BIT13) 320 #define HFA384x_INTEN_INFO ((UINT16)BIT7) 321 #define HFA384x_INTEN_DTIM ((UINT16)BIT5) 322 #define HFA384x_INTEN_CMD ((UINT16)BIT4) 323 #define HFA384x_INTEN_ALLOC ((UINT16)BIT3) 324 #define HFA384x_INTEN_TXEXC ((UINT16)BIT2) 325 #define HFA384x_INTEN_TX ((UINT16)BIT1) 326 #define HFA384x_INTEN_RX ((UINT16)BIT0) 327 328 #define HFA384x_EVACK_TICK ((UINT16)BIT15) 329 #define HFA384x_EVACK_WTERR ((UINT16)BIT14) 330 #define HFA384x_EVACK_INFDROP ((UINT16)BIT13) 331 #define HFA384x_EVACK_INFO ((UINT16)BIT7) 332 #define HFA384x_EVACK_DTIM ((UINT16)BIT5) 333 #define HFA384x_EVACK_CMD ((UINT16)BIT4) 334 #define HFA384x_EVACK_ALLOC ((UINT16)BIT3) 335 #define HFA384x_EVACK_TXEXC ((UINT16)BIT2) 336 #define HFA384x_EVACK_TX ((UINT16)BIT1) 337 #define HFA384x_EVACK_RX ((UINT16)BIT0) 338 339 #define HFA384x_CONTROL_AUXEN ((UINT16)(BIT15 | BIT14)) 340 341 342 /*--- Command Code Constants --------------------------*/ 343 /*--- Controller Commands --------------------------*/ 344 #define HFA384x_CMDCODE_INIT ((UINT16)0x00) 345 #define HFA384x_CMDCODE_ENABLE ((UINT16)0x01) 346 #define HFA384x_CMDCODE_DISABLE ((UINT16)0x02) 347 #define HFA384x_CMDCODE_DIAG ((UINT16)0x03) 348 349 /*--- Buffer Mgmt Commands --------------------------*/ 350 #define HFA384x_CMDCODE_ALLOC ((UINT16)0x0A) 351 #define HFA384x_CMDCODE_TX ((UINT16)0x0B) 352 #define HFA384x_CMDCODE_CLRPRST ((UINT16)0x12) 353 354 /*--- Regulate Commands --------------------------*/ 355 #define HFA384x_CMDCODE_NOTIFY ((UINT16)0x10) 356 #define HFA384x_CMDCODE_INQ ((UINT16)0x11) 357 358 /*--- Configure Commands --------------------------*/ 359 #define HFA384x_CMDCODE_ACCESS ((UINT16)0x21) 360 #define HFA384x_CMDCODE_DOWNLD ((UINT16)0x22) 361 362 /*--- Debugging Commands -----------------------------*/ 363 #define HFA384x_CMDCODE_MONITOR ((UINT16)(0x38)) 364 #define HFA384x_MONITOR_ENABLE ((UINT16)(0x0b)) 365 #define HFA384x_MONITOR_DISABLE ((UINT16)(0x0f)) 366 367 /*--- Result Codes --------------------------*/ 368 #define HFA384x_SUCCESS ((UINT16)(0x00)) 369 #define HFA384x_CARD_FAIL ((UINT16)(0x01)) 370 #define HFA384x_NO_BUFF ((UINT16)(0x05)) 371 #define HFA384x_CMD_ERR ((UINT16)(0x7F)) 372 373 /*--- Programming Modes -------------------------- 374 MODE 0: Disable programming 375 MODE 1: Enable volatile memory programming 376 MODE 2: Enable non-volatile memory programming 377 MODE 3: Program non-volatile memory section 378 --------------------------------------------------*/ 379 #define HFA384x_PROGMODE_DISABLE ((UINT16)0x00) 380 #define HFA384x_PROGMODE_RAM ((UINT16)0x01) 381 #define HFA384x_PROGMODE_NV ((UINT16)0x02) 382 #define HFA384x_PROGMODE_NVWRITE ((UINT16)0x03) 383 384 /*--- AUX register enable --------------------------*/ 385 #define HFA384x_AUXPW0 ((UINT16)0xfe01) 386 #define HFA384x_AUXPW1 ((UINT16)0xdc23) 387 #define HFA384x_AUXPW2 ((UINT16)0xba45) 388 389 #define HFA384x_CONTROL_AUX_ISDISABLED ((UINT16)0x0000) 390 #define HFA384x_CONTROL_AUX_ISENABLED ((UINT16)0xc000) 391 #define HFA384x_CONTROL_AUX_DOENABLE ((UINT16)0x8000) 392 #define HFA384x_CONTROL_AUX_DODISABLE ((UINT16)0x4000) 393 394 /*--- Record ID Constants --------------------------*/ 395 /*-------------------------------------------------------------------- 396 Configuration RIDs: Network Parameters, Static Configuration Entities 397 --------------------------------------------------------------------*/ 398 #define HFA384x_RID_CNFPORTTYPE ((UINT16)0xFC00) 399 #define HFA384x_RID_CNFOWNMACADDR ((UINT16)0xFC01) 400 #define HFA384x_RID_CNFDESIREDSSID ((UINT16)0xFC02) 401 #define HFA384x_RID_CNFOWNCHANNEL ((UINT16)0xFC03) 402 #define HFA384x_RID_CNFOWNSSID ((UINT16)0xFC04) 403 #define HFA384x_RID_CNFOWNATIMWIN ((UINT16)0xFC05) 404 #define HFA384x_RID_CNFSYSSCALE ((UINT16)0xFC06) 405 #define HFA384x_RID_CNFMAXDATALEN ((UINT16)0xFC07) 406 #define HFA384x_RID_CNFWDSADDR ((UINT16)0xFC08) 407 #define HFA384x_RID_CNFPMENABLED ((UINT16)0xFC09) 408 #define HFA384x_RID_CNFPMEPS ((UINT16)0xFC0A) 409 #define HFA384x_RID_CNFMULTICASTRX ((UINT16)0xFC0B) 410 #define HFA384x_RID_CNFMAXSLEEPDUR ((UINT16)0xFC0C) 411 #define HFA384x_RID_CNFPMHOLDDUR ((UINT16)0xFC0D) 412 #define HFA384x_RID_CNFOWNNAME ((UINT16)0xFC0E) 413 #define HFA384x_RID_CNFOWNDTIMPER ((UINT16)0xFC10) 414 #define HFA384x_RID_CNFWDSADDR1 ((UINT16)0xFC11) 415 #define HFA384x_RID_CNFWDSADDR2 ((UINT16)0xFC12) 416 #define HFA384x_RID_CNFWDSADDR3 ((UINT16)0xFC13) 417 #define HFA384x_RID_CNFWDSADDR4 ((UINT16)0xFC14) 418 #define HFA384x_RID_CNFWDSADDR5 ((UINT16)0xFC15) 419 #define HFA384x_RID_CNFWDSADDR6 ((UINT16)0xFC16) 420 #define HFA384x_RID_CNFMCASTPMBUFF ((UINT16)0xFC17) 421 422 /*-------------------------------------------------------------------- 423 Configuration RID lengths: Network Params, Static Config Entities 424 This is the length of JUST the DATA part of the RID (does not 425 include the len or code fields) 426 --------------------------------------------------------------------*/ 427 /* TODO: fill in the rest of these */ 428 #define HFA384x_RID_CNFPORTTYPE_LEN ((UINT16)2) 429 #define HFA384x_RID_CNFOWNMACADDR_LEN ((UINT16)6) 430 #define HFA384x_RID_CNFDESIREDSSID_LEN ((UINT16)34) 431 #define HFA384x_RID_CNFOWNCHANNEL_LEN ((UINT16)2) 432 #define HFA384x_RID_CNFOWNSSID_LEN ((UINT16)34) 433 #define HFA384x_RID_CNFOWNATIMWIN_LEN ((UINT16)2) 434 #define HFA384x_RID_CNFSYSSCALE_LEN ((UINT16)0) 435 #define HFA384x_RID_CNFMAXDATALEN_LEN ((UINT16)0) 436 #define HFA384x_RID_CNFWDSADDR_LEN ((UINT16)6) 437 #define HFA384x_RID_CNFPMENABLED_LEN ((UINT16)0) 438 #define HFA384x_RID_CNFPMEPS_LEN ((UINT16)0) 439 #define HFA384x_RID_CNFMULTICASTRX_LEN ((UINT16)0) 440 #define HFA384x_RID_CNFMAXSLEEPDUR_LEN ((UINT16)0) 441 #define HFA384x_RID_CNFPMHOLDDUR_LEN ((UINT16)0) 442 #define HFA384x_RID_CNFOWNNAME_LEN ((UINT16)34) 443 #define HFA384x_RID_CNFOWNDTIMPER_LEN ((UINT16)0) 444 #define HFA384x_RID_CNFWDSADDR1_LEN ((UINT16)6) 445 #define HFA384x_RID_CNFWDSADDR2_LEN ((UINT16)6) 446 #define HFA384x_RID_CNFWDSADDR3_LEN ((UINT16)6) 447 #define HFA384x_RID_CNFWDSADDR4_LEN ((UINT16)6) 448 #define HFA384x_RID_CNFWDSADDR5_LEN ((UINT16)6) 449 #define HFA384x_RID_CNFWDSADDR6_LEN ((UINT16)6) 450 #define HFA384x_RID_CNFMCASTPMBUFF_LEN ((UINT16)0) 451 #define HFA384x_RID_CNFAUTHENTICATION_LEN ((UINT16)sizeof(UINT16)) 452 #define HFA384x_RID_CNFMAXSLEEPDUR_LEN ((UINT16)0) 453 454 /*-------------------------------------------------------------------- 455 Configuration RIDs: Network Parameters, Dynamic Configuration Entities 456 --------------------------------------------------------------------*/ 457 #define HFA384x_RID_GROUPADDR ((UINT16)0xFC80) 458 #define HFA384x_RID_CREATEIBSS ((UINT16)0xFC81) 459 #define HFA384x_RID_FRAGTHRESH ((UINT16)0xFC82) 460 #define HFA384x_RID_RTSTHRESH ((UINT16)0xFC83) 461 #define HFA384x_RID_TXRATECNTL ((UINT16)0xFC84) 462 #define HFA384x_RID_PROMISCMODE ((UINT16)0xFC85) 463 #define HFA384x_RID_FRAGTHRESH0 ((UINT16)0xFC90) 464 #define HFA384x_RID_FRAGTHRESH1 ((UINT16)0xFC91) 465 #define HFA384x_RID_FRAGTHRESH2 ((UINT16)0xFC92) 466 #define HFA384x_RID_FRAGTHRESH3 ((UINT16)0xFC93) 467 #define HFA384x_RID_FRAGTHRESH4 ((UINT16)0xFC94) 468 #define HFA384x_RID_FRAGTHRESH5 ((UINT16)0xFC95) 469 #define HFA384x_RID_FRAGTHRESH6 ((UINT16)0xFC96) 470 #define HFA384x_RID_RTSTHRESH0 ((UINT16)0xFC97) 471 #define HFA384x_RID_RTSTHRESH1 ((UINT16)0xFC98) 472 #define HFA384x_RID_RTSTHRESH2 ((UINT16)0xFC99) 473 #define HFA384x_RID_RTSTHRESH3 ((UINT16)0xFC9A) 474 #define HFA384x_RID_RTSTHRESH4 ((UINT16)0xFC9B) 475 #define HFA384x_RID_RTSTHRESH5 ((UINT16)0xFC9C) 476 #define HFA384x_RID_RTSTHRESH6 ((UINT16)0xFC9D) 477 #define HFA384x_RID_TXRATECNTL0 ((UINT16)0xFC9E) 478 #define HFA384x_RID_TXRATECNTL1 ((UINT16)0xFC9F) 479 #define HFA384x_RID_TXRATECNTL2 ((UINT16)0xFCA0) 480 #define HFA384x_RID_TXRATECNTL3 ((UINT16)0xFCA1) 481 #define HFA384x_RID_TXRATECNTL4 ((UINT16)0xFCA2) 482 #define HFA384x_RID_TXRATECNTL5 ((UINT16)0xFCA3) 483 #define HFA384x_RID_TXRATECNTL6 ((UINT16)0xFCA4) 484 485 /*-------------------------------------------------------------------- 486 Configuration RID Lengths: Network Param, Dynamic Config Entities 487 This is the length of JUST the DATA part of the RID (does not 488 include the len or code fields) 489 --------------------------------------------------------------------*/ 490 /* TODO: fill in the rest of these */ 491 #define HFA384x_RID_GROUPADDR_LEN ((UINT16)16 * WLAN_ADDR_LEN) 492 #define HFA384x_RID_CREATEIBSS_LEN ((UINT16)0) 493 #define HFA384x_RID_FRAGTHRESH_LEN ((UINT16)0) 494 #define HFA384x_RID_RTSTHRESH_LEN ((UINT16)0) 495 #define HFA384x_RID_TXRATECNTL_LEN ((UINT16)4) 496 #define HFA384x_RID_PROMISCMODE_LEN ((UINT16)2) 497 #define HFA384x_RID_FRAGTHRESH0_LEN ((UINT16)0) 498 #define HFA384x_RID_FRAGTHRESH1_LEN ((UINT16)0) 499 #define HFA384x_RID_FRAGTHRESH2_LEN ((UINT16)0) 500 #define HFA384x_RID_FRAGTHRESH3_LEN ((UINT16)0) 501 #define HFA384x_RID_FRAGTHRESH4_LEN ((UINT16)0) 502 #define HFA384x_RID_FRAGTHRESH5_LEN ((UINT16)0) 503 #define HFA384x_RID_FRAGTHRESH6_LEN ((UINT16)0) 504 #define HFA384x_RID_RTSTHRESH0_LEN ((UINT16)0) 505 #define HFA384x_RID_RTSTHRESH1_LEN ((UINT16)0) 506 #define HFA384x_RID_RTSTHRESH2_LEN ((UINT16)0) 507 #define HFA384x_RID_RTSTHRESH3_LEN ((UINT16)0) 508 #define HFA384x_RID_RTSTHRESH4_LEN ((UINT16)0) 509 #define HFA384x_RID_RTSTHRESH5_LEN ((UINT16)0) 510 #define HFA384x_RID_RTSTHRESH6_LEN ((UINT16)0) 511 #define HFA384x_RID_TXRATECNTL0_LEN ((UINT16)0) 512 #define HFA384x_RID_TXRATECNTL1_LEN ((UINT16)0) 513 #define HFA384x_RID_TXRATECNTL2_LEN ((UINT16)0) 514 #define HFA384x_RID_TXRATECNTL3_LEN ((UINT16)0) 515 #define HFA384x_RID_TXRATECNTL4_LEN ((UINT16)0) 516 #define HFA384x_RID_TXRATECNTL5_LEN ((UINT16)0) 517 #define HFA384x_RID_TXRATECNTL6_LEN ((UINT16)0) 518 519 /*-------------------------------------------------------------------- 520 Configuration RIDs: Behavior Parameters 521 --------------------------------------------------------------------*/ 522 #define HFA384x_RID_ITICKTIME ((UINT16)0xFCE0) 523 524 /*-------------------------------------------------------------------- 525 Configuration RID Lengths: Behavior Parameters 526 This is the length of JUST the DATA part of the RID (does not 527 include the len or code fields) 528 --------------------------------------------------------------------*/ 529 #define HFA384x_RID_ITICKTIME_LEN ((UINT16)2) 530 531 /*---------------------------------------------------------------------- 532 Information RIDs: NIC Information 533 --------------------------------------------------------------------*/ 534 #define HFA384x_RID_MAXLOADTIME ((UINT16)0xFD00) 535 #define HFA384x_RID_DOWNLOADBUFFER ((UINT16)0xFD01) 536 #define HFA384x_RID_PRIIDENTITY ((UINT16)0xFD02) 537 #define HFA384x_RID_PRISUPRANGE ((UINT16)0xFD03) 538 #define HFA384x_RID_PRI_CFIACTRANGES ((UINT16)0xFD04) 539 #define HFA384x_RID_NICSERIALNUMBER ((UINT16)0xFD0A) 540 #define HFA384x_RID_NICIDENTITY ((UINT16)0xFD0B) 541 #define HFA384x_RID_MFISUPRANGE ((UINT16)0xFD0C) 542 #define HFA384x_RID_CFISUPRANGE ((UINT16)0xFD0D) 543 #define HFA384x_RID_CHANNELLIST ((UINT16)0xFD10) 544 #define HFA384x_RID_REGULATORYDOMAINS ((UINT16)0xFD11) 545 #define HFA384x_RID_TEMPTYPE ((UINT16)0xFD12) 546 #define HFA384x_RID_CIS ((UINT16)0xFD13) 547 #define HFA384x_RID_STAIDENTITY ((UINT16)0xFD20) 548 #define HFA384x_RID_STASUPRANGE ((UINT16)0xFD21) 549 #define HFA384x_RID_STA_MFIACTRANGES ((UINT16)0xFD22) 550 #define HFA384x_RID_STA_CFIACTRANGES ((UINT16)0xFD23) 551 #define HFA384x_RID_BUILDSEQ ((UINT16)0xFFFE) 552 #define HFA384x_RID_FWID ((UINT16)0xFFFF) 553 554 /*---------------------------------------------------------------------- 555 Information RID Lengths: NIC Information 556 This is the length of JUST the DATA part of the RID (does not 557 include the len or code fields) 558 --------------------------------------------------------------------*/ 559 #define HFA384x_RID_MAXLOADTIME_LEN ((UINT16)0) 560 #define HFA384x_RID_DOWNLOADBUFFER_LEN ((UINT16)sizeof(hfa384x_downloadbuffer_t)) 561 #define HFA384x_RID_PRIIDENTITY_LEN ((UINT16)8) 562 #define HFA384x_RID_PRISUPRANGE_LEN ((UINT16)10) 563 #define HFA384x_RID_CFIACTRANGES_LEN ((UINT16)10) 564 #define HFA384x_RID_NICSERIALNUMBER_LEN ((UINT16)12) 565 #define HFA384x_RID_NICIDENTITY_LEN ((UINT16)8) 566 #define HFA384x_RID_MFISUPRANGE_LEN ((UINT16)10) 567 #define HFA384x_RID_CFISUPRANGE_LEN ((UINT16)10) 568 #define HFA384x_RID_CHANNELLIST_LEN ((UINT16)0) 569 #define HFA384x_RID_REGULATORYDOMAINS_LEN ((UINT16)12) 570 #define HFA384x_RID_TEMPTYPE_LEN ((UINT16)0) 571 #define HFA384x_RID_CIS_LEN ((UINT16)480) 572 #define HFA384x_RID_STAIDENTITY_LEN ((UINT16)8) 573 #define HFA384x_RID_STASUPRANGE_LEN ((UINT16)10) 574 #define HFA384x_RID_MFIACTRANGES_LEN ((UINT16)10) 575 #define HFA384x_RID_CFIACTRANGES2_LEN ((UINT16)10) 576 #define HFA384x_RID_BUILDSEQ_LEN ((UINT16)sizeof(hfa384x_BuildSeq_t)) 577 #define HFA384x_RID_FWID_LEN ((UINT16)sizeof(hfa384x_FWID_t)) 578 579 /*-------------------------------------------------------------------- 580 Information RIDs: MAC Information 581 --------------------------------------------------------------------*/ 582 #define HFA384x_RID_PORTSTATUS ((UINT16)0xFD40) 583 #define HFA384x_RID_CURRENTSSID ((UINT16)0xFD41) 584 #define HFA384x_RID_CURRENTBSSID ((UINT16)0xFD42) 585 #define HFA384x_RID_COMMSQUALITY ((UINT16)0xFD43) 586 #define HFA384x_RID_CURRENTTXRATE ((UINT16)0xFD44) 587 #define HFA384x_RID_CURRENTBCNINT ((UINT16)0xFD45) 588 #define HFA384x_RID_CURRENTSCALETHRESH ((UINT16)0xFD46) 589 #define HFA384x_RID_PROTOCOLRSPTIME ((UINT16)0xFD47) 590 #define HFA384x_RID_SHORTRETRYLIMIT ((UINT16)0xFD48) 591 #define HFA384x_RID_LONGRETRYLIMIT ((UINT16)0xFD49) 592 #define HFA384x_RID_MAXTXLIFETIME ((UINT16)0xFD4A) 593 #define HFA384x_RID_MAXRXLIFETIME ((UINT16)0xFD4B) 594 #define HFA384x_RID_CFPOLLABLE ((UINT16)0xFD4C) 595 #define HFA384x_RID_AUTHALGORITHMS ((UINT16)0xFD4D) 596 #define HFA384x_RID_PRIVACYOPTIMP ((UINT16)0xFD4F) 597 #define HFA384x_RID_DBMCOMMSQUALITY ((UINT16)0xFD51) 598 #define HFA384x_RID_CURRENTTXRATE1 ((UINT16)0xFD80) 599 #define HFA384x_RID_CURRENTTXRATE2 ((UINT16)0xFD81) 600 #define HFA384x_RID_CURRENTTXRATE3 ((UINT16)0xFD82) 601 #define HFA384x_RID_CURRENTTXRATE4 ((UINT16)0xFD83) 602 #define HFA384x_RID_CURRENTTXRATE5 ((UINT16)0xFD84) 603 #define HFA384x_RID_CURRENTTXRATE6 ((UINT16)0xFD85) 604 #define HFA384x_RID_OWNMACADDRESS ((UINT16)0xFD86) 605 // #define HFA384x_RID_PCFINFO ((UINT16)0xFD87) 606 #define HFA384x_RID_SCANRESULTS ((UINT16)0xFD88) // NEW 607 #define HFA384x_RID_HOSTSCANRESULTS ((UINT16)0xFD89) // NEW 608 #define HFA384x_RID_AUTHENTICATIONUSED ((UINT16)0xFD8A) // NEW 609 #define HFA384x_RID_ASSOCIATEFAILURE ((UINT16)0xFD8D) // 1.8.0 610 611 /*-------------------------------------------------------------------- 612 Information RID Lengths: MAC Information 613 This is the length of JUST the DATA part of the RID (does not 614 include the len or code fields) 615 --------------------------------------------------------------------*/ 616 #define HFA384x_RID_PORTSTATUS_LEN ((UINT16)0) 617 #define HFA384x_RID_CURRENTSSID_LEN ((UINT16)34) 618 #define HFA384x_RID_CURRENTBSSID_LEN ((UINT16)WLAN_BSSID_LEN) 619 #define HFA384x_RID_COMMSQUALITY_LEN ((UINT16)sizeof(hfa384x_commsquality_t)) 620 #define HFA384x_RID_DBMCOMMSQUALITY_LEN ((UINT16)sizeof(hfa384x_dbmcommsquality_t)) 621 #define HFA384x_RID_CURRENTTXRATE_LEN ((UINT16)0) 622 #define HFA384x_RID_CURRENTBCNINT_LEN ((UINT16)0) 623 #define HFA384x_RID_STACURSCALETHRESH_LEN ((UINT16)12) 624 #define HFA384x_RID_APCURSCALETHRESH_LEN ((UINT16)6) 625 #define HFA384x_RID_PROTOCOLRSPTIME_LEN ((UINT16)0) 626 #define HFA384x_RID_SHORTRETRYLIMIT_LEN ((UINT16)0) 627 #define HFA384x_RID_LONGRETRYLIMIT_LEN ((UINT16)0) 628 #define HFA384x_RID_MAXTXLIFETIME_LEN ((UINT16)0) 629 #define HFA384x_RID_MAXRXLIFETIME_LEN ((UINT16)0) 630 #define HFA384x_RID_CFPOLLABLE_LEN ((UINT16)0) 631 #define HFA384x_RID_AUTHALGORITHMS_LEN ((UINT16)4) 632 #define HFA384x_RID_PRIVACYOPTIMP_LEN ((UINT16)0) 633 #define HFA384x_RID_CURRENTTXRATE1_LEN ((UINT16)0) 634 #define HFA384x_RID_CURRENTTXRATE2_LEN ((UINT16)0) 635 #define HFA384x_RID_CURRENTTXRATE3_LEN ((UINT16)0) 636 #define HFA384x_RID_CURRENTTXRATE4_LEN ((UINT16)0) 637 #define HFA384x_RID_CURRENTTXRATE5_LEN ((UINT16)0) 638 #define HFA384x_RID_CURRENTTXRATE6_LEN ((UINT16)0) 639 #define HFA384x_RID_OWNMACADDRESS_LEN ((UINT16)6) 640 #define HFA384x_RID_PCFINFO_LEN ((UINT16)6) 641 #define HFA384x_RID_CNFAPPCFINFO_LEN ((UINT16)sizeof(hfa384x_PCFInfo_data_t)) 642 #define HFA384x_RID_SCANREQUEST_LEN ((UINT16)sizeof(hfa384x_ScanRequest_data_t)) 643 #define HFA384x_RID_JOINREQUEST_LEN ((UINT16)sizeof(hfa384x_JoinRequest_data_t)) 644 #define HFA384x_RID_AUTHENTICATESTA_LEN ((UINT16)sizeof(hfa384x_authenticateStation_data_t)) 645 #define HFA384x_RID_CHANNELINFOREQUEST_LEN ((UINT16)sizeof(hfa384x_ChannelInfoRequest_data_t)) 646 /*-------------------------------------------------------------------- 647 Information RIDs: Modem Information 648 --------------------------------------------------------------------*/ 649 #define HFA384x_RID_PHYTYPE ((UINT16)0xFDC0) 650 #define HFA384x_RID_CURRENTCHANNEL ((UINT16)0xFDC1) 651 #define HFA384x_RID_CURRENTPOWERSTATE ((UINT16)0xFDC2) 652 #define HFA384x_RID_CCAMODE ((UINT16)0xFDC3) 653 #define HFA384x_RID_SUPPORTEDDATARATES ((UINT16)0xFDC6) 654 #define HFA384x_RID_LFOSTATUS ((UINT16)0xFDC7) // 1.7.1 655 656 /*-------------------------------------------------------------------- 657 Information RID Lengths: Modem Information 658 This is the length of JUST the DATA part of the RID (does not 659 include the len or code fields) 660 --------------------------------------------------------------------*/ 661 #define HFA384x_RID_PHYTYPE_LEN ((UINT16)0) 662 #define HFA384x_RID_CURRENTCHANNEL_LEN ((UINT16)0) 663 #define HFA384x_RID_CURRENTPOWERSTATE_LEN ((UINT16)0) 664 #define HFA384x_RID_CCAMODE_LEN ((UINT16)0) 665 #define HFA384x_RID_SUPPORTEDDATARATES_LEN ((UINT16)10) 666 667 /*-------------------------------------------------------------------- 668 API ENHANCEMENTS (NOT ALREADY IMPLEMENTED) 669 --------------------------------------------------------------------*/ 670 #define HFA384x_RID_CNFWEPDEFAULTKEYID ((UINT16)0xFC23) 671 #define HFA384x_RID_CNFWEPDEFAULTKEY0 ((UINT16)0xFC24) 672 #define HFA384x_RID_CNFWEPDEFAULTKEY1 ((UINT16)0xFC25) 673 #define HFA384x_RID_CNFWEPDEFAULTKEY2 ((UINT16)0xFC26) 674 #define HFA384x_RID_CNFWEPDEFAULTKEY3 ((UINT16)0xFC27) 675 #define HFA384x_RID_CNFWEPFLAGS ((UINT16)0xFC28) 676 #define HFA384x_RID_CNFWEPKEYMAPTABLE ((UINT16)0xFC29) 677 #define HFA384x_RID_CNFAUTHENTICATION ((UINT16)0xFC2A) 678 #define HFA384x_RID_CNFMAXASSOCSTATIONS ((UINT16)0xFC2B) 679 #define HFA384x_RID_CNFTXCONTROL ((UINT16)0xFC2C) 680 #define HFA384x_RID_CNFROAMINGMODE ((UINT16)0xFC2D) 681 #define HFA384x_RID_CNFHOSTAUTHASSOC ((UINT16)0xFC2E) 682 #define HFA384x_RID_CNFRCVCRCERROR ((UINT16)0xFC30) 683 // #define HFA384x_RID_CNFMMLIFE ((UINT16)0xFC31) 684 #define HFA384x_RID_CNFALTRETRYCNT ((UINT16)0xFC32) 685 #define HFA384x_RID_CNFAPBCNINT ((UINT16)0xFC33) 686 #define HFA384x_RID_CNFAPPCFINFO ((UINT16)0xFC34) 687 #define HFA384x_RID_CNFSTAPCFINFO ((UINT16)0xFC35) 688 #define HFA384x_RID_CNFPRIORITYQUSAGE ((UINT16)0xFC37) 689 #define HFA384x_RID_CNFTIMCTRL ((UINT16)0xFC40) 690 #define HFA384x_RID_CNFTHIRTY2TALLY ((UINT16)0xFC42) 691 #define HFA384x_RID_CNFENHSECURITY ((UINT16)0xFC43) 692 #define HFA384x_RID_CNFDBMADJUST ((UINT16)0xFC46) // NEW 693 #define HFA384x_RID_CNFWPADATA ((UINT16)0xFC48) // 1.7.0 694 #define HFA384x_RID_CNFPROPOGATIONDELAY ((UINT16)0xFC49) // 1.7.6 695 #define HFA384x_RID_CNFSHORTPREAMBLE ((UINT16)0xFCB0) 696 #define HFA384x_RID_CNFEXCLONGPREAMBLE ((UINT16)0xFCB1) 697 #define HFA384x_RID_CNFAUTHRSPTIMEOUT ((UINT16)0xFCB2) 698 #define HFA384x_RID_CNFBASICRATES ((UINT16)0xFCB3) 699 #define HFA384x_RID_CNFSUPPRATES ((UINT16)0xFCB4) 700 #define HFA384x_RID_CNFFALLBACKCTRL ((UINT16)0xFCB5) // NEW 701 #define HFA384x_RID_WEPKEYSTATUS ((UINT16)0xFCB6) // NEW 702 #define HFA384x_RID_WEPKEYMAPINDEX ((UINT16)0xFCB7) // NEW 703 #define HFA384x_RID_BROADCASTKEYID ((UINT16)0xFCB8) // NEW 704 #define HFA384x_RID_ENTSECFLAGEYID ((UINT16)0xFCB9) // NEW 705 #define HFA384x_RID_CNFPASSIVESCANCTRL ((UINT16)0xFCBA) // NEW STA 706 #define HFA384x_RID_CNFWPAHANDLING ((UINT16)0xFCBB) // 1.7.0 707 #define HFA384x_RID_MDCCONTROL ((UINT16)0xFCBC) // 1.7.0/1.4.0 708 #define HFA384x_RID_MDCCOUNTRY ((UINT16)0xFCBD) // 1.7.0/1.4.0 709 #define HFA384x_RID_TXPOWERMAX ((UINT16)0xFCBE) // 1.7.0/1.4.0 710 #define HFA384x_RID_CNFLFOENBLED ((UINT16)0xFCBF) // 1.6.3 711 #define HFA384x_RID_CAPINFO ((UINT16)0xFCC0) // 1.7.0/1.3.7 712 #define HFA384x_RID_LISTENINTERVAL ((UINT16)0xFCC1) // 1.7.0/1.3.7 713 #define HFA384x_RID_DIVERSITYENABLED ((UINT16)0xFCC2) // 1.7.0/1.3.7 714 #define HFA384x_RID_LED_CONTROL ((UINT16)0xFCC4) // 1.7.6 715 #define HFA384x_RID_HFO_DELAY ((UINT16)0xFCC5) // 1.7.6 716 #define HFA384x_RID_DISSALOWEDBSSID ((UINT16)0xFCC6) // 1.8.0 717 #define HFA384x_RID_SCANREQUEST ((UINT16)0xFCE1) 718 #define HFA384x_RID_JOINREQUEST ((UINT16)0xFCE2) 719 #define HFA384x_RID_AUTHENTICATESTA ((UINT16)0xFCE3) 720 #define HFA384x_RID_CHANNELINFOREQUEST ((UINT16)0xFCE4) 721 #define HFA384x_RID_HOSTSCAN ((UINT16)0xFCE5) // NEW STA 722 #define HFA384x_RID_ASSOCIATESTA ((UINT16)0xFCE6) 723 724 #define HFA384x_RID_CNFWEPDEFAULTKEY_LEN ((UINT16)6) 725 #define HFA384x_RID_CNFWEP128DEFAULTKEY_LEN ((UINT16)14) 726 #define HFA384x_RID_CNFPRIOQUSAGE_LEN ((UINT16)4) 727 /*-------------------------------------------------------------------- 728 PD Record codes 729 --------------------------------------------------------------------*/ 730 #define HFA384x_PDR_PCB_PARTNUM ((UINT16)0x0001) 731 #define HFA384x_PDR_PDAVER ((UINT16)0x0002) 732 #define HFA384x_PDR_NIC_SERIAL ((UINT16)0x0003) 733 #define HFA384x_PDR_MKK_MEASUREMENTS ((UINT16)0x0004) 734 #define HFA384x_PDR_NIC_RAMSIZE ((UINT16)0x0005) 735 #define HFA384x_PDR_MFISUPRANGE ((UINT16)0x0006) 736 #define HFA384x_PDR_CFISUPRANGE ((UINT16)0x0007) 737 #define HFA384x_PDR_NICID ((UINT16)0x0008) 738 //#define HFA384x_PDR_REFDAC_MEASUREMENTS ((UINT16)0x0010) 739 //#define HFA384x_PDR_VGDAC_MEASUREMENTS ((UINT16)0x0020) 740 //#define HFA384x_PDR_LEVEL_COMP_MEASUREMENTS ((UINT16)0x0030) 741 //#define HFA384x_PDR_MODEM_TRIMDAC_MEASUREMENTS ((UINT16)0x0040) 742 //#define HFA384x_PDR_COREGA_HACK ((UINT16)0x00ff) 743 #define HFA384x_PDR_MAC_ADDRESS ((UINT16)0x0101) 744 //#define HFA384x_PDR_MKK_CALLNAME ((UINT16)0x0102) 745 #define HFA384x_PDR_REGDOMAIN ((UINT16)0x0103) 746 #define HFA384x_PDR_ALLOWED_CHANNEL ((UINT16)0x0104) 747 #define HFA384x_PDR_DEFAULT_CHANNEL ((UINT16)0x0105) 748 //#define HFA384x_PDR_PRIVACY_OPTION ((UINT16)0x0106) 749 #define HFA384x_PDR_TEMPTYPE ((UINT16)0x0107) 750 //#define HFA384x_PDR_REFDAC_SETUP ((UINT16)0x0110) 751 //#define HFA384x_PDR_VGDAC_SETUP ((UINT16)0x0120) 752 //#define HFA384x_PDR_LEVEL_COMP_SETUP ((UINT16)0x0130) 753 //#define HFA384x_PDR_TRIMDAC_SETUP ((UINT16)0x0140) 754 #define HFA384x_PDR_IFR_SETTING ((UINT16)0x0200) 755 #define HFA384x_PDR_RFR_SETTING ((UINT16)0x0201) 756 #define HFA384x_PDR_HFA3861_BASELINE ((UINT16)0x0202) 757 #define HFA384x_PDR_HFA3861_SHADOW ((UINT16)0x0203) 758 #define HFA384x_PDR_HFA3861_IFRF ((UINT16)0x0204) 759 #define HFA384x_PDR_HFA3861_CHCALSP ((UINT16)0x0300) 760 #define HFA384x_PDR_HFA3861_CHCALI ((UINT16)0x0301) 761 #define HFA384x_PDR_MAX_TX_POWER ((UINT16)0x0302) 762 #define HFA384x_PDR_MASTER_CHAN_LIST ((UINT16)0x0303) 763 #define HFA384x_PDR_3842_NIC_CONFIG ((UINT16)0x0400) 764 #define HFA384x_PDR_USB_ID ((UINT16)0x0401) 765 #define HFA384x_PDR_PCI_ID ((UINT16)0x0402) 766 #define HFA384x_PDR_PCI_IFCONF ((UINT16)0x0403) 767 #define HFA384x_PDR_PCI_PMCONF ((UINT16)0x0404) 768 #define HFA384x_PDR_RFENRGY ((UINT16)0x0406) 769 #define HFA384x_PDR_USB_POWER_TYPE ((UINT16)0x0407) 770 //#define HFA384x_PDR_UNKNOWN408 ((UINT16)0x0408) 771 #define HFA384x_PDR_USB_MAX_POWER ((UINT16)0x0409) 772 #define HFA384x_PDR_USB_MANUFACTURER ((UINT16)0x0410) 773 #define HFA384x_PDR_USB_PRODUCT ((UINT16)0x0411) 774 #define HFA384x_PDR_ANT_DIVERSITY ((UINT16)0x0412) 775 #define HFA384x_PDR_HFO_DELAY ((UINT16)0x0413) 776 #define HFA384x_PDR_SCALE_THRESH ((UINT16)0x0414) 777 778 #define HFA384x_PDR_HFA3861_MANF_TESTSP ((UINT16)0x0900) 779 #define HFA384x_PDR_HFA3861_MANF_TESTI ((UINT16)0x0901) 780 #define HFA384x_PDR_END_OF_PDA ((UINT16)0x0000) 781 782 783 /*=============================================================*/ 784 /*------ Macros -----------------------------------------------*/ 785 786 /*--- Register ID macros ------------------------*/ 787 788 #define HFA384x_CMD HFA384x_CMD_OFF 789 #define HFA384x_PARAM0 HFA384x_PARAM0_OFF 790 #define HFA384x_PARAM1 HFA384x_PARAM1_OFF 791 #define HFA384x_PARAM2 HFA384x_PARAM2_OFF 792 #define HFA384x_STATUS HFA384x_STATUS_OFF 793 #define HFA384x_RESP0 HFA384x_RESP0_OFF 794 #define HFA384x_RESP1 HFA384x_RESP1_OFF 795 #define HFA384x_RESP2 HFA384x_RESP2_OFF 796 #define HFA384x_INFOFID HFA384x_INFOFID_OFF 797 #define HFA384x_RXFID HFA384x_RXFID_OFF 798 #define HFA384x_ALLOCFID HFA384x_ALLOCFID_OFF 799 #define HFA384x_TXCOMPLFID HFA384x_TXCOMPLFID_OFF 800 #define HFA384x_SELECT0 HFA384x_SELECT0_OFF 801 #define HFA384x_OFFSET0 HFA384x_OFFSET0_OFF 802 #define HFA384x_DATA0 HFA384x_DATA0_OFF 803 #define HFA384x_SELECT1 HFA384x_SELECT1_OFF 804 #define HFA384x_OFFSET1 HFA384x_OFFSET1_OFF 805 #define HFA384x_DATA1 HFA384x_DATA1_OFF 806 #define HFA384x_EVSTAT HFA384x_EVSTAT_OFF 807 #define HFA384x_INTEN HFA384x_INTEN_OFF 808 #define HFA384x_EVACK HFA384x_EVACK_OFF 809 #define HFA384x_CONTROL HFA384x_CONTROL_OFF 810 #define HFA384x_SWSUPPORT0 HFA384x_SWSUPPORT0_OFF 811 #define HFA384x_SWSUPPORT1 HFA384x_SWSUPPORT1_OFF 812 #define HFA384x_SWSUPPORT2 HFA384x_SWSUPPORT2_OFF 813 #define HFA384x_AUXPAGE HFA384x_AUXPAGE_OFF 814 #define HFA384x_AUXOFFSET HFA384x_AUXOFFSET_OFF 815 #define HFA384x_AUXDATA HFA384x_AUXDATA_OFF 816 #define HFA384x_PCICOR HFA384x_PCICOR_OFF 817 #define HFA384x_PCIHCR HFA384x_PCIHCR_OFF 818 819 820 /*--- Register Test/Get/Set Field macros ------------------------*/ 821 822 #define HFA384x_CMD_ISBUSY(value) ((UINT16)(((UINT16)value) & HFA384x_CMD_BUSY)) 823 #define HFA384x_CMD_AINFO_GET(value) ((UINT16)(((UINT16)(value) & HFA384x_CMD_AINFO) >> 8)) 824 #define HFA384x_CMD_AINFO_SET(value) ((UINT16)((UINT16)(value) << 8)) 825 #define HFA384x_CMD_MACPORT_GET(value) ((UINT16)(HFA384x_CMD_AINFO_GET((UINT16)(value) & HFA384x_CMD_MACPORT))) 826 #define HFA384x_CMD_MACPORT_SET(value) ((UINT16)HFA384x_CMD_AINFO_SET(value)) 827 #define HFA384x_CMD_ISRECL(value) ((UINT16)(HFA384x_CMD_AINFO_GET((UINT16)(value) & HFA384x_CMD_RECL))) 828 #define HFA384x_CMD_RECL_SET(value) ((UINT16)HFA384x_CMD_AINFO_SET(value)) 829 #define HFA384x_CMD_QOS_GET(value) ((UINT16((((UINT16)(value))&((UINT16)0x3000)) >> 12)) 830 #define HFA384x_CMD_QOS_SET(value) ((UINT16)((((UINT16)(value)) << 12) & 0x3000)) 831 #define HFA384x_CMD_ISWRITE(value) ((UINT16)(HFA384x_CMD_AINFO_GET((UINT16)(value) & HFA384x_CMD_WRITE))) 832 #define HFA384x_CMD_WRITE_SET(value) ((UINT16)HFA384x_CMD_AINFO_SET((UINT16)value)) 833 #define HFA384x_CMD_PROGMODE_GET(value) ((UINT16)(HFA384x_CMD_AINFO_GET((UINT16)(value) & HFA384x_CMD_PROGMODE))) 834 #define HFA384x_CMD_PROGMODE_SET(value) ((UINT16)HFA384x_CMD_AINFO_SET((UINT16)value)) 835 #define HFA384x_CMD_CMDCODE_GET(value) ((UINT16)(((UINT16)(value)) & HFA384x_CMD_CMDCODE)) 836 #define HFA384x_CMD_CMDCODE_SET(value) ((UINT16)(value)) 837 838 #define HFA384x_STATUS_RESULT_GET(value) ((UINT16)((((UINT16)(value)) & HFA384x_STATUS_RESULT) >> 8)) 839 #define HFA384x_STATUS_RESULT_SET(value) (((UINT16)(value)) << 8) 840 #define HFA384x_STATUS_CMDCODE_GET(value) (((UINT16)(value)) & HFA384x_STATUS_CMDCODE) 841 #define HFA384x_STATUS_CMDCODE_SET(value) ((UINT16)(value)) 842 843 #define HFA384x_OFFSET_ISBUSY(value) ((UINT16)(((UINT16)(value)) & HFA384x_OFFSET_BUSY)) 844 #define HFA384x_OFFSET_ISERR(value) ((UINT16)(((UINT16)(value)) & HFA384x_OFFSET_ERR)) 845 #define HFA384x_OFFSET_DATAOFF_GET(value) ((UINT16)(((UINT16)(value)) & HFA384x_OFFSET_DATAOFF)) 846 #define HFA384x_OFFSET_DATAOFF_SET(value) ((UINT16)(value)) 847 848 #define HFA384x_EVSTAT_ISTICK(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_TICK)) 849 #define HFA384x_EVSTAT_ISWTERR(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_WTERR)) 850 #define HFA384x_EVSTAT_ISINFDROP(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_INFDROP)) 851 #define HFA384x_EVSTAT_ISINFO(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_INFO)) 852 #define HFA384x_EVSTAT_ISDTIM(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_DTIM)) 853 #define HFA384x_EVSTAT_ISCMD(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_CMD)) 854 #define HFA384x_EVSTAT_ISALLOC(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_ALLOC)) 855 #define HFA384x_EVSTAT_ISTXEXC(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_TXEXC)) 856 #define HFA384x_EVSTAT_ISTX(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_TX)) 857 #define HFA384x_EVSTAT_ISRX(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_RX)) 858 859 #define HFA384x_EVSTAT_ISBAP_OP(value) ((UINT16)(((UINT16)(value)) & HFA384x_INT_BAP_OP)) 860 861 #define HFA384x_INTEN_ISTICK(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_TICK)) 862 #define HFA384x_INTEN_TICK_SET(value) ((UINT16)(((UINT16)(value)) << 15)) 863 #define HFA384x_INTEN_ISWTERR(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_WTERR)) 864 #define HFA384x_INTEN_WTERR_SET(value) ((UINT16)(((UINT16)(value)) << 14)) 865 #define HFA384x_INTEN_ISINFDROP(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_INFDROP)) 866 #define HFA384x_INTEN_INFDROP_SET(value) ((UINT16)(((UINT16)(value)) << 13)) 867 #define HFA384x_INTEN_ISINFO(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_INFO)) 868 #define HFA384x_INTEN_INFO_SET(value) ((UINT16)(((UINT16)(value)) << 7)) 869 #define HFA384x_INTEN_ISDTIM(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_DTIM)) 870 #define HFA384x_INTEN_DTIM_SET(value) ((UINT16)(((UINT16)(value)) << 5)) 871 #define HFA384x_INTEN_ISCMD(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_CMD)) 872 #define HFA384x_INTEN_CMD_SET(value) ((UINT16)(((UINT16)(value)) << 4)) 873 #define HFA384x_INTEN_ISALLOC(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_ALLOC)) 874 #define HFA384x_INTEN_ALLOC_SET(value) ((UINT16)(((UINT16)(value)) << 3)) 875 #define HFA384x_INTEN_ISTXEXC(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_TXEXC)) 876 #define HFA384x_INTEN_TXEXC_SET(value) ((UINT16)(((UINT16)(value)) << 2)) 877 #define HFA384x_INTEN_ISTX(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_TX)) 878 #define HFA384x_INTEN_TX_SET(value) ((UINT16)(((UINT16)(value)) << 1)) 879 #define HFA384x_INTEN_ISRX(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_RX)) 880 #define HFA384x_INTEN_RX_SET(value) ((UINT16)(((UINT16)(value)) << 0)) 881 882 #define HFA384x_EVACK_ISTICK(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_TICK)) 883 #define HFA384x_EVACK_TICK_SET(value) ((UINT16)(((UINT16)(value)) << 15)) 884 #define HFA384x_EVACK_ISWTERR(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_WTERR)) 885 #define HFA384x_EVACK_WTERR_SET(value) ((UINT16)(((UINT16)(value)) << 14)) 886 #define HFA384x_EVACK_ISINFDROP(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_INFDROP)) 887 #define HFA384x_EVACK_INFDROP_SET(value) ((UINT16)(((UINT16)(value)) << 13)) 888 #define HFA384x_EVACK_ISINFO(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_INFO)) 889 #define HFA384x_EVACK_INFO_SET(value) ((UINT16)(((UINT16)(value)) << 7)) 890 #define HFA384x_EVACK_ISDTIM(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_DTIM)) 891 #define HFA384x_EVACK_DTIM_SET(value) ((UINT16)(((UINT16)(value)) << 5)) 892 #define HFA384x_EVACK_ISCMD(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_CMD)) 893 #define HFA384x_EVACK_CMD_SET(value) ((UINT16)(((UINT16)(value)) << 4)) 894 #define HFA384x_EVACK_ISALLOC(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_ALLOC)) 895 #define HFA384x_EVACK_ALLOC_SET(value) ((UINT16)(((UINT16)(value)) << 3)) 896 #define HFA384x_EVACK_ISTXEXC(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_TXEXC)) 897 #define HFA384x_EVACK_TXEXC_SET(value) ((UINT16)(((UINT16)(value)) << 2)) 898 #define HFA384x_EVACK_ISTX(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_TX)) 899 #define HFA384x_EVACK_TX_SET(value) ((UINT16)(((UINT16)(value)) << 1)) 900 #define HFA384x_EVACK_ISRX(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_RX)) 901 #define HFA384x_EVACK_RX_SET(value) ((UINT16)(((UINT16)(value)) << 0)) 902 903 #define HFA384x_CONTROL_AUXEN_SET(value) ((UINT16)(((UINT16)(value)) << 14)) 904 #define HFA384x_CONTROL_AUXEN_GET(value) ((UINT16)(((UINT16)(value)) >> 14)) 905 906 /* Byte Order */ 907 #ifdef __KERNEL__ 908 #define hfa384x2host_16(n) (__le16_to_cpu((UINT16)(n))) 909 #define hfa384x2host_32(n) (__le32_to_cpu((UINT32)(n))) 910 #define host2hfa384x_16(n) (__cpu_to_le16((UINT16)(n))) 911 #define host2hfa384x_32(n) (__cpu_to_le32((UINT32)(n))) 912 #endif 913 914 /* Host Maintained State Info */ 915 #define HFA384x_STATE_PREINIT 0 916 #define HFA384x_STATE_INIT 1 917 #define HFA384x_STATE_RUNNING 2 918 919 /*=============================================================*/ 920 /*------ Types and their related constants --------------------*/ 921 922 #define HFA384x_HOSTAUTHASSOC_HOSTAUTH BIT0 923 #define HFA384x_HOSTAUTHASSOC_HOSTASSOC BIT1 924 925 #define HFA384x_WHAHANDLING_DISABLED 0 926 #define HFA384x_WHAHANDLING_PASSTHROUGH BIT1 927 928 /*-------------------------------------------------------------*/ 929 /* Commonly used basic types */ 930 typedef struct hfa384x_bytestr 931 { 932 UINT16 len; 933 UINT8 data[0]; 934 } __WLAN_ATTRIB_PACK__ hfa384x_bytestr_t; 935 936 typedef struct hfa384x_bytestr32 937 { 938 UINT16 len; 939 UINT8 data[32]; 940 } __WLAN_ATTRIB_PACK__ hfa384x_bytestr32_t; 941 942 /*-------------------------------------------------------------------- 943 Configuration Record Structures: 944 Network Parameters, Static Configuration Entities 945 --------------------------------------------------------------------*/ 946 /* Prototype structure: all configuration record structures start with 947 these members */ 948 949 typedef struct hfa384x_record 950 { 951 UINT16 reclen; 952 UINT16 rid; 953 } __WLAN_ATTRIB_PACK__ hfa384x_rec_t; 954 955 typedef struct hfa384x_record16 956 { 957 UINT16 reclen; 958 UINT16 rid; 959 UINT16 val; 960 } __WLAN_ATTRIB_PACK__ hfa384x_rec16_t; 961 962 typedef struct hfa384x_record32 963 { 964 UINT16 reclen; 965 UINT16 rid; 966 UINT32 val; 967 } __WLAN_ATTRIB_PACK__ hfa384x_rec32; 968 969 /*-- Hardware/Firmware Component Information ----------*/ 970 typedef struct hfa384x_compident 971 { 972 UINT16 id; 973 UINT16 variant; 974 UINT16 major; 975 UINT16 minor; 976 } __WLAN_ATTRIB_PACK__ hfa384x_compident_t; 977 978 typedef struct hfa384x_caplevel 979 { 980 UINT16 role; 981 UINT16 id; 982 UINT16 variant; 983 UINT16 bottom; 984 UINT16 top; 985 } __WLAN_ATTRIB_PACK__ hfa384x_caplevel_t; 986 987 /*-- Configuration Record: cnfPortType --*/ 988 typedef struct hfa384x_cnfPortType 989 { 990 UINT16 cnfPortType; 991 } __WLAN_ATTRIB_PACK__ hfa384x_cnfPortType_t; 992 993 /*-- Configuration Record: cnfOwnMACAddress --*/ 994 typedef struct hfa384x_cnfOwnMACAddress 995 { 996 UINT8 cnfOwnMACAddress[6]; 997 } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnMACAddress_t; 998 999 /*-- Configuration Record: cnfDesiredSSID --*/ 1000 typedef struct hfa384x_cnfDesiredSSID 1001 { 1002 UINT8 cnfDesiredSSID[34]; 1003 } __WLAN_ATTRIB_PACK__ hfa384x_cnfDesiredSSID_t; 1004 1005 /*-- Configuration Record: cnfOwnChannel --*/ 1006 typedef struct hfa384x_cnfOwnChannel 1007 { 1008 UINT16 cnfOwnChannel; 1009 } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnChannel_t; 1010 1011 /*-- Configuration Record: cnfOwnSSID --*/ 1012 typedef struct hfa384x_cnfOwnSSID 1013 { 1014 UINT8 cnfOwnSSID[34]; 1015 } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnSSID_t; 1016 1017 /*-- Configuration Record: cnfOwnATIMWindow --*/ 1018 typedef struct hfa384x_cnfOwnATIMWindow 1019 { 1020 UINT16 cnfOwnATIMWindow; 1021 } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnATIMWindow_t; 1022 1023 /*-- Configuration Record: cnfSystemScale --*/ 1024 typedef struct hfa384x_cnfSystemScale 1025 { 1026 UINT16 cnfSystemScale; 1027 } __WLAN_ATTRIB_PACK__ hfa384x_cnfSystemScale_t; 1028 1029 /*-- Configuration Record: cnfMaxDataLength --*/ 1030 typedef struct hfa384x_cnfMaxDataLength 1031 { 1032 UINT16 cnfMaxDataLength; 1033 } __WLAN_ATTRIB_PACK__ hfa384x_cnfMaxDataLength_t; 1034 1035 /*-- Configuration Record: cnfWDSAddress --*/ 1036 typedef struct hfa384x_cnfWDSAddress 1037 { 1038 UINT8 cnfWDSAddress[6]; 1039 } __WLAN_ATTRIB_PACK__ hfa384x_cnfWDSAddress_t; 1040 1041 /*-- Configuration Record: cnfPMEnabled --*/ 1042 typedef struct hfa384x_cnfPMEnabled 1043 { 1044 UINT16 cnfPMEnabled; 1045 } __WLAN_ATTRIB_PACK__ hfa384x_cnfPMEnabled_t; 1046 1047 /*-- Configuration Record: cnfPMEPS --*/ 1048 typedef struct hfa384x_cnfPMEPS 1049 { 1050 UINT16 cnfPMEPS; 1051 } __WLAN_ATTRIB_PACK__ hfa384x_cnfPMEPS_t; 1052 1053 /*-- Configuration Record: cnfMulticastReceive --*/ 1054 typedef struct hfa384x_cnfMulticastReceive 1055 { 1056 UINT16 cnfMulticastReceive; 1057 } __WLAN_ATTRIB_PACK__ hfa384x_cnfMulticastReceive_t; 1058 1059 /*-- Configuration Record: cnfAuthentication --*/ 1060 #define HFA384x_CNFAUTHENTICATION_OPENSYSTEM 0x0001 1061 #define HFA384x_CNFAUTHENTICATION_SHAREDKEY 0x0002 1062 #define HFA384x_CNFAUTHENTICATION_LEAP 0x0004 1063 1064 /*-- Configuration Record: cnfMaxSleepDuration --*/ 1065 typedef struct hfa384x_cnfMaxSleepDuration 1066 { 1067 UINT16 cnfMaxSleepDuration; 1068 } __WLAN_ATTRIB_PACK__ hfa384x_cnfMaxSleepDuration_t; 1069 1070 /*-- Configuration Record: cnfPMHoldoverDuration --*/ 1071 typedef struct hfa384x_cnfPMHoldoverDuration 1072 { 1073 UINT16 cnfPMHoldoverDuration; 1074 } __WLAN_ATTRIB_PACK__ hfa384x_cnfPMHoldoverDuration_t; 1075 1076 /*-- Configuration Record: cnfOwnName --*/ 1077 typedef struct hfa384x_cnfOwnName 1078 { 1079 UINT8 cnfOwnName[34]; 1080 } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnName_t; 1081 1082 /*-- Configuration Record: cnfOwnDTIMPeriod --*/ 1083 typedef struct hfa384x_cnfOwnDTIMPeriod 1084 { 1085 UINT16 cnfOwnDTIMPeriod; 1086 } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnDTIMPeriod_t; 1087 1088 /*-- Configuration Record: cnfWDSAddress --*/ 1089 typedef struct hfa384x_cnfWDSAddressN 1090 { 1091 UINT8 cnfWDSAddress[6]; 1092 } __WLAN_ATTRIB_PACK__ hfa384x_cnfWDSAddressN_t; 1093 1094 /*-- Configuration Record: cnfMulticastPMBuffering --*/ 1095 typedef struct hfa384x_cnfMulticastPMBuffering 1096 { 1097 UINT16 cnfMulticastPMBuffering; 1098 } __WLAN_ATTRIB_PACK__ hfa384x_cnfMulticastPMBuffering_t; 1099 1100 /*-------------------------------------------------------------------- 1101 Configuration Record Structures: 1102 Network Parameters, Dynamic Configuration Entities 1103 --------------------------------------------------------------------*/ 1104 1105 /*-- Configuration Record: GroupAddresses --*/ 1106 typedef struct hfa384x_GroupAddresses 1107 { 1108 UINT8 MACAddress[16][6]; 1109 } __WLAN_ATTRIB_PACK__ hfa384x_GroupAddresses_t; 1110 1111 /*-- Configuration Record: CreateIBSS --*/ 1112 typedef struct hfa384x_CreateIBSS 1113 { 1114 UINT16 CreateIBSS; 1115 } __WLAN_ATTRIB_PACK__ hfa384x_CreateIBSS_t; 1116 1117 #define HFA384x_CREATEIBSS_JOINCREATEIBSS 0 1118 #define HFA384x_CREATEIBSS_JOINESS_JOINCREATEIBSS 1 1119 #define HFA384x_CREATEIBSS_JOINIBSS 2 1120 #define HFA384x_CREATEIBSS_JOINESS_JOINIBSS 3 1121 1122 /*-- Configuration Record: FragmentationThreshold --*/ 1123 typedef struct hfa384x_FragmentationThreshold 1124 { 1125 UINT16 FragmentationThreshold; 1126 } __WLAN_ATTRIB_PACK__ hfa384x_FragmentationThreshold_t; 1127 1128 /*-- Configuration Record: RTSThreshold --*/ 1129 typedef struct hfa384x_RTSThreshold 1130 { 1131 UINT16 RTSThreshold; 1132 } __WLAN_ATTRIB_PACK__ hfa384x_RTSThreshold_t; 1133 1134 /*-- Configuration Record: TxRateControl --*/ 1135 typedef struct hfa384x_TxRateControl 1136 { 1137 UINT16 TxRateControl; 1138 } __WLAN_ATTRIB_PACK__ hfa384x_TxRateControl_t; 1139 1140 /*-- Configuration Record: PromiscuousMode --*/ 1141 typedef struct hfa384x_PromiscuousMode 1142 { 1143 UINT16 PromiscuousMode; 1144 } __WLAN_ATTRIB_PACK__ hfa384x_PromiscuousMode_t; 1145 1146 /*-- Configuration Record: ScanRequest (data portion only) --*/ 1147 typedef struct hfa384x_ScanRequest_data 1148 { 1149 UINT16 channelList; 1150 UINT16 txRate; 1151 } __WLAN_ATTRIB_PACK__ hfa384x_ScanRequest_data_t; 1152 1153 /*-- Configuration Record: HostScanRequest (data portion only) --*/ 1154 typedef struct hfa384x_HostScanRequest_data 1155 { 1156 UINT16 channelList; 1157 UINT16 txRate; 1158 hfa384x_bytestr32_t ssid; 1159 } __WLAN_ATTRIB_PACK__ hfa384x_HostScanRequest_data_t; 1160 1161 /*-- Configuration Record: JoinRequest (data portion only) --*/ 1162 typedef struct hfa384x_JoinRequest_data 1163 { 1164 UINT8 bssid[WLAN_BSSID_LEN]; 1165 UINT16 channel; 1166 } __WLAN_ATTRIB_PACK__ hfa384x_JoinRequest_data_t; 1167 1168 /*-- Configuration Record: authenticateStation (data portion only) --*/ 1169 typedef struct hfa384x_authenticateStation_data 1170 { 1171 UINT8 address[WLAN_ADDR_LEN]; 1172 UINT16 status; 1173 UINT16 algorithm; 1174 } __WLAN_ATTRIB_PACK__ hfa384x_authenticateStation_data_t; 1175 1176 /*-- Configuration Record: associateStation (data portion only) --*/ 1177 typedef struct hfa384x_associateStation_data 1178 { 1179 UINT8 address[WLAN_ADDR_LEN]; 1180 UINT16 status; 1181 UINT16 type; 1182 } __WLAN_ATTRIB_PACK__ hfa384x_associateStation_data_t; 1183 1184 /*-- Configuration Record: ChannelInfoRequest (data portion only) --*/ 1185 typedef struct hfa384x_ChannelInfoRequest_data 1186 { 1187 UINT16 channelList; 1188 UINT16 channelDwellTime; 1189 } __WLAN_ATTRIB_PACK__ hfa384x_ChannelInfoRequest_data_t; 1190 1191 /*-- Configuration Record: WEPKeyMapping (data portion only) --*/ 1192 typedef struct hfa384x_WEPKeyMapping 1193 { 1194 UINT8 address[WLAN_ADDR_LEN]; 1195 UINT16 key_index; 1196 UINT8 key[16]; 1197 UINT8 mic_transmit_key[4]; 1198 UINT8 mic_receive_key[4]; 1199 } __WLAN_ATTRIB_PACK__ hfa384x_WEPKeyMapping_t; 1200 1201 /*-- Configuration Record: WPAData (data portion only) --*/ 1202 typedef struct hfa384x_WPAData 1203 { 1204 UINT16 datalen; 1205 UINT8 data[0]; // max 80 1206 } __WLAN_ATTRIB_PACK__ hfa384x_WPAData_t; 1207 1208 /*-------------------------------------------------------------------- 1209 Configuration Record Structures: Behavior Parameters 1210 --------------------------------------------------------------------*/ 1211 1212 /*-- Configuration Record: TickTime --*/ 1213 typedef struct hfa384x_TickTime 1214 { 1215 UINT16 TickTime; 1216 } __WLAN_ATTRIB_PACK__ hfa384x_TickTime_t; 1217 1218 /*-------------------------------------------------------------------- 1219 Information Record Structures: NIC Information 1220 --------------------------------------------------------------------*/ 1221 1222 /*-- Information Record: MaxLoadTime --*/ 1223 typedef struct hfa384x_MaxLoadTime 1224 { 1225 UINT16 MaxLoadTime; 1226 } __WLAN_ATTRIB_PACK__ hfa384x_MaxLoadTime_t; 1227 1228 /*-- Information Record: DownLoadBuffer --*/ 1229 /* NOTE: The page and offset are in AUX format */ 1230 typedef struct hfa384x_downloadbuffer 1231 { 1232 UINT16 page; 1233 UINT16 offset; 1234 UINT16 len; 1235 } __WLAN_ATTRIB_PACK__ hfa384x_downloadbuffer_t; 1236 1237 /*-- Information Record: PRIIdentity --*/ 1238 typedef struct hfa384x_PRIIdentity 1239 { 1240 UINT16 PRICompID; 1241 UINT16 PRIVariant; 1242 UINT16 PRIMajorVersion; 1243 UINT16 PRIMinorVersion; 1244 } __WLAN_ATTRIB_PACK__ hfa384x_PRIIdentity_t; 1245 1246 /*-- Information Record: PRISupRange --*/ 1247 typedef struct hfa384x_PRISupRange 1248 { 1249 UINT16 PRIRole; 1250 UINT16 PRIID; 1251 UINT16 PRIVariant; 1252 UINT16 PRIBottom; 1253 UINT16 PRITop; 1254 } __WLAN_ATTRIB_PACK__ hfa384x_PRISupRange_t; 1255 1256 /*-- Information Record: CFIActRanges --*/ 1257 typedef struct hfa384x_CFIActRanges 1258 { 1259 UINT16 CFIRole; 1260 UINT16 CFIID; 1261 UINT16 CFIVariant; 1262 UINT16 CFIBottom; 1263 UINT16 CFITop; 1264 } __WLAN_ATTRIB_PACK__ hfa384x_CFIActRanges_t; 1265 1266 /*-- Information Record: NICSerialNumber --*/ 1267 typedef struct hfa384x_NICSerialNumber 1268 { 1269 UINT8 NICSerialNumber[12]; 1270 } __WLAN_ATTRIB_PACK__ hfa384x_NICSerialNumber_t; 1271 1272 /*-- Information Record: NICIdentity --*/ 1273 typedef struct hfa384x_NICIdentity 1274 { 1275 UINT16 NICCompID; 1276 UINT16 NICVariant; 1277 UINT16 NICMajorVersion; 1278 UINT16 NICMinorVersion; 1279 } __WLAN_ATTRIB_PACK__ hfa384x_NICIdentity_t; 1280 1281 /*-- Information Record: MFISupRange --*/ 1282 typedef struct hfa384x_MFISupRange 1283 { 1284 UINT16 MFIRole; 1285 UINT16 MFIID; 1286 UINT16 MFIVariant; 1287 UINT16 MFIBottom; 1288 UINT16 MFITop; 1289 } __WLAN_ATTRIB_PACK__ hfa384x_MFISupRange_t; 1290 1291 /*-- Information Record: CFISupRange --*/ 1292 typedef struct hfa384x_CFISupRange 1293 { 1294 UINT16 CFIRole; 1295 UINT16 CFIID; 1296 UINT16 CFIVariant; 1297 UINT16 CFIBottom; 1298 UINT16 CFITop; 1299 } __WLAN_ATTRIB_PACK__ hfa384x_CFISupRange_t; 1300 1301 /*-- Information Record: BUILDSEQ:BuildSeq --*/ 1302 typedef struct hfa384x_BuildSeq { 1303 UINT16 primary; 1304 UINT16 secondary; 1305 } __WLAN_ATTRIB_PACK__ hfa384x_BuildSeq_t; 1306 1307 /*-- Information Record: FWID --*/ 1308 #define HFA384x_FWID_LEN 14 1309 typedef struct hfa384x_FWID { 1310 UINT8 primary[HFA384x_FWID_LEN]; 1311 UINT8 secondary[HFA384x_FWID_LEN]; 1312 } __WLAN_ATTRIB_PACK__ hfa384x_FWID_t; 1313 1314 /*-- Information Record: ChannelList --*/ 1315 typedef struct hfa384x_ChannelList 1316 { 1317 UINT16 ChannelList; 1318 } __WLAN_ATTRIB_PACK__ hfa384x_ChannelList_t; 1319 1320 /*-- Information Record: RegulatoryDomains --*/ 1321 typedef struct hfa384x_RegulatoryDomains 1322 { 1323 UINT8 RegulatoryDomains[12]; 1324 } __WLAN_ATTRIB_PACK__ hfa384x_RegulatoryDomains_t; 1325 1326 /*-- Information Record: TempType --*/ 1327 typedef struct hfa384x_TempType 1328 { 1329 UINT16 TempType; 1330 } __WLAN_ATTRIB_PACK__ hfa384x_TempType_t; 1331 1332 /*-- Information Record: CIS --*/ 1333 typedef struct hfa384x_CIS 1334 { 1335 UINT8 CIS[480]; 1336 } __WLAN_ATTRIB_PACK__ hfa384x_CIS_t; 1337 1338 /*-- Information Record: STAIdentity --*/ 1339 typedef struct hfa384x_STAIdentity 1340 { 1341 UINT16 STACompID; 1342 UINT16 STAVariant; 1343 UINT16 STAMajorVersion; 1344 UINT16 STAMinorVersion; 1345 } __WLAN_ATTRIB_PACK__ hfa384x_STAIdentity_t; 1346 1347 /*-- Information Record: STASupRange --*/ 1348 typedef struct hfa384x_STASupRange 1349 { 1350 UINT16 STARole; 1351 UINT16 STAID; 1352 UINT16 STAVariant; 1353 UINT16 STABottom; 1354 UINT16 STATop; 1355 } __WLAN_ATTRIB_PACK__ hfa384x_STASupRange_t; 1356 1357 /*-- Information Record: MFIActRanges --*/ 1358 typedef struct hfa384x_MFIActRanges 1359 { 1360 UINT16 MFIRole; 1361 UINT16 MFIID; 1362 UINT16 MFIVariant; 1363 UINT16 MFIBottom; 1364 UINT16 MFITop; 1365 } __WLAN_ATTRIB_PACK__ hfa384x_MFIActRanges_t; 1366 1367 /*-------------------------------------------------------------------- 1368 Information Record Structures: NIC Information 1369 --------------------------------------------------------------------*/ 1370 1371 /*-- Information Record: PortStatus --*/ 1372 typedef struct hfa384x_PortStatus 1373 { 1374 UINT16 PortStatus; 1375 } __WLAN_ATTRIB_PACK__ hfa384x_PortStatus_t; 1376 1377 #define HFA384x_PSTATUS_DISABLED ((UINT16)1) 1378 #define HFA384x_PSTATUS_SEARCHING ((UINT16)2) 1379 #define HFA384x_PSTATUS_CONN_IBSS ((UINT16)3) 1380 #define HFA384x_PSTATUS_CONN_ESS ((UINT16)4) 1381 #define HFA384x_PSTATUS_OUTOFRANGE ((UINT16)5) 1382 #define HFA384x_PSTATUS_CONN_WDS ((UINT16)6) 1383 1384 /*-- Information Record: CurrentSSID --*/ 1385 typedef struct hfa384x_CurrentSSID 1386 { 1387 UINT8 CurrentSSID[34]; 1388 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentSSID_t; 1389 1390 /*-- Information Record: CurrentBSSID --*/ 1391 typedef struct hfa384x_CurrentBSSID 1392 { 1393 UINT8 CurrentBSSID[6]; 1394 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentBSSID_t; 1395 1396 /*-- Information Record: commsquality --*/ 1397 typedef struct hfa384x_commsquality 1398 { 1399 UINT16 CQ_currBSS; 1400 UINT16 ASL_currBSS; 1401 UINT16 ANL_currFC; 1402 } __WLAN_ATTRIB_PACK__ hfa384x_commsquality_t; 1403 1404 /*-- Information Record: dmbcommsquality --*/ 1405 typedef struct hfa384x_dbmcommsquality 1406 { 1407 UINT16 CQdbm_currBSS; 1408 UINT16 ASLdbm_currBSS; 1409 UINT16 ANLdbm_currFC; 1410 } __WLAN_ATTRIB_PACK__ hfa384x_dbmcommsquality_t; 1411 1412 /*-- Information Record: CurrentTxRate --*/ 1413 typedef struct hfa384x_CurrentTxRate 1414 { 1415 UINT16 CurrentTxRate; 1416 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentTxRate_t; 1417 1418 /*-- Information Record: CurrentBeaconInterval --*/ 1419 typedef struct hfa384x_CurrentBeaconInterval 1420 { 1421 UINT16 CurrentBeaconInterval; 1422 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentBeaconInterval_t; 1423 1424 /*-- Information Record: CurrentScaleThresholds --*/ 1425 typedef struct hfa384x_CurrentScaleThresholds 1426 { 1427 UINT16 EnergyDetectThreshold; 1428 UINT16 CarrierDetectThreshold; 1429 UINT16 DeferDetectThreshold; 1430 UINT16 CellSearchThreshold; /* Stations only */ 1431 UINT16 DeadSpotThreshold; /* Stations only */ 1432 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentScaleThresholds_t; 1433 1434 /*-- Information Record: ProtocolRspTime --*/ 1435 typedef struct hfa384x_ProtocolRspTime 1436 { 1437 UINT16 ProtocolRspTime; 1438 } __WLAN_ATTRIB_PACK__ hfa384x_ProtocolRspTime_t; 1439 1440 /*-- Information Record: ShortRetryLimit --*/ 1441 typedef struct hfa384x_ShortRetryLimit 1442 { 1443 UINT16 ShortRetryLimit; 1444 } __WLAN_ATTRIB_PACK__ hfa384x_ShortRetryLimit_t; 1445 1446 /*-- Information Record: LongRetryLimit --*/ 1447 typedef struct hfa384x_LongRetryLimit 1448 { 1449 UINT16 LongRetryLimit; 1450 } __WLAN_ATTRIB_PACK__ hfa384x_LongRetryLimit_t; 1451 1452 /*-- Information Record: MaxTransmitLifetime --*/ 1453 typedef struct hfa384x_MaxTransmitLifetime 1454 { 1455 UINT16 MaxTransmitLifetime; 1456 } __WLAN_ATTRIB_PACK__ hfa384x_MaxTransmitLifetime_t; 1457 1458 /*-- Information Record: MaxReceiveLifetime --*/ 1459 typedef struct hfa384x_MaxReceiveLifetime 1460 { 1461 UINT16 MaxReceiveLifetime; 1462 } __WLAN_ATTRIB_PACK__ hfa384x_MaxReceiveLifetime_t; 1463 1464 /*-- Information Record: CFPollable --*/ 1465 typedef struct hfa384x_CFPollable 1466 { 1467 UINT16 CFPollable; 1468 } __WLAN_ATTRIB_PACK__ hfa384x_CFPollable_t; 1469 1470 /*-- Information Record: AuthenticationAlgorithms --*/ 1471 typedef struct hfa384x_AuthenticationAlgorithms 1472 { 1473 UINT16 AuthenticationType; 1474 UINT16 TypeEnabled; 1475 } __WLAN_ATTRIB_PACK__ hfa384x_AuthenticationAlgorithms_t; 1476 1477 /*-- Information Record: AuthenticationAlgorithms 1478 (data only --*/ 1479 typedef struct hfa384x_AuthenticationAlgorithms_data 1480 { 1481 UINT16 AuthenticationType; 1482 UINT16 TypeEnabled; 1483 } __WLAN_ATTRIB_PACK__ hfa384x_AuthenticationAlgorithms_data_t; 1484 1485 /*-- Information Record: PrivacyOptionImplemented --*/ 1486 typedef struct hfa384x_PrivacyOptionImplemented 1487 { 1488 UINT16 PrivacyOptionImplemented; 1489 } __WLAN_ATTRIB_PACK__ hfa384x_PrivacyOptionImplemented_t; 1490 1491 /*-- Information Record: OwnMACAddress --*/ 1492 typedef struct hfa384x_OwnMACAddress 1493 { 1494 UINT8 OwnMACAddress[6]; 1495 } __WLAN_ATTRIB_PACK__ hfa384x_OwnMACAddress_t; 1496 1497 /*-- Information Record: PCFInfo --*/ 1498 typedef struct hfa384x_PCFInfo 1499 { 1500 UINT16 MediumOccupancyLimit; 1501 UINT16 CFPPeriod; 1502 UINT16 CFPMaxDuration; 1503 UINT16 CFPFlags; 1504 } __WLAN_ATTRIB_PACK__ hfa384x_PCFInfo_t; 1505 1506 /*-- Information Record: PCFInfo (data portion only) --*/ 1507 typedef struct hfa384x_PCFInfo_data 1508 { 1509 UINT16 MediumOccupancyLimit; 1510 UINT16 CFPPeriod; 1511 UINT16 CFPMaxDuration; 1512 UINT16 CFPFlags; 1513 } __WLAN_ATTRIB_PACK__ hfa384x_PCFInfo_data_t; 1514 1515 /*-------------------------------------------------------------------- 1516 Information Record Structures: Modem Information Records 1517 --------------------------------------------------------------------*/ 1518 1519 /*-- Information Record: PHYType --*/ 1520 typedef struct hfa384x_PHYType 1521 { 1522 UINT16 PHYType; 1523 } __WLAN_ATTRIB_PACK__ hfa384x_PHYType_t; 1524 1525 /*-- Information Record: CurrentChannel --*/ 1526 typedef struct hfa384x_CurrentChannel 1527 { 1528 UINT16 CurrentChannel; 1529 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentChannel_t; 1530 1531 /*-- Information Record: CurrentPowerState --*/ 1532 typedef struct hfa384x_CurrentPowerState 1533 { 1534 UINT16 CurrentPowerState; 1535 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentPowerState_t; 1536 1537 /*-- Information Record: CCAMode --*/ 1538 typedef struct hfa384x_CCAMode 1539 { 1540 UINT16 CCAMode; 1541 } __WLAN_ATTRIB_PACK__ hfa384x_CCAMode_t; 1542 1543 /*-- Information Record: SupportedDataRates --*/ 1544 typedef struct hfa384x_SupportedDataRates 1545 { 1546 UINT8 SupportedDataRates[10]; 1547 } __WLAN_ATTRIB_PACK__ hfa384x_SupportedDataRates_t; 1548 1549 /*-- Information Record: LFOStatus --*/ 1550 typedef struct hfa384x_LFOStatus 1551 { 1552 UINT16 TestResults; 1553 UINT16 LFOResult; 1554 UINT16 VRHFOResult; 1555 } __WLAN_ATTRIB_PACK__ hfa384x_LFOStatus_t; 1556 1557 #define HFA384x_TESTRESULT_ALLPASSED BIT0 1558 #define HFA384x_TESTRESULT_LFO_FAIL BIT1 1559 #define HFA384x_TESTRESULT_VR_HF0_FAIL BIT2 1560 #define HFA384x_HOST_FIRM_COORDINATE BIT7 1561 #define HFA384x_TESTRESULT_COORDINATE BIT15 1562 1563 /*-- Information Record: LEDControl --*/ 1564 typedef struct hfa384x_LEDControl 1565 { 1566 UINT16 searching_on; 1567 UINT16 searching_off; 1568 UINT16 assoc_on; 1569 UINT16 assoc_off; 1570 UINT16 activity; 1571 } __WLAN_ATTRIB_PACK__ hfa384x_LEDControl_t; 1572 1573 /*-------------------------------------------------------------------- 1574 FRAME DESCRIPTORS AND FRAME STRUCTURES 1575 1576 FRAME DESCRIPTORS: Offsets 1577 1578 ---------------------------------------------------------------------- 1579 Control Info (offset 44-51) 1580 --------------------------------------------------------------------*/ 1581 #define HFA384x_FD_STATUS_OFF ((UINT16)0x44) 1582 #define HFA384x_FD_TIME_OFF ((UINT16)0x46) 1583 #define HFA384x_FD_SWSUPPORT_OFF ((UINT16)0x4A) 1584 #define HFA384x_FD_SILENCE_OFF ((UINT16)0x4A) 1585 #define HFA384x_FD_SIGNAL_OFF ((UINT16)0x4B) 1586 #define HFA384x_FD_RATE_OFF ((UINT16)0x4C) 1587 #define HFA384x_FD_RXFLOW_OFF ((UINT16)0x4D) 1588 #define HFA384x_FD_RESERVED_OFF ((UINT16)0x4E) 1589 #define HFA384x_FD_TXCONTROL_OFF ((UINT16)0x50) 1590 /*-------------------------------------------------------------------- 1591 802.11 Header (offset 52-6B) 1592 --------------------------------------------------------------------*/ 1593 #define HFA384x_FD_FRAMECONTROL_OFF ((UINT16)0x52) 1594 #define HFA384x_FD_DURATIONID_OFF ((UINT16)0x54) 1595 #define HFA384x_FD_ADDRESS1_OFF ((UINT16)0x56) 1596 #define HFA384x_FD_ADDRESS2_OFF ((UINT16)0x5C) 1597 #define HFA384x_FD_ADDRESS3_OFF ((UINT16)0x62) 1598 #define HFA384x_FD_SEQCONTROL_OFF ((UINT16)0x68) 1599 #define HFA384x_FD_ADDRESS4_OFF ((UINT16)0x6A) 1600 #define HFA384x_FD_DATALEN_OFF ((UINT16)0x70) 1601 /*-------------------------------------------------------------------- 1602 802.3 Header (offset 72-7F) 1603 --------------------------------------------------------------------*/ 1604 #define HFA384x_FD_DESTADDRESS_OFF ((UINT16)0x72) 1605 #define HFA384x_FD_SRCADDRESS_OFF ((UINT16)0x78) 1606 #define HFA384x_FD_DATALENGTH_OFF ((UINT16)0x7E) 1607 1608 /*-------------------------------------------------------------------- 1609 FRAME STRUCTURES: Communication Frames 1610 ---------------------------------------------------------------------- 1611 Communication Frames: Transmit Frames 1612 --------------------------------------------------------------------*/ 1613 /*-- Communication Frame: Transmit Frame Structure --*/ 1614 typedef struct hfa384x_tx_frame 1615 { 1616 UINT16 status; 1617 UINT16 reserved1; 1618 UINT16 reserved2; 1619 UINT32 sw_support; 1620 UINT8 tx_retrycount; 1621 UINT8 tx_rate; 1622 UINT16 tx_control; 1623 1624 /*-- 802.11 Header Information --*/ 1625 1626 UINT16 frame_control; 1627 UINT16 duration_id; 1628 UINT8 address1[6]; 1629 UINT8 address2[6]; 1630 UINT8 address3[6]; 1631 UINT16 sequence_control; 1632 UINT8 address4[6]; 1633 UINT16 data_len; /* little endian format */ 1634 1635 /*-- 802.3 Header Information --*/ 1636 1637 UINT8 dest_addr[6]; 1638 UINT8 src_addr[6]; 1639 UINT16 data_length; /* big endian format */ 1640 } __WLAN_ATTRIB_PACK__ hfa384x_tx_frame_t; 1641 /*-------------------------------------------------------------------- 1642 Communication Frames: Field Masks for Transmit Frames 1643 --------------------------------------------------------------------*/ 1644 /*-- Status Field --*/ 1645 #define HFA384x_TXSTATUS_ACKERR ((UINT16)BIT5) 1646 #define HFA384x_TXSTATUS_FORMERR ((UINT16)BIT3) 1647 #define HFA384x_TXSTATUS_DISCON ((UINT16)BIT2) 1648 #define HFA384x_TXSTATUS_AGEDERR ((UINT16)BIT1) 1649 #define HFA384x_TXSTATUS_RETRYERR ((UINT16)BIT0) 1650 /*-- Transmit Control Field --*/ 1651 #define HFA384x_TX_CFPOLL ((UINT16)BIT12) 1652 #define HFA384x_TX_PRST ((UINT16)BIT11) 1653 #define HFA384x_TX_MACPORT ((UINT16)(BIT10 | BIT9 | BIT8)) 1654 #define HFA384x_TX_NOENCRYPT ((UINT16)BIT7) 1655 #define HFA384x_TX_RETRYSTRAT ((UINT16)(BIT6 | BIT5)) 1656 #define HFA384x_TX_STRUCTYPE ((UINT16)(BIT4 | BIT3)) 1657 #define HFA384x_TX_TXEX ((UINT16)BIT2) 1658 #define HFA384x_TX_TXOK ((UINT16)BIT1) 1659 /*-------------------------------------------------------------------- 1660 Communication Frames: Test/Get/Set Field Values for Transmit Frames 1661 --------------------------------------------------------------------*/ 1662 /*-- Status Field --*/ 1663 #define HFA384x_TXSTATUS_ISERROR(v) \ 1664 (((UINT16)(v))&\ 1665 (HFA384x_TXSTATUS_ACKERR|HFA384x_TXSTATUS_FORMERR|\ 1666 HFA384x_TXSTATUS_DISCON|HFA384x_TXSTATUS_AGEDERR|\ 1667 HFA384x_TXSTATUS_RETRYERR)) 1668 1669 #define HFA384x_TXSTATUS_ISACKERR(v) ((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_ACKERR)) 1670 #define HFA384x_TXSTATUS_ISFORMERR(v) ((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_FORMERR)) 1671 #define HFA384x_TXSTATUS_ISDISCON(v) ((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_DISCON)) 1672 #define HFA384x_TXSTATUS_ISAGEDERR(v) ((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_AGEDERR)) 1673 #define HFA384x_TXSTATUS_ISRETRYERR(v) ((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_RETRYERR)) 1674 1675 #define HFA384x_TX_GET(v,m,s) ((((UINT16)(v))&((UINT16)(m)))>>((UINT16)(s))) 1676 #define HFA384x_TX_SET(v,m,s) ((((UINT16)(v))<<((UINT16)(s)))&((UINT16)(m))) 1677 1678 #define HFA384x_TX_CFPOLL_GET(v) HFA384x_TX_GET(v, HFA384x_TX_CFPOLL,12) 1679 #define HFA384x_TX_CFPOLL_SET(v) HFA384x_TX_SET(v, HFA384x_TX_CFPOLL,12) 1680 #define HFA384x_TX_PRST_GET(v) HFA384x_TX_GET(v, HFA384x_TX_PRST,11) 1681 #define HFA384x_TX_PRST_SET(v) HFA384x_TX_SET(v, HFA384x_TX_PRST,11) 1682 #define HFA384x_TX_MACPORT_GET(v) HFA384x_TX_GET(v, HFA384x_TX_MACPORT, 8) 1683 #define HFA384x_TX_MACPORT_SET(v) HFA384x_TX_SET(v, HFA384x_TX_MACPORT, 8) 1684 #define HFA384x_TX_NOENCRYPT_GET(v) HFA384x_TX_GET(v, HFA384x_TX_NOENCRYPT, 7) 1685 #define HFA384x_TX_NOENCRYPT_SET(v) HFA384x_TX_SET(v, HFA384x_TX_NOENCRYPT, 7) 1686 #define HFA384x_TX_RETRYSTRAT_GET(v) HFA384x_TX_GET(v, HFA384x_TX_RETRYSTRAT, 5) 1687 #define HFA384x_TX_RETRYSTRAT_SET(v) HFA384x_TX_SET(v, HFA384x_TX_RETRYSTRAT, 5) 1688 #define HFA384x_TX_STRUCTYPE_GET(v) HFA384x_TX_GET(v, HFA384x_TX_STRUCTYPE, 3) 1689 #define HFA384x_TX_STRUCTYPE_SET(v) HFA384x_TX_SET(v, HFA384x_TX_STRUCTYPE, 3) 1690 #define HFA384x_TX_TXEX_GET(v) HFA384x_TX_GET(v, HFA384x_TX_TXEX, 2) 1691 #define HFA384x_TX_TXEX_SET(v) HFA384x_TX_SET(v, HFA384x_TX_TXEX, 2) 1692 #define HFA384x_TX_TXOK_GET(v) HFA384x_TX_GET(v, HFA384x_TX_TXOK, 1) 1693 #define HFA384x_TX_TXOK_SET(v) HFA384x_TX_SET(v, HFA384x_TX_TXOK, 1) 1694 /*-------------------------------------------------------------------- 1695 Communication Frames: Receive Frames 1696 --------------------------------------------------------------------*/ 1697 /*-- Communication Frame: Receive Frame Structure --*/ 1698 typedef struct hfa384x_rx_frame 1699 { 1700 /*-- MAC rx descriptor (hfa384x byte order) --*/ 1701 UINT16 status; 1702 UINT32 time; 1703 UINT8 silence; 1704 UINT8 signal; 1705 UINT8 rate; 1706 UINT8 rx_flow; 1707 UINT16 reserved1; 1708 UINT16 reserved2; 1709 1710 /*-- 802.11 Header Information (802.11 byte order) --*/ 1711 UINT16 frame_control; 1712 UINT16 duration_id; 1713 UINT8 address1[6]; 1714 UINT8 address2[6]; 1715 UINT8 address3[6]; 1716 UINT16 sequence_control; 1717 UINT8 address4[6]; 1718 UINT16 data_len; /* hfa384x (little endian) format */ 1719 1720 /*-- 802.3 Header Information --*/ 1721 UINT8 dest_addr[6]; 1722 UINT8 src_addr[6]; 1723 UINT16 data_length; /* IEEE? (big endian) format */ 1724 } __WLAN_ATTRIB_PACK__ hfa384x_rx_frame_t; 1725 /*-------------------------------------------------------------------- 1726 Communication Frames: Field Masks for Receive Frames 1727 --------------------------------------------------------------------*/ 1728 /*-- Offsets --------*/ 1729 #define HFA384x_RX_DATA_LEN_OFF ((UINT16)44) 1730 #define HFA384x_RX_80211HDR_OFF ((UINT16)14) 1731 #define HFA384x_RX_DATA_OFF ((UINT16)60) 1732 1733 /*-- Status Fields --*/ 1734 #define HFA384x_RXSTATUS_MSGTYPE ((UINT16)(BIT15 | BIT14 | BIT13)) 1735 #define HFA384x_RXSTATUS_MACPORT ((UINT16)(BIT10 | BIT9 | BIT8)) 1736 #define HFA384x_RXSTATUS_UNDECR ((UINT16)BIT1) 1737 #define HFA384x_RXSTATUS_FCSERR ((UINT16)BIT0) 1738 /*-------------------------------------------------------------------- 1739 Communication Frames: Test/Get/Set Field Values for Receive Frames 1740 --------------------------------------------------------------------*/ 1741 #define HFA384x_RXSTATUS_MSGTYPE_GET(value) ((UINT16)((((UINT16)(value)) & HFA384x_RXSTATUS_MSGTYPE) >> 13)) 1742 #define HFA384x_RXSTATUS_MSGTYPE_SET(value) ((UINT16)(((UINT16)(value)) << 13)) 1743 #define HFA384x_RXSTATUS_MACPORT_GET(value) ((UINT16)((((UINT16)(value)) & HFA384x_RXSTATUS_MACPORT) >> 8)) 1744 #define HFA384x_RXSTATUS_MACPORT_SET(value) ((UINT16)(((UINT16)(value)) << 8)) 1745 #define HFA384x_RXSTATUS_ISUNDECR(value) ((UINT16)(((UINT16)(value)) & HFA384x_RXSTATUS_UNDECR)) 1746 #define HFA384x_RXSTATUS_ISFCSERR(value) ((UINT16)(((UINT16)(value)) & HFA384x_RXSTATUS_FCSERR)) 1747 /*-------------------------------------------------------------------- 1748 FRAME STRUCTURES: Information Types and Information Frame Structures 1749 ---------------------------------------------------------------------- 1750 Information Types 1751 --------------------------------------------------------------------*/ 1752 #define HFA384x_IT_HANDOVERADDR ((UINT16)0xF000UL) 1753 #define HFA384x_IT_HANDOVERDEAUTHADDRESS ((UINT16)0xF001UL)//AP 1.3.7 1754 #define HFA384x_IT_COMMTALLIES ((UINT16)0xF100UL) 1755 #define HFA384x_IT_SCANRESULTS ((UINT16)0xF101UL) 1756 #define HFA384x_IT_CHINFORESULTS ((UINT16)0xF102UL) 1757 #define HFA384x_IT_HOSTSCANRESULTS ((UINT16)0xF103UL) 1758 #define HFA384x_IT_LINKSTATUS ((UINT16)0xF200UL) 1759 #define HFA384x_IT_ASSOCSTATUS ((UINT16)0xF201UL) 1760 #define HFA384x_IT_AUTHREQ ((UINT16)0xF202UL) 1761 #define HFA384x_IT_PSUSERCNT ((UINT16)0xF203UL) 1762 #define HFA384x_IT_KEYIDCHANGED ((UINT16)0xF204UL) 1763 #define HFA384x_IT_ASSOCREQ ((UINT16)0xF205UL) 1764 #define HFA384x_IT_MICFAILURE ((UINT16)0xF206UL) 1765 1766 /*-------------------------------------------------------------------- 1767 Information Frames Structures 1768 ---------------------------------------------------------------------- 1769 Information Frames: Notification Frame Structures 1770 --------------------------------------------------------------------*/ 1771 /*-- Notification Frame,MAC Mgmt: Handover Address --*/ 1772 typedef struct hfa384x_HandoverAddr 1773 { 1774 UINT16 framelen; 1775 UINT16 infotype; 1776 UINT8 handover_addr[WLAN_BSSID_LEN]; 1777 } __WLAN_ATTRIB_PACK__ hfa384x_HandoverAddr_t; 1778 1779 /*-- Inquiry Frame, Diagnose: Communication Tallies --*/ 1780 typedef struct hfa384x_CommTallies16 1781 { 1782 UINT16 txunicastframes; 1783 UINT16 txmulticastframes; 1784 UINT16 txfragments; 1785 UINT16 txunicastoctets; 1786 UINT16 txmulticastoctets; 1787 UINT16 txdeferredtrans; 1788 UINT16 txsingleretryframes; 1789 UINT16 txmultipleretryframes; 1790 UINT16 txretrylimitexceeded; 1791 UINT16 txdiscards; 1792 UINT16 rxunicastframes; 1793 UINT16 rxmulticastframes; 1794 UINT16 rxfragments; 1795 UINT16 rxunicastoctets; 1796 UINT16 rxmulticastoctets; 1797 UINT16 rxfcserrors; 1798 UINT16 rxdiscardsnobuffer; 1799 UINT16 txdiscardswrongsa; 1800 UINT16 rxdiscardswepundecr; 1801 UINT16 rxmsginmsgfrag; 1802 UINT16 rxmsginbadmsgfrag; 1803 } __WLAN_ATTRIB_PACK__ hfa384x_CommTallies16_t; 1804 1805 typedef struct hfa384x_CommTallies32 1806 { 1807 UINT32 txunicastframes; 1808 UINT32 txmulticastframes; 1809 UINT32 txfragments; 1810 UINT32 txunicastoctets; 1811 UINT32 txmulticastoctets; 1812 UINT32 txdeferredtrans; 1813 UINT32 txsingleretryframes; 1814 UINT32 txmultipleretryframes; 1815 UINT32 txretrylimitexceeded; 1816 UINT32 txdiscards; 1817 UINT32 rxunicastframes; 1818 UINT32 rxmulticastframes; 1819 UINT32 rxfragments; 1820 UINT32 rxunicastoctets; 1821 UINT32 rxmulticastoctets; 1822 UINT32 rxfcserrors; 1823 UINT32 rxdiscardsnobuffer; 1824 UINT32 txdiscardswrongsa; 1825 UINT32 rxdiscardswepundecr; 1826 UINT32 rxmsginmsgfrag; 1827 UINT32 rxmsginbadmsgfrag; 1828 } __WLAN_ATTRIB_PACK__ hfa384x_CommTallies32_t; 1829 1830 /*-- Inquiry Frame, Diagnose: Scan Results & Subfields--*/ 1831 typedef struct hfa384x_ScanResultSub 1832 { 1833 UINT16 chid; 1834 UINT16 anl; 1835 UINT16 sl; 1836 UINT8 bssid[WLAN_BSSID_LEN]; 1837 UINT16 bcnint; 1838 UINT16 capinfo; 1839 hfa384x_bytestr32_t ssid; 1840 UINT8 supprates[10]; /* 802.11 info element */ 1841 UINT16 proberesp_rate; 1842 } __WLAN_ATTRIB_PACK__ hfa384x_ScanResultSub_t; 1843 1844 typedef struct hfa384x_ScanResult 1845 { 1846 UINT16 rsvd; 1847 UINT16 scanreason; 1848 hfa384x_ScanResultSub_t 1849 result[HFA384x_SCANRESULT_MAX]; 1850 } __WLAN_ATTRIB_PACK__ hfa384x_ScanResult_t; 1851 1852 /*-- Inquiry Frame, Diagnose: ChInfo Results & Subfields--*/ 1853 typedef struct hfa384x_ChInfoResultSub 1854 { 1855 UINT16 chid; 1856 UINT16 anl; 1857 UINT16 pnl; 1858 UINT16 active; 1859 } __WLAN_ATTRIB_PACK__ hfa384x_ChInfoResultSub_t; 1860 1861 #define HFA384x_CHINFORESULT_BSSACTIVE BIT0 1862 #define HFA384x_CHINFORESULT_PCFACTIVE BIT1 1863 1864 typedef struct hfa384x_ChInfoResult 1865 { 1866 UINT16 scanchannels; 1867 hfa384x_ChInfoResultSub_t 1868 result[HFA384x_CHINFORESULT_MAX]; 1869 } __WLAN_ATTRIB_PACK__ hfa384x_ChInfoResult_t; 1870 1871 /*-- Inquiry Frame, Diagnose: Host Scan Results & Subfields--*/ 1872 typedef struct hfa384x_HScanResultSub 1873 { 1874 UINT16 chid; 1875 UINT16 anl; 1876 UINT16 sl; 1877 UINT8 bssid[WLAN_BSSID_LEN]; 1878 UINT16 bcnint; 1879 UINT16 capinfo; 1880 hfa384x_bytestr32_t ssid; 1881 UINT8 supprates[10]; /* 802.11 info element */ 1882 UINT16 proberesp_rate; 1883 UINT16 atim; 1884 } __WLAN_ATTRIB_PACK__ hfa384x_HScanResultSub_t; 1885 1886 typedef struct hfa384x_HScanResult 1887 { 1888 UINT16 nresult; 1889 UINT16 rsvd; 1890 hfa384x_HScanResultSub_t 1891 result[HFA384x_HSCANRESULT_MAX]; 1892 } __WLAN_ATTRIB_PACK__ hfa384x_HScanResult_t; 1893 1894 /*-- Unsolicited Frame, MAC Mgmt: LinkStatus --*/ 1895 1896 #define HFA384x_LINK_NOTCONNECTED ((UINT16)0) 1897 #define HFA384x_LINK_CONNECTED ((UINT16)1) 1898 #define HFA384x_LINK_DISCONNECTED ((UINT16)2) 1899 #define HFA384x_LINK_AP_CHANGE ((UINT16)3) 1900 #define HFA384x_LINK_AP_OUTOFRANGE ((UINT16)4) 1901 #define HFA384x_LINK_AP_INRANGE ((UINT16)5) 1902 #define HFA384x_LINK_ASSOCFAIL ((UINT16)6) 1903 1904 typedef struct hfa384x_LinkStatus 1905 { 1906 UINT16 linkstatus; 1907 } __WLAN_ATTRIB_PACK__ hfa384x_LinkStatus_t; 1908 1909 1910 /*-- Unsolicited Frame, MAC Mgmt: AssociationStatus (--*/ 1911 1912 #define HFA384x_ASSOCSTATUS_STAASSOC ((UINT16)1) 1913 #define HFA384x_ASSOCSTATUS_REASSOC ((UINT16)2) 1914 #define HFA384x_ASSOCSTATUS_DISASSOC ((UINT16)3) 1915 #define HFA384x_ASSOCSTATUS_ASSOCFAIL ((UINT16)4) 1916 #define HFA384x_ASSOCSTATUS_AUTHFAIL ((UINT16)5) 1917 1918 typedef struct hfa384x_AssocStatus 1919 { 1920 UINT16 assocstatus; 1921 UINT8 sta_addr[WLAN_ADDR_LEN]; 1922 /* old_ap_addr is only valid if assocstatus == 2 */ 1923 UINT8 old_ap_addr[WLAN_ADDR_LEN]; 1924 UINT16 reason; 1925 UINT16 reserved; 1926 } __WLAN_ATTRIB_PACK__ hfa384x_AssocStatus_t; 1927 1928 /*-- Unsolicited Frame, MAC Mgmt: AuthRequest (AP Only) --*/ 1929 1930 typedef struct hfa384x_AuthRequest 1931 { 1932 UINT8 sta_addr[WLAN_ADDR_LEN]; 1933 UINT16 algorithm; 1934 } __WLAN_ATTRIB_PACK__ hfa384x_AuthReq_t; 1935 1936 /*-- Unsolicited Frame, MAC Mgmt: AssocRequest (AP Only) --*/ 1937 1938 typedef struct hfa384x_AssocRequest 1939 { 1940 UINT8 sta_addr[WLAN_ADDR_LEN]; 1941 UINT16 type; 1942 UINT8 wpa_data[80]; 1943 } __WLAN_ATTRIB_PACK__ hfa384x_AssocReq_t; 1944 1945 1946 #define HFA384x_ASSOCREQ_TYPE_ASSOC 0 1947 #define HFA384x_ASSOCREQ_TYPE_REASSOC 1 1948 1949 /*-- Unsolicited Frame, MAC Mgmt: MIC Failure (AP Only) --*/ 1950 1951 typedef struct hfa384x_MicFailure 1952 { 1953 UINT8 sender[WLAN_ADDR_LEN]; 1954 UINT8 dest[WLAN_ADDR_LEN]; 1955 } __WLAN_ATTRIB_PACK__ hfa384x_MicFailure_t; 1956 1957 /*-- Unsolicited Frame, MAC Mgmt: PSUserCount (AP Only) --*/ 1958 1959 typedef struct hfa384x_PSUserCount 1960 { 1961 UINT16 usercnt; 1962 } __WLAN_ATTRIB_PACK__ hfa384x_PSUserCount_t; 1963 1964 typedef struct hfa384x_KeyIDChanged 1965 { 1966 UINT8 sta_addr[WLAN_ADDR_LEN]; 1967 UINT16 keyid; 1968 } __WLAN_ATTRIB_PACK__ hfa384x_KeyIDChanged_t; 1969 1970 /*-- Collection of all Inf frames ---------------*/ 1971 typedef union hfa384x_infodata { 1972 hfa384x_CommTallies16_t commtallies16; 1973 hfa384x_CommTallies32_t commtallies32; 1974 hfa384x_ScanResult_t scanresult; 1975 hfa384x_ChInfoResult_t chinforesult; 1976 hfa384x_HScanResult_t hscanresult; 1977 hfa384x_LinkStatus_t linkstatus; 1978 hfa384x_AssocStatus_t assocstatus; 1979 hfa384x_AuthReq_t authreq; 1980 hfa384x_PSUserCount_t psusercnt; 1981 hfa384x_KeyIDChanged_t keyidchanged; 1982 } __WLAN_ATTRIB_PACK__ hfa384x_infodata_t; 1983 1984 typedef struct hfa384x_InfFrame 1985 { 1986 UINT16 framelen; 1987 UINT16 infotype; 1988 hfa384x_infodata_t info; 1989 } __WLAN_ATTRIB_PACK__ hfa384x_InfFrame_t; 1990 1991 #if (WLAN_HOSTIF == WLAN_USB) 1992 /*-------------------------------------------------------------------- 1993 USB Packet structures and constants. 1994 --------------------------------------------------------------------*/ 1995 1996 /* Should be sent to the ctrlout endpoint */ 1997 #define HFA384x_USB_ENBULKIN 6 1998 1999 /* Should be sent to the bulkout endpoint */ 2000 #define HFA384x_USB_TXFRM 0 2001 #define HFA384x_USB_CMDREQ 1 2002 #define HFA384x_USB_WRIDREQ 2 2003 #define HFA384x_USB_RRIDREQ 3 2004 #define HFA384x_USB_WMEMREQ 4 2005 #define HFA384x_USB_RMEMREQ 5 2006 2007 /* Received from the bulkin endpoint */ 2008 #define HFA384x_USB_ISFRM(a) (!((a) & 0x8000)) 2009 #define HFA384x_USB_ISTXFRM(a) (((a) & 0x9000) == 0x1000) 2010 #define HFA384x_USB_ISRXFRM(a) (!((a) & 0x9000)) 2011 #define HFA384x_USB_INFOFRM 0x8000 2012 #define HFA384x_USB_CMDRESP 0x8001 2013 #define HFA384x_USB_WRIDRESP 0x8002 2014 #define HFA384x_USB_RRIDRESP 0x8003 2015 #define HFA384x_USB_WMEMRESP 0x8004 2016 #define HFA384x_USB_RMEMRESP 0x8005 2017 #define HFA384x_USB_BUFAVAIL 0x8006 2018 #define HFA384x_USB_ERROR 0x8007 2019 2020 /*------------------------------------*/ 2021 /* Request (bulk OUT) packet contents */ 2022 2023 typedef struct hfa384x_usb_txfrm { 2024 hfa384x_tx_frame_t desc; 2025 UINT8 data[WLAN_DATA_MAXLEN]; 2026 } __WLAN_ATTRIB_PACK__ hfa384x_usb_txfrm_t; 2027 2028 typedef struct hfa384x_usb_cmdreq { 2029 UINT16 type; 2030 UINT16 cmd; 2031 UINT16 parm0; 2032 UINT16 parm1; 2033 UINT16 parm2; 2034 UINT8 pad[54]; 2035 } __WLAN_ATTRIB_PACK__ hfa384x_usb_cmdreq_t; 2036 2037 typedef struct hfa384x_usb_wridreq { 2038 UINT16 type; 2039 UINT16 frmlen; 2040 UINT16 rid; 2041 UINT8 data[HFA384x_RIDDATA_MAXLEN]; 2042 } __WLAN_ATTRIB_PACK__ hfa384x_usb_wridreq_t; 2043 2044 typedef struct hfa384x_usb_rridreq { 2045 UINT16 type; 2046 UINT16 frmlen; 2047 UINT16 rid; 2048 UINT8 pad[58]; 2049 } __WLAN_ATTRIB_PACK__ hfa384x_usb_rridreq_t; 2050 2051 typedef struct hfa384x_usb_wmemreq { 2052 UINT16 type; 2053 UINT16 frmlen; 2054 UINT16 offset; 2055 UINT16 page; 2056 UINT8 data[HFA384x_USB_RWMEM_MAXLEN]; 2057 } __WLAN_ATTRIB_PACK__ hfa384x_usb_wmemreq_t; 2058 2059 typedef struct hfa384x_usb_rmemreq { 2060 UINT16 type; 2061 UINT16 frmlen; 2062 UINT16 offset; 2063 UINT16 page; 2064 UINT8 pad[56]; 2065 } __WLAN_ATTRIB_PACK__ hfa384x_usb_rmemreq_t; 2066 2067 /*------------------------------------*/ 2068 /* Response (bulk IN) packet contents */ 2069 2070 typedef struct hfa384x_usb_rxfrm { 2071 hfa384x_rx_frame_t desc; 2072 UINT8 data[WLAN_DATA_MAXLEN]; 2073 } __WLAN_ATTRIB_PACK__ hfa384x_usb_rxfrm_t; 2074 2075 typedef struct hfa384x_usb_infofrm { 2076 UINT16 type; 2077 hfa384x_InfFrame_t info; 2078 } __WLAN_ATTRIB_PACK__ hfa384x_usb_infofrm_t; 2079 2080 typedef struct hfa384x_usb_statusresp { 2081 UINT16 type; 2082 UINT16 status; 2083 UINT16 resp0; 2084 UINT16 resp1; 2085 UINT16 resp2; 2086 } __WLAN_ATTRIB_PACK__ hfa384x_usb_cmdresp_t; 2087 2088 typedef hfa384x_usb_cmdresp_t hfa384x_usb_wridresp_t; 2089 2090 typedef struct hfa384x_usb_rridresp { 2091 UINT16 type; 2092 UINT16 frmlen; 2093 UINT16 rid; 2094 UINT8 data[HFA384x_RIDDATA_MAXLEN]; 2095 } __WLAN_ATTRIB_PACK__ hfa384x_usb_rridresp_t; 2096 2097 typedef hfa384x_usb_cmdresp_t hfa384x_usb_wmemresp_t; 2098 2099 typedef struct hfa384x_usb_rmemresp { 2100 UINT16 type; 2101 UINT16 frmlen; 2102 UINT8 data[HFA384x_USB_RWMEM_MAXLEN]; 2103 } __WLAN_ATTRIB_PACK__ hfa384x_usb_rmemresp_t; 2104 2105 typedef struct hfa384x_usb_bufavail { 2106 UINT16 type; 2107 UINT16 frmlen; 2108 } __WLAN_ATTRIB_PACK__ hfa384x_usb_bufavail_t; 2109 2110 typedef struct hfa384x_usb_error { 2111 UINT16 type; 2112 UINT16 errortype; 2113 } __WLAN_ATTRIB_PACK__ hfa384x_usb_error_t; 2114 2115 /*----------------------------------------------------------*/ 2116 /* Unions for packaging all the known packet types together */ 2117 2118 typedef union hfa384x_usbout { 2119 UINT16 type; 2120 hfa384x_usb_txfrm_t txfrm; 2121 hfa384x_usb_cmdreq_t cmdreq; 2122 hfa384x_usb_wridreq_t wridreq; 2123 hfa384x_usb_rridreq_t rridreq; 2124 hfa384x_usb_wmemreq_t wmemreq; 2125 hfa384x_usb_rmemreq_t rmemreq; 2126 } __WLAN_ATTRIB_PACK__ hfa384x_usbout_t; 2127 2128 typedef union hfa384x_usbin { 2129 UINT16 type; 2130 hfa384x_usb_rxfrm_t rxfrm; 2131 hfa384x_usb_txfrm_t txfrm; 2132 hfa384x_usb_infofrm_t infofrm; 2133 hfa384x_usb_cmdresp_t cmdresp; 2134 hfa384x_usb_wridresp_t wridresp; 2135 hfa384x_usb_rridresp_t rridresp; 2136 hfa384x_usb_wmemresp_t wmemresp; 2137 hfa384x_usb_rmemresp_t rmemresp; 2138 hfa384x_usb_bufavail_t bufavail; 2139 hfa384x_usb_error_t usberror; 2140 UINT8 boguspad[3000]; 2141 } __WLAN_ATTRIB_PACK__ hfa384x_usbin_t; 2142 2143 #endif /* WLAN_USB */ 2144 2145 /*-------------------------------------------------------------------- 2146 PD record structures. 2147 --------------------------------------------------------------------*/ 2148 2149 typedef struct hfa384x_pdr_pcb_partnum 2150 { 2151 UINT8 num[8]; 2152 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_pcb_partnum_t; 2153 2154 typedef struct hfa384x_pdr_pcb_tracenum 2155 { 2156 UINT8 num[8]; 2157 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_pcb_tracenum_t; 2158 2159 typedef struct hfa384x_pdr_nic_serial 2160 { 2161 UINT8 num[12]; 2162 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_serial_t; 2163 2164 typedef struct hfa384x_pdr_mkk_measurements 2165 { 2166 double carrier_freq; 2167 double occupied_band; 2168 double power_density; 2169 double tx_spur_f1; 2170 double tx_spur_f2; 2171 double tx_spur_f3; 2172 double tx_spur_f4; 2173 double tx_spur_l1; 2174 double tx_spur_l2; 2175 double tx_spur_l3; 2176 double tx_spur_l4; 2177 double rx_spur_f1; 2178 double rx_spur_f2; 2179 double rx_spur_l1; 2180 double rx_spur_l2; 2181 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mkk_measurements_t; 2182 2183 typedef struct hfa384x_pdr_nic_ramsize 2184 { 2185 UINT8 size[12]; /* units of KB */ 2186 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_ramsize_t; 2187 2188 typedef struct hfa384x_pdr_mfisuprange 2189 { 2190 UINT16 id; 2191 UINT16 variant; 2192 UINT16 bottom; 2193 UINT16 top; 2194 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mfisuprange_t; 2195 2196 typedef struct hfa384x_pdr_cfisuprange 2197 { 2198 UINT16 id; 2199 UINT16 variant; 2200 UINT16 bottom; 2201 UINT16 top; 2202 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_cfisuprange_t; 2203 2204 typedef struct hfa384x_pdr_nicid 2205 { 2206 UINT16 id; 2207 UINT16 variant; 2208 UINT16 major; 2209 UINT16 minor; 2210 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nicid_t; 2211 2212 2213 typedef struct hfa384x_pdr_refdac_measurements 2214 { 2215 UINT16 value[0]; 2216 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_refdac_measurements_t; 2217 2218 typedef struct hfa384x_pdr_vgdac_measurements 2219 { 2220 UINT16 value[0]; 2221 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_vgdac_measurements_t; 2222 2223 typedef struct hfa384x_pdr_level_comp_measurements 2224 { 2225 UINT16 value[0]; 2226 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_level_compc_measurements_t; 2227 2228 typedef struct hfa384x_pdr_mac_address 2229 { 2230 UINT8 addr[6]; 2231 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mac_address_t; 2232 2233 typedef struct hfa384x_pdr_mkk_callname 2234 { 2235 UINT8 callname[8]; 2236 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mkk_callname_t; 2237 2238 typedef struct hfa384x_pdr_regdomain 2239 { 2240 UINT16 numdomains; 2241 UINT16 domain[5]; 2242 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_regdomain_t; 2243 2244 typedef struct hfa384x_pdr_allowed_channel 2245 { 2246 UINT16 ch_bitmap; 2247 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_allowed_channel_t; 2248 2249 typedef struct hfa384x_pdr_default_channel 2250 { 2251 UINT16 channel; 2252 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_default_channel_t; 2253 2254 typedef struct hfa384x_pdr_privacy_option 2255 { 2256 UINT16 available; 2257 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_privacy_option_t; 2258 2259 typedef struct hfa384x_pdr_temptype 2260 { 2261 UINT16 type; 2262 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_temptype_t; 2263 2264 typedef struct hfa384x_pdr_refdac_setup 2265 { 2266 UINT16 ch_value[14]; 2267 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_refdac_setup_t; 2268 2269 typedef struct hfa384x_pdr_vgdac_setup 2270 { 2271 UINT16 ch_value[14]; 2272 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_vgdac_setup_t; 2273 2274 typedef struct hfa384x_pdr_level_comp_setup 2275 { 2276 UINT16 ch_value[14]; 2277 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_level_comp_setup_t; 2278 2279 typedef struct hfa384x_pdr_trimdac_setup 2280 { 2281 UINT16 trimidac; 2282 UINT16 trimqdac; 2283 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_trimdac_setup_t; 2284 2285 typedef struct hfa384x_pdr_ifr_setting 2286 { 2287 UINT16 value[3]; 2288 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_ifr_setting_t; 2289 2290 typedef struct hfa384x_pdr_rfr_setting 2291 { 2292 UINT16 value[3]; 2293 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_rfr_setting_t; 2294 2295 typedef struct hfa384x_pdr_hfa3861_baseline 2296 { 2297 UINT16 value[50]; 2298 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_baseline_t; 2299 2300 typedef struct hfa384x_pdr_hfa3861_shadow 2301 { 2302 UINT32 value[32]; 2303 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_shadow_t; 2304 2305 typedef struct hfa384x_pdr_hfa3861_ifrf 2306 { 2307 UINT32 value[20]; 2308 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_ifrf_t; 2309 2310 typedef struct hfa384x_pdr_hfa3861_chcalsp 2311 { 2312 UINT16 value[14]; 2313 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_chcalsp_t; 2314 2315 typedef struct hfa384x_pdr_hfa3861_chcali 2316 { 2317 UINT16 value[17]; 2318 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_chcali_t; 2319 2320 typedef struct hfa384x_pdr_hfa3861_nic_config 2321 { 2322 UINT16 config_bitmap; 2323 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_config_t; 2324 2325 typedef struct hfa384x_pdr_hfo_delay 2326 { 2327 UINT8 hfo_delay; 2328 } __WLAN_ATTRIB_PACK__ hfa384x_hfo_delay_t; 2329 2330 typedef struct hfa384x_pdr_hfa3861_manf_testsp 2331 { 2332 UINT16 value[30]; 2333 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_manf_testsp_t; 2334 2335 typedef struct hfa384x_pdr_hfa3861_manf_testi 2336 { 2337 UINT16 value[30]; 2338 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_manf_testi_t; 2339 2340 typedef struct hfa384x_end_of_pda 2341 { 2342 UINT16 crc; 2343 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_end_of_pda_t; 2344 2345 typedef struct hfa384x_pdrec 2346 { 2347 UINT16 len; /* in words */ 2348 UINT16 code; 2349 union pdr { 2350 hfa384x_pdr_pcb_partnum_t pcb_partnum; 2351 hfa384x_pdr_pcb_tracenum_t pcb_tracenum; 2352 hfa384x_pdr_nic_serial_t nic_serial; 2353 hfa384x_pdr_mkk_measurements_t mkk_measurements; 2354 hfa384x_pdr_nic_ramsize_t nic_ramsize; 2355 hfa384x_pdr_mfisuprange_t mfisuprange; 2356 hfa384x_pdr_cfisuprange_t cfisuprange; 2357 hfa384x_pdr_nicid_t nicid; 2358 hfa384x_pdr_refdac_measurements_t refdac_measurements; 2359 hfa384x_pdr_vgdac_measurements_t vgdac_measurements; 2360 hfa384x_pdr_level_compc_measurements_t level_compc_measurements; 2361 hfa384x_pdr_mac_address_t mac_address; 2362 hfa384x_pdr_mkk_callname_t mkk_callname; 2363 hfa384x_pdr_regdomain_t regdomain; 2364 hfa384x_pdr_allowed_channel_t allowed_channel; 2365 hfa384x_pdr_default_channel_t default_channel; 2366 hfa384x_pdr_privacy_option_t privacy_option; 2367 hfa384x_pdr_temptype_t temptype; 2368 hfa384x_pdr_refdac_setup_t refdac_setup; 2369 hfa384x_pdr_vgdac_setup_t vgdac_setup; 2370 hfa384x_pdr_level_comp_setup_t level_comp_setup; 2371 hfa384x_pdr_trimdac_setup_t trimdac_setup; 2372 hfa384x_pdr_ifr_setting_t ifr_setting; 2373 hfa384x_pdr_rfr_setting_t rfr_setting; 2374 hfa384x_pdr_hfa3861_baseline_t hfa3861_baseline; 2375 hfa384x_pdr_hfa3861_shadow_t hfa3861_shadow; 2376 hfa384x_pdr_hfa3861_ifrf_t hfa3861_ifrf; 2377 hfa384x_pdr_hfa3861_chcalsp_t hfa3861_chcalsp; 2378 hfa384x_pdr_hfa3861_chcali_t hfa3861_chcali; 2379 hfa384x_pdr_nic_config_t nic_config; 2380 hfa384x_hfo_delay_t hfo_delay; 2381 hfa384x_pdr_hfa3861_manf_testsp_t hfa3861_manf_testsp; 2382 hfa384x_pdr_hfa3861_manf_testi_t hfa3861_manf_testi; 2383 hfa384x_pdr_end_of_pda_t end_of_pda; 2384 2385 } data; 2386 } __WLAN_ATTRIB_PACK__ hfa384x_pdrec_t; 2387 2388 2389 #ifdef __KERNEL__ 2390 /*-------------------------------------------------------------------- 2391 --- MAC state structure, argument to all functions -- 2392 --- Also, a collection of support types -- 2393 --------------------------------------------------------------------*/ 2394 typedef struct hfa384x_statusresult 2395 { 2396 UINT16 status; 2397 UINT16 resp0; 2398 UINT16 resp1; 2399 UINT16 resp2; 2400 } hfa384x_cmdresult_t; 2401 2402 #if (WLAN_HOSTIF == WLAN_USB) 2403 2404 /* USB Control Exchange (CTLX): 2405 * A queue of the structure below is maintained for all of the 2406 * Request/Response type USB packets supported by Prism2. 2407 */ 2408 /* The following hfa384x_* structures are arguments to 2409 * the usercb() for the different CTLX types. 2410 */ 2411 typedef hfa384x_cmdresult_t hfa384x_wridresult_t; 2412 typedef hfa384x_cmdresult_t hfa384x_wmemresult_t; 2413 2414 typedef struct hfa384x_rridresult 2415 { 2416 UINT16 rid; 2417 const void *riddata; 2418 UINT riddata_len; 2419 } hfa384x_rridresult_t; 2420 2421 enum ctlx_state { 2422 CTLX_START = 0, /* Start state, not queued */ 2423 2424 CTLX_COMPLETE, /* CTLX successfully completed */ 2425 CTLX_REQ_FAILED, /* OUT URB completed w/ error */ 2426 2427 CTLX_PENDING, /* Queued, data valid */ 2428 CTLX_REQ_SUBMITTED, /* OUT URB submitted */ 2429 CTLX_REQ_COMPLETE, /* OUT URB complete */ 2430 CTLX_RESP_COMPLETE /* IN URB received */ 2431 }; 2432 typedef enum ctlx_state CTLX_STATE; 2433 2434 struct hfa384x_usbctlx; 2435 struct hfa384x; 2436 2437 typedef void (*ctlx_cmdcb_t)( struct hfa384x*, const struct hfa384x_usbctlx* ); 2438 2439 typedef void (*ctlx_usercb_t)( 2440 struct hfa384x *hw, 2441 void *ctlxresult, 2442 void *usercb_data); 2443 2444 typedef struct hfa384x_usbctlx 2445 { 2446 struct list_head list; 2447 2448 size_t outbufsize; 2449 hfa384x_usbout_t outbuf; /* pkt buf for OUT */ 2450 hfa384x_usbin_t inbuf; /* pkt buf for IN(a copy) */ 2451 2452 CTLX_STATE state; /* Tracks running state */ 2453 2454 struct completion done; 2455 volatile int reapable; /* Food for the reaper task */ 2456 2457 ctlx_cmdcb_t cmdcb; /* Async command callback */ 2458 ctlx_usercb_t usercb; /* Async user callback, */ 2459 void *usercb_data; /* at CTLX completion */ 2460 2461 int variant; /* Identifies cmd variant */ 2462 } hfa384x_usbctlx_t; 2463 2464 typedef struct hfa384x_usbctlxq 2465 { 2466 spinlock_t lock; 2467 struct list_head pending; 2468 struct list_head active; 2469 struct list_head completing; 2470 struct list_head reapable; 2471 } hfa384x_usbctlxq_t; 2472 #endif 2473 2474 typedef struct hfa484x_metacmd 2475 { 2476 UINT16 cmd; 2477 2478 UINT16 parm0; 2479 UINT16 parm1; 2480 UINT16 parm2; 2481 2482 #if 0 //XXX cmd irq stuff 2483 UINT16 bulkid; /* what RID/FID to copy down. */ 2484 int bulklen; /* how much to copy from BAP */ 2485 char *bulkdata; /* And to where? */ 2486 #endif 2487 2488 hfa384x_cmdresult_t result; 2489 } hfa384x_metacmd_t; 2490 2491 #define MAX_PRISM2_GRP_ADDR 16 2492 #define MAX_GRP_ADDR 32 2493 #define WLAN_COMMENT_MAX 80 /* Max. length of user comment string. */ 2494 2495 #define MM_SAT_PCF (BIT14) 2496 #define MM_GCSD_PCF (BIT15) 2497 #define MM_GCSD_PCF_EB (BIT14 | BIT15) 2498 2499 #define WLAN_STATE_STOPPED 0 /* Network is not active. */ 2500 #define WLAN_STATE_STARTED 1 /* Network has been started. */ 2501 2502 #define WLAN_AUTH_MAX 60 /* Max. # of authenticated stations. */ 2503 #define WLAN_ACCESS_MAX 60 /* Max. # of stations in an access list. */ 2504 #define WLAN_ACCESS_NONE 0 /* No stations may be authenticated. */ 2505 #define WLAN_ACCESS_ALL 1 /* All stations may be authenticated. */ 2506 #define WLAN_ACCESS_ALLOW 2 /* Authenticate only "allowed" stations. */ 2507 #define WLAN_ACCESS_DENY 3 /* Do not authenticate "denied" stations. */ 2508 2509 /* XXX These are going away ASAP */ 2510 typedef struct prism2sta_authlist 2511 { 2512 UINT cnt; 2513 UINT8 addr[WLAN_AUTH_MAX][WLAN_ADDR_LEN]; 2514 UINT8 assoc[WLAN_AUTH_MAX]; 2515 } prism2sta_authlist_t; 2516 2517 typedef struct prism2sta_accesslist 2518 { 2519 UINT modify; 2520 UINT cnt; 2521 UINT8 addr[WLAN_ACCESS_MAX][WLAN_ADDR_LEN]; 2522 UINT cnt1; 2523 UINT8 addr1[WLAN_ACCESS_MAX][WLAN_ADDR_LEN]; 2524 } prism2sta_accesslist_t; 2525 2526 typedef struct hfa384x 2527 { 2528 #if (WLAN_HOSTIF != WLAN_USB) 2529 /* Resource config */ 2530 UINT32 iobase; 2531 char __iomem *membase; 2532 UINT32 irq; 2533 #else 2534 /* USB support data */ 2535 struct usb_device *usb; 2536 struct urb rx_urb; 2537 struct sk_buff *rx_urb_skb; 2538 struct urb tx_urb; 2539 struct urb ctlx_urb; 2540 hfa384x_usbout_t txbuff; 2541 hfa384x_usbctlxq_t ctlxq; 2542 struct timer_list reqtimer; 2543 struct timer_list resptimer; 2544 2545 struct timer_list throttle; 2546 2547 struct tasklet_struct reaper_bh; 2548 struct tasklet_struct completion_bh; 2549 2550 struct work_struct usb_work; 2551 2552 unsigned long usb_flags; 2553 #define THROTTLE_RX 0 2554 #define THROTTLE_TX 1 2555 #define WORK_RX_HALT 2 2556 #define WORK_TX_HALT 3 2557 #define WORK_RX_RESUME 4 2558 #define WORK_TX_RESUME 5 2559 2560 unsigned short req_timer_done:1; 2561 unsigned short resp_timer_done:1; 2562 2563 int endp_in; 2564 int endp_out; 2565 #endif /* !USB */ 2566 2567 #if (WLAN_HOSTIF == WLAN_PCMCIA) 2568 #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16) 2569 struct pcmcia_device *pdev; 2570 #else 2571 dev_link_t *link; 2572 #endif 2573 dev_node_t node; 2574 #endif 2575 2576 int sniff_fcs; 2577 int sniff_channel; 2578 int sniff_truncate; 2579 int sniffhdr; 2580 2581 wait_queue_head_t cmdq; /* wait queue itself */ 2582 2583 /* Controller state */ 2584 UINT32 state; 2585 UINT32 isap; 2586 UINT8 port_enabled[HFA384x_NUMPORTS_MAX]; 2587 #if (WLAN_HOSTIF != WLAN_USB) 2588 UINT auxen; 2589 UINT isram16; 2590 #endif /* !USB */ 2591 2592 /* Download support */ 2593 UINT dlstate; 2594 hfa384x_downloadbuffer_t bufinfo; 2595 UINT16 dltimeout; 2596 2597 #if (WLAN_HOSTIF != WLAN_USB) 2598 spinlock_t cmdlock; 2599 volatile int cmdflag; /* wait queue flag */ 2600 hfa384x_metacmd_t *cmddata; /* for our async callback */ 2601 2602 /* BAP support */ 2603 spinlock_t baplock; 2604 struct tasklet_struct bap_tasklet; 2605 2606 /* MAC buffer ids */ 2607 UINT16 txfid_head; 2608 UINT16 txfid_tail; 2609 UINT txfid_N; 2610 UINT16 txfid_queue[HFA384x_DRVR_FIDSTACKLEN_MAX]; 2611 UINT16 infofid; 2612 struct semaphore infofid_sem; 2613 #endif /* !USB */ 2614 2615 int scanflag; /* to signal scan comlete */ 2616 int join_ap; /* are we joined to a specific ap */ 2617 int join_retries; /* number of join retries till we fail */ 2618 hfa384x_JoinRequest_data_t joinreq; /* join request saved data */ 2619 2620 wlandevice_t *wlandev; 2621 /* Timer to allow for the deferred processing of linkstatus messages */ 2622 struct work_struct link_bh; 2623 2624 struct work_struct commsqual_bh; 2625 hfa384x_commsquality_t qual; 2626 struct timer_list commsqual_timer; 2627 2628 UINT16 link_status; 2629 UINT16 link_status_new; 2630 struct sk_buff_head authq; 2631 2632 /* And here we have stuff that used to be in priv */ 2633 2634 /* State variables */ 2635 UINT presniff_port_type; 2636 UINT16 presniff_wepflags; 2637 UINT32 dot11_desired_bss_type; 2638 int ap; /* AP flag: 0 - Station, 1 - Access Point. */ 2639 2640 int dbmadjust; 2641 2642 /* Group Addresses - right now, there are up to a total 2643 of MAX_GRP_ADDR group addresses */ 2644 UINT8 dot11_grp_addr[MAX_GRP_ADDR][WLAN_ADDR_LEN]; 2645 UINT dot11_grpcnt; 2646 2647 /* Component Identities */ 2648 hfa384x_compident_t ident_nic; 2649 hfa384x_compident_t ident_pri_fw; 2650 hfa384x_compident_t ident_sta_fw; 2651 hfa384x_compident_t ident_ap_fw; 2652 UINT16 mm_mods; 2653 2654 /* Supplier compatibility ranges */ 2655 hfa384x_caplevel_t cap_sup_mfi; 2656 hfa384x_caplevel_t cap_sup_cfi; 2657 hfa384x_caplevel_t cap_sup_pri; 2658 hfa384x_caplevel_t cap_sup_sta; 2659 hfa384x_caplevel_t cap_sup_ap; 2660 2661 /* Actor compatibility ranges */ 2662 hfa384x_caplevel_t cap_act_pri_cfi; /* pri f/w to controller interface */ 2663 hfa384x_caplevel_t cap_act_sta_cfi; /* sta f/w to controller interface */ 2664 hfa384x_caplevel_t cap_act_sta_mfi; /* sta f/w to modem interface */ 2665 hfa384x_caplevel_t cap_act_ap_cfi; /* ap f/w to controller interface */ 2666 hfa384x_caplevel_t cap_act_ap_mfi; /* ap f/w to modem interface */ 2667 2668 UINT32 psusercount; /* Power save user count. */ 2669 hfa384x_CommTallies32_t tallies; /* Communication tallies. */ 2670 UINT8 comment[WLAN_COMMENT_MAX+1]; /* User comment */ 2671 2672 /* Channel Info request results (AP only) */ 2673 struct { 2674 atomic_t done; 2675 UINT8 count; 2676 hfa384x_ChInfoResult_t results; 2677 } channel_info; 2678 2679 hfa384x_InfFrame_t *scanresults; 2680 2681 2682 prism2sta_authlist_t authlist; /* Authenticated station list. */ 2683 UINT accessmode; /* Access mode. */ 2684 prism2sta_accesslist_t allow; /* Allowed station list. */ 2685 prism2sta_accesslist_t deny; /* Denied station list. */ 2686 2687 } hfa384x_t; 2688 2689 /*=============================================================*/ 2690 /*--- Function Declarations -----------------------------------*/ 2691 /*=============================================================*/ 2692 #if (WLAN_HOSTIF == WLAN_USB) 2693 void 2694 hfa384x_create( 2695 hfa384x_t *hw, 2696 struct usb_device *usb); 2697 #else 2698 void 2699 hfa384x_create( 2700 hfa384x_t *hw, 2701 UINT irq, 2702 UINT32 iobase, 2703 UINT8 __iomem *membase); 2704 #endif 2705 2706 void hfa384x_destroy(hfa384x_t *hw); 2707 2708 irqreturn_t 2709 hfa384x_interrupt(int irq, void *dev_id PT_REGS); 2710 int 2711 hfa384x_corereset( hfa384x_t *hw, int holdtime, int settletime, int genesis); 2712 int 2713 hfa384x_drvr_chinforesults( hfa384x_t *hw); 2714 int 2715 hfa384x_drvr_commtallies( hfa384x_t *hw); 2716 int 2717 hfa384x_drvr_disable(hfa384x_t *hw, UINT16 macport); 2718 int 2719 hfa384x_drvr_enable(hfa384x_t *hw, UINT16 macport); 2720 int 2721 hfa384x_drvr_flashdl_enable(hfa384x_t *hw); 2722 int 2723 hfa384x_drvr_flashdl_disable(hfa384x_t *hw); 2724 int 2725 hfa384x_drvr_flashdl_write(hfa384x_t *hw, UINT32 daddr, void* buf, UINT32 len); 2726 int 2727 hfa384x_drvr_getconfig(hfa384x_t *hw, UINT16 rid, void *buf, UINT16 len); 2728 int 2729 hfa384x_drvr_handover( hfa384x_t *hw, UINT8 *addr); 2730 int 2731 hfa384x_drvr_hostscanresults( hfa384x_t *hw); 2732 int 2733 hfa384x_drvr_low_level(hfa384x_t *hw, hfa384x_metacmd_t *cmd); 2734 int 2735 hfa384x_drvr_mmi_read(hfa384x_t *hw, UINT32 address, UINT32 *result); 2736 int 2737 hfa384x_drvr_mmi_write(hfa384x_t *hw, UINT32 address, UINT32 data); 2738 int 2739 hfa384x_drvr_ramdl_enable(hfa384x_t *hw, UINT32 exeaddr); 2740 int 2741 hfa384x_drvr_ramdl_disable(hfa384x_t *hw); 2742 int 2743 hfa384x_drvr_ramdl_write(hfa384x_t *hw, UINT32 daddr, void* buf, UINT32 len); 2744 int 2745 hfa384x_drvr_readpda(hfa384x_t *hw, void *buf, UINT len); 2746 int 2747 hfa384x_drvr_scanresults( hfa384x_t *hw); 2748 2749 int 2750 hfa384x_drvr_setconfig(hfa384x_t *hw, UINT16 rid, void *buf, UINT16 len); 2751 2752 static inline int 2753 hfa384x_drvr_getconfig16(hfa384x_t *hw, UINT16 rid, void *val) 2754 { 2755 int result = 0; 2756 result = hfa384x_drvr_getconfig(hw, rid, val, sizeof(UINT16)); 2757 if ( result == 0 ) { 2758 *((UINT16*)val) = hfa384x2host_16(*((UINT16*)val)); 2759 } 2760 return result; 2761 } 2762 2763 static inline int 2764 hfa384x_drvr_getconfig32(hfa384x_t *hw, UINT16 rid, void *val) 2765 { 2766 int result = 0; 2767 2768 result = hfa384x_drvr_getconfig(hw, rid, val, sizeof(UINT32)); 2769 if ( result == 0 ) { 2770 *((UINT32*)val) = hfa384x2host_32(*((UINT32*)val)); 2771 } 2772 2773 return result; 2774 } 2775 2776 static inline int 2777 hfa384x_drvr_setconfig16(hfa384x_t *hw, UINT16 rid, UINT16 val) 2778 { 2779 UINT16 value = host2hfa384x_16(val); 2780 return hfa384x_drvr_setconfig(hw, rid, &value, sizeof(value)); 2781 } 2782 2783 static inline int 2784 hfa384x_drvr_setconfig32(hfa384x_t *hw, UINT16 rid, UINT32 val) 2785 { 2786 UINT32 value = host2hfa384x_32(val); 2787 return hfa384x_drvr_setconfig(hw, rid, &value, sizeof(value)); 2788 } 2789 2790 #if (WLAN_HOSTIF == WLAN_USB) 2791 int 2792 hfa384x_drvr_getconfig_async(hfa384x_t *hw, 2793 UINT16 rid, 2794 ctlx_usercb_t usercb, 2795 void *usercb_data); 2796 2797 int 2798 hfa384x_drvr_setconfig_async(hfa384x_t *hw, 2799 UINT16 rid, 2800 void *buf, 2801 UINT16 len, 2802 ctlx_usercb_t usercb, 2803 void *usercb_data); 2804 #else 2805 static inline int 2806 hfa384x_drvr_setconfig_async(hfa384x_t *hw, UINT16 rid, void *buf, UINT16 len, 2807 void *ptr1, void *ptr2) 2808 { 2809 (void)ptr1; 2810 (void)ptr2; 2811 return hfa384x_drvr_setconfig(hw, rid, buf, len); 2812 } 2813 #endif 2814 2815 static inline int 2816 hfa384x_drvr_setconfig16_async(hfa384x_t *hw, UINT16 rid, UINT16 val) 2817 { 2818 UINT16 value = host2hfa384x_16(val); 2819 return hfa384x_drvr_setconfig_async(hw, rid, &value, sizeof(value), 2820 NULL , NULL); 2821 } 2822 2823 static inline int 2824 hfa384x_drvr_setconfig32_async(hfa384x_t *hw, UINT16 rid, UINT32 val) 2825 { 2826 UINT32 value = host2hfa384x_32(val); 2827 return hfa384x_drvr_setconfig_async(hw, rid, &value, sizeof(value), 2828 NULL , NULL); 2829 } 2830 2831 2832 int 2833 hfa384x_drvr_start(hfa384x_t *hw); 2834 int 2835 hfa384x_drvr_stop(hfa384x_t *hw); 2836 int 2837 hfa384x_drvr_txframe(hfa384x_t *hw, struct sk_buff *skb, p80211_hdr_t *p80211_hdr, p80211_metawep_t *p80211_wep); 2838 void 2839 hfa384x_tx_timeout(wlandevice_t *wlandev); 2840 2841 int 2842 hfa384x_cmd_initialize(hfa384x_t *hw); 2843 int 2844 hfa384x_cmd_enable(hfa384x_t *hw, UINT16 macport); 2845 int 2846 hfa384x_cmd_disable(hfa384x_t *hw, UINT16 macport); 2847 int 2848 hfa384x_cmd_diagnose(hfa384x_t *hw); 2849 int 2850 hfa384x_cmd_allocate(hfa384x_t *hw, UINT16 len); 2851 int 2852 hfa384x_cmd_transmit(hfa384x_t *hw, UINT16 reclaim, UINT16 qos, UINT16 fid); 2853 int 2854 hfa384x_cmd_clearpersist(hfa384x_t *hw, UINT16 fid); 2855 int 2856 hfa384x_cmd_notify(hfa384x_t *hw, UINT16 reclaim, UINT16 fid, void *buf, UINT16 len); 2857 int 2858 hfa384x_cmd_inquire(hfa384x_t *hw, UINT16 fid); 2859 int 2860 hfa384x_cmd_access(hfa384x_t *hw, UINT16 write, UINT16 rid, void *buf, UINT16 len); 2861 int 2862 hfa384x_cmd_monitor(hfa384x_t *hw, UINT16 enable); 2863 int 2864 hfa384x_cmd_download( 2865 hfa384x_t *hw, 2866 UINT16 mode, 2867 UINT16 lowaddr, 2868 UINT16 highaddr, 2869 UINT16 codelen); 2870 int 2871 hfa384x_cmd_aux_enable(hfa384x_t *hw, int force); 2872 int 2873 hfa384x_cmd_aux_disable(hfa384x_t *hw); 2874 int 2875 hfa384x_copy_from_bap( 2876 hfa384x_t *hw, 2877 UINT16 bap, 2878 UINT16 id, 2879 UINT16 offset, 2880 void *buf, 2881 UINT len); 2882 int 2883 hfa384x_copy_to_bap( 2884 hfa384x_t *hw, 2885 UINT16 bap, 2886 UINT16 id, 2887 UINT16 offset, 2888 void *buf, 2889 UINT len); 2890 void 2891 hfa384x_copy_from_aux( 2892 hfa384x_t *hw, 2893 UINT32 cardaddr, 2894 UINT32 auxctl, 2895 void *buf, 2896 UINT len); 2897 void 2898 hfa384x_copy_to_aux( 2899 hfa384x_t *hw, 2900 UINT32 cardaddr, 2901 UINT32 auxctl, 2902 void *buf, 2903 UINT len); 2904 2905 #if (WLAN_HOSTIF != WLAN_USB) 2906 2907 /* 2908 HFA384x is a LITTLE ENDIAN part. 2909 2910 the get/setreg functions implicitly byte-swap the data to LE. 2911 the _noswap variants do not perform a byte-swap on the data. 2912 */ 2913 2914 static inline UINT16 2915 __hfa384x_getreg(hfa384x_t *hw, UINT reg); 2916 2917 static inline void 2918 __hfa384x_setreg(hfa384x_t *hw, UINT16 val, UINT reg); 2919 2920 static inline UINT16 2921 __hfa384x_getreg_noswap(hfa384x_t *hw, UINT reg); 2922 2923 static inline void 2924 __hfa384x_setreg_noswap(hfa384x_t *hw, UINT16 val, UINT reg); 2925 2926 #ifdef REVERSE_ENDIAN 2927 #define hfa384x_getreg __hfa384x_getreg_noswap 2928 #define hfa384x_setreg __hfa384x_setreg_noswap 2929 #define hfa384x_getreg_noswap __hfa384x_getreg 2930 #define hfa384x_setreg_noswap __hfa384x_setreg 2931 #else 2932 #define hfa384x_getreg __hfa384x_getreg 2933 #define hfa384x_setreg __hfa384x_setreg 2934 #define hfa384x_getreg_noswap __hfa384x_getreg_noswap 2935 #define hfa384x_setreg_noswap __hfa384x_setreg_noswap 2936 #endif 2937 2938 /*---------------------------------------------------------------- 2939 * hfa384x_getreg 2940 * 2941 * Retrieve the value of one of the MAC registers. Done here 2942 * because different PRISM2 MAC parts use different buses and such. 2943 * NOTE: This function returns the value in HOST ORDER!!!!!! 2944 * 2945 * Arguments: 2946 * hw MAC part structure 2947 * reg Register identifier (offset for I/O based i/f) 2948 * 2949 * Returns: 2950 * Value from the register in HOST ORDER!!!! 2951 ----------------------------------------------------------------*/ 2952 static inline UINT16 2953 __hfa384x_getreg(hfa384x_t *hw, UINT reg) 2954 { 2955 /* printk(KERN_DEBUG "Reading from 0x%0x\n", hw->membase + reg); */ 2956 #if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX)) 2957 return wlan_inw_le16_to_cpu(hw->iobase+reg); 2958 #elif (WLAN_HOSTIF == WLAN_PCI) 2959 return __le16_to_cpu(readw(hw->membase + reg)); 2960 #endif 2961 } 2962 2963 /*---------------------------------------------------------------- 2964 * hfa384x_setreg 2965 * 2966 * Set the value of one of the MAC registers. Done here 2967 * because different PRISM2 MAC parts use different buses and such. 2968 * NOTE: This function assumes the value is in HOST ORDER!!!!!! 2969 * 2970 * Arguments: 2971 * hw MAC part structure 2972 * val Value, in HOST ORDER!!, to put in the register 2973 * reg Register identifier (offset for I/O based i/f) 2974 * 2975 * Returns: 2976 * Nothing 2977 ----------------------------------------------------------------*/ 2978 static inline void 2979 __hfa384x_setreg(hfa384x_t *hw, UINT16 val, UINT reg) 2980 { 2981 #if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX)) 2982 wlan_outw_cpu_to_le16( val, hw->iobase + reg); 2983 return; 2984 #elif (WLAN_HOSTIF == WLAN_PCI) 2985 writew(__cpu_to_le16(val), hw->membase + reg); 2986 return; 2987 #endif 2988 } 2989 2990 2991 /*---------------------------------------------------------------- 2992 * hfa384x_getreg_noswap 2993 * 2994 * Retrieve the value of one of the MAC registers. Done here 2995 * because different PRISM2 MAC parts use different buses and such. 2996 * 2997 * Arguments: 2998 * hw MAC part structure 2999 * reg Register identifier (offset for I/O based i/f) 3000 * 3001 * Returns: 3002 * Value from the register. 3003 ----------------------------------------------------------------*/ 3004 static inline UINT16 3005 __hfa384x_getreg_noswap(hfa384x_t *hw, UINT reg) 3006 { 3007 #if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX)) 3008 return wlan_inw(hw->iobase+reg); 3009 #elif (WLAN_HOSTIF == WLAN_PCI) 3010 return readw(hw->membase + reg); 3011 #endif 3012 } 3013 3014 3015 /*---------------------------------------------------------------- 3016 * hfa384x_setreg_noswap 3017 * 3018 * Set the value of one of the MAC registers. Done here 3019 * because different PRISM2 MAC parts use different buses and such. 3020 * 3021 * Arguments: 3022 * hw MAC part structure 3023 * val Value to put in the register 3024 * reg Register identifier (offset for I/O based i/f) 3025 * 3026 * Returns: 3027 * Nothing 3028 ----------------------------------------------------------------*/ 3029 static inline void 3030 __hfa384x_setreg_noswap(hfa384x_t *hw, UINT16 val, UINT reg) 3031 { 3032 #if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX)) 3033 wlan_outw( val, hw->iobase + reg); 3034 return; 3035 #elif (WLAN_HOSTIF == WLAN_PCI) 3036 writew(val, hw->membase + reg); 3037 return; 3038 #endif 3039 } 3040 3041 3042 static inline void hfa384x_events_all(hfa384x_t *hw) 3043 { 3044 hfa384x_setreg(hw, 3045 HFA384x_INT_NORMAL 3046 #ifdef CMD_IRQ 3047 | HFA384x_INTEN_CMD_SET(1) 3048 #endif 3049 , 3050 HFA384x_INTEN); 3051 3052 } 3053 3054 static inline void hfa384x_events_nobap(hfa384x_t *hw) 3055 { 3056 hfa384x_setreg(hw, 3057 (HFA384x_INT_NORMAL & ~HFA384x_INT_BAP_OP) 3058 #ifdef CMD_IRQ 3059 | HFA384x_INTEN_CMD_SET(1) 3060 #endif 3061 , 3062 HFA384x_INTEN); 3063 3064 } 3065 3066 #endif /* WLAN_HOSTIF != WLAN_USB */ 3067 #endif /* __KERNEL__ */ 3068 3069 #endif /* _HFA384x_H */ 3070