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@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 56FILE_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/*-------------------------------------------------------------------- 396Configuration 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/*-------------------------------------------------------------------- 423Configuration 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/*-------------------------------------------------------------------- 455Configuration 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/*-------------------------------------------------------------------- 486Configuration 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/*-------------------------------------------------------------------- 520Configuration RIDs: Behavior Parameters 521--------------------------------------------------------------------*/ 522#define HFA384x_RID_ITICKTIME ((UINT16)0xFCE0) 523 524/*-------------------------------------------------------------------- 525Configuration 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/*---------------------------------------------------------------------- 532Information 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/*---------------------------------------------------------------------- 555Information 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/*-------------------------------------------------------------------- 580Information 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/*-------------------------------------------------------------------- 612Information 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/*-------------------------------------------------------------------- 647Information 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/*-------------------------------------------------------------------- 657Information 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/*-------------------------------------------------------------------- 668API 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/*-------------------------------------------------------------------- 728PD 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 */ 930typedef struct hfa384x_bytestr 931{ 932 UINT16 len; 933 UINT8 data[0]; 934} __WLAN_ATTRIB_PACK__ hfa384x_bytestr_t; 935 936typedef struct hfa384x_bytestr32 937{ 938 UINT16 len; 939 UINT8 data[32]; 940} __WLAN_ATTRIB_PACK__ hfa384x_bytestr32_t; 941 942/*-------------------------------------------------------------------- 943Configuration Record Structures: 944 Network Parameters, Static Configuration Entities 945--------------------------------------------------------------------*/ 946/* Prototype structure: all configuration record structures start with 947these members */ 948 949typedef struct hfa384x_record 950{ 951 UINT16 reclen; 952 UINT16 rid; 953} __WLAN_ATTRIB_PACK__ hfa384x_rec_t; 954 955typedef struct hfa384x_record16 956{ 957 UINT16 reclen; 958 UINT16 rid; 959 UINT16 val; 960} __WLAN_ATTRIB_PACK__ hfa384x_rec16_t; 961 962typedef 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 ----------*/ 970typedef struct hfa384x_compident 971{ 972 UINT16 id; 973 UINT16 variant; 974 UINT16 major; 975 UINT16 minor; 976} __WLAN_ATTRIB_PACK__ hfa384x_compident_t; 977 978typedef 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 --*/ 988typedef struct hfa384x_cnfPortType 989{ 990 UINT16 cnfPortType; 991} __WLAN_ATTRIB_PACK__ hfa384x_cnfPortType_t; 992 993/*-- Configuration Record: cnfOwnMACAddress --*/ 994typedef struct hfa384x_cnfOwnMACAddress 995{ 996 UINT8 cnfOwnMACAddress[6]; 997} __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnMACAddress_t; 998 999/*-- Configuration Record: cnfDesiredSSID --*/ 1000typedef struct hfa384x_cnfDesiredSSID 1001{ 1002 UINT8 cnfDesiredSSID[34]; 1003} __WLAN_ATTRIB_PACK__ hfa384x_cnfDesiredSSID_t; 1004 1005/*-- Configuration Record: cnfOwnChannel --*/ 1006typedef struct hfa384x_cnfOwnChannel 1007{ 1008 UINT16 cnfOwnChannel; 1009} __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnChannel_t; 1010 1011/*-- Configuration Record: cnfOwnSSID --*/ 1012typedef struct hfa384x_cnfOwnSSID 1013{ 1014 UINT8 cnfOwnSSID[34]; 1015} __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnSSID_t; 1016 1017/*-- Configuration Record: cnfOwnATIMWindow --*/ 1018typedef struct hfa384x_cnfOwnATIMWindow 1019{ 1020 UINT16 cnfOwnATIMWindow; 1021} __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnATIMWindow_t; 1022 1023/*-- Configuration Record: cnfSystemScale --*/ 1024typedef struct hfa384x_cnfSystemScale 1025{ 1026 UINT16 cnfSystemScale; 1027} __WLAN_ATTRIB_PACK__ hfa384x_cnfSystemScale_t; 1028 1029/*-- Configuration Record: cnfMaxDataLength --*/ 1030typedef struct hfa384x_cnfMaxDataLength 1031{ 1032 UINT16 cnfMaxDataLength; 1033} __WLAN_ATTRIB_PACK__ hfa384x_cnfMaxDataLength_t; 1034 1035/*-- Configuration Record: cnfWDSAddress --*/ 1036typedef struct hfa384x_cnfWDSAddress 1037{ 1038 UINT8 cnfWDSAddress[6]; 1039} __WLAN_ATTRIB_PACK__ hfa384x_cnfWDSAddress_t; 1040 1041/*-- Configuration Record: cnfPMEnabled --*/ 1042typedef struct hfa384x_cnfPMEnabled 1043{ 1044 UINT16 cnfPMEnabled; 1045} __WLAN_ATTRIB_PACK__ hfa384x_cnfPMEnabled_t; 1046 1047/*-- Configuration Record: cnfPMEPS --*/ 1048typedef struct hfa384x_cnfPMEPS 1049{ 1050 UINT16 cnfPMEPS; 1051} __WLAN_ATTRIB_PACK__ hfa384x_cnfPMEPS_t; 1052 1053/*-- Configuration Record: cnfMulticastReceive --*/ 1054typedef 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 --*/ 1065typedef struct hfa384x_cnfMaxSleepDuration 1066{ 1067 UINT16 cnfMaxSleepDuration; 1068} __WLAN_ATTRIB_PACK__ hfa384x_cnfMaxSleepDuration_t; 1069 1070/*-- Configuration Record: cnfPMHoldoverDuration --*/ 1071typedef struct hfa384x_cnfPMHoldoverDuration 1072{ 1073 UINT16 cnfPMHoldoverDuration; 1074} __WLAN_ATTRIB_PACK__ hfa384x_cnfPMHoldoverDuration_t; 1075 1076/*-- Configuration Record: cnfOwnName --*/ 1077typedef struct hfa384x_cnfOwnName 1078{ 1079 UINT8 cnfOwnName[34]; 1080} __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnName_t; 1081 1082/*-- Configuration Record: cnfOwnDTIMPeriod --*/ 1083typedef struct hfa384x_cnfOwnDTIMPeriod 1084{ 1085 UINT16 cnfOwnDTIMPeriod; 1086} __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnDTIMPeriod_t; 1087 1088/*-- Configuration Record: cnfWDSAddress --*/ 1089typedef struct hfa384x_cnfWDSAddressN 1090{ 1091 UINT8 cnfWDSAddress[6]; 1092} __WLAN_ATTRIB_PACK__ hfa384x_cnfWDSAddressN_t; 1093 1094/*-- Configuration Record: cnfMulticastPMBuffering --*/ 1095typedef struct hfa384x_cnfMulticastPMBuffering 1096{ 1097 UINT16 cnfMulticastPMBuffering; 1098} __WLAN_ATTRIB_PACK__ hfa384x_cnfMulticastPMBuffering_t; 1099 1100/*-------------------------------------------------------------------- 1101Configuration Record Structures: 1102 Network Parameters, Dynamic Configuration Entities 1103--------------------------------------------------------------------*/ 1104 1105/*-- Configuration Record: GroupAddresses --*/ 1106typedef struct hfa384x_GroupAddresses 1107{ 1108 UINT8 MACAddress[16][6]; 1109} __WLAN_ATTRIB_PACK__ hfa384x_GroupAddresses_t; 1110 1111/*-- Configuration Record: CreateIBSS --*/ 1112typedef 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 --*/ 1123typedef struct hfa384x_FragmentationThreshold 1124{ 1125 UINT16 FragmentationThreshold; 1126} __WLAN_ATTRIB_PACK__ hfa384x_FragmentationThreshold_t; 1127 1128/*-- Configuration Record: RTSThreshold --*/ 1129typedef struct hfa384x_RTSThreshold 1130{ 1131 UINT16 RTSThreshold; 1132} __WLAN_ATTRIB_PACK__ hfa384x_RTSThreshold_t; 1133 1134/*-- Configuration Record: TxRateControl --*/ 1135typedef struct hfa384x_TxRateControl 1136{ 1137 UINT16 TxRateControl; 1138} __WLAN_ATTRIB_PACK__ hfa384x_TxRateControl_t; 1139 1140/*-- Configuration Record: PromiscuousMode --*/ 1141typedef struct hfa384x_PromiscuousMode 1142{ 1143 UINT16 PromiscuousMode; 1144} __WLAN_ATTRIB_PACK__ hfa384x_PromiscuousMode_t; 1145 1146/*-- Configuration Record: ScanRequest (data portion only) --*/ 1147typedef 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) --*/ 1154typedef 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) --*/ 1162typedef 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) --*/ 1169typedef 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) --*/ 1177typedef 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) --*/ 1185typedef 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) --*/ 1192typedef 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) --*/ 1202typedef struct hfa384x_WPAData 1203{ 1204 UINT16 datalen; 1205 UINT8 data[0]; // max 80 1206} __WLAN_ATTRIB_PACK__ hfa384x_WPAData_t; 1207 1208/*-------------------------------------------------------------------- 1209Configuration Record Structures: Behavior Parameters 1210--------------------------------------------------------------------*/ 1211 1212/*-- Configuration Record: TickTime --*/ 1213typedef struct hfa384x_TickTime 1214{ 1215 UINT16 TickTime; 1216} __WLAN_ATTRIB_PACK__ hfa384x_TickTime_t; 1217 1218/*-------------------------------------------------------------------- 1219Information Record Structures: NIC Information 1220--------------------------------------------------------------------*/ 1221 1222/*-- Information Record: MaxLoadTime --*/ 1223typedef 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 */ 1230typedef 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 --*/ 1238typedef 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 --*/ 1247typedef 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 --*/ 1257typedef 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 --*/ 1267typedef struct hfa384x_NICSerialNumber 1268{ 1269 UINT8 NICSerialNumber[12]; 1270} __WLAN_ATTRIB_PACK__ hfa384x_NICSerialNumber_t; 1271 1272/*-- Information Record: NICIdentity --*/ 1273typedef 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 --*/ 1282typedef 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 --*/ 1292typedef 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 --*/ 1302typedef 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 1309typedef 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 --*/ 1315typedef struct hfa384x_ChannelList 1316{ 1317 UINT16 ChannelList; 1318} __WLAN_ATTRIB_PACK__ hfa384x_ChannelList_t; 1319 1320/*-- Information Record: RegulatoryDomains --*/ 1321typedef struct hfa384x_RegulatoryDomains 1322{ 1323 UINT8 RegulatoryDomains[12]; 1324} __WLAN_ATTRIB_PACK__ hfa384x_RegulatoryDomains_t; 1325 1326/*-- Information Record: TempType --*/ 1327typedef struct hfa384x_TempType 1328{ 1329 UINT16 TempType; 1330} __WLAN_ATTRIB_PACK__ hfa384x_TempType_t; 1331 1332/*-- Information Record: CIS --*/ 1333typedef struct hfa384x_CIS 1334{ 1335 UINT8 CIS[480]; 1336} __WLAN_ATTRIB_PACK__ hfa384x_CIS_t; 1337 1338/*-- Information Record: STAIdentity --*/ 1339typedef 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 --*/ 1348typedef 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 --*/ 1358typedef 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/*-------------------------------------------------------------------- 1368Information Record Structures: NIC Information 1369--------------------------------------------------------------------*/ 1370 1371/*-- Information Record: PortStatus --*/ 1372typedef 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 --*/ 1385typedef struct hfa384x_CurrentSSID 1386{ 1387 UINT8 CurrentSSID[34]; 1388} __WLAN_ATTRIB_PACK__ hfa384x_CurrentSSID_t; 1389 1390/*-- Information Record: CurrentBSSID --*/ 1391typedef struct hfa384x_CurrentBSSID 1392{ 1393 UINT8 CurrentBSSID[6]; 1394} __WLAN_ATTRIB_PACK__ hfa384x_CurrentBSSID_t; 1395 1396/*-- Information Record: commsquality --*/ 1397typedef 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 --*/ 1405typedef 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 --*/ 1413typedef struct hfa384x_CurrentTxRate 1414{ 1415 UINT16 CurrentTxRate; 1416} __WLAN_ATTRIB_PACK__ hfa384x_CurrentTxRate_t; 1417 1418/*-- Information Record: CurrentBeaconInterval --*/ 1419typedef struct hfa384x_CurrentBeaconInterval 1420{ 1421 UINT16 CurrentBeaconInterval; 1422} __WLAN_ATTRIB_PACK__ hfa384x_CurrentBeaconInterval_t; 1423 1424/*-- Information Record: CurrentScaleThresholds --*/ 1425typedef 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 --*/ 1435typedef struct hfa384x_ProtocolRspTime 1436{ 1437 UINT16 ProtocolRspTime; 1438} __WLAN_ATTRIB_PACK__ hfa384x_ProtocolRspTime_t; 1439 1440/*-- Information Record: ShortRetryLimit --*/ 1441typedef struct hfa384x_ShortRetryLimit 1442{ 1443 UINT16 ShortRetryLimit; 1444} __WLAN_ATTRIB_PACK__ hfa384x_ShortRetryLimit_t; 1445 1446/*-- Information Record: LongRetryLimit --*/ 1447typedef struct hfa384x_LongRetryLimit 1448{ 1449 UINT16 LongRetryLimit; 1450} __WLAN_ATTRIB_PACK__ hfa384x_LongRetryLimit_t; 1451 1452/*-- Information Record: MaxTransmitLifetime --*/ 1453typedef struct hfa384x_MaxTransmitLifetime 1454{ 1455 UINT16 MaxTransmitLifetime; 1456} __WLAN_ATTRIB_PACK__ hfa384x_MaxTransmitLifetime_t; 1457 1458/*-- Information Record: MaxReceiveLifetime --*/ 1459typedef struct hfa384x_MaxReceiveLifetime 1460{ 1461 UINT16 MaxReceiveLifetime; 1462} __WLAN_ATTRIB_PACK__ hfa384x_MaxReceiveLifetime_t; 1463 1464/*-- Information Record: CFPollable --*/ 1465typedef struct hfa384x_CFPollable 1466{ 1467 UINT16 CFPollable; 1468} __WLAN_ATTRIB_PACK__ hfa384x_CFPollable_t; 1469 1470/*-- Information Record: AuthenticationAlgorithms --*/ 1471typedef 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 --*/ 1479typedef struct hfa384x_AuthenticationAlgorithms_data 1480{ 1481 UINT16 AuthenticationType; 1482 UINT16 TypeEnabled; 1483} __WLAN_ATTRIB_PACK__ hfa384x_AuthenticationAlgorithms_data_t; 1484 1485/*-- Information Record: PrivacyOptionImplemented --*/ 1486typedef struct hfa384x_PrivacyOptionImplemented 1487{ 1488 UINT16 PrivacyOptionImplemented; 1489} __WLAN_ATTRIB_PACK__ hfa384x_PrivacyOptionImplemented_t; 1490 1491/*-- Information Record: OwnMACAddress --*/ 1492typedef struct hfa384x_OwnMACAddress 1493{ 1494 UINT8 OwnMACAddress[6]; 1495} __WLAN_ATTRIB_PACK__ hfa384x_OwnMACAddress_t; 1496 1497/*-- Information Record: PCFInfo --*/ 1498typedef 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) --*/ 1507typedef 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/*-------------------------------------------------------------------- 1516Information Record Structures: Modem Information Records 1517--------------------------------------------------------------------*/ 1518 1519/*-- Information Record: PHYType --*/ 1520typedef struct hfa384x_PHYType 1521{ 1522 UINT16 PHYType; 1523} __WLAN_ATTRIB_PACK__ hfa384x_PHYType_t; 1524 1525/*-- Information Record: CurrentChannel --*/ 1526typedef struct hfa384x_CurrentChannel 1527{ 1528 UINT16 CurrentChannel; 1529} __WLAN_ATTRIB_PACK__ hfa384x_CurrentChannel_t; 1530 1531/*-- Information Record: CurrentPowerState --*/ 1532typedef struct hfa384x_CurrentPowerState 1533{ 1534 UINT16 CurrentPowerState; 1535} __WLAN_ATTRIB_PACK__ hfa384x_CurrentPowerState_t; 1536 1537/*-- Information Record: CCAMode --*/ 1538typedef struct hfa384x_CCAMode 1539{ 1540 UINT16 CCAMode; 1541} __WLAN_ATTRIB_PACK__ hfa384x_CCAMode_t; 1542 1543/*-- Information Record: SupportedDataRates --*/ 1544typedef struct hfa384x_SupportedDataRates 1545{ 1546 UINT8 SupportedDataRates[10]; 1547} __WLAN_ATTRIB_PACK__ hfa384x_SupportedDataRates_t; 1548 1549/*-- Information Record: LFOStatus --*/ 1550typedef 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 --*/ 1564typedef 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 1576FRAME DESCRIPTORS: Offsets 1577 1578---------------------------------------------------------------------- 1579Control 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/*-------------------------------------------------------------------- 1591802.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/*-------------------------------------------------------------------- 1602802.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/*-------------------------------------------------------------------- 1609FRAME STRUCTURES: Communication Frames 1610---------------------------------------------------------------------- 1611Communication Frames: Transmit Frames 1612--------------------------------------------------------------------*/ 1613/*-- Communication Frame: Transmit Frame Structure --*/ 1614typedef 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/*-------------------------------------------------------------------- 1642Communication 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/*-------------------------------------------------------------------- 1660Communication 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/*-------------------------------------------------------------------- 1695Communication Frames: Receive Frames 1696--------------------------------------------------------------------*/ 1697/*-- Communication Frame: Receive Frame Structure --*/ 1698typedef 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/*-------------------------------------------------------------------- 1726Communication 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/*-------------------------------------------------------------------- 1739Communication 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---------------------------------------------------------------------- 1750Information 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/*-------------------------------------------------------------------- 1767Information Frames Structures 1768---------------------------------------------------------------------- 1769Information Frames: Notification Frame Structures 1770--------------------------------------------------------------------*/ 1771/*-- Notification Frame,MAC Mgmt: Handover Address --*/ 1772typedef 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 --*/ 1780typedef 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 1805typedef 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--*/ 1831typedef 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 1844typedef 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--*/ 1853typedef 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 1864typedef 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--*/ 1872typedef 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 1886typedef 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 1904typedef 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 1918typedef 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 1930typedef 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 1938typedef 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 1951typedef 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 1959typedef struct hfa384x_PSUserCount 1960{ 1961 UINT16 usercnt; 1962} __WLAN_ATTRIB_PACK__ hfa384x_PSUserCount_t; 1963 1964typedef 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 ---------------*/ 1971typedef 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 1984typedef 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/*-------------------------------------------------------------------- 1993USB 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 2023typedef 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 2028typedef 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 2037typedef 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 2044typedef 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 2051typedef 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 2059typedef 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 2070typedef 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 2075typedef struct hfa384x_usb_infofrm { 2076 UINT16 type; 2077 hfa384x_InfFrame_t info; 2078} __WLAN_ATTRIB_PACK__ hfa384x_usb_infofrm_t; 2079 2080typedef 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 2088typedef hfa384x_usb_cmdresp_t hfa384x_usb_wridresp_t; 2089 2090typedef 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 2097typedef hfa384x_usb_cmdresp_t hfa384x_usb_wmemresp_t; 2098 2099typedef 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 2105typedef struct hfa384x_usb_bufavail { 2106 UINT16 type; 2107 UINT16 frmlen; 2108} __WLAN_ATTRIB_PACK__ hfa384x_usb_bufavail_t; 2109 2110typedef 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 2118typedef 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 2128typedef 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/*-------------------------------------------------------------------- 2146PD record structures. 2147--------------------------------------------------------------------*/ 2148 2149typedef struct hfa384x_pdr_pcb_partnum 2150{ 2151 UINT8 num[8]; 2152} __WLAN_ATTRIB_PACK__ hfa384x_pdr_pcb_partnum_t; 2153 2154typedef struct hfa384x_pdr_pcb_tracenum 2155{ 2156 UINT8 num[8]; 2157} __WLAN_ATTRIB_PACK__ hfa384x_pdr_pcb_tracenum_t; 2158 2159typedef struct hfa384x_pdr_nic_serial 2160{ 2161 UINT8 num[12]; 2162} __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_serial_t; 2163 2164typedef 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 2183typedef struct hfa384x_pdr_nic_ramsize 2184{ 2185 UINT8 size[12]; /* units of KB */ 2186} __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_ramsize_t; 2187 2188typedef 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 2196typedef 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 2204typedef 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 2213typedef struct hfa384x_pdr_refdac_measurements 2214{ 2215 UINT16 value[0]; 2216} __WLAN_ATTRIB_PACK__ hfa384x_pdr_refdac_measurements_t; 2217 2218typedef struct hfa384x_pdr_vgdac_measurements 2219{ 2220 UINT16 value[0]; 2221} __WLAN_ATTRIB_PACK__ hfa384x_pdr_vgdac_measurements_t; 2222 2223typedef struct hfa384x_pdr_level_comp_measurements 2224{ 2225 UINT16 value[0]; 2226} __WLAN_ATTRIB_PACK__ hfa384x_pdr_level_compc_measurements_t; 2227 2228typedef struct hfa384x_pdr_mac_address 2229{ 2230 UINT8 addr[6]; 2231} __WLAN_ATTRIB_PACK__ hfa384x_pdr_mac_address_t; 2232 2233typedef struct hfa384x_pdr_mkk_callname 2234{ 2235 UINT8 callname[8]; 2236} __WLAN_ATTRIB_PACK__ hfa384x_pdr_mkk_callname_t; 2237 2238typedef struct hfa384x_pdr_regdomain 2239{ 2240 UINT16 numdomains; 2241 UINT16 domain[5]; 2242} __WLAN_ATTRIB_PACK__ hfa384x_pdr_regdomain_t; 2243 2244typedef struct hfa384x_pdr_allowed_channel 2245{ 2246 UINT16 ch_bitmap; 2247} __WLAN_ATTRIB_PACK__ hfa384x_pdr_allowed_channel_t; 2248 2249typedef struct hfa384x_pdr_default_channel 2250{ 2251 UINT16 channel; 2252} __WLAN_ATTRIB_PACK__ hfa384x_pdr_default_channel_t; 2253 2254typedef struct hfa384x_pdr_privacy_option 2255{ 2256 UINT16 available; 2257} __WLAN_ATTRIB_PACK__ hfa384x_pdr_privacy_option_t; 2258 2259typedef struct hfa384x_pdr_temptype 2260{ 2261 UINT16 type; 2262} __WLAN_ATTRIB_PACK__ hfa384x_pdr_temptype_t; 2263 2264typedef struct hfa384x_pdr_refdac_setup 2265{ 2266 UINT16 ch_value[14]; 2267} __WLAN_ATTRIB_PACK__ hfa384x_pdr_refdac_setup_t; 2268 2269typedef struct hfa384x_pdr_vgdac_setup 2270{ 2271 UINT16 ch_value[14]; 2272} __WLAN_ATTRIB_PACK__ hfa384x_pdr_vgdac_setup_t; 2273 2274typedef struct hfa384x_pdr_level_comp_setup 2275{ 2276 UINT16 ch_value[14]; 2277} __WLAN_ATTRIB_PACK__ hfa384x_pdr_level_comp_setup_t; 2278 2279typedef struct hfa384x_pdr_trimdac_setup 2280{ 2281 UINT16 trimidac; 2282 UINT16 trimqdac; 2283} __WLAN_ATTRIB_PACK__ hfa384x_pdr_trimdac_setup_t; 2284 2285typedef struct hfa384x_pdr_ifr_setting 2286{ 2287 UINT16 value[3]; 2288} __WLAN_ATTRIB_PACK__ hfa384x_pdr_ifr_setting_t; 2289 2290typedef struct hfa384x_pdr_rfr_setting 2291{ 2292 UINT16 value[3]; 2293} __WLAN_ATTRIB_PACK__ hfa384x_pdr_rfr_setting_t; 2294 2295typedef struct hfa384x_pdr_hfa3861_baseline 2296{ 2297 UINT16 value[50]; 2298} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_baseline_t; 2299 2300typedef struct hfa384x_pdr_hfa3861_shadow 2301{ 2302 UINT32 value[32]; 2303} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_shadow_t; 2304 2305typedef struct hfa384x_pdr_hfa3861_ifrf 2306{ 2307 UINT32 value[20]; 2308} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_ifrf_t; 2309 2310typedef struct hfa384x_pdr_hfa3861_chcalsp 2311{ 2312 UINT16 value[14]; 2313} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_chcalsp_t; 2314 2315typedef struct hfa384x_pdr_hfa3861_chcali 2316{ 2317 UINT16 value[17]; 2318} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_chcali_t; 2319 2320typedef struct hfa384x_pdr_hfa3861_nic_config 2321{ 2322 UINT16 config_bitmap; 2323} __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_config_t; 2324 2325typedef struct hfa384x_pdr_hfo_delay 2326{ 2327 UINT8 hfo_delay; 2328} __WLAN_ATTRIB_PACK__ hfa384x_hfo_delay_t; 2329 2330typedef struct hfa384x_pdr_hfa3861_manf_testsp 2331{ 2332 UINT16 value[30]; 2333} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_manf_testsp_t; 2334 2335typedef struct hfa384x_pdr_hfa3861_manf_testi 2336{ 2337 UINT16 value[30]; 2338} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_manf_testi_t; 2339 2340typedef struct hfa384x_end_of_pda 2341{ 2342 UINT16 crc; 2343} __WLAN_ATTRIB_PACK__ hfa384x_pdr_end_of_pda_t; 2344 2345typedef 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--------------------------------------------------------------------*/ 2394typedef 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 */ 2411typedef hfa384x_cmdresult_t hfa384x_wridresult_t; 2412typedef hfa384x_cmdresult_t hfa384x_wmemresult_t; 2413 2414typedef struct hfa384x_rridresult 2415{ 2416 UINT16 rid; 2417 const void *riddata; 2418 UINT riddata_len; 2419} hfa384x_rridresult_t; 2420 2421enum 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}; 2432typedef enum ctlx_state CTLX_STATE; 2433 2434struct hfa384x_usbctlx; 2435struct hfa384x; 2436 2437typedef void (*ctlx_cmdcb_t)( struct hfa384x*, const struct hfa384x_usbctlx* ); 2438 2439typedef void (*ctlx_usercb_t)( 2440 struct hfa384x *hw, 2441 void *ctlxresult, 2442 void *usercb_data); 2443 2444typedef 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 2464typedef 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 2474typedef 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 */ 2510typedef 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 2517typedef 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 2526typedef 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) 2693void 2694hfa384x_create( 2695 hfa384x_t *hw, 2696 struct usb_device *usb); 2697#else 2698void 2699hfa384x_create( 2700 hfa384x_t *hw, 2701 UINT irq, 2702 UINT32 iobase, 2703 UINT8 __iomem *membase); 2704#endif 2705 2706void hfa384x_destroy(hfa384x_t *hw); 2707 2708irqreturn_t 2709hfa384x_interrupt(int irq, void *dev_id PT_REGS); 2710int 2711hfa384x_corereset( hfa384x_t *hw, int holdtime, int settletime, int genesis); 2712int 2713hfa384x_drvr_chinforesults( hfa384x_t *hw); 2714int 2715hfa384x_drvr_commtallies( hfa384x_t *hw); 2716int 2717hfa384x_drvr_disable(hfa384x_t *hw, UINT16 macport); 2718int 2719hfa384x_drvr_enable(hfa384x_t *hw, UINT16 macport); 2720int 2721hfa384x_drvr_flashdl_enable(hfa384x_t *hw); 2722int 2723hfa384x_drvr_flashdl_disable(hfa384x_t *hw); 2724int 2725hfa384x_drvr_flashdl_write(hfa384x_t *hw, UINT32 daddr, void* buf, UINT32 len); 2726int 2727hfa384x_drvr_getconfig(hfa384x_t *hw, UINT16 rid, void *buf, UINT16 len); 2728int 2729hfa384x_drvr_handover( hfa384x_t *hw, UINT8 *addr); 2730int 2731hfa384x_drvr_hostscanresults( hfa384x_t *hw); 2732int 2733hfa384x_drvr_low_level(hfa384x_t *hw, hfa384x_metacmd_t *cmd); 2734int 2735hfa384x_drvr_mmi_read(hfa384x_t *hw, UINT32 address, UINT32 *result); 2736int 2737hfa384x_drvr_mmi_write(hfa384x_t *hw, UINT32 address, UINT32 data); 2738int 2739hfa384x_drvr_ramdl_enable(hfa384x_t *hw, UINT32 exeaddr); 2740int 2741hfa384x_drvr_ramdl_disable(hfa384x_t *hw); 2742int 2743hfa384x_drvr_ramdl_write(hfa384x_t *hw, UINT32 daddr, void* buf, UINT32 len); 2744int 2745hfa384x_drvr_readpda(hfa384x_t *hw, void *buf, UINT len); 2746int 2747hfa384x_drvr_scanresults( hfa384x_t *hw); 2748 2749int 2750hfa384x_drvr_setconfig(hfa384x_t *hw, UINT16 rid, void *buf, UINT16 len); 2751 2752static inline int 2753hfa384x_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 2763static inline int 2764hfa384x_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 2776static inline int 2777hfa384x_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 2783static inline int 2784hfa384x_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) 2791int 2792hfa384x_drvr_getconfig_async(hfa384x_t *hw, 2793 UINT16 rid, 2794 ctlx_usercb_t usercb, 2795 void *usercb_data); 2796 2797int 2798hfa384x_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 2805static inline int 2806hfa384x_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 2815static inline int 2816hfa384x_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 2823static inline int 2824hfa384x_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 2832int 2833hfa384x_drvr_start(hfa384x_t *hw); 2834int 2835hfa384x_drvr_stop(hfa384x_t *hw); 2836int 2837hfa384x_drvr_txframe(hfa384x_t *hw, struct sk_buff *skb, p80211_hdr_t *p80211_hdr, p80211_metawep_t *p80211_wep); 2838void 2839hfa384x_tx_timeout(wlandevice_t *wlandev); 2840 2841int 2842hfa384x_cmd_initialize(hfa384x_t *hw); 2843int 2844hfa384x_cmd_enable(hfa384x_t *hw, UINT16 macport); 2845int 2846hfa384x_cmd_disable(hfa384x_t *hw, UINT16 macport); 2847int 2848hfa384x_cmd_diagnose(hfa384x_t *hw); 2849int 2850hfa384x_cmd_allocate(hfa384x_t *hw, UINT16 len); 2851int 2852hfa384x_cmd_transmit(hfa384x_t *hw, UINT16 reclaim, UINT16 qos, UINT16 fid); 2853int 2854hfa384x_cmd_clearpersist(hfa384x_t *hw, UINT16 fid); 2855int 2856hfa384x_cmd_notify(hfa384x_t *hw, UINT16 reclaim, UINT16 fid, void *buf, UINT16 len); 2857int 2858hfa384x_cmd_inquire(hfa384x_t *hw, UINT16 fid); 2859int 2860hfa384x_cmd_access(hfa384x_t *hw, UINT16 write, UINT16 rid, void *buf, UINT16 len); 2861int 2862hfa384x_cmd_monitor(hfa384x_t *hw, UINT16 enable); 2863int 2864hfa384x_cmd_download( 2865 hfa384x_t *hw, 2866 UINT16 mode, 2867 UINT16 lowaddr, 2868 UINT16 highaddr, 2869 UINT16 codelen); 2870int 2871hfa384x_cmd_aux_enable(hfa384x_t *hw, int force); 2872int 2873hfa384x_cmd_aux_disable(hfa384x_t *hw); 2874int 2875hfa384x_copy_from_bap( 2876 hfa384x_t *hw, 2877 UINT16 bap, 2878 UINT16 id, 2879 UINT16 offset, 2880 void *buf, 2881 UINT len); 2882int 2883hfa384x_copy_to_bap( 2884 hfa384x_t *hw, 2885 UINT16 bap, 2886 UINT16 id, 2887 UINT16 offset, 2888 void *buf, 2889 UINT len); 2890void 2891hfa384x_copy_from_aux( 2892 hfa384x_t *hw, 2893 UINT32 cardaddr, 2894 UINT32 auxctl, 2895 void *buf, 2896 UINT len); 2897void 2898hfa384x_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 2914static inline UINT16 2915__hfa384x_getreg(hfa384x_t *hw, UINT reg); 2916 2917static inline void 2918__hfa384x_setreg(hfa384x_t *hw, UINT16 val, UINT reg); 2919 2920static inline UINT16 2921__hfa384x_getreg_noswap(hfa384x_t *hw, UINT reg); 2922 2923static 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----------------------------------------------------------------*/ 2952static 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----------------------------------------------------------------*/ 2978static 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----------------------------------------------------------------*/ 3004static 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----------------------------------------------------------------*/ 3029static 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 3042static 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 3054static 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