3 * Defines the constants and data structures for the hfa384x
 
   5 * Copyright (C) 1999 AbsoluteValue Systems, Inc.  All Rights Reserved.
 
   6 * --------------------------------------------------------------------
 
  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/
 
  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.
 
  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.
 
  31 * --------------------------------------------------------------------
 
  33 * Inquiries regarding the linux-wlan Open Source project can be
 
  36 * AbsoluteValue Systems Inc.
 
  38 * http://www.linux-wlan.com
 
  40 * --------------------------------------------------------------------
 
  42 * Portions of the development of this software were funded by
 
  43 * Intersil Corporation as part of PRISM(R) chipset product development.
 
  45 * --------------------------------------------------------------------
 
  47 *   [Implementation and usage notes]
 
  50 *       CW10 Programmer's Manual v1.5
 
  53 * --------------------------------------------------------------------
 
  59 /*=============================================================*/
 
  60 #define HFA384x_FIRMWARE_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
 
  62 #define HFA384x_LEVEL_TO_dBm(v)   (0x100 + (v) * 100 / 255 - 100)
 
  64 /*------ Constants --------------------------------------------*/
 
  65 /*--- Mins & Maxs -----------------------------------*/
 
  66 #define         HFA384x_CMD_ALLOC_LEN_MIN       ((u16)4)
 
  67 #define         HFA384x_CMD_ALLOC_LEN_MAX       ((u16)2400)
 
  68 #define         HFA384x_BAP_DATALEN_MAX         ((u16)4096)
 
  69 #define         HFA384x_BAP_OFFSET_MAX          ((u16)4096)
 
  70 #define         HFA384x_PORTID_MAX              ((u16)7)
 
  71 #define         HFA384x_NUMPORTS_MAX            ((u16)(HFA384x_PORTID_MAX+1))
 
  72 #define         HFA384x_PDR_LEN_MAX             ((u16)512)      /* in bytes, from EK */
 
  73 #define         HFA384x_PDA_RECS_MAX            ((u16)200)      /* a guess */
 
  74 #define         HFA384x_PDA_LEN_MAX             ((u16)1024)     /* in bytes, from EK */
 
  75 #define         HFA384x_SCANRESULT_MAX          ((u16)31)
 
  76 #define         HFA384x_HSCANRESULT_MAX         ((u16)31)
 
  77 #define         HFA384x_CHINFORESULT_MAX        ((u16)16)
 
  78 #define         HFA384x_DRVR_FIDSTACKLEN_MAX    (10)
 
  79 #define         HFA384x_DRVR_TXBUF_MAX          (sizeof(hfa384x_tx_frame_t) + \
 
  83 #define         HFA384x_DRVR_MAGIC              (0x4a2d)
 
  84 #define         HFA384x_INFODATA_MAXLEN         (sizeof(hfa384x_infodata_t))
 
  85 #define         HFA384x_INFOFRM_MAXLEN          (sizeof(hfa384x_InfFrame_t))
 
  86 #define         HFA384x_RID_GUESSING_MAXLEN     2048  /* I'm not really sure */
 
  87 #define         HFA384x_RIDDATA_MAXLEN          HFA384x_RID_GUESSING_MAXLEN
 
  88 #define         HFA384x_USB_RWMEM_MAXLEN        2048
 
  90 /*--- Support Constants -----------------------------*/
 
  91 #define         HFA384x_BAP_PROC                        ((u16)0)
 
  92 #define         HFA384x_BAP_int                         ((u16)1)
 
  93 #define         HFA384x_PORTTYPE_IBSS                   ((u16)0)
 
  94 #define         HFA384x_PORTTYPE_BSS                    ((u16)1)
 
  95 #define         HFA384x_PORTTYPE_WDS                    ((u16)2)
 
  96 #define         HFA384x_PORTTYPE_PSUEDOIBSS             ((u16)3)
 
  97 #define         HFA384x_PORTTYPE_HOSTAP                 ((u16)6)
 
  98 #define         HFA384x_WEPFLAGS_PRIVINVOKED            ((u16)BIT0)
 
  99 #define         HFA384x_WEPFLAGS_EXCLUDE                ((u16)BIT1)
 
 100 #define         HFA384x_WEPFLAGS_DISABLE_TXCRYPT        ((u16)BIT4)
 
 101 #define         HFA384x_WEPFLAGS_DISABLE_RXCRYPT        ((u16)BIT7)
 
 102 #define         HFA384x_WEPFLAGS_DISALLOW_MIXED         ((u16)BIT11)
 
 103 #define         HFA384x_WEPFLAGS_IV_intERVAL1           ((u16)0)
 
 104 #define         HFA384x_WEPFLAGS_IV_intERVAL10          ((u16)BIT5)
 
 105 #define         HFA384x_WEPFLAGS_IV_intERVAL50          ((u16)BIT6)
 
 106 #define         HFA384x_WEPFLAGS_IV_intERVAL100         ((u16)(BIT5 | BIT6))
 
 107 #define         HFA384x_WEPFLAGS_FIRMWARE_WPA           ((u16)BIT8)
 
 108 #define         HFA384x_WEPFLAGS_HOST_MIC               ((u16)BIT9)
 
 109 #define         HFA384x_ROAMMODE_FWSCAN_FWROAM          ((u16)1)
 
 110 #define         HFA384x_ROAMMODE_FWSCAN_HOSTROAM        ((u16)2)
 
 111 #define         HFA384x_ROAMMODE_HOSTSCAN_HOSTROAM      ((u16)3)
 
 112 #define         HFA384x_PORTSTATUS_DISABLED             ((u16)1)
 
 113 #define         HFA384x_PORTSTATUS_INITSRCH             ((u16)2)
 
 114 #define         HFA384x_PORTSTATUS_CONN_IBSS            ((u16)3)
 
 115 #define         HFA384x_PORTSTATUS_CONN_ESS             ((u16)4)
 
 116 #define         HFA384x_PORTSTATUS_OOR_ESS              ((u16)5)
 
 117 #define         HFA384x_PORTSTATUS_CONN_WDS             ((u16)6)
 
 118 #define         HFA384x_PORTSTATUS_HOSTAP               ((u16)8)
 
 119 #define         HFA384x_RATEBIT_1                       ((u16)1)
 
 120 #define         HFA384x_RATEBIT_2                       ((u16)2)
 
 121 #define         HFA384x_RATEBIT_5dot5                   ((u16)4)
 
 122 #define         HFA384x_RATEBIT_11                      ((u16)8)
 
 124 /*--- Just some symbolic names for legibility -------*/
 
 125 #define         HFA384x_TXCMD_NORECL            ((u16)0)
 
 126 #define         HFA384x_TXCMD_RECL              ((u16)1)
 
 128 /*--- MAC Internal memory constants and macros ------*/
 
 129 /* masks and macros used to manipulate MAC internal memory addresses. */
 
 130 /* MAC internal memory addresses are 23 bit quantities.  The MAC uses
 
 131  * a paged address space where the upper 16 bits are the page number
 
 132  * and the lower 7 bits are the offset.  There are various Host API
 
 133  * elements that require two 16-bit quantities to specify a MAC
 
 134  * internal memory address.  Unfortunately, some of the API's use a
 
 135  * page/offset format where the offset value is JUST the lower seven
 
 136  * bits and the page is  the remaining 16 bits.  Some of the API's
 
 137  * assume that the 23 bit address has been split at the 16th bit.  We
 
 138  * refer to these two formats as AUX format and CMD format.  The
 
 139  * macros below help handle some of this.
 
 143 #define         HFA384x_ADDR_AUX_OFF_MAX        ((u16)0x007f)
 
 145 /* Mask bits for discarding unwanted pieces in a flat address */
 
 146 #define         HFA384x_ADDR_FLAT_AUX_PAGE_MASK (0x007fff80)
 
 147 #define         HFA384x_ADDR_FLAT_AUX_OFF_MASK  (0x0000007f)
 
 148 #define         HFA384x_ADDR_FLAT_CMD_PAGE_MASK (0xffff0000)
 
 149 #define         HFA384x_ADDR_FLAT_CMD_OFF_MASK  (0x0000ffff)
 
 151 /* Mask bits for discarding unwanted pieces in AUX format 16-bit address parts */
 
 152 #define         HFA384x_ADDR_AUX_PAGE_MASK      (0xffff)
 
 153 #define         HFA384x_ADDR_AUX_OFF_MASK       (0x007f)
 
 155 /* Mask bits for discarding unwanted pieces in CMD format 16-bit address parts */
 
 156 #define         HFA384x_ADDR_CMD_PAGE_MASK      (0x007f)
 
 157 #define         HFA384x_ADDR_CMD_OFF_MASK       (0xffff)
 
 159 /* Make a 32-bit flat address from AUX format 16-bit page and offset */
 
 160 #define         HFA384x_ADDR_AUX_MKFLAT(p,o)    \
 
 161                 (((u32)(((u16)(p))&HFA384x_ADDR_AUX_PAGE_MASK)) <<7) | \
 
 162                 ((u32)(((u16)(o))&HFA384x_ADDR_AUX_OFF_MASK))
 
 164 /* Make a 32-bit flat address from CMD format 16-bit page and offset */
 
 165 #define         HFA384x_ADDR_CMD_MKFLAT(p,o)    \
 
 166                 (((u32)(((u16)(p))&HFA384x_ADDR_CMD_PAGE_MASK)) <<16) | \
 
 167                 ((u32)(((u16)(o))&HFA384x_ADDR_CMD_OFF_MASK))
 
 169 /* Make AUX format offset and page from a 32-bit flat address */
 
 170 #define         HFA384x_ADDR_AUX_MKPAGE(f) \
 
 171                 ((u16)((((u32)(f))&HFA384x_ADDR_FLAT_AUX_PAGE_MASK)>>7))
 
 172 #define         HFA384x_ADDR_AUX_MKOFF(f) \
 
 173                 ((u16)(((u32)(f))&HFA384x_ADDR_FLAT_AUX_OFF_MASK))
 
 175 /* Make CMD format offset and page from a 32-bit flat address */
 
 176 #define         HFA384x_ADDR_CMD_MKPAGE(f) \
 
 177                 ((u16)((((u32)(f))&HFA384x_ADDR_FLAT_CMD_PAGE_MASK)>>16))
 
 178 #define         HFA384x_ADDR_CMD_MKOFF(f) \
 
 179                 ((u16)(((u32)(f))&HFA384x_ADDR_FLAT_CMD_OFF_MASK))
 
 181 /*--- Aux register masks/tests ----------------------*/
 
 182 /* Some of the upper bits of the AUX offset register are used to */
 
 183 /*  select address space. */
 
 184 #define         HFA384x_AUX_CTL_EXTDS   (0x00)
 
 185 #define         HFA384x_AUX_CTL_NV      (0x01)
 
 186 #define         HFA384x_AUX_CTL_PHY     (0x02)
 
 187 #define         HFA384x_AUX_CTL_ICSRAM  (0x03)
 
 189 /* Make AUX register offset and page values from a flat address */
 
 190 #define         HFA384x_AUX_MKOFF(f, c) \
 
 191         (HFA384x_ADDR_AUX_MKOFF(f) | (((u16)(c))<<12))
 
 192 #define         HFA384x_AUX_MKPAGE(f)   HFA384x_ADDR_AUX_MKPAGE(f)
 
 195 /*--- Controller Memory addresses -------------------*/
 
 196 #define         HFA3842_PDA_BASE        (0x007f0000UL)
 
 197 #define         HFA3841_PDA_BASE        (0x003f0000UL)
 
 198 #define         HFA3841_PDA_BOGUS_BASE  (0x00390000UL)
 
 200 /*--- Driver Download states  -----------------------*/
 
 201 #define         HFA384x_DLSTATE_DISABLED                0
 
 202 #define         HFA384x_DLSTATE_RAMENABLED              1
 
 203 #define         HFA384x_DLSTATE_FLASHENABLED            2
 
 204 #define         HFA384x_DLSTATE_FLASHWRITTEN            3
 
 205 #define         HFA384x_DLSTATE_FLASHWRITEPENDING       4
 
 206 #define         HFA384x_DLSTATE_GENESIS                 5
 
 208 #define         HFA384x_CMD_OFF                 (0x00)
 
 209 #define         HFA384x_PARAM0_OFF              (0x04)
 
 210 #define         HFA384x_PARAM1_OFF              (0x08)
 
 211 #define         HFA384x_PARAM2_OFF              (0x0c)
 
 212 #define         HFA384x_STATUS_OFF              (0x10)
 
 213 #define         HFA384x_RESP0_OFF               (0x14)
 
 214 #define         HFA384x_RESP1_OFF               (0x18)
 
 215 #define         HFA384x_RESP2_OFF               (0x1c)
 
 216 #define         HFA384x_INFOFID_OFF             (0x20)
 
 217 #define         HFA384x_RXFID_OFF               (0x40)
 
 218 #define         HFA384x_ALLOCFID_OFF            (0x44)
 
 219 #define         HFA384x_TXCOMPLFID_OFF          (0x48)
 
 220 #define         HFA384x_SELECT0_OFF             (0x30)
 
 221 #define         HFA384x_OFFSET0_OFF             (0x38)
 
 222 #define         HFA384x_DATA0_OFF               (0x6c)
 
 223 #define         HFA384x_SELECT1_OFF             (0x34)
 
 224 #define         HFA384x_OFFSET1_OFF             (0x3c)
 
 225 #define         HFA384x_DATA1_OFF               (0x70)
 
 226 #define         HFA384x_EVSTAT_OFF              (0x60)
 
 227 #define         HFA384x_intEN_OFF               (0x64)
 
 228 #define         HFA384x_EVACK_OFF               (0x68)
 
 229 #define         HFA384x_CONTROL_OFF             (0x28)
 
 230 #define         HFA384x_SWSUPPORT0_OFF          (0x50)
 
 231 #define         HFA384x_SWSUPPORT1_OFF          (0x54)
 
 232 #define         HFA384x_SWSUPPORT2_OFF          (0x58)
 
 233 #define         HFA384x_AUXPAGE_OFF             (0x74)
 
 234 #define         HFA384x_AUXOFFSET_OFF           (0x78)
 
 235 #define         HFA384x_AUXDATA_OFF             (0x7c)
 
 236 #define         HFA384x_PCICOR_OFF              (0x4c)
 
 237 #define         HFA384x_PCIHCR_OFF              (0x5c)
 
 238 #define         HFA384x_PCI_M0_ADDRH_OFF        (0x80)
 
 239 #define         HFA384x_PCI_M0_ADDRL_OFF        (0x84)
 
 240 #define         HFA384x_PCI_M0_LEN_OFF          (0x88)
 
 241 #define         HFA384x_PCI_M0_CTL_OFF          (0x8c)
 
 242 #define         HFA384x_PCI_STATUS_OFF          (0x98)
 
 243 #define         HFA384x_PCI_M1_ADDRH_OFF        (0xa0)
 
 244 #define         HFA384x_PCI_M1_ADDRL_OFF        (0xa4)
 
 245 #define         HFA384x_PCI_M1_LEN_OFF          (0xa8)
 
 246 #define         HFA384x_PCI_M1_CTL_OFF          (0xac)
 
 248 /*--- Register Field Masks --------------------------*/
 
 249 #define         HFA384x_CMD_BUSY                ((u16)BIT15)
 
 250 #define         HFA384x_CMD_AINFO               ((u16)(BIT14 | BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8))
 
 251 #define         HFA384x_CMD_MACPORT             ((u16)(BIT10 | BIT9 | BIT8))
 
 252 #define         HFA384x_CMD_RECL                ((u16)BIT8)
 
 253 #define         HFA384x_CMD_WRITE               ((u16)BIT8)
 
 254 #define         HFA384x_CMD_PROGMODE            ((u16)(BIT9 | BIT8))
 
 255 #define         HFA384x_CMD_CMDCODE             ((u16)(BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0))
 
 257 #define         HFA384x_STATUS_RESULT           ((u16)(BIT14 | BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8))
 
 258 #define         HFA384x_STATUS_CMDCODE          ((u16)(BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0))
 
 260 #define         HFA384x_OFFSET_BUSY             ((u16)BIT15)
 
 261 #define         HFA384x_OFFSET_ERR              ((u16)BIT14)
 
 262 #define         HFA384x_OFFSET_DATAOFF          ((u16)(BIT11 | BIT10 | BIT9 | BIT8 | BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1))
 
 264 #define         HFA384x_EVSTAT_TICK             ((u16)BIT15)
 
 265 #define         HFA384x_EVSTAT_WTERR            ((u16)BIT14)
 
 266 #define         HFA384x_EVSTAT_INFDROP          ((u16)BIT13)
 
 267 #define         HFA384x_EVSTAT_INFO             ((u16)BIT7)
 
 268 #define         HFA384x_EVSTAT_DTIM             ((u16)BIT5)
 
 269 #define         HFA384x_EVSTAT_CMD              ((u16)BIT4)
 
 270 #define         HFA384x_EVSTAT_ALLOC            ((u16)BIT3)
 
 271 #define         HFA384x_EVSTAT_TXEXC            ((u16)BIT2)
 
 272 #define         HFA384x_EVSTAT_TX               ((u16)BIT1)
 
 273 #define         HFA384x_EVSTAT_RX               ((u16)BIT0)
 
 275 #define         HFA384x_int_BAP_OP           (HFA384x_EVSTAT_INFO|HFA384x_EVSTAT_RX|HFA384x_EVSTAT_TX|HFA384x_EVSTAT_TXEXC)
 
 277 #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)
 
 279 #define         HFA384x_intEN_TICK              ((u16)BIT15)
 
 280 #define         HFA384x_intEN_WTERR             ((u16)BIT14)
 
 281 #define         HFA384x_intEN_INFDROP           ((u16)BIT13)
 
 282 #define         HFA384x_intEN_INFO              ((u16)BIT7)
 
 283 #define         HFA384x_intEN_DTIM              ((u16)BIT5)
 
 284 #define         HFA384x_intEN_CMD               ((u16)BIT4)
 
 285 #define         HFA384x_intEN_ALLOC             ((u16)BIT3)
 
 286 #define         HFA384x_intEN_TXEXC             ((u16)BIT2)
 
 287 #define         HFA384x_intEN_TX                ((u16)BIT1)
 
 288 #define         HFA384x_intEN_RX                ((u16)BIT0)
 
 290 #define         HFA384x_EVACK_TICK              ((u16)BIT15)
 
 291 #define         HFA384x_EVACK_WTERR             ((u16)BIT14)
 
 292 #define         HFA384x_EVACK_INFDROP           ((u16)BIT13)
 
 293 #define         HFA384x_EVACK_INFO              ((u16)BIT7)
 
 294 #define         HFA384x_EVACK_DTIM              ((u16)BIT5)
 
 295 #define         HFA384x_EVACK_CMD               ((u16)BIT4)
 
 296 #define         HFA384x_EVACK_ALLOC             ((u16)BIT3)
 
 297 #define         HFA384x_EVACK_TXEXC             ((u16)BIT2)
 
 298 #define         HFA384x_EVACK_TX                ((u16)BIT1)
 
 299 #define         HFA384x_EVACK_RX                ((u16)BIT0)
 
 301 #define         HFA384x_CONTROL_AUXEN           ((u16)(BIT15 | BIT14))
 
 304 /*--- Command Code Constants --------------------------*/
 
 305 /*--- Controller Commands --------------------------*/
 
 306 #define         HFA384x_CMDCODE_INIT            ((u16)0x00)
 
 307 #define         HFA384x_CMDCODE_ENABLE          ((u16)0x01)
 
 308 #define         HFA384x_CMDCODE_DISABLE         ((u16)0x02)
 
 309 #define         HFA384x_CMDCODE_DIAG            ((u16)0x03)
 
 311 /*--- Buffer Mgmt Commands --------------------------*/
 
 312 #define         HFA384x_CMDCODE_ALLOC           ((u16)0x0A)
 
 313 #define         HFA384x_CMDCODE_TX              ((u16)0x0B)
 
 314 #define         HFA384x_CMDCODE_CLRPRST         ((u16)0x12)
 
 316 /*--- Regulate Commands --------------------------*/
 
 317 #define         HFA384x_CMDCODE_NOTIFY          ((u16)0x10)
 
 318 #define         HFA384x_CMDCODE_INQ             ((u16)0x11)
 
 320 /*--- Configure Commands --------------------------*/
 
 321 #define         HFA384x_CMDCODE_ACCESS          ((u16)0x21)
 
 322 #define         HFA384x_CMDCODE_DOWNLD          ((u16)0x22)
 
 324 /*--- Debugging Commands -----------------------------*/
 
 325 #define         HFA384x_CMDCODE_MONITOR         ((u16)(0x38))
 
 326 #define         HFA384x_MONITOR_ENABLE          ((u16)(0x0b))
 
 327 #define         HFA384x_MONITOR_DISABLE         ((u16)(0x0f))
 
 329 /*--- Result Codes --------------------------*/
 
 330 #define         HFA384x_SUCCESS                 ((u16)(0x00))
 
 331 #define         HFA384x_CARD_FAIL               ((u16)(0x01))
 
 332 #define         HFA384x_NO_BUFF                 ((u16)(0x05))
 
 333 #define         HFA384x_CMD_ERR                 ((u16)(0x7F))
 
 335 /*--- Programming Modes --------------------------
 
 336         MODE 0: Disable programming
 
 337         MODE 1: Enable volatile memory programming
 
 338         MODE 2: Enable non-volatile memory programming
 
 339         MODE 3: Program non-volatile memory section
 
 340 --------------------------------------------------*/
 
 341 #define         HFA384x_PROGMODE_DISABLE        ((u16)0x00)
 
 342 #define         HFA384x_PROGMODE_RAM            ((u16)0x01)
 
 343 #define         HFA384x_PROGMODE_NV             ((u16)0x02)
 
 344 #define         HFA384x_PROGMODE_NVWRITE        ((u16)0x03)
 
 346 /*--- AUX register enable --------------------------*/
 
 347 #define         HFA384x_AUXPW0                  ((u16)0xfe01)
 
 348 #define         HFA384x_AUXPW1                  ((u16)0xdc23)
 
 349 #define         HFA384x_AUXPW2                  ((u16)0xba45)
 
 351 #define         HFA384x_CONTROL_AUX_ISDISABLED  ((u16)0x0000)
 
 352 #define         HFA384x_CONTROL_AUX_ISENABLED   ((u16)0xc000)
 
 353 #define         HFA384x_CONTROL_AUX_DOENABLE    ((u16)0x8000)
 
 354 #define         HFA384x_CONTROL_AUX_DODISABLE   ((u16)0x4000)
 
 356 /*--- Record ID Constants --------------------------*/
 
 357 /*--------------------------------------------------------------------
 
 358 Configuration RIDs: Network Parameters, Static Configuration Entities
 
 359 --------------------------------------------------------------------*/
 
 360 #define         HFA384x_RID_CNFPORTTYPE         ((u16)0xFC00)
 
 361 #define         HFA384x_RID_CNFOWNMACADDR       ((u16)0xFC01)
 
 362 #define         HFA384x_RID_CNFDESIREDSSID      ((u16)0xFC02)
 
 363 #define         HFA384x_RID_CNFOWNCHANNEL       ((u16)0xFC03)
 
 364 #define         HFA384x_RID_CNFOWNSSID          ((u16)0xFC04)
 
 365 #define         HFA384x_RID_CNFOWNATIMWIN       ((u16)0xFC05)
 
 366 #define         HFA384x_RID_CNFSYSSCALE         ((u16)0xFC06)
 
 367 #define         HFA384x_RID_CNFMAXDATALEN       ((u16)0xFC07)
 
 368 #define         HFA384x_RID_CNFWDSADDR          ((u16)0xFC08)
 
 369 #define         HFA384x_RID_CNFPMENABLED        ((u16)0xFC09)
 
 370 #define         HFA384x_RID_CNFPMEPS            ((u16)0xFC0A)
 
 371 #define         HFA384x_RID_CNFMULTICASTRX      ((u16)0xFC0B)
 
 372 #define         HFA384x_RID_CNFMAXSLEEPDUR      ((u16)0xFC0C)
 
 373 #define         HFA384x_RID_CNFPMHOLDDUR        ((u16)0xFC0D)
 
 374 #define         HFA384x_RID_CNFOWNNAME          ((u16)0xFC0E)
 
 375 #define         HFA384x_RID_CNFOWNDTIMPER       ((u16)0xFC10)
 
 376 #define         HFA384x_RID_CNFWDSADDR1         ((u16)0xFC11)
 
 377 #define         HFA384x_RID_CNFWDSADDR2         ((u16)0xFC12)
 
 378 #define         HFA384x_RID_CNFWDSADDR3         ((u16)0xFC13)
 
 379 #define         HFA384x_RID_CNFWDSADDR4         ((u16)0xFC14)
 
 380 #define         HFA384x_RID_CNFWDSADDR5         ((u16)0xFC15)
 
 381 #define         HFA384x_RID_CNFWDSADDR6         ((u16)0xFC16)
 
 382 #define         HFA384x_RID_CNFMCASTPMBUFF      ((u16)0xFC17)
 
 384 /*--------------------------------------------------------------------
 
 385 Configuration RID lengths: Network Params, Static Config Entities
 
 386   This is the length of JUST the DATA part of the RID (does not
 
 387   include the len or code fields)
 
 388 --------------------------------------------------------------------*/
 
 389 /* TODO: fill in the rest of these */
 
 390 #define         HFA384x_RID_CNFPORTTYPE_LEN     ((u16)2)
 
 391 #define         HFA384x_RID_CNFOWNMACADDR_LEN   ((u16)6)
 
 392 #define         HFA384x_RID_CNFDESIREDSSID_LEN  ((u16)34)
 
 393 #define         HFA384x_RID_CNFOWNCHANNEL_LEN   ((u16)2)
 
 394 #define         HFA384x_RID_CNFOWNSSID_LEN      ((u16)34)
 
 395 #define         HFA384x_RID_CNFOWNATIMWIN_LEN   ((u16)2)
 
 396 #define         HFA384x_RID_CNFSYSSCALE_LEN     ((u16)0)
 
 397 #define         HFA384x_RID_CNFMAXDATALEN_LEN   ((u16)0)
 
 398 #define         HFA384x_RID_CNFWDSADDR_LEN      ((u16)6)
 
 399 #define         HFA384x_RID_CNFPMENABLED_LEN    ((u16)0)
 
 400 #define         HFA384x_RID_CNFPMEPS_LEN        ((u16)0)
 
 401 #define         HFA384x_RID_CNFMULTICASTRX_LEN  ((u16)0)
 
 402 #define         HFA384x_RID_CNFMAXSLEEPDUR_LEN  ((u16)0)
 
 403 #define         HFA384x_RID_CNFPMHOLDDUR_LEN    ((u16)0)
 
 404 #define         HFA384x_RID_CNFOWNNAME_LEN      ((u16)34)
 
 405 #define         HFA384x_RID_CNFOWNDTIMPER_LEN   ((u16)0)
 
 406 #define         HFA384x_RID_CNFWDSADDR1_LEN     ((u16)6)
 
 407 #define         HFA384x_RID_CNFWDSADDR2_LEN     ((u16)6)
 
 408 #define         HFA384x_RID_CNFWDSADDR3_LEN     ((u16)6)
 
 409 #define         HFA384x_RID_CNFWDSADDR4_LEN     ((u16)6)
 
 410 #define         HFA384x_RID_CNFWDSADDR5_LEN     ((u16)6)
 
 411 #define         HFA384x_RID_CNFWDSADDR6_LEN     ((u16)6)
 
 412 #define         HFA384x_RID_CNFMCASTPMBUFF_LEN  ((u16)0)
 
 413 #define         HFA384x_RID_CNFAUTHENTICATION_LEN ((u16)sizeof(u16))
 
 414 #define         HFA384x_RID_CNFMAXSLEEPDUR_LEN  ((u16)0)
 
 416 /*--------------------------------------------------------------------
 
 417 Configuration RIDs: Network Parameters, Dynamic Configuration Entities
 
 418 --------------------------------------------------------------------*/
 
 419 #define         HFA384x_RID_GROUPADDR           ((u16)0xFC80)
 
 420 #define         HFA384x_RID_CREATEIBSS          ((u16)0xFC81)
 
 421 #define         HFA384x_RID_FRAGTHRESH          ((u16)0xFC82)
 
 422 #define         HFA384x_RID_RTSTHRESH           ((u16)0xFC83)
 
 423 #define         HFA384x_RID_TXRATECNTL          ((u16)0xFC84)
 
 424 #define         HFA384x_RID_PROMISCMODE         ((u16)0xFC85)
 
 425 #define         HFA384x_RID_FRAGTHRESH0         ((u16)0xFC90)
 
 426 #define         HFA384x_RID_FRAGTHRESH1         ((u16)0xFC91)
 
 427 #define         HFA384x_RID_FRAGTHRESH2         ((u16)0xFC92)
 
 428 #define         HFA384x_RID_FRAGTHRESH3         ((u16)0xFC93)
 
 429 #define         HFA384x_RID_FRAGTHRESH4         ((u16)0xFC94)
 
 430 #define         HFA384x_RID_FRAGTHRESH5         ((u16)0xFC95)
 
 431 #define         HFA384x_RID_FRAGTHRESH6         ((u16)0xFC96)
 
 432 #define         HFA384x_RID_RTSTHRESH0          ((u16)0xFC97)
 
 433 #define         HFA384x_RID_RTSTHRESH1          ((u16)0xFC98)
 
 434 #define         HFA384x_RID_RTSTHRESH2          ((u16)0xFC99)
 
 435 #define         HFA384x_RID_RTSTHRESH3          ((u16)0xFC9A)
 
 436 #define         HFA384x_RID_RTSTHRESH4          ((u16)0xFC9B)
 
 437 #define         HFA384x_RID_RTSTHRESH5          ((u16)0xFC9C)
 
 438 #define         HFA384x_RID_RTSTHRESH6          ((u16)0xFC9D)
 
 439 #define         HFA384x_RID_TXRATECNTL0         ((u16)0xFC9E)
 
 440 #define         HFA384x_RID_TXRATECNTL1         ((u16)0xFC9F)
 
 441 #define         HFA384x_RID_TXRATECNTL2         ((u16)0xFCA0)
 
 442 #define         HFA384x_RID_TXRATECNTL3         ((u16)0xFCA1)
 
 443 #define         HFA384x_RID_TXRATECNTL4         ((u16)0xFCA2)
 
 444 #define         HFA384x_RID_TXRATECNTL5         ((u16)0xFCA3)
 
 445 #define         HFA384x_RID_TXRATECNTL6         ((u16)0xFCA4)
 
 447 /*--------------------------------------------------------------------
 
 448 Configuration RID Lengths: Network Param, Dynamic Config Entities
 
 449   This is the length of JUST the DATA part of the RID (does not
 
 450   include the len or code fields)
 
 451 --------------------------------------------------------------------*/
 
 452 /* TODO: fill in the rest of these */
 
 453 #define         HFA384x_RID_GROUPADDR_LEN       ((u16)16 * WLAN_ADDR_LEN)
 
 454 #define         HFA384x_RID_CREATEIBSS_LEN      ((u16)0)
 
 455 #define         HFA384x_RID_FRAGTHRESH_LEN      ((u16)0)
 
 456 #define         HFA384x_RID_RTSTHRESH_LEN       ((u16)0)
 
 457 #define         HFA384x_RID_TXRATECNTL_LEN      ((u16)4)
 
 458 #define         HFA384x_RID_PROMISCMODE_LEN     ((u16)2)
 
 459 #define         HFA384x_RID_FRAGTHRESH0_LEN     ((u16)0)
 
 460 #define         HFA384x_RID_FRAGTHRESH1_LEN     ((u16)0)
 
 461 #define         HFA384x_RID_FRAGTHRESH2_LEN     ((u16)0)
 
 462 #define         HFA384x_RID_FRAGTHRESH3_LEN     ((u16)0)
 
 463 #define         HFA384x_RID_FRAGTHRESH4_LEN     ((u16)0)
 
 464 #define         HFA384x_RID_FRAGTHRESH5_LEN     ((u16)0)
 
 465 #define         HFA384x_RID_FRAGTHRESH6_LEN     ((u16)0)
 
 466 #define         HFA384x_RID_RTSTHRESH0_LEN      ((u16)0)
 
 467 #define         HFA384x_RID_RTSTHRESH1_LEN      ((u16)0)
 
 468 #define         HFA384x_RID_RTSTHRESH2_LEN      ((u16)0)
 
 469 #define         HFA384x_RID_RTSTHRESH3_LEN      ((u16)0)
 
 470 #define         HFA384x_RID_RTSTHRESH4_LEN      ((u16)0)
 
 471 #define         HFA384x_RID_RTSTHRESH5_LEN      ((u16)0)
 
 472 #define         HFA384x_RID_RTSTHRESH6_LEN      ((u16)0)
 
 473 #define         HFA384x_RID_TXRATECNTL0_LEN     ((u16)0)
 
 474 #define         HFA384x_RID_TXRATECNTL1_LEN     ((u16)0)
 
 475 #define         HFA384x_RID_TXRATECNTL2_LEN     ((u16)0)
 
 476 #define         HFA384x_RID_TXRATECNTL3_LEN     ((u16)0)
 
 477 #define         HFA384x_RID_TXRATECNTL4_LEN     ((u16)0)
 
 478 #define         HFA384x_RID_TXRATECNTL5_LEN     ((u16)0)
 
 479 #define         HFA384x_RID_TXRATECNTL6_LEN     ((u16)0)
 
 481 /*--------------------------------------------------------------------
 
 482 Configuration RIDs: Behavior Parameters
 
 483 --------------------------------------------------------------------*/
 
 484 #define         HFA384x_RID_ITICKTIME           ((u16)0xFCE0)
 
 486 /*--------------------------------------------------------------------
 
 487 Configuration RID Lengths: Behavior Parameters
 
 488   This is the length of JUST the DATA part of the RID (does not
 
 489   include the len or code fields)
 
 490 --------------------------------------------------------------------*/
 
 491 #define         HFA384x_RID_ITICKTIME_LEN       ((u16)2)
 
 493 /*----------------------------------------------------------------------
 
 494 Information RIDs: NIC Information
 
 495 --------------------------------------------------------------------*/
 
 496 #define         HFA384x_RID_MAXLOADTIME         ((u16)0xFD00)
 
 497 #define         HFA384x_RID_DOWNLOADBUFFER      ((u16)0xFD01)
 
 498 #define         HFA384x_RID_PRIIDENTITY         ((u16)0xFD02)
 
 499 #define         HFA384x_RID_PRISUPRANGE         ((u16)0xFD03)
 
 500 #define         HFA384x_RID_PRI_CFIACTRANGES    ((u16)0xFD04)
 
 501 #define         HFA384x_RID_NICSERIALNUMBER     ((u16)0xFD0A)
 
 502 #define         HFA384x_RID_NICIDENTITY         ((u16)0xFD0B)
 
 503 #define         HFA384x_RID_MFISUPRANGE         ((u16)0xFD0C)
 
 504 #define         HFA384x_RID_CFISUPRANGE         ((u16)0xFD0D)
 
 505 #define         HFA384x_RID_CHANNELLIST         ((u16)0xFD10)
 
 506 #define         HFA384x_RID_REGULATORYDOMAINS   ((u16)0xFD11)
 
 507 #define         HFA384x_RID_TEMPTYPE            ((u16)0xFD12)
 
 508 #define         HFA384x_RID_CIS                 ((u16)0xFD13)
 
 509 #define         HFA384x_RID_STAIDENTITY         ((u16)0xFD20)
 
 510 #define         HFA384x_RID_STASUPRANGE         ((u16)0xFD21)
 
 511 #define         HFA384x_RID_STA_MFIACTRANGES    ((u16)0xFD22)
 
 512 #define         HFA384x_RID_STA_CFIACTRANGES    ((u16)0xFD23)
 
 513 #define         HFA384x_RID_BUILDSEQ            ((u16)0xFFFE)
 
 514 #define         HFA384x_RID_FWID                ((u16)0xFFFF)
 
 516 /*----------------------------------------------------------------------
 
 517 Information RID Lengths: NIC Information
 
 518   This is the length of JUST the DATA part of the RID (does not
 
 519   include the len or code fields)
 
 520 --------------------------------------------------------------------*/
 
 521 #define         HFA384x_RID_MAXLOADTIME_LEN             ((u16)0)
 
 522 #define         HFA384x_RID_DOWNLOADBUFFER_LEN          ((u16)sizeof(hfa384x_downloadbuffer_t))
 
 523 #define         HFA384x_RID_PRIIDENTITY_LEN             ((u16)8)
 
 524 #define         HFA384x_RID_PRISUPRANGE_LEN             ((u16)10)
 
 525 #define         HFA384x_RID_CFIACTRANGES_LEN            ((u16)10)
 
 526 #define         HFA384x_RID_NICSERIALNUMBER_LEN         ((u16)12)
 
 527 #define         HFA384x_RID_NICIDENTITY_LEN             ((u16)8)
 
 528 #define         HFA384x_RID_MFISUPRANGE_LEN             ((u16)10)
 
 529 #define         HFA384x_RID_CFISUPRANGE_LEN             ((u16)10)
 
 530 #define         HFA384x_RID_CHANNELLIST_LEN             ((u16)0)
 
 531 #define         HFA384x_RID_REGULATORYDOMAINS_LEN       ((u16)12)
 
 532 #define         HFA384x_RID_TEMPTYPE_LEN                ((u16)0)
 
 533 #define         HFA384x_RID_CIS_LEN                     ((u16)480)
 
 534 #define         HFA384x_RID_STAIDENTITY_LEN             ((u16)8)
 
 535 #define         HFA384x_RID_STASUPRANGE_LEN             ((u16)10)
 
 536 #define         HFA384x_RID_MFIACTRANGES_LEN            ((u16)10)
 
 537 #define         HFA384x_RID_CFIACTRANGES2_LEN           ((u16)10)
 
 538 #define         HFA384x_RID_BUILDSEQ_LEN                ((u16)sizeof(hfa384x_BuildSeq_t))
 
 539 #define         HFA384x_RID_FWID_LEN                    ((u16)sizeof(hfa384x_FWID_t))
 
 541 /*--------------------------------------------------------------------
 
 542 Information RIDs:  MAC Information
 
 543 --------------------------------------------------------------------*/
 
 544 #define         HFA384x_RID_PORTSTATUS          ((u16)0xFD40)
 
 545 #define         HFA384x_RID_CURRENTSSID         ((u16)0xFD41)
 
 546 #define         HFA384x_RID_CURRENTBSSID        ((u16)0xFD42)
 
 547 #define         HFA384x_RID_COMMSQUALITY        ((u16)0xFD43)
 
 548 #define         HFA384x_RID_CURRENTTXRATE       ((u16)0xFD44)
 
 549 #define         HFA384x_RID_CURRENTBCNint       ((u16)0xFD45)
 
 550 #define         HFA384x_RID_CURRENTSCALETHRESH  ((u16)0xFD46)
 
 551 #define         HFA384x_RID_PROTOCOLRSPTIME     ((u16)0xFD47)
 
 552 #define         HFA384x_RID_SHORTRETRYLIMIT     ((u16)0xFD48)
 
 553 #define         HFA384x_RID_LONGRETRYLIMIT      ((u16)0xFD49)
 
 554 #define         HFA384x_RID_MAXTXLIFETIME       ((u16)0xFD4A)
 
 555 #define         HFA384x_RID_MAXRXLIFETIME       ((u16)0xFD4B)
 
 556 #define         HFA384x_RID_CFPOLLABLE          ((u16)0xFD4C)
 
 557 #define         HFA384x_RID_AUTHALGORITHMS      ((u16)0xFD4D)
 
 558 #define         HFA384x_RID_PRIVACYOPTIMP       ((u16)0xFD4F)
 
 559 #define         HFA384x_RID_DBMCOMMSQUALITY     ((u16)0xFD51)
 
 560 #define         HFA384x_RID_CURRENTTXRATE1      ((u16)0xFD80)
 
 561 #define         HFA384x_RID_CURRENTTXRATE2      ((u16)0xFD81)
 
 562 #define         HFA384x_RID_CURRENTTXRATE3      ((u16)0xFD82)
 
 563 #define         HFA384x_RID_CURRENTTXRATE4      ((u16)0xFD83)
 
 564 #define         HFA384x_RID_CURRENTTXRATE5      ((u16)0xFD84)
 
 565 #define         HFA384x_RID_CURRENTTXRATE6      ((u16)0xFD85)
 
 566 #define         HFA384x_RID_OWNMACADDRESS       ((u16)0xFD86)
 
 567 // #define      HFA384x_RID_PCFINFO             ((u16)0xFD87)
 
 568 #define         HFA384x_RID_SCANRESULTS         ((u16)0xFD88) // NEW
 
 569 #define         HFA384x_RID_HOSTSCANRESULTS     ((u16)0xFD89) // NEW
 
 570 #define         HFA384x_RID_AUTHENTICATIONUSED  ((u16)0xFD8A) // NEW
 
 571 #define         HFA384x_RID_ASSOCIATEFAILURE    ((u16)0xFD8D) // 1.8.0
 
 573 /*--------------------------------------------------------------------
 
 574 Information RID Lengths:  MAC Information
 
 575   This is the length of JUST the DATA part of the RID (does not
 
 576   include the len or code fields)
 
 577 --------------------------------------------------------------------*/
 
 578 #define         HFA384x_RID_PORTSTATUS_LEN              ((u16)0)
 
 579 #define         HFA384x_RID_CURRENTSSID_LEN             ((u16)34)
 
 580 #define         HFA384x_RID_CURRENTBSSID_LEN            ((u16)WLAN_BSSID_LEN)
 
 581 #define         HFA384x_RID_COMMSQUALITY_LEN            ((u16)sizeof(hfa384x_commsquality_t))
 
 582 #define         HFA384x_RID_DBMCOMMSQUALITY_LEN         ((u16)sizeof(hfa384x_dbmcommsquality_t))
 
 583 #define         HFA384x_RID_CURRENTTXRATE_LEN           ((u16)0)
 
 584 #define         HFA384x_RID_CURRENTBCNint_LEN           ((u16)0)
 
 585 #define         HFA384x_RID_STACURSCALETHRESH_LEN       ((u16)12)
 
 586 #define         HFA384x_RID_APCURSCALETHRESH_LEN        ((u16)6)
 
 587 #define         HFA384x_RID_PROTOCOLRSPTIME_LEN         ((u16)0)
 
 588 #define         HFA384x_RID_SHORTRETRYLIMIT_LEN         ((u16)0)
 
 589 #define         HFA384x_RID_LONGRETRYLIMIT_LEN          ((u16)0)
 
 590 #define         HFA384x_RID_MAXTXLIFETIME_LEN           ((u16)0)
 
 591 #define         HFA384x_RID_MAXRXLIFETIME_LEN           ((u16)0)
 
 592 #define         HFA384x_RID_CFPOLLABLE_LEN              ((u16)0)
 
 593 #define         HFA384x_RID_AUTHALGORITHMS_LEN          ((u16)4)
 
 594 #define         HFA384x_RID_PRIVACYOPTIMP_LEN           ((u16)0)
 
 595 #define         HFA384x_RID_CURRENTTXRATE1_LEN          ((u16)0)
 
 596 #define         HFA384x_RID_CURRENTTXRATE2_LEN          ((u16)0)
 
 597 #define         HFA384x_RID_CURRENTTXRATE3_LEN          ((u16)0)
 
 598 #define         HFA384x_RID_CURRENTTXRATE4_LEN          ((u16)0)
 
 599 #define         HFA384x_RID_CURRENTTXRATE5_LEN          ((u16)0)
 
 600 #define         HFA384x_RID_CURRENTTXRATE6_LEN          ((u16)0)
 
 601 #define         HFA384x_RID_OWNMACADDRESS_LEN           ((u16)6)
 
 602 #define         HFA384x_RID_PCFINFO_LEN                 ((u16)6)
 
 603 #define         HFA384x_RID_CNFAPPCFINFO_LEN            ((u16)sizeof(hfa384x_PCFInfo_data_t))
 
 604 #define         HFA384x_RID_SCANREQUEST_LEN             ((u16)sizeof(hfa384x_ScanRequest_data_t))
 
 605 #define         HFA384x_RID_JOINREQUEST_LEN             ((u16)sizeof(hfa384x_JoinRequest_data_t))
 
 606 #define         HFA384x_RID_AUTHENTICATESTA_LEN         ((u16)sizeof(hfa384x_authenticateStation_data_t))
 
 607 #define         HFA384x_RID_CHANNELINFOREQUEST_LEN      ((u16)sizeof(hfa384x_ChannelInfoRequest_data_t))
 
 608 /*--------------------------------------------------------------------
 
 609 Information RIDs:  Modem Information
 
 610 --------------------------------------------------------------------*/
 
 611 #define         HFA384x_RID_PHYTYPE             ((u16)0xFDC0)
 
 612 #define         HFA384x_RID_CURRENTCHANNEL      ((u16)0xFDC1)
 
 613 #define         HFA384x_RID_CURRENTPOWERSTATE   ((u16)0xFDC2)
 
 614 #define         HFA384x_RID_CCAMODE             ((u16)0xFDC3)
 
 615 #define         HFA384x_RID_SUPPORTEDDATARATES  ((u16)0xFDC6)
 
 616 #define         HFA384x_RID_LFOSTATUS           ((u16)0xFDC7) // 1.7.1
 
 618 /*--------------------------------------------------------------------
 
 619 Information RID Lengths:  Modem Information
 
 620   This is the length of JUST the DATA part of the RID (does not
 
 621   include the len or code fields)
 
 622 --------------------------------------------------------------------*/
 
 623 #define         HFA384x_RID_PHYTYPE_LEN                 ((u16)0)
 
 624 #define         HFA384x_RID_CURRENTCHANNEL_LEN          ((u16)0)
 
 625 #define         HFA384x_RID_CURRENTPOWERSTATE_LEN       ((u16)0)
 
 626 #define         HFA384x_RID_CCAMODE_LEN                 ((u16)0)
 
 627 #define         HFA384x_RID_SUPPORTEDDATARATES_LEN      ((u16)10)
 
 629 /*--------------------------------------------------------------------
 
 630 API ENHANCEMENTS (NOT ALREADY IMPLEMENTED)
 
 631 --------------------------------------------------------------------*/
 
 632 #define         HFA384x_RID_CNFWEPDEFAULTKEYID  ((u16)0xFC23)
 
 633 #define         HFA384x_RID_CNFWEPDEFAULTKEY0   ((u16)0xFC24)
 
 634 #define         HFA384x_RID_CNFWEPDEFAULTKEY1   ((u16)0xFC25)
 
 635 #define         HFA384x_RID_CNFWEPDEFAULTKEY2   ((u16)0xFC26)
 
 636 #define         HFA384x_RID_CNFWEPDEFAULTKEY3   ((u16)0xFC27)
 
 637 #define         HFA384x_RID_CNFWEPFLAGS         ((u16)0xFC28)
 
 638 #define         HFA384x_RID_CNFWEPKEYMAPTABLE   ((u16)0xFC29)
 
 639 #define         HFA384x_RID_CNFAUTHENTICATION   ((u16)0xFC2A)
 
 640 #define         HFA384x_RID_CNFMAXASSOCSTATIONS ((u16)0xFC2B)
 
 641 #define         HFA384x_RID_CNFTXCONTROL        ((u16)0xFC2C)
 
 642 #define         HFA384x_RID_CNFROAMINGMODE      ((u16)0xFC2D)
 
 643 #define         HFA384x_RID_CNFHOSTAUTHASSOC    ((u16)0xFC2E)
 
 644 #define         HFA384x_RID_CNFRCVCRCERROR      ((u16)0xFC30)
 
 645 // #define              HFA384x_RID_CNFMMLIFE           ((u16)0xFC31)
 
 646 #define         HFA384x_RID_CNFALTRETRYCNT      ((u16)0xFC32)
 
 647 #define         HFA384x_RID_CNFAPBCNint         ((u16)0xFC33)
 
 648 #define         HFA384x_RID_CNFAPPCFINFO        ((u16)0xFC34)
 
 649 #define         HFA384x_RID_CNFSTAPCFINFO       ((u16)0xFC35)
 
 650 #define         HFA384x_RID_CNFPRIORITYQUSAGE   ((u16)0xFC37)
 
 651 #define         HFA384x_RID_CNFTIMCTRL          ((u16)0xFC40)
 
 652 #define         HFA384x_RID_CNFTHIRTY2TALLY     ((u16)0xFC42)
 
 653 #define         HFA384x_RID_CNFENHSECURITY      ((u16)0xFC43)
 
 654 #define         HFA384x_RID_CNFDBMADJUST        ((u16)0xFC46) // NEW
 
 655 #define         HFA384x_RID_CNFWPADATA          ((u16)0xFC48) // 1.7.0
 
 656 #define         HFA384x_RID_CNFPROPOGATIONDELAY ((u16)0xFC49) // 1.7.6
 
 657 #define         HFA384x_RID_CNFSHORTPREAMBLE    ((u16)0xFCB0)
 
 658 #define         HFA384x_RID_CNFEXCLONGPREAMBLE  ((u16)0xFCB1)
 
 659 #define         HFA384x_RID_CNFAUTHRSPTIMEOUT   ((u16)0xFCB2)
 
 660 #define         HFA384x_RID_CNFBASICRATES       ((u16)0xFCB3)
 
 661 #define         HFA384x_RID_CNFSUPPRATES        ((u16)0xFCB4)
 
 662 #define         HFA384x_RID_CNFFALLBACKCTRL     ((u16)0xFCB5) // NEW
 
 663 #define         HFA384x_RID_WEPKEYSTATUS        ((u16)0xFCB6) // NEW
 
 664 #define         HFA384x_RID_WEPKEYMAPINDEX      ((u16)0xFCB7) // NEW
 
 665 #define         HFA384x_RID_BROADCASTKEYID      ((u16)0xFCB8) // NEW
 
 666 #define         HFA384x_RID_ENTSECFLAGEYID      ((u16)0xFCB9) // NEW
 
 667 #define         HFA384x_RID_CNFPASSIVESCANCTRL  ((u16)0xFCBA) // NEW STA
 
 668 #define         HFA384x_RID_CNFWPAHANDLING      ((u16)0xFCBB) // 1.7.0
 
 669 #define         HFA384x_RID_MDCCONTROL          ((u16)0xFCBC) // 1.7.0/1.4.0
 
 670 #define         HFA384x_RID_MDCCOUNTRY          ((u16)0xFCBD) // 1.7.0/1.4.0
 
 671 #define         HFA384x_RID_TXPOWERMAX          ((u16)0xFCBE) // 1.7.0/1.4.0
 
 672 #define         HFA384x_RID_CNFLFOENBLED        ((u16)0xFCBF) // 1.6.3
 
 673 #define         HFA384x_RID_CAPINFO             ((u16)0xFCC0) // 1.7.0/1.3.7
 
 674 #define         HFA384x_RID_LISTENintERVAL      ((u16)0xFCC1) // 1.7.0/1.3.7
 
 675 #define         HFA384x_RID_DIVERSITYENABLED    ((u16)0xFCC2) // 1.7.0/1.3.7
 
 676 #define         HFA384x_RID_LED_CONTROL         ((u16)0xFCC4) // 1.7.6
 
 677 #define         HFA384x_RID_HFO_DELAY           ((u16)0xFCC5) // 1.7.6
 
 678 #define         HFA384x_RID_DISSALOWEDBSSID     ((u16)0xFCC6) // 1.8.0
 
 679 #define         HFA384x_RID_SCANREQUEST         ((u16)0xFCE1)
 
 680 #define         HFA384x_RID_JOINREQUEST         ((u16)0xFCE2)
 
 681 #define         HFA384x_RID_AUTHENTICATESTA     ((u16)0xFCE3)
 
 682 #define         HFA384x_RID_CHANNELINFOREQUEST  ((u16)0xFCE4)
 
 683 #define         HFA384x_RID_HOSTSCAN            ((u16)0xFCE5) // NEW STA
 
 684 #define         HFA384x_RID_ASSOCIATESTA        ((u16)0xFCE6)
 
 686 #define         HFA384x_RID_CNFWEPDEFAULTKEY_LEN        ((u16)6)
 
 687 #define         HFA384x_RID_CNFWEP128DEFAULTKEY_LEN     ((u16)14)
 
 688 #define         HFA384x_RID_CNFPRIOQUSAGE_LEN           ((u16)4)
 
 689 /*--------------------------------------------------------------------
 
 691 --------------------------------------------------------------------*/
 
 692 #define HFA384x_PDR_PCB_PARTNUM         ((u16)0x0001)
 
 693 #define HFA384x_PDR_PDAVER              ((u16)0x0002)
 
 694 #define HFA384x_PDR_NIC_SERIAL          ((u16)0x0003)
 
 695 #define HFA384x_PDR_MKK_MEASUREMENTS    ((u16)0x0004)
 
 696 #define HFA384x_PDR_NIC_RAMSIZE         ((u16)0x0005)
 
 697 #define HFA384x_PDR_MFISUPRANGE         ((u16)0x0006)
 
 698 #define HFA384x_PDR_CFISUPRANGE         ((u16)0x0007)
 
 699 #define HFA384x_PDR_NICID               ((u16)0x0008)
 
 700 //#define HFA384x_PDR_REFDAC_MEASUREMENTS       ((u16)0x0010)
 
 701 //#define HFA384x_PDR_VGDAC_MEASUREMENTS        ((u16)0x0020)
 
 702 //#define HFA384x_PDR_LEVEL_COMP_MEASUREMENTS   ((u16)0x0030)
 
 703 //#define HFA384x_PDR_MODEM_TRIMDAC_MEASUREMENTS        ((u16)0x0040)
 
 704 //#define HFA384x_PDR_COREGA_HACK               ((u16)0x00ff)
 
 705 #define HFA384x_PDR_MAC_ADDRESS         ((u16)0x0101)
 
 706 //#define HFA384x_PDR_MKK_CALLNAME      ((u16)0x0102)
 
 707 #define HFA384x_PDR_REGDOMAIN           ((u16)0x0103)
 
 708 #define HFA384x_PDR_ALLOWED_CHANNEL     ((u16)0x0104)
 
 709 #define HFA384x_PDR_DEFAULT_CHANNEL     ((u16)0x0105)
 
 710 //#define HFA384x_PDR_PRIVACY_OPTION    ((u16)0x0106)
 
 711 #define HFA384x_PDR_TEMPTYPE            ((u16)0x0107)
 
 712 //#define HFA384x_PDR_REFDAC_SETUP      ((u16)0x0110)
 
 713 //#define HFA384x_PDR_VGDAC_SETUP               ((u16)0x0120)
 
 714 //#define HFA384x_PDR_LEVEL_COMP_SETUP  ((u16)0x0130)
 
 715 //#define HFA384x_PDR_TRIMDAC_SETUP     ((u16)0x0140)
 
 716 #define HFA384x_PDR_IFR_SETTING         ((u16)0x0200)
 
 717 #define HFA384x_PDR_RFR_SETTING         ((u16)0x0201)
 
 718 #define HFA384x_PDR_HFA3861_BASELINE    ((u16)0x0202)
 
 719 #define HFA384x_PDR_HFA3861_SHADOW      ((u16)0x0203)
 
 720 #define HFA384x_PDR_HFA3861_IFRF        ((u16)0x0204)
 
 721 #define HFA384x_PDR_HFA3861_CHCALSP     ((u16)0x0300)
 
 722 #define HFA384x_PDR_HFA3861_CHCALI      ((u16)0x0301)
 
 723 #define HFA384x_PDR_MAX_TX_POWER        ((u16)0x0302)
 
 724 #define HFA384x_PDR_MASTER_CHAN_LIST    ((u16)0x0303)
 
 725 #define HFA384x_PDR_3842_NIC_CONFIG     ((u16)0x0400)
 
 726 #define HFA384x_PDR_USB_ID              ((u16)0x0401)
 
 727 #define HFA384x_PDR_PCI_ID              ((u16)0x0402)
 
 728 #define HFA384x_PDR_PCI_IFCONF          ((u16)0x0403)
 
 729 #define HFA384x_PDR_PCI_PMCONF          ((u16)0x0404)
 
 730 #define HFA384x_PDR_RFENRGY             ((u16)0x0406)
 
 731 #define HFA384x_PDR_USB_POWER_TYPE      ((u16)0x0407)
 
 732 //#define HFA384x_PDR_UNKNOWN408                ((u16)0x0408)
 
 733 #define HFA384x_PDR_USB_MAX_POWER       ((u16)0x0409)
 
 734 #define HFA384x_PDR_USB_MANUFACTURER    ((u16)0x0410)
 
 735 #define HFA384x_PDR_USB_PRODUCT         ((u16)0x0411)
 
 736 #define HFA384x_PDR_ANT_DIVERSITY       ((u16)0x0412)
 
 737 #define HFA384x_PDR_HFO_DELAY           ((u16)0x0413)
 
 738 #define HFA384x_PDR_SCALE_THRESH        ((u16)0x0414)
 
 740 #define HFA384x_PDR_HFA3861_MANF_TESTSP ((u16)0x0900)
 
 741 #define HFA384x_PDR_HFA3861_MANF_TESTI  ((u16)0x0901)
 
 742 #define HFA384x_PDR_END_OF_PDA          ((u16)0x0000)
 
 745 /*=============================================================*/
 
 746 /*------ Macros -----------------------------------------------*/
 
 748 /*--- Register ID macros ------------------------*/
 
 750 #define         HFA384x_CMD             HFA384x_CMD_OFF
 
 751 #define         HFA384x_PARAM0          HFA384x_PARAM0_OFF
 
 752 #define         HFA384x_PARAM1          HFA384x_PARAM1_OFF
 
 753 #define         HFA384x_PARAM2          HFA384x_PARAM2_OFF
 
 754 #define         HFA384x_STATUS          HFA384x_STATUS_OFF
 
 755 #define         HFA384x_RESP0           HFA384x_RESP0_OFF
 
 756 #define         HFA384x_RESP1           HFA384x_RESP1_OFF
 
 757 #define         HFA384x_RESP2           HFA384x_RESP2_OFF
 
 758 #define         HFA384x_INFOFID         HFA384x_INFOFID_OFF
 
 759 #define         HFA384x_RXFID           HFA384x_RXFID_OFF
 
 760 #define         HFA384x_ALLOCFID        HFA384x_ALLOCFID_OFF
 
 761 #define         HFA384x_TXCOMPLFID      HFA384x_TXCOMPLFID_OFF
 
 762 #define         HFA384x_SELECT0         HFA384x_SELECT0_OFF
 
 763 #define         HFA384x_OFFSET0         HFA384x_OFFSET0_OFF
 
 764 #define         HFA384x_DATA0           HFA384x_DATA0_OFF
 
 765 #define         HFA384x_SELECT1         HFA384x_SELECT1_OFF
 
 766 #define         HFA384x_OFFSET1         HFA384x_OFFSET1_OFF
 
 767 #define         HFA384x_DATA1           HFA384x_DATA1_OFF
 
 768 #define         HFA384x_EVSTAT          HFA384x_EVSTAT_OFF
 
 769 #define         HFA384x_intEN           HFA384x_INTEN_OFF
 
 770 #define         HFA384x_EVACK           HFA384x_EVACK_OFF
 
 771 #define         HFA384x_CONTROL         HFA384x_CONTROL_OFF
 
 772 #define         HFA384x_SWSUPPORT0      HFA384x_SWSUPPORT0_OFF
 
 773 #define         HFA384x_SWSUPPORT1      HFA384x_SWSUPPORT1_OFF
 
 774 #define         HFA384x_SWSUPPORT2      HFA384x_SWSUPPORT2_OFF
 
 775 #define         HFA384x_AUXPAGE         HFA384x_AUXPAGE_OFF
 
 776 #define         HFA384x_AUXOFFSET       HFA384x_AUXOFFSET_OFF
 
 777 #define         HFA384x_AUXDATA         HFA384x_AUXDATA_OFF
 
 778 #define         HFA384x_PCICOR          HFA384x_PCICOR_OFF
 
 779 #define         HFA384x_PCIHCR          HFA384x_PCIHCR_OFF
 
 782 /*--- Register Test/Get/Set Field macros ------------------------*/
 
 784 #define         HFA384x_CMD_ISBUSY(value)               ((u16)(((u16)value) & HFA384x_CMD_BUSY))
 
 785 #define         HFA384x_CMD_AINFO_GET(value)            ((u16)(((u16)(value) & HFA384x_CMD_AINFO) >> 8))
 
 786 #define         HFA384x_CMD_AINFO_SET(value)            ((u16)((u16)(value) << 8))
 
 787 #define         HFA384x_CMD_MACPORT_GET(value)          ((u16)(HFA384x_CMD_AINFO_GET((u16)(value) & HFA384x_CMD_MACPORT)))
 
 788 #define         HFA384x_CMD_MACPORT_SET(value)          ((u16)HFA384x_CMD_AINFO_SET(value))
 
 789 #define         HFA384x_CMD_ISRECL(value)               ((u16)(HFA384x_CMD_AINFO_GET((u16)(value) & HFA384x_CMD_RECL)))
 
 790 #define         HFA384x_CMD_RECL_SET(value)             ((u16)HFA384x_CMD_AINFO_SET(value))
 
 791 #define         HFA384x_CMD_QOS_GET(value)              ((u16)((((u16)(value))&((u16)0x3000)) >> 12))
 
 792 #define         HFA384x_CMD_QOS_SET(value)              ((u16)((((u16)(value)) << 12) & 0x3000))
 
 793 #define         HFA384x_CMD_ISWRITE(value)              ((u16)(HFA384x_CMD_AINFO_GET((u16)(value) & HFA384x_CMD_WRITE)))
 
 794 #define         HFA384x_CMD_WRITE_SET(value)            ((u16)HFA384x_CMD_AINFO_SET((u16)value))
 
 795 #define         HFA384x_CMD_PROGMODE_GET(value)         ((u16)(HFA384x_CMD_AINFO_GET((u16)(value) & HFA384x_CMD_PROGMODE)))
 
 796 #define         HFA384x_CMD_PROGMODE_SET(value)         ((u16)HFA384x_CMD_AINFO_SET((u16)value))
 
 797 #define         HFA384x_CMD_CMDCODE_GET(value)          ((u16)(((u16)(value)) & HFA384x_CMD_CMDCODE))
 
 798 #define         HFA384x_CMD_CMDCODE_SET(value)          ((u16)(value))
 
 800 #define         HFA384x_STATUS_RESULT_GET(value)        ((u16)((((u16)(value)) & HFA384x_STATUS_RESULT) >> 8))
 
 801 #define         HFA384x_STATUS_RESULT_SET(value)        (((u16)(value)) << 8)
 
 802 #define         HFA384x_STATUS_CMDCODE_GET(value)       (((u16)(value)) & HFA384x_STATUS_CMDCODE)
 
 803 #define         HFA384x_STATUS_CMDCODE_SET(value)       ((u16)(value))
 
 805 #define         HFA384x_OFFSET_ISBUSY(value)            ((u16)(((u16)(value)) & HFA384x_OFFSET_BUSY))
 
 806 #define         HFA384x_OFFSET_ISERR(value)             ((u16)(((u16)(value)) & HFA384x_OFFSET_ERR))
 
 807 #define         HFA384x_OFFSET_DATAOFF_GET(value)       ((u16)(((u16)(value)) & HFA384x_OFFSET_DATAOFF))
 
 808 #define         HFA384x_OFFSET_DATAOFF_SET(value)       ((u16)(value))
 
 810 #define         HFA384x_EVSTAT_ISTICK(value)            ((u16)(((u16)(value)) & HFA384x_EVSTAT_TICK))
 
 811 #define         HFA384x_EVSTAT_ISWTERR(value)           ((u16)(((u16)(value)) & HFA384x_EVSTAT_WTERR))
 
 812 #define         HFA384x_EVSTAT_ISINFDROP(value)         ((u16)(((u16)(value)) & HFA384x_EVSTAT_INFDROP))
 
 813 #define         HFA384x_EVSTAT_ISINFO(value)            ((u16)(((u16)(value)) & HFA384x_EVSTAT_INFO))
 
 814 #define         HFA384x_EVSTAT_ISDTIM(value)            ((u16)(((u16)(value)) & HFA384x_EVSTAT_DTIM))
 
 815 #define         HFA384x_EVSTAT_ISCMD(value)             ((u16)(((u16)(value)) & HFA384x_EVSTAT_CMD))
 
 816 #define         HFA384x_EVSTAT_ISALLOC(value)           ((u16)(((u16)(value)) & HFA384x_EVSTAT_ALLOC))
 
 817 #define         HFA384x_EVSTAT_ISTXEXC(value)           ((u16)(((u16)(value)) & HFA384x_EVSTAT_TXEXC))
 
 818 #define         HFA384x_EVSTAT_ISTX(value)              ((u16)(((u16)(value)) & HFA384x_EVSTAT_TX))
 
 819 #define         HFA384x_EVSTAT_ISRX(value)              ((u16)(((u16)(value)) & HFA384x_EVSTAT_RX))
 
 821 #define         HFA384x_EVSTAT_ISBAP_OP(value)          ((u16)(((u16)(value)) & HFA384x_int_BAP_OP))
 
 823 #define         HFA384x_intEN_ISTICK(value)             ((u16)(((u16)(value)) & HFA384x_INTEN_TICK))
 
 824 #define         HFA384x_intEN_TICK_SET(value)           ((u16)(((u16)(value)) << 15))
 
 825 #define         HFA384x_intEN_ISWTERR(value)            ((u16)(((u16)(value)) & HFA384x_INTEN_WTERR))
 
 826 #define         HFA384x_intEN_WTERR_SET(value)          ((u16)(((u16)(value)) << 14))
 
 827 #define         HFA384x_intEN_ISINFDROP(value)          ((u16)(((u16)(value)) & HFA384x_INTEN_INFDROP))
 
 828 #define         HFA384x_intEN_INFDROP_SET(value)        ((u16)(((u16)(value)) << 13))
 
 829 #define         HFA384x_intEN_ISINFO(value)             ((u16)(((u16)(value)) & HFA384x_INTEN_INFO))
 
 830 #define         HFA384x_intEN_INFO_SET(value)           ((u16)(((u16)(value)) << 7))
 
 831 #define         HFA384x_intEN_ISDTIM(value)             ((u16)(((u16)(value)) & HFA384x_INTEN_DTIM))
 
 832 #define         HFA384x_intEN_DTIM_SET(value)           ((u16)(((u16)(value)) << 5))
 
 833 #define         HFA384x_intEN_ISCMD(value)              ((u16)(((u16)(value)) & HFA384x_INTEN_CMD))
 
 834 #define         HFA384x_intEN_CMD_SET(value)            ((u16)(((u16)(value)) << 4))
 
 835 #define         HFA384x_intEN_ISALLOC(value)            ((u16)(((u16)(value)) & HFA384x_INTEN_ALLOC))
 
 836 #define         HFA384x_intEN_ALLOC_SET(value)          ((u16)(((u16)(value)) << 3))
 
 837 #define         HFA384x_intEN_ISTXEXC(value)            ((u16)(((u16)(value)) & HFA384x_INTEN_TXEXC))
 
 838 #define         HFA384x_intEN_TXEXC_SET(value)          ((u16)(((u16)(value)) << 2))
 
 839 #define         HFA384x_intEN_ISTX(value)               ((u16)(((u16)(value)) & HFA384x_INTEN_TX))
 
 840 #define         HFA384x_intEN_TX_SET(value)             ((u16)(((u16)(value)) << 1))
 
 841 #define         HFA384x_intEN_ISRX(value)               ((u16)(((u16)(value)) & HFA384x_INTEN_RX))
 
 842 #define         HFA384x_intEN_RX_SET(value)             ((u16)(((u16)(value)) << 0))
 
 844 #define         HFA384x_EVACK_ISTICK(value)             ((u16)(((u16)(value)) & HFA384x_EVACK_TICK))
 
 845 #define         HFA384x_EVACK_TICK_SET(value)           ((u16)(((u16)(value)) << 15))
 
 846 #define         HFA384x_EVACK_ISWTERR(value)            ((u16)(((u16)(value)) & HFA384x_EVACK_WTERR))
 
 847 #define         HFA384x_EVACK_WTERR_SET(value)          ((u16)(((u16)(value)) << 14))
 
 848 #define         HFA384x_EVACK_ISINFDROP(value)          ((u16)(((u16)(value)) & HFA384x_EVACK_INFDROP))
 
 849 #define         HFA384x_EVACK_INFDROP_SET(value)        ((u16)(((u16)(value)) << 13))
 
 850 #define         HFA384x_EVACK_ISINFO(value)             ((u16)(((u16)(value)) & HFA384x_EVACK_INFO))
 
 851 #define         HFA384x_EVACK_INFO_SET(value)           ((u16)(((u16)(value)) << 7))
 
 852 #define         HFA384x_EVACK_ISDTIM(value)             ((u16)(((u16)(value)) & HFA384x_EVACK_DTIM))
 
 853 #define         HFA384x_EVACK_DTIM_SET(value)           ((u16)(((u16)(value)) << 5))
 
 854 #define         HFA384x_EVACK_ISCMD(value)              ((u16)(((u16)(value)) & HFA384x_EVACK_CMD))
 
 855 #define         HFA384x_EVACK_CMD_SET(value)            ((u16)(((u16)(value)) << 4))
 
 856 #define         HFA384x_EVACK_ISALLOC(value)            ((u16)(((u16)(value)) & HFA384x_EVACK_ALLOC))
 
 857 #define         HFA384x_EVACK_ALLOC_SET(value)          ((u16)(((u16)(value)) << 3))
 
 858 #define         HFA384x_EVACK_ISTXEXC(value)            ((u16)(((u16)(value)) & HFA384x_EVACK_TXEXC))
 
 859 #define         HFA384x_EVACK_TXEXC_SET(value)          ((u16)(((u16)(value)) << 2))
 
 860 #define         HFA384x_EVACK_ISTX(value)               ((u16)(((u16)(value)) & HFA384x_EVACK_TX))
 
 861 #define         HFA384x_EVACK_TX_SET(value)             ((u16)(((u16)(value)) << 1))
 
 862 #define         HFA384x_EVACK_ISRX(value)               ((u16)(((u16)(value)) & HFA384x_EVACK_RX))
 
 863 #define         HFA384x_EVACK_RX_SET(value)             ((u16)(((u16)(value)) << 0))
 
 865 #define         HFA384x_CONTROL_AUXEN_SET(value)        ((u16)(((u16)(value)) << 14))
 
 866 #define         HFA384x_CONTROL_AUXEN_GET(value)        ((u16)(((u16)(value)) >> 14))
 
 870 #define hfa384x2host_16(n)      (__le16_to_cpu((u16)(n)))
 
 871 #define hfa384x2host_32(n)      (__le32_to_cpu((u32)(n)))
 
 872 #define host2hfa384x_16(n)      (__cpu_to_le16((u16)(n)))
 
 873 #define host2hfa384x_32(n)      (__cpu_to_le32((u32)(n)))
 
 876 /* Host Maintained State Info */
 
 877 #define HFA384x_STATE_PREINIT   0
 
 878 #define HFA384x_STATE_INIT      1
 
 879 #define HFA384x_STATE_RUNNING   2
 
 881 /*=============================================================*/
 
 882 /*------ Types and their related constants --------------------*/
 
 884 #define HFA384x_HOSTAUTHASSOC_HOSTAUTH   BIT0
 
 885 #define HFA384x_HOSTAUTHASSOC_HOSTASSOC  BIT1
 
 887 #define HFA384x_WHAHANDLING_DISABLED     0
 
 888 #define HFA384x_WHAHANDLING_PASSTHROUGH  BIT1
 
 890 /*-------------------------------------------------------------*/
 
 891 /* Commonly used basic types */
 
 892 typedef struct hfa384x_bytestr
 
 896 } __WLAN_ATTRIB_PACK__ hfa384x_bytestr_t;
 
 898 typedef struct hfa384x_bytestr32
 
 902 } __WLAN_ATTRIB_PACK__ hfa384x_bytestr32_t;
 
 904 /*--------------------------------------------------------------------
 
 905 Configuration Record Structures:
 
 906         Network Parameters, Static Configuration Entities
 
 907 --------------------------------------------------------------------*/
 
 908 /* Prototype structure: all configuration record structures start with
 
 911 typedef struct hfa384x_record
 
 915 } __WLAN_ATTRIB_PACK__ hfa384x_rec_t;
 
 917 typedef struct hfa384x_record16
 
 922 } __WLAN_ATTRIB_PACK__ hfa384x_rec16_t;
 
 924 typedef struct hfa384x_record32
 
 929 } __WLAN_ATTRIB_PACK__ hfa384x_rec32;
 
 931 /*-- Hardware/Firmware Component Information ----------*/
 
 932 typedef struct hfa384x_compident
 
 938 } __WLAN_ATTRIB_PACK__ hfa384x_compident_t;
 
 940 typedef struct hfa384x_caplevel
 
 947 } __WLAN_ATTRIB_PACK__ hfa384x_caplevel_t;
 
 949 /*-- Configuration Record: cnfPortType --*/
 
 950 typedef struct hfa384x_cnfPortType
 
 953 } __WLAN_ATTRIB_PACK__ hfa384x_cnfPortType_t;
 
 955 /*-- Configuration Record: cnfOwnMACAddress --*/
 
 956 typedef struct hfa384x_cnfOwnMACAddress
 
 958         u8      cnfOwnMACAddress[6];
 
 959 } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnMACAddress_t;
 
 961 /*-- Configuration Record: cnfDesiredSSID --*/
 
 962 typedef struct hfa384x_cnfDesiredSSID
 
 964         u8      cnfDesiredSSID[34];
 
 965 } __WLAN_ATTRIB_PACK__ hfa384x_cnfDesiredSSID_t;
 
 967 /*-- Configuration Record: cnfOwnChannel --*/
 
 968 typedef struct hfa384x_cnfOwnChannel
 
 971 } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnChannel_t;
 
 973 /*-- Configuration Record: cnfOwnSSID --*/
 
 974 typedef struct hfa384x_cnfOwnSSID
 
 977 } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnSSID_t;
 
 979 /*-- Configuration Record: cnfOwnATIMWindow --*/
 
 980 typedef struct hfa384x_cnfOwnATIMWindow
 
 982         u16     cnfOwnATIMWindow;
 
 983 } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnATIMWindow_t;
 
 985 /*-- Configuration Record: cnfSystemScale --*/
 
 986 typedef struct hfa384x_cnfSystemScale
 
 989 } __WLAN_ATTRIB_PACK__ hfa384x_cnfSystemScale_t;
 
 991 /*-- Configuration Record: cnfMaxDataLength --*/
 
 992 typedef struct hfa384x_cnfMaxDataLength
 
 994         u16     cnfMaxDataLength;
 
 995 } __WLAN_ATTRIB_PACK__ hfa384x_cnfMaxDataLength_t;
 
 997 /*-- Configuration Record: cnfWDSAddress --*/
 
 998 typedef struct hfa384x_cnfWDSAddress
 
1000         u8      cnfWDSAddress[6];
 
1001 } __WLAN_ATTRIB_PACK__ hfa384x_cnfWDSAddress_t;
 
1003 /*-- Configuration Record: cnfPMEnabled --*/
 
1004 typedef struct hfa384x_cnfPMEnabled
 
1007 } __WLAN_ATTRIB_PACK__ hfa384x_cnfPMEnabled_t;
 
1009 /*-- Configuration Record: cnfPMEPS --*/
 
1010 typedef struct hfa384x_cnfPMEPS
 
1013 } __WLAN_ATTRIB_PACK__ hfa384x_cnfPMEPS_t;
 
1015 /*-- Configuration Record: cnfMulticastReceive --*/
 
1016 typedef struct hfa384x_cnfMulticastReceive
 
1018         u16     cnfMulticastReceive;
 
1019 } __WLAN_ATTRIB_PACK__ hfa384x_cnfMulticastReceive_t;
 
1021 /*-- Configuration Record: cnfAuthentication --*/
 
1022 #define HFA384x_CNFAUTHENTICATION_OPENSYSTEM    0x0001
 
1023 #define HFA384x_CNFAUTHENTICATION_SHAREDKEY     0x0002
 
1024 #define HFA384x_CNFAUTHENTICATION_LEAP          0x0004
 
1026 /*-- Configuration Record: cnfMaxSleepDuration --*/
 
1027 typedef struct hfa384x_cnfMaxSleepDuration
 
1029         u16     cnfMaxSleepDuration;
 
1030 } __WLAN_ATTRIB_PACK__ hfa384x_cnfMaxSleepDuration_t;
 
1032 /*-- Configuration Record: cnfPMHoldoverDuration --*/
 
1033 typedef struct hfa384x_cnfPMHoldoverDuration
 
1035         u16     cnfPMHoldoverDuration;
 
1036 } __WLAN_ATTRIB_PACK__ hfa384x_cnfPMHoldoverDuration_t;
 
1038 /*-- Configuration Record: cnfOwnName --*/
 
1039 typedef struct hfa384x_cnfOwnName
 
1042 } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnName_t;
 
1044 /*-- Configuration Record: cnfOwnDTIMPeriod --*/
 
1045 typedef struct hfa384x_cnfOwnDTIMPeriod
 
1047         u16     cnfOwnDTIMPeriod;
 
1048 } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnDTIMPeriod_t;
 
1050 /*-- Configuration Record: cnfWDSAddress --*/
 
1051 typedef struct hfa384x_cnfWDSAddressN
 
1053         u8      cnfWDSAddress[6];
 
1054 } __WLAN_ATTRIB_PACK__ hfa384x_cnfWDSAddressN_t;
 
1056 /*-- Configuration Record: cnfMulticastPMBuffering --*/
 
1057 typedef struct hfa384x_cnfMulticastPMBuffering
 
1059         u16     cnfMulticastPMBuffering;
 
1060 } __WLAN_ATTRIB_PACK__ hfa384x_cnfMulticastPMBuffering_t;
 
1062 /*--------------------------------------------------------------------
 
1063 Configuration Record Structures:
 
1064         Network Parameters, Dynamic Configuration Entities
 
1065 --------------------------------------------------------------------*/
 
1067 /*-- Configuration Record: GroupAddresses --*/
 
1068 typedef struct hfa384x_GroupAddresses
 
1070         u8      MACAddress[16][6];
 
1071 } __WLAN_ATTRIB_PACK__ hfa384x_GroupAddresses_t;
 
1073 /*-- Configuration Record: CreateIBSS --*/
 
1074 typedef struct hfa384x_CreateIBSS
 
1077 } __WLAN_ATTRIB_PACK__ hfa384x_CreateIBSS_t;
 
1079 #define HFA384x_CREATEIBSS_JOINCREATEIBSS          0
 
1080 #define HFA384x_CREATEIBSS_JOINESS_JOINCREATEIBSS  1
 
1081 #define HFA384x_CREATEIBSS_JOINIBSS                2
 
1082 #define HFA384x_CREATEIBSS_JOINESS_JOINIBSS        3
 
1084 /*-- Configuration Record: FragmentationThreshold --*/
 
1085 typedef struct hfa384x_FragmentationThreshold
 
1087         u16     FragmentationThreshold;
 
1088 } __WLAN_ATTRIB_PACK__ hfa384x_FragmentationThreshold_t;
 
1090 /*-- Configuration Record: RTSThreshold --*/
 
1091 typedef struct hfa384x_RTSThreshold
 
1094 } __WLAN_ATTRIB_PACK__ hfa384x_RTSThreshold_t;
 
1096 /*-- Configuration Record: TxRateControl --*/
 
1097 typedef struct hfa384x_TxRateControl
 
1100 } __WLAN_ATTRIB_PACK__ hfa384x_TxRateControl_t;
 
1102 /*-- Configuration Record: PromiscuousMode --*/
 
1103 typedef struct hfa384x_PromiscuousMode
 
1105         u16     PromiscuousMode;
 
1106 } __WLAN_ATTRIB_PACK__ hfa384x_PromiscuousMode_t;
 
1108 /*-- Configuration Record: ScanRequest (data portion only) --*/
 
1109 typedef struct hfa384x_ScanRequest_data
 
1113 } __WLAN_ATTRIB_PACK__ hfa384x_ScanRequest_data_t;
 
1115 /*-- Configuration Record: HostScanRequest (data portion only) --*/
 
1116 typedef struct hfa384x_HostScanRequest_data
 
1120         hfa384x_bytestr32_t ssid;
 
1121 } __WLAN_ATTRIB_PACK__ hfa384x_HostScanRequest_data_t;
 
1123 /*-- Configuration Record: JoinRequest (data portion only) --*/
 
1124 typedef struct hfa384x_JoinRequest_data
 
1126         u8      bssid[WLAN_BSSID_LEN];
 
1128 } __WLAN_ATTRIB_PACK__ hfa384x_JoinRequest_data_t;
 
1130 /*-- Configuration Record: authenticateStation (data portion only) --*/
 
1131 typedef struct hfa384x_authenticateStation_data
 
1133         u8      address[WLAN_ADDR_LEN];
 
1136 } __WLAN_ATTRIB_PACK__ hfa384x_authenticateStation_data_t;
 
1138 /*-- Configuration Record: associateStation (data portion only) --*/
 
1139 typedef struct hfa384x_associateStation_data
 
1141         u8      address[WLAN_ADDR_LEN];
 
1144 } __WLAN_ATTRIB_PACK__ hfa384x_associateStation_data_t;
 
1146 /*-- Configuration Record: ChannelInfoRequest (data portion only) --*/
 
1147 typedef struct hfa384x_ChannelInfoRequest_data
 
1150         u16     channelDwellTime;
 
1151 } __WLAN_ATTRIB_PACK__ hfa384x_ChannelInfoRequest_data_t;
 
1153 /*-- Configuration Record: WEPKeyMapping (data portion only) --*/
 
1154 typedef struct hfa384x_WEPKeyMapping
 
1156         u8      address[WLAN_ADDR_LEN];
 
1159         u8      mic_transmit_key[4];
 
1160         u8      mic_receive_key[4];
 
1161 } __WLAN_ATTRIB_PACK__ hfa384x_WEPKeyMapping_t;
 
1163 /*-- Configuration Record: WPAData       (data portion only) --*/
 
1164 typedef struct hfa384x_WPAData
 
1167         u8      data[0]; // max 80
 
1168 } __WLAN_ATTRIB_PACK__ hfa384x_WPAData_t;
 
1170 /*--------------------------------------------------------------------
 
1171 Configuration Record Structures: Behavior Parameters
 
1172 --------------------------------------------------------------------*/
 
1174 /*-- Configuration Record: TickTime --*/
 
1175 typedef struct hfa384x_TickTime
 
1178 } __WLAN_ATTRIB_PACK__ hfa384x_TickTime_t;
 
1180 /*--------------------------------------------------------------------
 
1181 Information Record Structures: NIC Information
 
1182 --------------------------------------------------------------------*/
 
1184 /*-- Information Record: MaxLoadTime --*/
 
1185 typedef struct hfa384x_MaxLoadTime
 
1188 } __WLAN_ATTRIB_PACK__ hfa384x_MaxLoadTime_t;
 
1190 /*-- Information Record: DownLoadBuffer --*/
 
1191 /* NOTE: The page and offset are in AUX format */
 
1192 typedef struct hfa384x_downloadbuffer
 
1197 } __WLAN_ATTRIB_PACK__ hfa384x_downloadbuffer_t;
 
1199 /*-- Information Record: PRIIdentity --*/
 
1200 typedef struct hfa384x_PRIIdentity
 
1204         u16     PRIMajorVersion;
 
1205         u16     PRIMinorVersion;
 
1206 } __WLAN_ATTRIB_PACK__ hfa384x_PRIIdentity_t;
 
1208 /*-- Information Record: PRISupRange --*/
 
1209 typedef struct hfa384x_PRISupRange
 
1216 } __WLAN_ATTRIB_PACK__ hfa384x_PRISupRange_t;
 
1218 /*-- Information Record: CFIActRanges --*/
 
1219 typedef struct hfa384x_CFIActRanges
 
1226 } __WLAN_ATTRIB_PACK__ hfa384x_CFIActRanges_t;
 
1228 /*-- Information Record: NICSerialNumber --*/
 
1229 typedef struct hfa384x_NICSerialNumber
 
1231         u8      NICSerialNumber[12];
 
1232 } __WLAN_ATTRIB_PACK__ hfa384x_NICSerialNumber_t;
 
1234 /*-- Information Record: NICIdentity --*/
 
1235 typedef struct hfa384x_NICIdentity
 
1239         u16     NICMajorVersion;
 
1240         u16     NICMinorVersion;
 
1241 } __WLAN_ATTRIB_PACK__ hfa384x_NICIdentity_t;
 
1243 /*-- Information Record: MFISupRange --*/
 
1244 typedef struct hfa384x_MFISupRange
 
1251 } __WLAN_ATTRIB_PACK__ hfa384x_MFISupRange_t;
 
1253 /*-- Information Record: CFISupRange --*/
 
1254 typedef struct hfa384x_CFISupRange
 
1261 } __WLAN_ATTRIB_PACK__ hfa384x_CFISupRange_t;
 
1263 /*-- Information Record: BUILDSEQ:BuildSeq --*/
 
1264 typedef struct hfa384x_BuildSeq {
 
1267 } __WLAN_ATTRIB_PACK__ hfa384x_BuildSeq_t;
 
1269 /*-- Information Record: FWID --*/
 
1270 #define HFA384x_FWID_LEN        14
 
1271 typedef struct hfa384x_FWID {
 
1272         u8      primary[HFA384x_FWID_LEN];
 
1273         u8      secondary[HFA384x_FWID_LEN];
 
1274 } __WLAN_ATTRIB_PACK__ hfa384x_FWID_t;
 
1276 /*-- Information Record: ChannelList --*/
 
1277 typedef struct hfa384x_ChannelList
 
1280 } __WLAN_ATTRIB_PACK__ hfa384x_ChannelList_t;
 
1282 /*-- Information Record: RegulatoryDomains --*/
 
1283 typedef struct hfa384x_RegulatoryDomains
 
1285         u8      RegulatoryDomains[12];
 
1286 } __WLAN_ATTRIB_PACK__ hfa384x_RegulatoryDomains_t;
 
1288 /*-- Information Record: TempType --*/
 
1289 typedef struct hfa384x_TempType
 
1292 } __WLAN_ATTRIB_PACK__ hfa384x_TempType_t;
 
1294 /*-- Information Record: CIS --*/
 
1295 typedef struct hfa384x_CIS
 
1298 } __WLAN_ATTRIB_PACK__ hfa384x_CIS_t;
 
1300 /*-- Information Record: STAIdentity --*/
 
1301 typedef struct hfa384x_STAIdentity
 
1305         u16     STAMajorVersion;
 
1306         u16     STAMinorVersion;
 
1307 } __WLAN_ATTRIB_PACK__ hfa384x_STAIdentity_t;
 
1309 /*-- Information Record: STASupRange --*/
 
1310 typedef struct hfa384x_STASupRange
 
1317 } __WLAN_ATTRIB_PACK__ hfa384x_STASupRange_t;
 
1319 /*-- Information Record: MFIActRanges --*/
 
1320 typedef struct hfa384x_MFIActRanges
 
1327 } __WLAN_ATTRIB_PACK__ hfa384x_MFIActRanges_t;
 
1329 /*--------------------------------------------------------------------
 
1330 Information Record Structures: NIC Information
 
1331 --------------------------------------------------------------------*/
 
1333 /*-- Information Record: PortStatus --*/
 
1334 typedef struct hfa384x_PortStatus
 
1337 } __WLAN_ATTRIB_PACK__ hfa384x_PortStatus_t;
 
1339 #define HFA384x_PSTATUS_DISABLED        ((u16)1)
 
1340 #define HFA384x_PSTATUS_SEARCHING       ((u16)2)
 
1341 #define HFA384x_PSTATUS_CONN_IBSS       ((u16)3)
 
1342 #define HFA384x_PSTATUS_CONN_ESS        ((u16)4)
 
1343 #define HFA384x_PSTATUS_OUTOFRANGE      ((u16)5)
 
1344 #define HFA384x_PSTATUS_CONN_WDS        ((u16)6)
 
1346 /*-- Information Record: CurrentSSID --*/
 
1347 typedef struct hfa384x_CurrentSSID
 
1350 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentSSID_t;
 
1352 /*-- Information Record: CurrentBSSID --*/
 
1353 typedef struct hfa384x_CurrentBSSID
 
1356 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentBSSID_t;
 
1358 /*-- Information Record: commsquality --*/
 
1359 typedef struct hfa384x_commsquality
 
1364 } __WLAN_ATTRIB_PACK__ hfa384x_commsquality_t;
 
1366 /*-- Information Record: dmbcommsquality --*/
 
1367 typedef struct hfa384x_dbmcommsquality
 
1372 } __WLAN_ATTRIB_PACK__ hfa384x_dbmcommsquality_t;
 
1374 /*-- Information Record: CurrentTxRate --*/
 
1375 typedef struct hfa384x_CurrentTxRate
 
1378 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentTxRate_t;
 
1380 /*-- Information Record: CurrentBeaconInterval --*/
 
1381 typedef struct hfa384x_CurrentBeaconInterval
 
1383         u16     CurrentBeaconInterval;
 
1384 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentBeaconInterval_t;
 
1386 /*-- Information Record: CurrentScaleThresholds --*/
 
1387 typedef struct hfa384x_CurrentScaleThresholds
 
1389         u16     EnergyDetectThreshold;
 
1390         u16     CarrierDetectThreshold;
 
1391         u16     DeferDetectThreshold;
 
1392         u16     CellSearchThreshold; /* Stations only */
 
1393         u16     DeadSpotThreshold; /* Stations only */
 
1394 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentScaleThresholds_t;
 
1396 /*-- Information Record: ProtocolRspTime --*/
 
1397 typedef struct hfa384x_ProtocolRspTime
 
1399         u16     ProtocolRspTime;
 
1400 } __WLAN_ATTRIB_PACK__ hfa384x_ProtocolRspTime_t;
 
1402 /*-- Information Record: ShortRetryLimit --*/
 
1403 typedef struct hfa384x_ShortRetryLimit
 
1405         u16     ShortRetryLimit;
 
1406 } __WLAN_ATTRIB_PACK__ hfa384x_ShortRetryLimit_t;
 
1408 /*-- Information Record: LongRetryLimit --*/
 
1409 typedef struct hfa384x_LongRetryLimit
 
1412 } __WLAN_ATTRIB_PACK__ hfa384x_LongRetryLimit_t;
 
1414 /*-- Information Record: MaxTransmitLifetime --*/
 
1415 typedef struct hfa384x_MaxTransmitLifetime
 
1417         u16     MaxTransmitLifetime;
 
1418 } __WLAN_ATTRIB_PACK__ hfa384x_MaxTransmitLifetime_t;
 
1420 /*-- Information Record: MaxReceiveLifetime --*/
 
1421 typedef struct hfa384x_MaxReceiveLifetime
 
1423         u16     MaxReceiveLifetime;
 
1424 } __WLAN_ATTRIB_PACK__ hfa384x_MaxReceiveLifetime_t;
 
1426 /*-- Information Record: CFPollable --*/
 
1427 typedef struct hfa384x_CFPollable
 
1430 } __WLAN_ATTRIB_PACK__ hfa384x_CFPollable_t;
 
1432 /*-- Information Record: AuthenticationAlgorithms --*/
 
1433 typedef struct hfa384x_AuthenticationAlgorithms
 
1435         u16     AuthenticationType;
 
1437 } __WLAN_ATTRIB_PACK__ hfa384x_AuthenticationAlgorithms_t;
 
1439 /*-- Information Record: AuthenticationAlgorithms
 
1441 typedef struct hfa384x_AuthenticationAlgorithms_data
 
1443         u16     AuthenticationType;
 
1445 } __WLAN_ATTRIB_PACK__ hfa384x_AuthenticationAlgorithms_data_t;
 
1447 /*-- Information Record: PrivacyOptionImplemented --*/
 
1448 typedef struct hfa384x_PrivacyOptionImplemented
 
1450         u16     PrivacyOptionImplemented;
 
1451 } __WLAN_ATTRIB_PACK__ hfa384x_PrivacyOptionImplemented_t;
 
1453 /*-- Information Record: OwnMACAddress --*/
 
1454 typedef struct hfa384x_OwnMACAddress
 
1456         u8      OwnMACAddress[6];
 
1457 } __WLAN_ATTRIB_PACK__ hfa384x_OwnMACAddress_t;
 
1459 /*-- Information Record: PCFInfo --*/
 
1460 typedef struct hfa384x_PCFInfo
 
1462         u16     MediumOccupancyLimit;
 
1466 } __WLAN_ATTRIB_PACK__ hfa384x_PCFInfo_t;
 
1468 /*-- Information Record: PCFInfo (data portion only) --*/
 
1469 typedef struct hfa384x_PCFInfo_data
 
1471         u16     MediumOccupancyLimit;
 
1475 } __WLAN_ATTRIB_PACK__ hfa384x_PCFInfo_data_t;
 
1477 /*--------------------------------------------------------------------
 
1478 Information Record Structures: Modem Information Records
 
1479 --------------------------------------------------------------------*/
 
1481 /*-- Information Record: PHYType --*/
 
1482 typedef struct hfa384x_PHYType
 
1485 } __WLAN_ATTRIB_PACK__ hfa384x_PHYType_t;
 
1487 /*-- Information Record: CurrentChannel --*/
 
1488 typedef struct hfa384x_CurrentChannel
 
1491 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentChannel_t;
 
1493 /*-- Information Record: CurrentPowerState --*/
 
1494 typedef struct hfa384x_CurrentPowerState
 
1496         u16     CurrentPowerState;
 
1497 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentPowerState_t;
 
1499 /*-- Information Record: CCAMode --*/
 
1500 typedef struct hfa384x_CCAMode
 
1503 } __WLAN_ATTRIB_PACK__ hfa384x_CCAMode_t;
 
1505 /*-- Information Record: SupportedDataRates --*/
 
1506 typedef struct hfa384x_SupportedDataRates
 
1508         u8      SupportedDataRates[10];
 
1509 } __WLAN_ATTRIB_PACK__ hfa384x_SupportedDataRates_t;
 
1511 /*-- Information Record: LFOStatus --*/
 
1512 typedef struct hfa384x_LFOStatus
 
1517 } __WLAN_ATTRIB_PACK__ hfa384x_LFOStatus_t;
 
1519 #define HFA384x_TESTRESULT_ALLPASSED    BIT0
 
1520 #define HFA384x_TESTRESULT_LFO_FAIL     BIT1
 
1521 #define HFA384x_TESTRESULT_VR_HF0_FAIL  BIT2
 
1522 #define HFA384x_HOST_FIRM_COORDINATE    BIT7
 
1523 #define HFA384x_TESTRESULT_COORDINATE   BIT15
 
1525 /*-- Information Record: LEDControl --*/
 
1526 typedef struct hfa384x_LEDControl
 
1533 } __WLAN_ATTRIB_PACK__ hfa384x_LEDControl_t;
 
1535 /*--------------------------------------------------------------------
 
1536                  FRAME DESCRIPTORS AND FRAME STRUCTURES
 
1538 FRAME DESCRIPTORS: Offsets
 
1540 ----------------------------------------------------------------------
 
1541 Control Info (offset 44-51)
 
1542 --------------------------------------------------------------------*/
 
1543 #define         HFA384x_FD_STATUS_OFF                   ((u16)0x44)
 
1544 #define         HFA384x_FD_TIME_OFF                     ((u16)0x46)
 
1545 #define         HFA384x_FD_SWSUPPORT_OFF                ((u16)0x4A)
 
1546 #define         HFA384x_FD_SILENCE_OFF                  ((u16)0x4A)
 
1547 #define         HFA384x_FD_SIGNAL_OFF                   ((u16)0x4B)
 
1548 #define         HFA384x_FD_RATE_OFF                     ((u16)0x4C)
 
1549 #define         HFA384x_FD_RXFLOW_OFF                   ((u16)0x4D)
 
1550 #define         HFA384x_FD_RESERVED_OFF                 ((u16)0x4E)
 
1551 #define         HFA384x_FD_TXCONTROL_OFF                ((u16)0x50)
 
1552 /*--------------------------------------------------------------------
 
1553 802.11 Header (offset 52-6B)
 
1554 --------------------------------------------------------------------*/
 
1555 #define         HFA384x_FD_FRAMECONTROL_OFF             ((u16)0x52)
 
1556 #define         HFA384x_FD_DURATIONID_OFF               ((u16)0x54)
 
1557 #define         HFA384x_FD_ADDRESS1_OFF                 ((u16)0x56)
 
1558 #define         HFA384x_FD_ADDRESS2_OFF                 ((u16)0x5C)
 
1559 #define         HFA384x_FD_ADDRESS3_OFF                 ((u16)0x62)
 
1560 #define         HFA384x_FD_SEQCONTROL_OFF               ((u16)0x68)
 
1561 #define         HFA384x_FD_ADDRESS4_OFF                 ((u16)0x6A)
 
1562 #define         HFA384x_FD_DATALEN_OFF                  ((u16)0x70)
 
1563 /*--------------------------------------------------------------------
 
1564 802.3 Header (offset 72-7F)
 
1565 --------------------------------------------------------------------*/
 
1566 #define         HFA384x_FD_DESTADDRESS_OFF              ((u16)0x72)
 
1567 #define         HFA384x_FD_SRCADDRESS_OFF               ((u16)0x78)
 
1568 #define         HFA384x_FD_DATALENGTH_OFF               ((u16)0x7E)
 
1570 /*--------------------------------------------------------------------
 
1571 FRAME STRUCTURES: Communication Frames
 
1572 ----------------------------------------------------------------------
 
1573 Communication Frames: Transmit Frames
 
1574 --------------------------------------------------------------------*/
 
1575 /*-- Communication Frame: Transmit Frame Structure --*/
 
1576 typedef struct hfa384x_tx_frame
 
1586         /*-- 802.11 Header Information --*/
 
1593         u16     sequence_control;
 
1595         u16     data_len; /* little endian format */
 
1597         /*-- 802.3 Header Information --*/
 
1601         u16     data_length; /* big endian format */
 
1602 } __WLAN_ATTRIB_PACK__ hfa384x_tx_frame_t;
 
1603 /*--------------------------------------------------------------------
 
1604 Communication Frames: Field Masks for Transmit Frames
 
1605 --------------------------------------------------------------------*/
 
1606 /*-- Status Field --*/
 
1607 #define         HFA384x_TXSTATUS_ACKERR                 ((u16)BIT5)
 
1608 #define         HFA384x_TXSTATUS_FORMERR                ((u16)BIT3)
 
1609 #define         HFA384x_TXSTATUS_DISCON                 ((u16)BIT2)
 
1610 #define         HFA384x_TXSTATUS_AGEDERR                ((u16)BIT1)
 
1611 #define         HFA384x_TXSTATUS_RETRYERR               ((u16)BIT0)
 
1612 /*-- Transmit Control Field --*/
 
1613 #define         HFA384x_TX_CFPOLL                       ((u16)BIT12)
 
1614 #define         HFA384x_TX_PRST                         ((u16)BIT11)
 
1615 #define         HFA384x_TX_MACPORT                      ((u16)(BIT10 | BIT9 | BIT8))
 
1616 #define         HFA384x_TX_NOENCRYPT                    ((u16)BIT7)
 
1617 #define         HFA384x_TX_RETRYSTRAT                   ((u16)(BIT6 | BIT5))
 
1618 #define         HFA384x_TX_STRUCTYPE                    ((u16)(BIT4 | BIT3))
 
1619 #define         HFA384x_TX_TXEX                         ((u16)BIT2)
 
1620 #define         HFA384x_TX_TXOK                         ((u16)BIT1)
 
1621 /*--------------------------------------------------------------------
 
1622 Communication Frames: Test/Get/Set Field Values for Transmit Frames
 
1623 --------------------------------------------------------------------*/
 
1624 /*-- Status Field --*/
 
1625 #define HFA384x_TXSTATUS_ISERROR(v)     \
 
1627         (HFA384x_TXSTATUS_ACKERR|HFA384x_TXSTATUS_FORMERR|\
 
1628         HFA384x_TXSTATUS_DISCON|HFA384x_TXSTATUS_AGEDERR|\
 
1629         HFA384x_TXSTATUS_RETRYERR))
 
1631 #define HFA384x_TXSTATUS_ISACKERR(v)    ((u16)(((u16)(v)) & HFA384x_TXSTATUS_ACKERR))
 
1632 #define HFA384x_TXSTATUS_ISFORMERR(v)   ((u16)(((u16)(v)) & HFA384x_TXSTATUS_FORMERR))
 
1633 #define HFA384x_TXSTATUS_ISDISCON(v)    ((u16)(((u16)(v)) & HFA384x_TXSTATUS_DISCON))
 
1634 #define HFA384x_TXSTATUS_ISAGEDERR(v)   ((u16)(((u16)(v)) & HFA384x_TXSTATUS_AGEDERR))
 
1635 #define HFA384x_TXSTATUS_ISRETRYERR(v)  ((u16)(((u16)(v)) & HFA384x_TXSTATUS_RETRYERR))
 
1637 #define HFA384x_TX_GET(v,m,s)           ((((u16)(v))&((u16)(m)))>>((u16)(s)))
 
1638 #define HFA384x_TX_SET(v,m,s)           ((((u16)(v))<<((u16)(s)))&((u16)(m)))
 
1640 #define HFA384x_TX_CFPOLL_GET(v)        HFA384x_TX_GET(v, HFA384x_TX_CFPOLL,12)
 
1641 #define HFA384x_TX_CFPOLL_SET(v)        HFA384x_TX_SET(v, HFA384x_TX_CFPOLL,12)
 
1642 #define HFA384x_TX_PRST_GET(v)          HFA384x_TX_GET(v, HFA384x_TX_PRST,11)
 
1643 #define HFA384x_TX_PRST_SET(v)          HFA384x_TX_SET(v, HFA384x_TX_PRST,11)
 
1644 #define HFA384x_TX_MACPORT_GET(v)       HFA384x_TX_GET(v, HFA384x_TX_MACPORT, 8)
 
1645 #define HFA384x_TX_MACPORT_SET(v)       HFA384x_TX_SET(v, HFA384x_TX_MACPORT, 8)
 
1646 #define HFA384x_TX_NOENCRYPT_GET(v)     HFA384x_TX_GET(v, HFA384x_TX_NOENCRYPT, 7)
 
1647 #define HFA384x_TX_NOENCRYPT_SET(v)     HFA384x_TX_SET(v, HFA384x_TX_NOENCRYPT, 7)
 
1648 #define HFA384x_TX_RETRYSTRAT_GET(v)    HFA384x_TX_GET(v, HFA384x_TX_RETRYSTRAT, 5)
 
1649 #define HFA384x_TX_RETRYSTRAT_SET(v)    HFA384x_TX_SET(v, HFA384x_TX_RETRYSTRAT, 5)
 
1650 #define HFA384x_TX_STRUCTYPE_GET(v)     HFA384x_TX_GET(v, HFA384x_TX_STRUCTYPE, 3)
 
1651 #define HFA384x_TX_STRUCTYPE_SET(v)     HFA384x_TX_SET(v, HFA384x_TX_STRUCTYPE, 3)
 
1652 #define HFA384x_TX_TXEX_GET(v)          HFA384x_TX_GET(v, HFA384x_TX_TXEX, 2)
 
1653 #define HFA384x_TX_TXEX_SET(v)          HFA384x_TX_SET(v, HFA384x_TX_TXEX, 2)
 
1654 #define HFA384x_TX_TXOK_GET(v)          HFA384x_TX_GET(v, HFA384x_TX_TXOK, 1)
 
1655 #define HFA384x_TX_TXOK_SET(v)          HFA384x_TX_SET(v, HFA384x_TX_TXOK, 1)
 
1656 /*--------------------------------------------------------------------
 
1657 Communication Frames: Receive Frames
 
1658 --------------------------------------------------------------------*/
 
1659 /*-- Communication Frame: Receive Frame Structure --*/
 
1660 typedef struct hfa384x_rx_frame
 
1662         /*-- MAC rx descriptor (hfa384x byte order) --*/
 
1672         /*-- 802.11 Header Information (802.11 byte order) --*/
 
1678         u16     sequence_control;
 
1680         u16     data_len; /* hfa384x (little endian) format */
 
1682         /*-- 802.3 Header Information --*/
 
1685         u16     data_length; /* IEEE? (big endian) format */
 
1686 } __WLAN_ATTRIB_PACK__ hfa384x_rx_frame_t;
 
1687 /*--------------------------------------------------------------------
 
1688 Communication Frames: Field Masks for Receive Frames
 
1689 --------------------------------------------------------------------*/
 
1690 /*-- Offsets --------*/
 
1691 #define         HFA384x_RX_DATA_LEN_OFF                 ((u16)44)
 
1692 #define         HFA384x_RX_80211HDR_OFF                 ((u16)14)
 
1693 #define         HFA384x_RX_DATA_OFF                     ((u16)60)
 
1695 /*-- Status Fields --*/
 
1696 #define         HFA384x_RXSTATUS_MSGTYPE                ((u16)(BIT15 | BIT14 | BIT13))
 
1697 #define         HFA384x_RXSTATUS_MACPORT                ((u16)(BIT10 | BIT9 | BIT8))
 
1698 #define         HFA384x_RXSTATUS_UNDECR                 ((u16)BIT1)
 
1699 #define         HFA384x_RXSTATUS_FCSERR                 ((u16)BIT0)
 
1700 /*--------------------------------------------------------------------
 
1701 Communication Frames: Test/Get/Set Field Values for Receive Frames
 
1702 --------------------------------------------------------------------*/
 
1703 #define         HFA384x_RXSTATUS_MSGTYPE_GET(value)     ((u16)((((u16)(value)) & HFA384x_RXSTATUS_MSGTYPE) >> 13))
 
1704 #define         HFA384x_RXSTATUS_MSGTYPE_SET(value)     ((u16)(((u16)(value)) << 13))
 
1705 #define         HFA384x_RXSTATUS_MACPORT_GET(value)     ((u16)((((u16)(value)) & HFA384x_RXSTATUS_MACPORT) >> 8))
 
1706 #define         HFA384x_RXSTATUS_MACPORT_SET(value)     ((u16)(((u16)(value)) << 8))
 
1707 #define         HFA384x_RXSTATUS_ISUNDECR(value)        ((u16)(((u16)(value)) & HFA384x_RXSTATUS_UNDECR))
 
1708 #define         HFA384x_RXSTATUS_ISFCSERR(value)        ((u16)(((u16)(value)) & HFA384x_RXSTATUS_FCSERR))
 
1709 /*--------------------------------------------------------------------
 
1710  FRAME STRUCTURES: Information Types and Information Frame Structures
 
1711 ----------------------------------------------------------------------
 
1713 --------------------------------------------------------------------*/
 
1714 #define         HFA384x_IT_HANDOVERADDR                 ((u16)0xF000UL)
 
1715 #define         HFA384x_IT_HANDOVERDEAUTHADDRESS        ((u16)0xF001UL)//AP 1.3.7
 
1716 #define         HFA384x_IT_COMMTALLIES                  ((u16)0xF100UL)
 
1717 #define         HFA384x_IT_SCANRESULTS                  ((u16)0xF101UL)
 
1718 #define         HFA384x_IT_CHINFORESULTS                ((u16)0xF102UL)
 
1719 #define         HFA384x_IT_HOSTSCANRESULTS              ((u16)0xF103UL)
 
1720 #define         HFA384x_IT_LINKSTATUS                   ((u16)0xF200UL)
 
1721 #define         HFA384x_IT_ASSOCSTATUS                  ((u16)0xF201UL)
 
1722 #define         HFA384x_IT_AUTHREQ                      ((u16)0xF202UL)
 
1723 #define         HFA384x_IT_PSUSERCNT                    ((u16)0xF203UL)
 
1724 #define         HFA384x_IT_KEYIDCHANGED                 ((u16)0xF204UL)
 
1725 #define         HFA384x_IT_ASSOCREQ                     ((u16)0xF205UL)
 
1726 #define         HFA384x_IT_MICFAILURE                   ((u16)0xF206UL)
 
1728 /*--------------------------------------------------------------------
 
1729 Information Frames Structures
 
1730 ----------------------------------------------------------------------
 
1731 Information Frames: Notification Frame Structures
 
1732 --------------------------------------------------------------------*/
 
1733 /*--  Notification Frame,MAC Mgmt: Handover Address --*/
 
1734 typedef struct hfa384x_HandoverAddr
 
1738         u8      handover_addr[WLAN_BSSID_LEN];
 
1739 } __WLAN_ATTRIB_PACK__ hfa384x_HandoverAddr_t;
 
1741 /*--  Inquiry Frame, Diagnose: Communication Tallies --*/
 
1742 typedef struct hfa384x_CommTallies16
 
1744         u16     txunicastframes;
 
1745         u16     txmulticastframes;
 
1747         u16     txunicastoctets;
 
1748         u16     txmulticastoctets;
 
1749         u16     txdeferredtrans;
 
1750         u16     txsingleretryframes;
 
1751         u16     txmultipleretryframes;
 
1752         u16     txretrylimitexceeded;
 
1754         u16     rxunicastframes;
 
1755         u16     rxmulticastframes;
 
1757         u16     rxunicastoctets;
 
1758         u16     rxmulticastoctets;
 
1760         u16     rxdiscardsnobuffer;
 
1761         u16     txdiscardswrongsa;
 
1762         u16     rxdiscardswepundecr;
 
1764         u16     rxmsginbadmsgfrag;
 
1765 } __WLAN_ATTRIB_PACK__ hfa384x_CommTallies16_t;
 
1767 typedef struct hfa384x_CommTallies32
 
1769         u32     txunicastframes;
 
1770         u32     txmulticastframes;
 
1772         u32     txunicastoctets;
 
1773         u32     txmulticastoctets;
 
1774         u32     txdeferredtrans;
 
1775         u32     txsingleretryframes;
 
1776         u32     txmultipleretryframes;
 
1777         u32     txretrylimitexceeded;
 
1779         u32     rxunicastframes;
 
1780         u32     rxmulticastframes;
 
1782         u32     rxunicastoctets;
 
1783         u32     rxmulticastoctets;
 
1785         u32     rxdiscardsnobuffer;
 
1786         u32     txdiscardswrongsa;
 
1787         u32     rxdiscardswepundecr;
 
1789         u32     rxmsginbadmsgfrag;
 
1790 } __WLAN_ATTRIB_PACK__ hfa384x_CommTallies32_t;
 
1792 /*--  Inquiry Frame, Diagnose: Scan Results & Subfields--*/
 
1793 typedef struct hfa384x_ScanResultSub
 
1798         u8      bssid[WLAN_BSSID_LEN];
 
1801         hfa384x_bytestr32_t     ssid;
 
1802         u8      supprates[10]; /* 802.11 info element */
 
1804 } __WLAN_ATTRIB_PACK__ hfa384x_ScanResultSub_t;
 
1806 typedef struct hfa384x_ScanResult
 
1810         hfa384x_ScanResultSub_t
 
1811                 result[HFA384x_SCANRESULT_MAX];
 
1812 } __WLAN_ATTRIB_PACK__ hfa384x_ScanResult_t;
 
1814 /*--  Inquiry Frame, Diagnose: ChInfo Results & Subfields--*/
 
1815 typedef struct hfa384x_ChInfoResultSub
 
1821 } __WLAN_ATTRIB_PACK__ hfa384x_ChInfoResultSub_t;
 
1823 #define HFA384x_CHINFORESULT_BSSACTIVE  BIT0
 
1824 #define HFA384x_CHINFORESULT_PCFACTIVE  BIT1
 
1826 typedef struct hfa384x_ChInfoResult
 
1829         hfa384x_ChInfoResultSub_t
 
1830                 result[HFA384x_CHINFORESULT_MAX];
 
1831 } __WLAN_ATTRIB_PACK__ hfa384x_ChInfoResult_t;
 
1833 /*--  Inquiry Frame, Diagnose: Host Scan Results & Subfields--*/
 
1834 typedef struct hfa384x_HScanResultSub
 
1839         u8      bssid[WLAN_BSSID_LEN];
 
1842         hfa384x_bytestr32_t     ssid;
 
1843         u8      supprates[10]; /* 802.11 info element */
 
1846 } __WLAN_ATTRIB_PACK__ hfa384x_HScanResultSub_t;
 
1848 typedef struct hfa384x_HScanResult
 
1852         hfa384x_HScanResultSub_t
 
1853                 result[HFA384x_HSCANRESULT_MAX];
 
1854 } __WLAN_ATTRIB_PACK__ hfa384x_HScanResult_t;
 
1856 /*--  Unsolicited Frame, MAC Mgmt: LinkStatus --*/
 
1858 #define HFA384x_LINK_NOTCONNECTED       ((u16)0)
 
1859 #define HFA384x_LINK_CONNECTED          ((u16)1)
 
1860 #define HFA384x_LINK_DISCONNECTED       ((u16)2)
 
1861 #define HFA384x_LINK_AP_CHANGE          ((u16)3)
 
1862 #define HFA384x_LINK_AP_OUTOFRANGE      ((u16)4)
 
1863 #define HFA384x_LINK_AP_INRANGE         ((u16)5)
 
1864 #define HFA384x_LINK_ASSOCFAIL          ((u16)6)
 
1866 typedef struct hfa384x_LinkStatus
 
1869 } __WLAN_ATTRIB_PACK__ hfa384x_LinkStatus_t;
 
1872 /*--  Unsolicited Frame, MAC Mgmt: AssociationStatus (--*/
 
1874 #define HFA384x_ASSOCSTATUS_STAASSOC    ((u16)1)
 
1875 #define HFA384x_ASSOCSTATUS_REASSOC     ((u16)2)
 
1876 #define HFA384x_ASSOCSTATUS_DISASSOC    ((u16)3)
 
1877 #define HFA384x_ASSOCSTATUS_ASSOCFAIL   ((u16)4)
 
1878 #define HFA384x_ASSOCSTATUS_AUTHFAIL    ((u16)5)
 
1880 typedef struct hfa384x_AssocStatus
 
1883         u8      sta_addr[WLAN_ADDR_LEN];
 
1884         /* old_ap_addr is only valid if assocstatus == 2 */
 
1885         u8      old_ap_addr[WLAN_ADDR_LEN];
 
1888 } __WLAN_ATTRIB_PACK__ hfa384x_AssocStatus_t;
 
1890 /*--  Unsolicited Frame, MAC Mgmt: AuthRequest (AP Only) --*/
 
1892 typedef struct hfa384x_AuthRequest
 
1894         u8      sta_addr[WLAN_ADDR_LEN];
 
1896 } __WLAN_ATTRIB_PACK__ hfa384x_AuthReq_t;
 
1898 /*--  Unsolicited Frame, MAC Mgmt: AssocRequest (AP Only) --*/
 
1900 typedef struct hfa384x_AssocRequest
 
1902         u8      sta_addr[WLAN_ADDR_LEN];
 
1905 } __WLAN_ATTRIB_PACK__ hfa384x_AssocReq_t;
 
1908 #define HFA384x_ASSOCREQ_TYPE_ASSOC     0
 
1909 #define HFA384x_ASSOCREQ_TYPE_REASSOC   1
 
1911 /*--  Unsolicited Frame, MAC Mgmt: MIC Failure  (AP Only) --*/
 
1913 typedef struct hfa384x_MicFailure
 
1915         u8      sender[WLAN_ADDR_LEN];
 
1916         u8      dest[WLAN_ADDR_LEN];
 
1917 } __WLAN_ATTRIB_PACK__ hfa384x_MicFailure_t;
 
1919 /*--  Unsolicited Frame, MAC Mgmt: PSUserCount (AP Only) --*/
 
1921 typedef struct hfa384x_PSUserCount
 
1924 } __WLAN_ATTRIB_PACK__ hfa384x_PSUserCount_t;
 
1926 typedef struct hfa384x_KeyIDChanged
 
1928         u8      sta_addr[WLAN_ADDR_LEN];
 
1930 } __WLAN_ATTRIB_PACK__ hfa384x_KeyIDChanged_t;
 
1932 /*--  Collection of all Inf frames ---------------*/
 
1933 typedef union hfa384x_infodata {
 
1934         hfa384x_CommTallies16_t commtallies16;
 
1935         hfa384x_CommTallies32_t commtallies32;
 
1936         hfa384x_ScanResult_t    scanresult;
 
1937         hfa384x_ChInfoResult_t  chinforesult;
 
1938         hfa384x_HScanResult_t   hscanresult;
 
1939         hfa384x_LinkStatus_t    linkstatus;
 
1940         hfa384x_AssocStatus_t   assocstatus;
 
1941         hfa384x_AuthReq_t       authreq;
 
1942         hfa384x_PSUserCount_t   psusercnt;
 
1943         hfa384x_KeyIDChanged_t  keyidchanged;
 
1944 } __WLAN_ATTRIB_PACK__ hfa384x_infodata_t;
 
1946 typedef struct hfa384x_InfFrame
 
1950         hfa384x_infodata_t      info;
 
1951 } __WLAN_ATTRIB_PACK__ hfa384x_InfFrame_t;
 
1953 /*--------------------------------------------------------------------
 
1954 USB Packet structures and constants.
 
1955 --------------------------------------------------------------------*/
 
1957 /* Should be sent to the ctrlout endpoint */
 
1958 #define HFA384x_USB_ENBULKIN    6
 
1960 /* Should be sent to the bulkout endpoint */
 
1961 #define HFA384x_USB_TXFRM       0
 
1962 #define HFA384x_USB_CMDREQ      1
 
1963 #define HFA384x_USB_WRIDREQ     2
 
1964 #define HFA384x_USB_RRIDREQ     3
 
1965 #define HFA384x_USB_WMEMREQ     4
 
1966 #define HFA384x_USB_RMEMREQ     5
 
1968 /* Received from the bulkin endpoint */
 
1969 #define HFA384x_USB_ISFRM(a)    (!((a) & 0x8000))
 
1970 #define HFA384x_USB_ISTXFRM(a)  (((a) & 0x9000) == 0x1000)
 
1971 #define HFA384x_USB_ISRXFRM(a)  (!((a) & 0x9000))
 
1972 #define HFA384x_USB_INFOFRM     0x8000
 
1973 #define HFA384x_USB_CMDRESP     0x8001
 
1974 #define HFA384x_USB_WRIDRESP    0x8002
 
1975 #define HFA384x_USB_RRIDRESP    0x8003
 
1976 #define HFA384x_USB_WMEMRESP    0x8004
 
1977 #define HFA384x_USB_RMEMRESP    0x8005
 
1978 #define HFA384x_USB_BUFAVAIL    0x8006
 
1979 #define HFA384x_USB_ERROR       0x8007
 
1981 /*------------------------------------*/
 
1982 /* Request (bulk OUT) packet contents */
 
1984 typedef struct hfa384x_usb_txfrm {
 
1985         hfa384x_tx_frame_t      desc;
 
1986         u8                      data[WLAN_DATA_MAXLEN];
 
1987 } __WLAN_ATTRIB_PACK__ hfa384x_usb_txfrm_t;
 
1989 typedef struct hfa384x_usb_cmdreq {
 
1996 } __WLAN_ATTRIB_PACK__ hfa384x_usb_cmdreq_t;
 
1998 typedef struct hfa384x_usb_wridreq {
 
2002         u8              data[HFA384x_RIDDATA_MAXLEN];
 
2003 } __WLAN_ATTRIB_PACK__ hfa384x_usb_wridreq_t;
 
2005 typedef struct hfa384x_usb_rridreq {
 
2010 } __WLAN_ATTRIB_PACK__ hfa384x_usb_rridreq_t;
 
2012 typedef struct hfa384x_usb_wmemreq {
 
2017         u8              data[HFA384x_USB_RWMEM_MAXLEN];
 
2018 } __WLAN_ATTRIB_PACK__ hfa384x_usb_wmemreq_t;
 
2020 typedef struct hfa384x_usb_rmemreq {
 
2026 } __WLAN_ATTRIB_PACK__ hfa384x_usb_rmemreq_t;
 
2028 /*------------------------------------*/
 
2029 /* Response (bulk IN) packet contents */
 
2031 typedef struct hfa384x_usb_rxfrm {
 
2032         hfa384x_rx_frame_t      desc;
 
2033         u8                      data[WLAN_DATA_MAXLEN];
 
2034 } __WLAN_ATTRIB_PACK__ hfa384x_usb_rxfrm_t;
 
2036 typedef struct hfa384x_usb_infofrm {
 
2038         hfa384x_InfFrame_t      info;
 
2039 } __WLAN_ATTRIB_PACK__ hfa384x_usb_infofrm_t;
 
2041 typedef struct hfa384x_usb_statusresp {
 
2047 } __WLAN_ATTRIB_PACK__ hfa384x_usb_cmdresp_t;
 
2049 typedef hfa384x_usb_cmdresp_t hfa384x_usb_wridresp_t;
 
2051 typedef struct hfa384x_usb_rridresp {
 
2055         u8              data[HFA384x_RIDDATA_MAXLEN];
 
2056 } __WLAN_ATTRIB_PACK__ hfa384x_usb_rridresp_t;
 
2058 typedef hfa384x_usb_cmdresp_t hfa384x_usb_wmemresp_t;
 
2060 typedef struct hfa384x_usb_rmemresp {
 
2063         u8              data[HFA384x_USB_RWMEM_MAXLEN];
 
2064 } __WLAN_ATTRIB_PACK__ hfa384x_usb_rmemresp_t;
 
2066 typedef struct hfa384x_usb_bufavail {
 
2069 } __WLAN_ATTRIB_PACK__ hfa384x_usb_bufavail_t;
 
2071 typedef struct hfa384x_usb_error {
 
2074 } __WLAN_ATTRIB_PACK__ hfa384x_usb_error_t;
 
2076 /*----------------------------------------------------------*/
 
2077 /* Unions for packaging all the known packet types together */
 
2079 typedef union hfa384x_usbout {
 
2081         hfa384x_usb_txfrm_t     txfrm;
 
2082         hfa384x_usb_cmdreq_t    cmdreq;
 
2083         hfa384x_usb_wridreq_t   wridreq;
 
2084         hfa384x_usb_rridreq_t   rridreq;
 
2085         hfa384x_usb_wmemreq_t   wmemreq;
 
2086         hfa384x_usb_rmemreq_t   rmemreq;
 
2087 } __WLAN_ATTRIB_PACK__ hfa384x_usbout_t;
 
2089 typedef union hfa384x_usbin {
 
2091         hfa384x_usb_rxfrm_t     rxfrm;
 
2092         hfa384x_usb_txfrm_t     txfrm;
 
2093         hfa384x_usb_infofrm_t   infofrm;
 
2094         hfa384x_usb_cmdresp_t   cmdresp;
 
2095         hfa384x_usb_wridresp_t  wridresp;
 
2096         hfa384x_usb_rridresp_t  rridresp;
 
2097         hfa384x_usb_wmemresp_t  wmemresp;
 
2098         hfa384x_usb_rmemresp_t  rmemresp;
 
2099         hfa384x_usb_bufavail_t  bufavail;
 
2100         hfa384x_usb_error_t     usberror;
 
2102 } __WLAN_ATTRIB_PACK__ hfa384x_usbin_t;
 
2104 /*--------------------------------------------------------------------
 
2105 PD record structures.
 
2106 --------------------------------------------------------------------*/
 
2108 typedef struct hfa384x_pdr_pcb_partnum
 
2111 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_pcb_partnum_t;
 
2113 typedef struct hfa384x_pdr_pcb_tracenum
 
2116 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_pcb_tracenum_t;
 
2118 typedef struct hfa384x_pdr_nic_serial
 
2121 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_serial_t;
 
2123 typedef struct hfa384x_pdr_mkk_measurements
 
2125         double  carrier_freq;
 
2126         double  occupied_band;
 
2127         double  power_density;
 
2140 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mkk_measurements_t;
 
2142 typedef struct hfa384x_pdr_nic_ramsize
 
2144         u8      size[12]; /* units of KB */
 
2145 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_ramsize_t;
 
2147 typedef struct hfa384x_pdr_mfisuprange
 
2153 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mfisuprange_t;
 
2155 typedef struct hfa384x_pdr_cfisuprange
 
2161 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_cfisuprange_t;
 
2163 typedef struct hfa384x_pdr_nicid
 
2169 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nicid_t;
 
2172 typedef struct hfa384x_pdr_refdac_measurements
 
2175 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_refdac_measurements_t;
 
2177 typedef struct hfa384x_pdr_vgdac_measurements
 
2180 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_vgdac_measurements_t;
 
2182 typedef struct hfa384x_pdr_level_comp_measurements
 
2185 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_level_compc_measurements_t;
 
2187 typedef struct hfa384x_pdr_mac_address
 
2190 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mac_address_t;
 
2192 typedef struct hfa384x_pdr_mkk_callname
 
2195 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mkk_callname_t;
 
2197 typedef struct hfa384x_pdr_regdomain
 
2201 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_regdomain_t;
 
2203 typedef struct hfa384x_pdr_allowed_channel
 
2206 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_allowed_channel_t;
 
2208 typedef struct hfa384x_pdr_default_channel
 
2211 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_default_channel_t;
 
2213 typedef struct hfa384x_pdr_privacy_option
 
2216 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_privacy_option_t;
 
2218 typedef struct hfa384x_pdr_temptype
 
2221 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_temptype_t;
 
2223 typedef struct hfa384x_pdr_refdac_setup
 
2226 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_refdac_setup_t;
 
2228 typedef struct hfa384x_pdr_vgdac_setup
 
2231 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_vgdac_setup_t;
 
2233 typedef struct hfa384x_pdr_level_comp_setup
 
2236 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_level_comp_setup_t;
 
2238 typedef struct hfa384x_pdr_trimdac_setup
 
2242 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_trimdac_setup_t;
 
2244 typedef struct hfa384x_pdr_ifr_setting
 
2247 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_ifr_setting_t;
 
2249 typedef struct hfa384x_pdr_rfr_setting
 
2252 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_rfr_setting_t;
 
2254 typedef struct hfa384x_pdr_hfa3861_baseline
 
2257 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_baseline_t;
 
2259 typedef struct hfa384x_pdr_hfa3861_shadow
 
2262 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_shadow_t;
 
2264 typedef struct hfa384x_pdr_hfa3861_ifrf
 
2267 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_ifrf_t;
 
2269 typedef struct hfa384x_pdr_hfa3861_chcalsp
 
2272 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_chcalsp_t;
 
2274 typedef struct hfa384x_pdr_hfa3861_chcali
 
2277 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_chcali_t;
 
2279 typedef struct hfa384x_pdr_hfa3861_nic_config
 
2282 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_config_t;
 
2284 typedef struct hfa384x_pdr_hfo_delay
 
2287 } __WLAN_ATTRIB_PACK__ hfa384x_hfo_delay_t;
 
2289 typedef struct hfa384x_pdr_hfa3861_manf_testsp
 
2292 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_manf_testsp_t;
 
2294 typedef struct hfa384x_pdr_hfa3861_manf_testi
 
2297 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_manf_testi_t;
 
2299 typedef struct hfa384x_end_of_pda
 
2302 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_end_of_pda_t;
 
2304 typedef struct hfa384x_pdrec
 
2306         u16     len; /* in words */
 
2309         hfa384x_pdr_pcb_partnum_t       pcb_partnum;
 
2310         hfa384x_pdr_pcb_tracenum_t      pcb_tracenum;
 
2311         hfa384x_pdr_nic_serial_t        nic_serial;
 
2312         hfa384x_pdr_mkk_measurements_t  mkk_measurements;
 
2313         hfa384x_pdr_nic_ramsize_t       nic_ramsize;
 
2314         hfa384x_pdr_mfisuprange_t       mfisuprange;
 
2315         hfa384x_pdr_cfisuprange_t       cfisuprange;
 
2316         hfa384x_pdr_nicid_t             nicid;
 
2317         hfa384x_pdr_refdac_measurements_t       refdac_measurements;
 
2318         hfa384x_pdr_vgdac_measurements_t        vgdac_measurements;
 
2319         hfa384x_pdr_level_compc_measurements_t  level_compc_measurements;
 
2320         hfa384x_pdr_mac_address_t       mac_address;
 
2321         hfa384x_pdr_mkk_callname_t      mkk_callname;
 
2322         hfa384x_pdr_regdomain_t         regdomain;
 
2323         hfa384x_pdr_allowed_channel_t   allowed_channel;
 
2324         hfa384x_pdr_default_channel_t   default_channel;
 
2325         hfa384x_pdr_privacy_option_t    privacy_option;
 
2326         hfa384x_pdr_temptype_t          temptype;
 
2327         hfa384x_pdr_refdac_setup_t      refdac_setup;
 
2328         hfa384x_pdr_vgdac_setup_t       vgdac_setup;
 
2329         hfa384x_pdr_level_comp_setup_t  level_comp_setup;
 
2330         hfa384x_pdr_trimdac_setup_t     trimdac_setup;
 
2331         hfa384x_pdr_ifr_setting_t       ifr_setting;
 
2332         hfa384x_pdr_rfr_setting_t       rfr_setting;
 
2333         hfa384x_pdr_hfa3861_baseline_t  hfa3861_baseline;
 
2334         hfa384x_pdr_hfa3861_shadow_t    hfa3861_shadow;
 
2335         hfa384x_pdr_hfa3861_ifrf_t      hfa3861_ifrf;
 
2336         hfa384x_pdr_hfa3861_chcalsp_t   hfa3861_chcalsp;
 
2337         hfa384x_pdr_hfa3861_chcali_t    hfa3861_chcali;
 
2338         hfa384x_pdr_nic_config_t        nic_config;
 
2339         hfa384x_hfo_delay_t             hfo_delay;
 
2340         hfa384x_pdr_hfa3861_manf_testsp_t       hfa3861_manf_testsp;
 
2341         hfa384x_pdr_hfa3861_manf_testi_t        hfa3861_manf_testi;
 
2342         hfa384x_pdr_end_of_pda_t        end_of_pda;
 
2345 } __WLAN_ATTRIB_PACK__ hfa384x_pdrec_t;
 
2349 /*--------------------------------------------------------------------
 
2350 ---  MAC state structure, argument to all functions --
 
2351 ---  Also, a collection of support types --
 
2352 --------------------------------------------------------------------*/
 
2353 typedef struct hfa384x_statusresult
 
2359 } hfa384x_cmdresult_t;
 
2361 /* USB Control Exchange (CTLX):
 
2362  *  A queue of the structure below is maintained for all of the
 
2363  *  Request/Response type USB packets supported by Prism2.
 
2365 /* The following hfa384x_* structures are arguments to
 
2366  * the usercb() for the different CTLX types.
 
2368 typedef hfa384x_cmdresult_t hfa384x_wridresult_t;
 
2369 typedef hfa384x_cmdresult_t hfa384x_wmemresult_t;
 
2371 typedef struct hfa384x_rridresult
 
2374         const void      *riddata;
 
2375         unsigned int            riddata_len;
 
2376 } hfa384x_rridresult_t;
 
2379         CTLX_START = 0, /* Start state, not queued */
 
2381         CTLX_COMPLETE,  /* CTLX successfully completed */
 
2382         CTLX_REQ_FAILED,        /* OUT URB completed w/ error */
 
2384         CTLX_PENDING,           /* Queued, data valid */
 
2385         CTLX_REQ_SUBMITTED,     /* OUT URB submitted */
 
2386         CTLX_REQ_COMPLETE,      /* OUT URB complete */
 
2387         CTLX_RESP_COMPLETE      /* IN URB received */
 
2389 typedef enum ctlx_state  CTLX_STATE;
 
2391 struct hfa384x_usbctlx;
 
2394 typedef void (*ctlx_cmdcb_t)( struct hfa384x*, const struct hfa384x_usbctlx* );
 
2396 typedef void (*ctlx_usercb_t)(
 
2401 typedef struct hfa384x_usbctlx
 
2403         struct list_head        list;
 
2406         hfa384x_usbout_t        outbuf;         /* pkt buf for OUT */
 
2407         hfa384x_usbin_t         inbuf;          /* pkt buf for IN(a copy) */
 
2409         CTLX_STATE              state;          /* Tracks running state */
 
2411         struct completion       done;
 
2412         volatile int            reapable;       /* Food for the reaper task */
 
2414         ctlx_cmdcb_t            cmdcb;          /* Async command callback */
 
2415         ctlx_usercb_t           usercb;         /* Async user callback, */
 
2416         void                    *usercb_data;   /*  at CTLX completion  */
 
2418         int                     variant;        /* Identifies cmd variant */
 
2419 } hfa384x_usbctlx_t;
 
2421 typedef struct hfa384x_usbctlxq
 
2424         struct list_head        pending;
 
2425         struct list_head        active;
 
2426         struct list_head        completing;
 
2427         struct list_head        reapable;
 
2428 } hfa384x_usbctlxq_t;
 
2430 typedef struct hfa484x_metacmd
 
2438         hfa384x_cmdresult_t result;
 
2439 } hfa384x_metacmd_t;
 
2441 #define MAX_PRISM2_GRP_ADDR     16
 
2442 #define MAX_GRP_ADDR            32
 
2443 #define WLAN_COMMENT_MAX        80  /* Max. length of user comment string. */
 
2445 #define MM_SAT_PCF              (BIT14)
 
2446 #define MM_GCSD_PCF             (BIT15)
 
2447 #define MM_GCSD_PCF_EB          (BIT14 | BIT15)
 
2449 #define WLAN_STATE_STOPPED      0   /* Network is not active. */
 
2450 #define WLAN_STATE_STARTED      1   /* Network has been started. */
 
2452 #define WLAN_AUTH_MAX           60  /* Max. # of authenticated stations. */
 
2453 #define WLAN_ACCESS_MAX         60  /* Max. # of stations in an access list. */
 
2454 #define WLAN_ACCESS_NONE        0   /* No stations may be authenticated. */
 
2455 #define WLAN_ACCESS_ALL         1   /* All stations may be authenticated. */
 
2456 #define WLAN_ACCESS_ALLOW       2   /* Authenticate only "allowed" stations. */
 
2457 #define WLAN_ACCESS_DENY        3   /* Do not authenticate "denied" stations. */
 
2459 /* XXX These are going away ASAP */
 
2460 typedef struct prism2sta_authlist
 
2463         u8      addr[WLAN_AUTH_MAX][WLAN_ADDR_LEN];
 
2464         u8      assoc[WLAN_AUTH_MAX];
 
2465 } prism2sta_authlist_t;
 
2467 typedef struct prism2sta_accesslist
 
2469         unsigned int    modify;
 
2471         u8      addr[WLAN_ACCESS_MAX][WLAN_ADDR_LEN];
 
2473         u8      addr1[WLAN_ACCESS_MAX][WLAN_ADDR_LEN];
 
2474 } prism2sta_accesslist_t;
 
2476 typedef struct hfa384x
 
2478         /* USB support data */
 
2479         struct usb_device       *usb;
 
2481         struct sk_buff          *rx_urb_skb;
 
2483         struct urb              ctlx_urb;
 
2484         hfa384x_usbout_t        txbuff;
 
2485         hfa384x_usbctlxq_t      ctlxq;
 
2486         struct timer_list       reqtimer;
 
2487         struct timer_list       resptimer;
 
2489         struct timer_list       throttle;
 
2491         struct tasklet_struct   reaper_bh;
 
2492         struct tasklet_struct   completion_bh;
 
2494         struct work_struct      usb_work;
 
2496         unsigned long           usb_flags;
 
2497 #define THROTTLE_RX     0
 
2498 #define THROTTLE_TX     1
 
2499 #define WORK_RX_HALT    2
 
2500 #define WORK_TX_HALT    3
 
2501 #define WORK_RX_RESUME  4
 
2502 #define WORK_TX_RESUME  5
 
2504         unsigned short          req_timer_done:1;
 
2505         unsigned short          resp_timer_done:1;
 
2515         wait_queue_head_t cmdq;         /* wait queue itself */
 
2517         /* Controller state */
 
2520         u8              port_enabled[HFA384x_NUMPORTS_MAX];
 
2522         /* Download support */
 
2523         unsigned int                            dlstate;
 
2524         hfa384x_downloadbuffer_t        bufinfo;
 
2527         int                          scanflag;    /* to signal scan comlete */
 
2528         int                          join_ap;        /* are we joined to a specific ap */
 
2529         int                          join_retries;   /* number of join retries till we fail */
 
2530         hfa384x_JoinRequest_data_t   joinreq;        /* join request saved data */
 
2532         wlandevice_t            *wlandev;
 
2533         /* Timer to allow for the deferred processing of linkstatus messages */
 
2534         struct work_struct      link_bh;
 
2536         struct work_struct      commsqual_bh;
 
2537         hfa384x_commsquality_t  qual;
 
2538         struct timer_list       commsqual_timer;
 
2541         u16 link_status_new;
 
2542         struct sk_buff_head        authq;
 
2544         /* And here we have stuff that used to be in priv */
 
2546         /* State variables */
 
2547         unsigned int            presniff_port_type;
 
2548         u16             presniff_wepflags;
 
2549         u32             dot11_desired_bss_type;
 
2553         /* Group Addresses - right now, there are up to a total
 
2554         of MAX_GRP_ADDR group addresses */
 
2555         u8              dot11_grp_addr[MAX_GRP_ADDR][WLAN_ADDR_LEN];
 
2556         unsigned int            dot11_grpcnt;
 
2558         /* Component Identities */
 
2559         hfa384x_compident_t     ident_nic;
 
2560         hfa384x_compident_t     ident_pri_fw;
 
2561         hfa384x_compident_t     ident_sta_fw;
 
2562         hfa384x_compident_t     ident_ap_fw;
 
2565         /* Supplier compatibility ranges */
 
2566         hfa384x_caplevel_t      cap_sup_mfi;
 
2567         hfa384x_caplevel_t      cap_sup_cfi;
 
2568         hfa384x_caplevel_t      cap_sup_pri;
 
2569         hfa384x_caplevel_t      cap_sup_sta;
 
2570         hfa384x_caplevel_t      cap_sup_ap;
 
2572         /* Actor compatibility ranges */
 
2573         hfa384x_caplevel_t      cap_act_pri_cfi; /* pri f/w to controller interface */
 
2574         hfa384x_caplevel_t      cap_act_sta_cfi; /* sta f/w to controller interface */
 
2575         hfa384x_caplevel_t      cap_act_sta_mfi; /* sta f/w to modem interface */
 
2576         hfa384x_caplevel_t      cap_act_ap_cfi;  /* ap f/w to controller interface */
 
2577         hfa384x_caplevel_t      cap_act_ap_mfi;  /* ap f/w to modem interface */
 
2579         u32                     psusercount;  /* Power save user count. */
 
2580         hfa384x_CommTallies32_t tallies;      /* Communication tallies. */
 
2581         u8                      comment[WLAN_COMMENT_MAX+1]; /* User comment */
 
2583         /* Channel Info request results (AP only) */
 
2587                 hfa384x_ChInfoResult_t  results;
 
2590         hfa384x_InfFrame_t      *scanresults;
 
2593         prism2sta_authlist_t    authlist;     /* Authenticated station list. */
 
2594         unsigned int                    accessmode;   /* Access mode. */
 
2595         prism2sta_accesslist_t  allow;        /* Allowed station list. */
 
2596         prism2sta_accesslist_t  deny;         /* Denied station list. */
 
2600 /*=============================================================*/
 
2601 /*--- Function Declarations -----------------------------------*/
 
2602 /*=============================================================*/
 
2606         struct usb_device *usb);
 
2608 void hfa384x_destroy(hfa384x_t *hw);
 
2611 hfa384x_corereset( hfa384x_t *hw, int holdtime, int settletime, int genesis);
 
2613 hfa384x_drvr_chinforesults( hfa384x_t *hw);
 
2615 hfa384x_drvr_commtallies( hfa384x_t *hw);
 
2617 hfa384x_drvr_disable(hfa384x_t *hw, u16 macport);
 
2619 hfa384x_drvr_enable(hfa384x_t *hw, u16 macport);
 
2621 hfa384x_drvr_flashdl_enable(hfa384x_t *hw);
 
2623 hfa384x_drvr_flashdl_disable(hfa384x_t *hw);
 
2625 hfa384x_drvr_flashdl_write(hfa384x_t *hw, u32 daddr, void* buf, u32 len);
 
2627 hfa384x_drvr_getconfig(hfa384x_t *hw, u16 rid, void *buf, u16 len);
 
2629 hfa384x_drvr_handover( hfa384x_t *hw, u8 *addr);
 
2631 hfa384x_drvr_hostscanresults( hfa384x_t *hw);
 
2633 hfa384x_drvr_low_level(hfa384x_t *hw, hfa384x_metacmd_t *cmd);
 
2635 hfa384x_drvr_mmi_read(hfa384x_t *hw, u32 address, u32 *result);
 
2637 hfa384x_drvr_mmi_write(hfa384x_t *hw, u32 address, u32 data);
 
2639 hfa384x_drvr_ramdl_enable(hfa384x_t *hw, u32 exeaddr);
 
2641 hfa384x_drvr_ramdl_disable(hfa384x_t *hw);
 
2643 hfa384x_drvr_ramdl_write(hfa384x_t *hw, u32 daddr, void* buf, u32 len);
 
2645 hfa384x_drvr_readpda(hfa384x_t *hw, void *buf, unsigned int len);
 
2647 hfa384x_drvr_scanresults( hfa384x_t *hw);
 
2650 hfa384x_drvr_setconfig(hfa384x_t *hw, u16 rid, void *buf, u16 len);
 
2653 hfa384x_drvr_getconfig16(hfa384x_t *hw, u16 rid, void *val)
 
2656         result = hfa384x_drvr_getconfig(hw, rid, val, sizeof(u16));
 
2657         if ( result == 0 ) {
 
2658                 *((u16*)val) = hfa384x2host_16(*((u16*)val));
 
2664 hfa384x_drvr_getconfig32(hfa384x_t *hw, u16 rid, void *val)
 
2668         result = hfa384x_drvr_getconfig(hw, rid, val, sizeof(u32));
 
2669         if ( result == 0 ) {
 
2670                 *((u32*)val) = hfa384x2host_32(*((u32*)val));
 
2677 hfa384x_drvr_setconfig16(hfa384x_t *hw, u16 rid, u16 val)
 
2679         u16 value = host2hfa384x_16(val);
 
2680         return hfa384x_drvr_setconfig(hw, rid, &value, sizeof(value));
 
2684 hfa384x_drvr_setconfig32(hfa384x_t *hw, u16 rid, u32 val)
 
2686         u32 value = host2hfa384x_32(val);
 
2687         return hfa384x_drvr_setconfig(hw, rid, &value, sizeof(value));
 
2691 hfa384x_drvr_getconfig_async(hfa384x_t     *hw,
 
2693                               ctlx_usercb_t usercb,
 
2697 hfa384x_drvr_setconfig_async(hfa384x_t *hw,
 
2701                               ctlx_usercb_t usercb,
 
2705 hfa384x_drvr_setconfig16_async(hfa384x_t *hw, u16 rid, u16 val)
 
2707         u16 value = host2hfa384x_16(val);
 
2708         return hfa384x_drvr_setconfig_async(hw, rid, &value, sizeof(value),
 
2713 hfa384x_drvr_setconfig32_async(hfa384x_t *hw, u16 rid, u32 val)
 
2715         u32 value = host2hfa384x_32(val);
 
2716         return hfa384x_drvr_setconfig_async(hw, rid, &value, sizeof(value),
 
2722 hfa384x_drvr_start(hfa384x_t *hw);
 
2724 hfa384x_drvr_stop(hfa384x_t *hw);
 
2726 hfa384x_drvr_txframe(hfa384x_t *hw, struct sk_buff *skb, p80211_hdr_t *p80211_hdr, p80211_metawep_t *p80211_wep);
 
2728 hfa384x_tx_timeout(wlandevice_t *wlandev);
 
2731 hfa384x_cmd_initialize(hfa384x_t *hw);
 
2733 hfa384x_cmd_enable(hfa384x_t *hw, u16 macport);
 
2735 hfa384x_cmd_disable(hfa384x_t *hw, u16 macport);
 
2737 hfa384x_cmd_diagnose(hfa384x_t *hw);
 
2739 hfa384x_cmd_allocate(hfa384x_t *hw, u16 len);
 
2741 hfa384x_cmd_transmit(hfa384x_t *hw, u16 reclaim, u16 qos, u16 fid);
 
2743 hfa384x_cmd_clearpersist(hfa384x_t *hw, u16 fid);
 
2745 hfa384x_cmd_access(hfa384x_t *hw, u16 write, u16 rid, void *buf, u16 len);
 
2747 hfa384x_cmd_monitor(hfa384x_t *hw, u16 enable);
 
2749 hfa384x_cmd_download(
 
2756 hfa384x_cmd_aux_enable(hfa384x_t *hw, int force);
 
2758 hfa384x_cmd_aux_disable(hfa384x_t *hw);
 
2760 hfa384x_copy_from_bap(
 
2768 hfa384x_copy_to_bap(
 
2776 hfa384x_copy_from_aux(
 
2783 hfa384x_copy_to_aux(
 
2790 #endif /* __KERNEL__ */
 
2792 #endif  /* _HFA384x_H */