Annotation of qemu/roms/ipxe/src/drivers/net/hfa384x.h, revision 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.