Annotation of qemu/roms/ipxe/src/drivers/net/hfa384x.h, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.