100b3ed16SGreg Kroah-Hartman /* hfa384x.h 200b3ed16SGreg Kroah-Hartman * 300b3ed16SGreg Kroah-Hartman * Defines the constants and data structures for the hfa384x 400b3ed16SGreg Kroah-Hartman * 500b3ed16SGreg Kroah-Hartman * Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved. 600b3ed16SGreg Kroah-Hartman * -------------------------------------------------------------------- 700b3ed16SGreg Kroah-Hartman * 800b3ed16SGreg Kroah-Hartman * linux-wlan 900b3ed16SGreg Kroah-Hartman * 1000b3ed16SGreg Kroah-Hartman * The contents of this file are subject to the Mozilla Public 1100b3ed16SGreg Kroah-Hartman * License Version 1.1 (the "License"); you may not use this file 1200b3ed16SGreg Kroah-Hartman * except in compliance with the License. You may obtain a copy of 1300b3ed16SGreg Kroah-Hartman * the License at http://www.mozilla.org/MPL/ 1400b3ed16SGreg Kroah-Hartman * 1500b3ed16SGreg Kroah-Hartman * Software distributed under the License is distributed on an "AS 1600b3ed16SGreg Kroah-Hartman * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or 1700b3ed16SGreg Kroah-Hartman * implied. See the License for the specific language governing 1800b3ed16SGreg Kroah-Hartman * rights and limitations under the License. 1900b3ed16SGreg Kroah-Hartman * 2000b3ed16SGreg Kroah-Hartman * Alternatively, the contents of this file may be used under the 2100b3ed16SGreg Kroah-Hartman * terms of the GNU Public License version 2 (the "GPL"), in which 2200b3ed16SGreg Kroah-Hartman * case the provisions of the GPL are applicable instead of the 2300b3ed16SGreg Kroah-Hartman * above. If you wish to allow the use of your version of this file 2400b3ed16SGreg Kroah-Hartman * only under the terms of the GPL and not to allow others to use 2500b3ed16SGreg Kroah-Hartman * your version of this file under the MPL, indicate your decision 2600b3ed16SGreg Kroah-Hartman * by deleting the provisions above and replace them with the notice 2700b3ed16SGreg Kroah-Hartman * and other provisions required by the GPL. If you do not delete 2800b3ed16SGreg Kroah-Hartman * the provisions above, a recipient may use your version of this 2900b3ed16SGreg Kroah-Hartman * file under either the MPL or the GPL. 3000b3ed16SGreg Kroah-Hartman * 3100b3ed16SGreg Kroah-Hartman * -------------------------------------------------------------------- 3200b3ed16SGreg Kroah-Hartman * 3300b3ed16SGreg Kroah-Hartman * Inquiries regarding the linux-wlan Open Source project can be 3400b3ed16SGreg Kroah-Hartman * made directly to: 3500b3ed16SGreg Kroah-Hartman * 3600b3ed16SGreg Kroah-Hartman * AbsoluteValue Systems Inc. 3700b3ed16SGreg Kroah-Hartman * info@linux-wlan.com 3800b3ed16SGreg Kroah-Hartman * http://www.linux-wlan.com 3900b3ed16SGreg Kroah-Hartman * 4000b3ed16SGreg Kroah-Hartman * -------------------------------------------------------------------- 4100b3ed16SGreg Kroah-Hartman * 4200b3ed16SGreg Kroah-Hartman * Portions of the development of this software were funded by 4300b3ed16SGreg Kroah-Hartman * Intersil Corporation as part of PRISM(R) chipset product development. 4400b3ed16SGreg Kroah-Hartman * 4500b3ed16SGreg Kroah-Hartman * -------------------------------------------------------------------- 4600b3ed16SGreg Kroah-Hartman * 4700b3ed16SGreg Kroah-Hartman * [Implementation and usage notes] 4800b3ed16SGreg Kroah-Hartman * 4900b3ed16SGreg Kroah-Hartman * [References] 5000b3ed16SGreg Kroah-Hartman * CW10 Programmer's Manual v1.5 5100b3ed16SGreg Kroah-Hartman * IEEE 802.11 D10.0 5200b3ed16SGreg Kroah-Hartman * 5300b3ed16SGreg Kroah-Hartman * -------------------------------------------------------------------- 5400b3ed16SGreg Kroah-Hartman */ 5500b3ed16SGreg Kroah-Hartman 5600b3ed16SGreg Kroah-Hartman #ifndef _HFA384x_H 5700b3ed16SGreg Kroah-Hartman #define _HFA384x_H 5800b3ed16SGreg Kroah-Hartman 5900b3ed16SGreg Kroah-Hartman /*=============================================================*/ 6000b3ed16SGreg Kroah-Hartman #define HFA384x_FIRMWARE_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) 6100b3ed16SGreg Kroah-Hartman 6200b3ed16SGreg Kroah-Hartman #define HFA384x_LEVEL_TO_dBm(v) (0x100 + (v) * 100 / 255 - 100) 6300b3ed16SGreg Kroah-Hartman 6400b3ed16SGreg Kroah-Hartman /*------ Constants --------------------------------------------*/ 6500b3ed16SGreg Kroah-Hartman /*--- Mins & Maxs -----------------------------------*/ 66aaad4303SSolomon Peachy #define HFA384x_CMD_ALLOC_LEN_MIN ((u16)4) 67aaad4303SSolomon Peachy #define HFA384x_CMD_ALLOC_LEN_MAX ((u16)2400) 68aaad4303SSolomon Peachy #define HFA384x_BAP_DATALEN_MAX ((u16)4096) 69aaad4303SSolomon Peachy #define HFA384x_BAP_OFFSET_MAX ((u16)4096) 70aaad4303SSolomon Peachy #define HFA384x_PORTID_MAX ((u16)7) 71aaad4303SSolomon Peachy #define HFA384x_NUMPORTS_MAX ((u16)(HFA384x_PORTID_MAX+1)) 72aaad4303SSolomon Peachy #define HFA384x_PDR_LEN_MAX ((u16)512) /* in bytes, from EK */ 73aaad4303SSolomon Peachy #define HFA384x_PDA_RECS_MAX ((u16)200) /* a guess */ 74aaad4303SSolomon Peachy #define HFA384x_PDA_LEN_MAX ((u16)1024) /* in bytes, from EK */ 75aaad4303SSolomon Peachy #define HFA384x_SCANRESULT_MAX ((u16)31) 76aaad4303SSolomon Peachy #define HFA384x_HSCANRESULT_MAX ((u16)31) 77aaad4303SSolomon Peachy #define HFA384x_CHINFORESULT_MAX ((u16)16) 7800b3ed16SGreg Kroah-Hartman #define HFA384x_DRVR_FIDSTACKLEN_MAX (10) 7900b3ed16SGreg Kroah-Hartman #define HFA384x_DRVR_TXBUF_MAX (sizeof(hfa384x_tx_frame_t) + \ 8000b3ed16SGreg Kroah-Hartman WLAN_DATA_MAXLEN - \ 8100b3ed16SGreg Kroah-Hartman WLAN_WEP_IV_LEN - \ 8200b3ed16SGreg Kroah-Hartman WLAN_WEP_ICV_LEN + 2) 8300b3ed16SGreg Kroah-Hartman #define HFA384x_DRVR_MAGIC (0x4a2d) 8400b3ed16SGreg Kroah-Hartman #define HFA384x_INFODATA_MAXLEN (sizeof(hfa384x_infodata_t)) 8500b3ed16SGreg Kroah-Hartman #define HFA384x_INFOFRM_MAXLEN (sizeof(hfa384x_InfFrame_t)) 8600b3ed16SGreg Kroah-Hartman #define HFA384x_RID_GUESSING_MAXLEN 2048 /* I'm not really sure */ 8700b3ed16SGreg Kroah-Hartman #define HFA384x_RIDDATA_MAXLEN HFA384x_RID_GUESSING_MAXLEN 8800b3ed16SGreg Kroah-Hartman #define HFA384x_USB_RWMEM_MAXLEN 2048 8900b3ed16SGreg Kroah-Hartman 9000b3ed16SGreg Kroah-Hartman /*--- Support Constants -----------------------------*/ 91aaad4303SSolomon Peachy #define HFA384x_BAP_PROC ((u16)0) 92aaad4303SSolomon Peachy #define HFA384x_BAP_int ((u16)1) 93aaad4303SSolomon Peachy #define HFA384x_PORTTYPE_IBSS ((u16)0) 94aaad4303SSolomon Peachy #define HFA384x_PORTTYPE_BSS ((u16)1) 95aaad4303SSolomon Peachy #define HFA384x_PORTTYPE_WDS ((u16)2) 96aaad4303SSolomon Peachy #define HFA384x_PORTTYPE_PSUEDOIBSS ((u16)3) 97aaad4303SSolomon Peachy #define HFA384x_PORTTYPE_HOSTAP ((u16)6) 98aaad4303SSolomon Peachy #define HFA384x_WEPFLAGS_PRIVINVOKED ((u16)BIT0) 99aaad4303SSolomon Peachy #define HFA384x_WEPFLAGS_EXCLUDE ((u16)BIT1) 100aaad4303SSolomon Peachy #define HFA384x_WEPFLAGS_DISABLE_TXCRYPT ((u16)BIT4) 101aaad4303SSolomon Peachy #define HFA384x_WEPFLAGS_DISABLE_RXCRYPT ((u16)BIT7) 102aaad4303SSolomon Peachy #define HFA384x_WEPFLAGS_DISALLOW_MIXED ((u16)BIT11) 103aaad4303SSolomon Peachy #define HFA384x_WEPFLAGS_IV_intERVAL1 ((u16)0) 104aaad4303SSolomon Peachy #define HFA384x_WEPFLAGS_IV_intERVAL10 ((u16)BIT5) 105aaad4303SSolomon Peachy #define HFA384x_WEPFLAGS_IV_intERVAL50 ((u16)BIT6) 106aaad4303SSolomon Peachy #define HFA384x_WEPFLAGS_IV_intERVAL100 ((u16)(BIT5 | BIT6)) 107aaad4303SSolomon Peachy #define HFA384x_WEPFLAGS_FIRMWARE_WPA ((u16)BIT8) 108aaad4303SSolomon Peachy #define HFA384x_WEPFLAGS_HOST_MIC ((u16)BIT9) 109aaad4303SSolomon Peachy #define HFA384x_ROAMMODE_FWSCAN_FWROAM ((u16)1) 110aaad4303SSolomon Peachy #define HFA384x_ROAMMODE_FWSCAN_HOSTROAM ((u16)2) 111aaad4303SSolomon Peachy #define HFA384x_ROAMMODE_HOSTSCAN_HOSTROAM ((u16)3) 112aaad4303SSolomon Peachy #define HFA384x_PORTSTATUS_DISABLED ((u16)1) 113aaad4303SSolomon Peachy #define HFA384x_PORTSTATUS_INITSRCH ((u16)2) 114aaad4303SSolomon Peachy #define HFA384x_PORTSTATUS_CONN_IBSS ((u16)3) 115aaad4303SSolomon Peachy #define HFA384x_PORTSTATUS_CONN_ESS ((u16)4) 116aaad4303SSolomon Peachy #define HFA384x_PORTSTATUS_OOR_ESS ((u16)5) 117aaad4303SSolomon Peachy #define HFA384x_PORTSTATUS_CONN_WDS ((u16)6) 118aaad4303SSolomon Peachy #define HFA384x_PORTSTATUS_HOSTAP ((u16)8) 119aaad4303SSolomon Peachy #define HFA384x_RATEBIT_1 ((u16)1) 120aaad4303SSolomon Peachy #define HFA384x_RATEBIT_2 ((u16)2) 121aaad4303SSolomon Peachy #define HFA384x_RATEBIT_5dot5 ((u16)4) 122aaad4303SSolomon Peachy #define HFA384x_RATEBIT_11 ((u16)8) 12300b3ed16SGreg Kroah-Hartman 12400b3ed16SGreg Kroah-Hartman /*--- Just some symbolic names for legibility -------*/ 125aaad4303SSolomon Peachy #define HFA384x_TXCMD_NORECL ((u16)0) 126aaad4303SSolomon Peachy #define HFA384x_TXCMD_RECL ((u16)1) 12700b3ed16SGreg Kroah-Hartman 12800b3ed16SGreg Kroah-Hartman /*--- MAC Internal memory constants and macros ------*/ 12900b3ed16SGreg Kroah-Hartman /* masks and macros used to manipulate MAC internal memory addresses. */ 13000b3ed16SGreg Kroah-Hartman /* MAC internal memory addresses are 23 bit quantities. The MAC uses 13100b3ed16SGreg Kroah-Hartman * a paged address space where the upper 16 bits are the page number 13200b3ed16SGreg Kroah-Hartman * and the lower 7 bits are the offset. There are various Host API 13300b3ed16SGreg Kroah-Hartman * elements that require two 16-bit quantities to specify a MAC 13400b3ed16SGreg Kroah-Hartman * internal memory address. Unfortunately, some of the API's use a 13500b3ed16SGreg Kroah-Hartman * page/offset format where the offset value is JUST the lower seven 13600b3ed16SGreg Kroah-Hartman * bits and the page is the remaining 16 bits. Some of the API's 13700b3ed16SGreg Kroah-Hartman * assume that the 23 bit address has been split at the 16th bit. We 13800b3ed16SGreg Kroah-Hartman * refer to these two formats as AUX format and CMD format. The 13900b3ed16SGreg Kroah-Hartman * macros below help handle some of this. 14000b3ed16SGreg Kroah-Hartman */ 14100b3ed16SGreg Kroah-Hartman 14200b3ed16SGreg Kroah-Hartman /* Handy constant */ 143aaad4303SSolomon Peachy #define HFA384x_ADDR_AUX_OFF_MAX ((u16)0x007f) 14400b3ed16SGreg Kroah-Hartman 14500b3ed16SGreg Kroah-Hartman /* Mask bits for discarding unwanted pieces in a flat address */ 14600b3ed16SGreg Kroah-Hartman #define HFA384x_ADDR_FLAT_AUX_PAGE_MASK (0x007fff80) 14700b3ed16SGreg Kroah-Hartman #define HFA384x_ADDR_FLAT_AUX_OFF_MASK (0x0000007f) 14800b3ed16SGreg Kroah-Hartman #define HFA384x_ADDR_FLAT_CMD_PAGE_MASK (0xffff0000) 14900b3ed16SGreg Kroah-Hartman #define HFA384x_ADDR_FLAT_CMD_OFF_MASK (0x0000ffff) 15000b3ed16SGreg Kroah-Hartman 15100b3ed16SGreg Kroah-Hartman /* Mask bits for discarding unwanted pieces in AUX format 16-bit address parts */ 15200b3ed16SGreg Kroah-Hartman #define HFA384x_ADDR_AUX_PAGE_MASK (0xffff) 15300b3ed16SGreg Kroah-Hartman #define HFA384x_ADDR_AUX_OFF_MASK (0x007f) 15400b3ed16SGreg Kroah-Hartman 15500b3ed16SGreg Kroah-Hartman /* Mask bits for discarding unwanted pieces in CMD format 16-bit address parts */ 15600b3ed16SGreg Kroah-Hartman #define HFA384x_ADDR_CMD_PAGE_MASK (0x007f) 15700b3ed16SGreg Kroah-Hartman #define HFA384x_ADDR_CMD_OFF_MASK (0xffff) 15800b3ed16SGreg Kroah-Hartman 15900b3ed16SGreg Kroah-Hartman /* Make a 32-bit flat address from AUX format 16-bit page and offset */ 16000b3ed16SGreg Kroah-Hartman #define HFA384x_ADDR_AUX_MKFLAT(p,o) \ 161aaad4303SSolomon Peachy (((u32)(((u16)(p))&HFA384x_ADDR_AUX_PAGE_MASK)) <<7) | \ 162aaad4303SSolomon Peachy ((u32)(((u16)(o))&HFA384x_ADDR_AUX_OFF_MASK)) 16300b3ed16SGreg Kroah-Hartman 16400b3ed16SGreg Kroah-Hartman /* Make a 32-bit flat address from CMD format 16-bit page and offset */ 16500b3ed16SGreg Kroah-Hartman #define HFA384x_ADDR_CMD_MKFLAT(p,o) \ 166aaad4303SSolomon Peachy (((u32)(((u16)(p))&HFA384x_ADDR_CMD_PAGE_MASK)) <<16) | \ 167aaad4303SSolomon Peachy ((u32)(((u16)(o))&HFA384x_ADDR_CMD_OFF_MASK)) 16800b3ed16SGreg Kroah-Hartman 16900b3ed16SGreg Kroah-Hartman /* Make AUX format offset and page from a 32-bit flat address */ 17000b3ed16SGreg Kroah-Hartman #define HFA384x_ADDR_AUX_MKPAGE(f) \ 171aaad4303SSolomon Peachy ((u16)((((u32)(f))&HFA384x_ADDR_FLAT_AUX_PAGE_MASK)>>7)) 17200b3ed16SGreg Kroah-Hartman #define HFA384x_ADDR_AUX_MKOFF(f) \ 173aaad4303SSolomon Peachy ((u16)(((u32)(f))&HFA384x_ADDR_FLAT_AUX_OFF_MASK)) 17400b3ed16SGreg Kroah-Hartman 17500b3ed16SGreg Kroah-Hartman /* Make CMD format offset and page from a 32-bit flat address */ 17600b3ed16SGreg Kroah-Hartman #define HFA384x_ADDR_CMD_MKPAGE(f) \ 177aaad4303SSolomon Peachy ((u16)((((u32)(f))&HFA384x_ADDR_FLAT_CMD_PAGE_MASK)>>16)) 17800b3ed16SGreg Kroah-Hartman #define HFA384x_ADDR_CMD_MKOFF(f) \ 179aaad4303SSolomon Peachy ((u16)(((u32)(f))&HFA384x_ADDR_FLAT_CMD_OFF_MASK)) 18000b3ed16SGreg Kroah-Hartman 18100b3ed16SGreg Kroah-Hartman /*--- Aux register masks/tests ----------------------*/ 18200b3ed16SGreg Kroah-Hartman /* Some of the upper bits of the AUX offset register are used to */ 18300b3ed16SGreg Kroah-Hartman /* select address space. */ 18400b3ed16SGreg Kroah-Hartman #define HFA384x_AUX_CTL_EXTDS (0x00) 18500b3ed16SGreg Kroah-Hartman #define HFA384x_AUX_CTL_NV (0x01) 18600b3ed16SGreg Kroah-Hartman #define HFA384x_AUX_CTL_PHY (0x02) 18700b3ed16SGreg Kroah-Hartman #define HFA384x_AUX_CTL_ICSRAM (0x03) 18800b3ed16SGreg Kroah-Hartman 18900b3ed16SGreg Kroah-Hartman /* Make AUX register offset and page values from a flat address */ 19000b3ed16SGreg Kroah-Hartman #define HFA384x_AUX_MKOFF(f, c) \ 191aaad4303SSolomon Peachy (HFA384x_ADDR_AUX_MKOFF(f) | (((u16)(c))<<12)) 19200b3ed16SGreg Kroah-Hartman #define HFA384x_AUX_MKPAGE(f) HFA384x_ADDR_AUX_MKPAGE(f) 19300b3ed16SGreg Kroah-Hartman 19400b3ed16SGreg Kroah-Hartman 19500b3ed16SGreg Kroah-Hartman /*--- Controller Memory addresses -------------------*/ 19600b3ed16SGreg Kroah-Hartman #define HFA3842_PDA_BASE (0x007f0000UL) 19700b3ed16SGreg Kroah-Hartman #define HFA3841_PDA_BASE (0x003f0000UL) 19800b3ed16SGreg Kroah-Hartman #define HFA3841_PDA_BOGUS_BASE (0x00390000UL) 19900b3ed16SGreg Kroah-Hartman 20000b3ed16SGreg Kroah-Hartman /*--- Driver Download states -----------------------*/ 20100b3ed16SGreg Kroah-Hartman #define HFA384x_DLSTATE_DISABLED 0 20200b3ed16SGreg Kroah-Hartman #define HFA384x_DLSTATE_RAMENABLED 1 20300b3ed16SGreg Kroah-Hartman #define HFA384x_DLSTATE_FLASHENABLED 2 20400b3ed16SGreg Kroah-Hartman #define HFA384x_DLSTATE_FLASHWRITTEN 3 20500b3ed16SGreg Kroah-Hartman #define HFA384x_DLSTATE_FLASHWRITEPENDING 4 20600b3ed16SGreg Kroah-Hartman #define HFA384x_DLSTATE_GENESIS 5 20700b3ed16SGreg Kroah-Hartman 20800b3ed16SGreg Kroah-Hartman #define HFA384x_CMD_OFF (0x00) 20900b3ed16SGreg Kroah-Hartman #define HFA384x_PARAM0_OFF (0x04) 21000b3ed16SGreg Kroah-Hartman #define HFA384x_PARAM1_OFF (0x08) 21100b3ed16SGreg Kroah-Hartman #define HFA384x_PARAM2_OFF (0x0c) 21200b3ed16SGreg Kroah-Hartman #define HFA384x_STATUS_OFF (0x10) 21300b3ed16SGreg Kroah-Hartman #define HFA384x_RESP0_OFF (0x14) 21400b3ed16SGreg Kroah-Hartman #define HFA384x_RESP1_OFF (0x18) 21500b3ed16SGreg Kroah-Hartman #define HFA384x_RESP2_OFF (0x1c) 21600b3ed16SGreg Kroah-Hartman #define HFA384x_INFOFID_OFF (0x20) 21700b3ed16SGreg Kroah-Hartman #define HFA384x_RXFID_OFF (0x40) 21800b3ed16SGreg Kroah-Hartman #define HFA384x_ALLOCFID_OFF (0x44) 21900b3ed16SGreg Kroah-Hartman #define HFA384x_TXCOMPLFID_OFF (0x48) 22000b3ed16SGreg Kroah-Hartman #define HFA384x_SELECT0_OFF (0x30) 22100b3ed16SGreg Kroah-Hartman #define HFA384x_OFFSET0_OFF (0x38) 22200b3ed16SGreg Kroah-Hartman #define HFA384x_DATA0_OFF (0x6c) 22300b3ed16SGreg Kroah-Hartman #define HFA384x_SELECT1_OFF (0x34) 22400b3ed16SGreg Kroah-Hartman #define HFA384x_OFFSET1_OFF (0x3c) 22500b3ed16SGreg Kroah-Hartman #define HFA384x_DATA1_OFF (0x70) 22600b3ed16SGreg Kroah-Hartman #define HFA384x_EVSTAT_OFF (0x60) 227aaad4303SSolomon Peachy #define HFA384x_intEN_OFF (0x64) 22800b3ed16SGreg Kroah-Hartman #define HFA384x_EVACK_OFF (0x68) 22900b3ed16SGreg Kroah-Hartman #define HFA384x_CONTROL_OFF (0x28) 23000b3ed16SGreg Kroah-Hartman #define HFA384x_SWSUPPORT0_OFF (0x50) 23100b3ed16SGreg Kroah-Hartman #define HFA384x_SWSUPPORT1_OFF (0x54) 23200b3ed16SGreg Kroah-Hartman #define HFA384x_SWSUPPORT2_OFF (0x58) 23300b3ed16SGreg Kroah-Hartman #define HFA384x_AUXPAGE_OFF (0x74) 23400b3ed16SGreg Kroah-Hartman #define HFA384x_AUXOFFSET_OFF (0x78) 23500b3ed16SGreg Kroah-Hartman #define HFA384x_AUXDATA_OFF (0x7c) 23600b3ed16SGreg Kroah-Hartman #define HFA384x_PCICOR_OFF (0x4c) 23700b3ed16SGreg Kroah-Hartman #define HFA384x_PCIHCR_OFF (0x5c) 23800b3ed16SGreg Kroah-Hartman #define HFA384x_PCI_M0_ADDRH_OFF (0x80) 23900b3ed16SGreg Kroah-Hartman #define HFA384x_PCI_M0_ADDRL_OFF (0x84) 24000b3ed16SGreg Kroah-Hartman #define HFA384x_PCI_M0_LEN_OFF (0x88) 24100b3ed16SGreg Kroah-Hartman #define HFA384x_PCI_M0_CTL_OFF (0x8c) 24200b3ed16SGreg Kroah-Hartman #define HFA384x_PCI_STATUS_OFF (0x98) 24300b3ed16SGreg Kroah-Hartman #define HFA384x_PCI_M1_ADDRH_OFF (0xa0) 24400b3ed16SGreg Kroah-Hartman #define HFA384x_PCI_M1_ADDRL_OFF (0xa4) 24500b3ed16SGreg Kroah-Hartman #define HFA384x_PCI_M1_LEN_OFF (0xa8) 24600b3ed16SGreg Kroah-Hartman #define HFA384x_PCI_M1_CTL_OFF (0xac) 24700b3ed16SGreg Kroah-Hartman 24800b3ed16SGreg Kroah-Hartman /*--- Register Field Masks --------------------------*/ 249aaad4303SSolomon Peachy #define HFA384x_CMD_BUSY ((u16)BIT15) 250aaad4303SSolomon Peachy #define HFA384x_CMD_AINFO ((u16)(BIT14 | BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8)) 251aaad4303SSolomon Peachy #define HFA384x_CMD_MACPORT ((u16)(BIT10 | BIT9 | BIT8)) 252aaad4303SSolomon Peachy #define HFA384x_CMD_RECL ((u16)BIT8) 253aaad4303SSolomon Peachy #define HFA384x_CMD_WRITE ((u16)BIT8) 254aaad4303SSolomon Peachy #define HFA384x_CMD_PROGMODE ((u16)(BIT9 | BIT8)) 255aaad4303SSolomon Peachy #define HFA384x_CMD_CMDCODE ((u16)(BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0)) 25600b3ed16SGreg Kroah-Hartman 257aaad4303SSolomon Peachy #define HFA384x_STATUS_RESULT ((u16)(BIT14 | BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8)) 258aaad4303SSolomon Peachy #define HFA384x_STATUS_CMDCODE ((u16)(BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0)) 25900b3ed16SGreg Kroah-Hartman 260aaad4303SSolomon Peachy #define HFA384x_OFFSET_BUSY ((u16)BIT15) 261aaad4303SSolomon Peachy #define HFA384x_OFFSET_ERR ((u16)BIT14) 262aaad4303SSolomon Peachy #define HFA384x_OFFSET_DATAOFF ((u16)(BIT11 | BIT10 | BIT9 | BIT8 | BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1)) 26300b3ed16SGreg Kroah-Hartman 264aaad4303SSolomon Peachy #define HFA384x_EVSTAT_TICK ((u16)BIT15) 265aaad4303SSolomon Peachy #define HFA384x_EVSTAT_WTERR ((u16)BIT14) 266aaad4303SSolomon Peachy #define HFA384x_EVSTAT_INFDROP ((u16)BIT13) 267aaad4303SSolomon Peachy #define HFA384x_EVSTAT_INFO ((u16)BIT7) 268aaad4303SSolomon Peachy #define HFA384x_EVSTAT_DTIM ((u16)BIT5) 269aaad4303SSolomon Peachy #define HFA384x_EVSTAT_CMD ((u16)BIT4) 270aaad4303SSolomon Peachy #define HFA384x_EVSTAT_ALLOC ((u16)BIT3) 271aaad4303SSolomon Peachy #define HFA384x_EVSTAT_TXEXC ((u16)BIT2) 272aaad4303SSolomon Peachy #define HFA384x_EVSTAT_TX ((u16)BIT1) 273aaad4303SSolomon Peachy #define HFA384x_EVSTAT_RX ((u16)BIT0) 27400b3ed16SGreg Kroah-Hartman 275aaad4303SSolomon Peachy #define HFA384x_int_BAP_OP (HFA384x_EVSTAT_INFO|HFA384x_EVSTAT_RX|HFA384x_EVSTAT_TX|HFA384x_EVSTAT_TXEXC) 27600b3ed16SGreg Kroah-Hartman 277aaad4303SSolomon Peachy #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) 27800b3ed16SGreg Kroah-Hartman 279aaad4303SSolomon Peachy #define HFA384x_intEN_TICK ((u16)BIT15) 280aaad4303SSolomon Peachy #define HFA384x_intEN_WTERR ((u16)BIT14) 281aaad4303SSolomon Peachy #define HFA384x_intEN_INFDROP ((u16)BIT13) 282aaad4303SSolomon Peachy #define HFA384x_intEN_INFO ((u16)BIT7) 283aaad4303SSolomon Peachy #define HFA384x_intEN_DTIM ((u16)BIT5) 284aaad4303SSolomon Peachy #define HFA384x_intEN_CMD ((u16)BIT4) 285aaad4303SSolomon Peachy #define HFA384x_intEN_ALLOC ((u16)BIT3) 286aaad4303SSolomon Peachy #define HFA384x_intEN_TXEXC ((u16)BIT2) 287aaad4303SSolomon Peachy #define HFA384x_intEN_TX ((u16)BIT1) 288aaad4303SSolomon Peachy #define HFA384x_intEN_RX ((u16)BIT0) 28900b3ed16SGreg Kroah-Hartman 290aaad4303SSolomon Peachy #define HFA384x_EVACK_TICK ((u16)BIT15) 291aaad4303SSolomon Peachy #define HFA384x_EVACK_WTERR ((u16)BIT14) 292aaad4303SSolomon Peachy #define HFA384x_EVACK_INFDROP ((u16)BIT13) 293aaad4303SSolomon Peachy #define HFA384x_EVACK_INFO ((u16)BIT7) 294aaad4303SSolomon Peachy #define HFA384x_EVACK_DTIM ((u16)BIT5) 295aaad4303SSolomon Peachy #define HFA384x_EVACK_CMD ((u16)BIT4) 296aaad4303SSolomon Peachy #define HFA384x_EVACK_ALLOC ((u16)BIT3) 297aaad4303SSolomon Peachy #define HFA384x_EVACK_TXEXC ((u16)BIT2) 298aaad4303SSolomon Peachy #define HFA384x_EVACK_TX ((u16)BIT1) 299aaad4303SSolomon Peachy #define HFA384x_EVACK_RX ((u16)BIT0) 30000b3ed16SGreg Kroah-Hartman 301aaad4303SSolomon Peachy #define HFA384x_CONTROL_AUXEN ((u16)(BIT15 | BIT14)) 30200b3ed16SGreg Kroah-Hartman 30300b3ed16SGreg Kroah-Hartman 30400b3ed16SGreg Kroah-Hartman /*--- Command Code Constants --------------------------*/ 30500b3ed16SGreg Kroah-Hartman /*--- Controller Commands --------------------------*/ 306aaad4303SSolomon Peachy #define HFA384x_CMDCODE_INIT ((u16)0x00) 307aaad4303SSolomon Peachy #define HFA384x_CMDCODE_ENABLE ((u16)0x01) 308aaad4303SSolomon Peachy #define HFA384x_CMDCODE_DISABLE ((u16)0x02) 309aaad4303SSolomon Peachy #define HFA384x_CMDCODE_DIAG ((u16)0x03) 31000b3ed16SGreg Kroah-Hartman 31100b3ed16SGreg Kroah-Hartman /*--- Buffer Mgmt Commands --------------------------*/ 312aaad4303SSolomon Peachy #define HFA384x_CMDCODE_ALLOC ((u16)0x0A) 313aaad4303SSolomon Peachy #define HFA384x_CMDCODE_TX ((u16)0x0B) 314aaad4303SSolomon Peachy #define HFA384x_CMDCODE_CLRPRST ((u16)0x12) 31500b3ed16SGreg Kroah-Hartman 31600b3ed16SGreg Kroah-Hartman /*--- Regulate Commands --------------------------*/ 317aaad4303SSolomon Peachy #define HFA384x_CMDCODE_NOTIFY ((u16)0x10) 318aaad4303SSolomon Peachy #define HFA384x_CMDCODE_INQ ((u16)0x11) 31900b3ed16SGreg Kroah-Hartman 32000b3ed16SGreg Kroah-Hartman /*--- Configure Commands --------------------------*/ 321aaad4303SSolomon Peachy #define HFA384x_CMDCODE_ACCESS ((u16)0x21) 322aaad4303SSolomon Peachy #define HFA384x_CMDCODE_DOWNLD ((u16)0x22) 32300b3ed16SGreg Kroah-Hartman 32400b3ed16SGreg Kroah-Hartman /*--- Debugging Commands -----------------------------*/ 325aaad4303SSolomon Peachy #define HFA384x_CMDCODE_MONITOR ((u16)(0x38)) 326aaad4303SSolomon Peachy #define HFA384x_MONITOR_ENABLE ((u16)(0x0b)) 327aaad4303SSolomon Peachy #define HFA384x_MONITOR_DISABLE ((u16)(0x0f)) 32800b3ed16SGreg Kroah-Hartman 32900b3ed16SGreg Kroah-Hartman /*--- Result Codes --------------------------*/ 330aaad4303SSolomon Peachy #define HFA384x_SUCCESS ((u16)(0x00)) 331aaad4303SSolomon Peachy #define HFA384x_CARD_FAIL ((u16)(0x01)) 332aaad4303SSolomon Peachy #define HFA384x_NO_BUFF ((u16)(0x05)) 333aaad4303SSolomon Peachy #define HFA384x_CMD_ERR ((u16)(0x7F)) 33400b3ed16SGreg Kroah-Hartman 33500b3ed16SGreg Kroah-Hartman /*--- Programming Modes -------------------------- 33600b3ed16SGreg Kroah-Hartman MODE 0: Disable programming 33700b3ed16SGreg Kroah-Hartman MODE 1: Enable volatile memory programming 33800b3ed16SGreg Kroah-Hartman MODE 2: Enable non-volatile memory programming 33900b3ed16SGreg Kroah-Hartman MODE 3: Program non-volatile memory section 34000b3ed16SGreg Kroah-Hartman --------------------------------------------------*/ 341aaad4303SSolomon Peachy #define HFA384x_PROGMODE_DISABLE ((u16)0x00) 342aaad4303SSolomon Peachy #define HFA384x_PROGMODE_RAM ((u16)0x01) 343aaad4303SSolomon Peachy #define HFA384x_PROGMODE_NV ((u16)0x02) 344aaad4303SSolomon Peachy #define HFA384x_PROGMODE_NVWRITE ((u16)0x03) 34500b3ed16SGreg Kroah-Hartman 34600b3ed16SGreg Kroah-Hartman /*--- AUX register enable --------------------------*/ 347aaad4303SSolomon Peachy #define HFA384x_AUXPW0 ((u16)0xfe01) 348aaad4303SSolomon Peachy #define HFA384x_AUXPW1 ((u16)0xdc23) 349aaad4303SSolomon Peachy #define HFA384x_AUXPW2 ((u16)0xba45) 35000b3ed16SGreg Kroah-Hartman 351aaad4303SSolomon Peachy #define HFA384x_CONTROL_AUX_ISDISABLED ((u16)0x0000) 352aaad4303SSolomon Peachy #define HFA384x_CONTROL_AUX_ISENABLED ((u16)0xc000) 353aaad4303SSolomon Peachy #define HFA384x_CONTROL_AUX_DOENABLE ((u16)0x8000) 354aaad4303SSolomon Peachy #define HFA384x_CONTROL_AUX_DODISABLE ((u16)0x4000) 35500b3ed16SGreg Kroah-Hartman 35600b3ed16SGreg Kroah-Hartman /*--- Record ID Constants --------------------------*/ 35700b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 35800b3ed16SGreg Kroah-Hartman Configuration RIDs: Network Parameters, Static Configuration Entities 35900b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 360aaad4303SSolomon Peachy #define HFA384x_RID_CNFPORTTYPE ((u16)0xFC00) 361aaad4303SSolomon Peachy #define HFA384x_RID_CNFOWNMACADDR ((u16)0xFC01) 362aaad4303SSolomon Peachy #define HFA384x_RID_CNFDESIREDSSID ((u16)0xFC02) 363aaad4303SSolomon Peachy #define HFA384x_RID_CNFOWNCHANNEL ((u16)0xFC03) 364aaad4303SSolomon Peachy #define HFA384x_RID_CNFOWNSSID ((u16)0xFC04) 365aaad4303SSolomon Peachy #define HFA384x_RID_CNFOWNATIMWIN ((u16)0xFC05) 366aaad4303SSolomon Peachy #define HFA384x_RID_CNFSYSSCALE ((u16)0xFC06) 367aaad4303SSolomon Peachy #define HFA384x_RID_CNFMAXDATALEN ((u16)0xFC07) 368aaad4303SSolomon Peachy #define HFA384x_RID_CNFWDSADDR ((u16)0xFC08) 369aaad4303SSolomon Peachy #define HFA384x_RID_CNFPMENABLED ((u16)0xFC09) 370aaad4303SSolomon Peachy #define HFA384x_RID_CNFPMEPS ((u16)0xFC0A) 371aaad4303SSolomon Peachy #define HFA384x_RID_CNFMULTICASTRX ((u16)0xFC0B) 372aaad4303SSolomon Peachy #define HFA384x_RID_CNFMAXSLEEPDUR ((u16)0xFC0C) 373aaad4303SSolomon Peachy #define HFA384x_RID_CNFPMHOLDDUR ((u16)0xFC0D) 374aaad4303SSolomon Peachy #define HFA384x_RID_CNFOWNNAME ((u16)0xFC0E) 375aaad4303SSolomon Peachy #define HFA384x_RID_CNFOWNDTIMPER ((u16)0xFC10) 376aaad4303SSolomon Peachy #define HFA384x_RID_CNFWDSADDR1 ((u16)0xFC11) 377aaad4303SSolomon Peachy #define HFA384x_RID_CNFWDSADDR2 ((u16)0xFC12) 378aaad4303SSolomon Peachy #define HFA384x_RID_CNFWDSADDR3 ((u16)0xFC13) 379aaad4303SSolomon Peachy #define HFA384x_RID_CNFWDSADDR4 ((u16)0xFC14) 380aaad4303SSolomon Peachy #define HFA384x_RID_CNFWDSADDR5 ((u16)0xFC15) 381aaad4303SSolomon Peachy #define HFA384x_RID_CNFWDSADDR6 ((u16)0xFC16) 382aaad4303SSolomon Peachy #define HFA384x_RID_CNFMCASTPMBUFF ((u16)0xFC17) 38300b3ed16SGreg Kroah-Hartman 38400b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 38500b3ed16SGreg Kroah-Hartman Configuration RID lengths: Network Params, Static Config Entities 38600b3ed16SGreg Kroah-Hartman This is the length of JUST the DATA part of the RID (does not 38700b3ed16SGreg Kroah-Hartman include the len or code fields) 38800b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 38900b3ed16SGreg Kroah-Hartman /* TODO: fill in the rest of these */ 390aaad4303SSolomon Peachy #define HFA384x_RID_CNFPORTTYPE_LEN ((u16)2) 391aaad4303SSolomon Peachy #define HFA384x_RID_CNFOWNMACADDR_LEN ((u16)6) 392aaad4303SSolomon Peachy #define HFA384x_RID_CNFDESIREDSSID_LEN ((u16)34) 393aaad4303SSolomon Peachy #define HFA384x_RID_CNFOWNCHANNEL_LEN ((u16)2) 394aaad4303SSolomon Peachy #define HFA384x_RID_CNFOWNSSID_LEN ((u16)34) 395aaad4303SSolomon Peachy #define HFA384x_RID_CNFOWNATIMWIN_LEN ((u16)2) 396aaad4303SSolomon Peachy #define HFA384x_RID_CNFSYSSCALE_LEN ((u16)0) 397aaad4303SSolomon Peachy #define HFA384x_RID_CNFMAXDATALEN_LEN ((u16)0) 398aaad4303SSolomon Peachy #define HFA384x_RID_CNFWDSADDR_LEN ((u16)6) 399aaad4303SSolomon Peachy #define HFA384x_RID_CNFPMENABLED_LEN ((u16)0) 400aaad4303SSolomon Peachy #define HFA384x_RID_CNFPMEPS_LEN ((u16)0) 401aaad4303SSolomon Peachy #define HFA384x_RID_CNFMULTICASTRX_LEN ((u16)0) 402aaad4303SSolomon Peachy #define HFA384x_RID_CNFMAXSLEEPDUR_LEN ((u16)0) 403aaad4303SSolomon Peachy #define HFA384x_RID_CNFPMHOLDDUR_LEN ((u16)0) 404aaad4303SSolomon Peachy #define HFA384x_RID_CNFOWNNAME_LEN ((u16)34) 405aaad4303SSolomon Peachy #define HFA384x_RID_CNFOWNDTIMPER_LEN ((u16)0) 406aaad4303SSolomon Peachy #define HFA384x_RID_CNFWDSADDR1_LEN ((u16)6) 407aaad4303SSolomon Peachy #define HFA384x_RID_CNFWDSADDR2_LEN ((u16)6) 408aaad4303SSolomon Peachy #define HFA384x_RID_CNFWDSADDR3_LEN ((u16)6) 409aaad4303SSolomon Peachy #define HFA384x_RID_CNFWDSADDR4_LEN ((u16)6) 410aaad4303SSolomon Peachy #define HFA384x_RID_CNFWDSADDR5_LEN ((u16)6) 411aaad4303SSolomon Peachy #define HFA384x_RID_CNFWDSADDR6_LEN ((u16)6) 412aaad4303SSolomon Peachy #define HFA384x_RID_CNFMCASTPMBUFF_LEN ((u16)0) 413aaad4303SSolomon Peachy #define HFA384x_RID_CNFAUTHENTICATION_LEN ((u16)sizeof(u16)) 414aaad4303SSolomon Peachy #define HFA384x_RID_CNFMAXSLEEPDUR_LEN ((u16)0) 41500b3ed16SGreg Kroah-Hartman 41600b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 41700b3ed16SGreg Kroah-Hartman Configuration RIDs: Network Parameters, Dynamic Configuration Entities 41800b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 419aaad4303SSolomon Peachy #define HFA384x_RID_GROUPADDR ((u16)0xFC80) 420aaad4303SSolomon Peachy #define HFA384x_RID_CREATEIBSS ((u16)0xFC81) 421aaad4303SSolomon Peachy #define HFA384x_RID_FRAGTHRESH ((u16)0xFC82) 422aaad4303SSolomon Peachy #define HFA384x_RID_RTSTHRESH ((u16)0xFC83) 423aaad4303SSolomon Peachy #define HFA384x_RID_TXRATECNTL ((u16)0xFC84) 424aaad4303SSolomon Peachy #define HFA384x_RID_PROMISCMODE ((u16)0xFC85) 425aaad4303SSolomon Peachy #define HFA384x_RID_FRAGTHRESH0 ((u16)0xFC90) 426aaad4303SSolomon Peachy #define HFA384x_RID_FRAGTHRESH1 ((u16)0xFC91) 427aaad4303SSolomon Peachy #define HFA384x_RID_FRAGTHRESH2 ((u16)0xFC92) 428aaad4303SSolomon Peachy #define HFA384x_RID_FRAGTHRESH3 ((u16)0xFC93) 429aaad4303SSolomon Peachy #define HFA384x_RID_FRAGTHRESH4 ((u16)0xFC94) 430aaad4303SSolomon Peachy #define HFA384x_RID_FRAGTHRESH5 ((u16)0xFC95) 431aaad4303SSolomon Peachy #define HFA384x_RID_FRAGTHRESH6 ((u16)0xFC96) 432aaad4303SSolomon Peachy #define HFA384x_RID_RTSTHRESH0 ((u16)0xFC97) 433aaad4303SSolomon Peachy #define HFA384x_RID_RTSTHRESH1 ((u16)0xFC98) 434aaad4303SSolomon Peachy #define HFA384x_RID_RTSTHRESH2 ((u16)0xFC99) 435aaad4303SSolomon Peachy #define HFA384x_RID_RTSTHRESH3 ((u16)0xFC9A) 436aaad4303SSolomon Peachy #define HFA384x_RID_RTSTHRESH4 ((u16)0xFC9B) 437aaad4303SSolomon Peachy #define HFA384x_RID_RTSTHRESH5 ((u16)0xFC9C) 438aaad4303SSolomon Peachy #define HFA384x_RID_RTSTHRESH6 ((u16)0xFC9D) 439aaad4303SSolomon Peachy #define HFA384x_RID_TXRATECNTL0 ((u16)0xFC9E) 440aaad4303SSolomon Peachy #define HFA384x_RID_TXRATECNTL1 ((u16)0xFC9F) 441aaad4303SSolomon Peachy #define HFA384x_RID_TXRATECNTL2 ((u16)0xFCA0) 442aaad4303SSolomon Peachy #define HFA384x_RID_TXRATECNTL3 ((u16)0xFCA1) 443aaad4303SSolomon Peachy #define HFA384x_RID_TXRATECNTL4 ((u16)0xFCA2) 444aaad4303SSolomon Peachy #define HFA384x_RID_TXRATECNTL5 ((u16)0xFCA3) 445aaad4303SSolomon Peachy #define HFA384x_RID_TXRATECNTL6 ((u16)0xFCA4) 44600b3ed16SGreg Kroah-Hartman 44700b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 44800b3ed16SGreg Kroah-Hartman Configuration RID Lengths: Network Param, Dynamic Config Entities 44900b3ed16SGreg Kroah-Hartman This is the length of JUST the DATA part of the RID (does not 45000b3ed16SGreg Kroah-Hartman include the len or code fields) 45100b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 45200b3ed16SGreg Kroah-Hartman /* TODO: fill in the rest of these */ 453aaad4303SSolomon Peachy #define HFA384x_RID_GROUPADDR_LEN ((u16)16 * WLAN_ADDR_LEN) 454aaad4303SSolomon Peachy #define HFA384x_RID_CREATEIBSS_LEN ((u16)0) 455aaad4303SSolomon Peachy #define HFA384x_RID_FRAGTHRESH_LEN ((u16)0) 456aaad4303SSolomon Peachy #define HFA384x_RID_RTSTHRESH_LEN ((u16)0) 457aaad4303SSolomon Peachy #define HFA384x_RID_TXRATECNTL_LEN ((u16)4) 458aaad4303SSolomon Peachy #define HFA384x_RID_PROMISCMODE_LEN ((u16)2) 459aaad4303SSolomon Peachy #define HFA384x_RID_FRAGTHRESH0_LEN ((u16)0) 460aaad4303SSolomon Peachy #define HFA384x_RID_FRAGTHRESH1_LEN ((u16)0) 461aaad4303SSolomon Peachy #define HFA384x_RID_FRAGTHRESH2_LEN ((u16)0) 462aaad4303SSolomon Peachy #define HFA384x_RID_FRAGTHRESH3_LEN ((u16)0) 463aaad4303SSolomon Peachy #define HFA384x_RID_FRAGTHRESH4_LEN ((u16)0) 464aaad4303SSolomon Peachy #define HFA384x_RID_FRAGTHRESH5_LEN ((u16)0) 465aaad4303SSolomon Peachy #define HFA384x_RID_FRAGTHRESH6_LEN ((u16)0) 466aaad4303SSolomon Peachy #define HFA384x_RID_RTSTHRESH0_LEN ((u16)0) 467aaad4303SSolomon Peachy #define HFA384x_RID_RTSTHRESH1_LEN ((u16)0) 468aaad4303SSolomon Peachy #define HFA384x_RID_RTSTHRESH2_LEN ((u16)0) 469aaad4303SSolomon Peachy #define HFA384x_RID_RTSTHRESH3_LEN ((u16)0) 470aaad4303SSolomon Peachy #define HFA384x_RID_RTSTHRESH4_LEN ((u16)0) 471aaad4303SSolomon Peachy #define HFA384x_RID_RTSTHRESH5_LEN ((u16)0) 472aaad4303SSolomon Peachy #define HFA384x_RID_RTSTHRESH6_LEN ((u16)0) 473aaad4303SSolomon Peachy #define HFA384x_RID_TXRATECNTL0_LEN ((u16)0) 474aaad4303SSolomon Peachy #define HFA384x_RID_TXRATECNTL1_LEN ((u16)0) 475aaad4303SSolomon Peachy #define HFA384x_RID_TXRATECNTL2_LEN ((u16)0) 476aaad4303SSolomon Peachy #define HFA384x_RID_TXRATECNTL3_LEN ((u16)0) 477aaad4303SSolomon Peachy #define HFA384x_RID_TXRATECNTL4_LEN ((u16)0) 478aaad4303SSolomon Peachy #define HFA384x_RID_TXRATECNTL5_LEN ((u16)0) 479aaad4303SSolomon Peachy #define HFA384x_RID_TXRATECNTL6_LEN ((u16)0) 48000b3ed16SGreg Kroah-Hartman 48100b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 48200b3ed16SGreg Kroah-Hartman Configuration RIDs: Behavior Parameters 48300b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 484aaad4303SSolomon Peachy #define HFA384x_RID_ITICKTIME ((u16)0xFCE0) 48500b3ed16SGreg Kroah-Hartman 48600b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 48700b3ed16SGreg Kroah-Hartman Configuration RID Lengths: Behavior Parameters 48800b3ed16SGreg Kroah-Hartman This is the length of JUST the DATA part of the RID (does not 48900b3ed16SGreg Kroah-Hartman include the len or code fields) 49000b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 491aaad4303SSolomon Peachy #define HFA384x_RID_ITICKTIME_LEN ((u16)2) 49200b3ed16SGreg Kroah-Hartman 49300b3ed16SGreg Kroah-Hartman /*---------------------------------------------------------------------- 49400b3ed16SGreg Kroah-Hartman Information RIDs: NIC Information 49500b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 496aaad4303SSolomon Peachy #define HFA384x_RID_MAXLOADTIME ((u16)0xFD00) 497aaad4303SSolomon Peachy #define HFA384x_RID_DOWNLOADBUFFER ((u16)0xFD01) 498aaad4303SSolomon Peachy #define HFA384x_RID_PRIIDENTITY ((u16)0xFD02) 499aaad4303SSolomon Peachy #define HFA384x_RID_PRISUPRANGE ((u16)0xFD03) 500aaad4303SSolomon Peachy #define HFA384x_RID_PRI_CFIACTRANGES ((u16)0xFD04) 501aaad4303SSolomon Peachy #define HFA384x_RID_NICSERIALNUMBER ((u16)0xFD0A) 502aaad4303SSolomon Peachy #define HFA384x_RID_NICIDENTITY ((u16)0xFD0B) 503aaad4303SSolomon Peachy #define HFA384x_RID_MFISUPRANGE ((u16)0xFD0C) 504aaad4303SSolomon Peachy #define HFA384x_RID_CFISUPRANGE ((u16)0xFD0D) 505aaad4303SSolomon Peachy #define HFA384x_RID_CHANNELLIST ((u16)0xFD10) 506aaad4303SSolomon Peachy #define HFA384x_RID_REGULATORYDOMAINS ((u16)0xFD11) 507aaad4303SSolomon Peachy #define HFA384x_RID_TEMPTYPE ((u16)0xFD12) 508aaad4303SSolomon Peachy #define HFA384x_RID_CIS ((u16)0xFD13) 509aaad4303SSolomon Peachy #define HFA384x_RID_STAIDENTITY ((u16)0xFD20) 510aaad4303SSolomon Peachy #define HFA384x_RID_STASUPRANGE ((u16)0xFD21) 511aaad4303SSolomon Peachy #define HFA384x_RID_STA_MFIACTRANGES ((u16)0xFD22) 512aaad4303SSolomon Peachy #define HFA384x_RID_STA_CFIACTRANGES ((u16)0xFD23) 513aaad4303SSolomon Peachy #define HFA384x_RID_BUILDSEQ ((u16)0xFFFE) 514aaad4303SSolomon Peachy #define HFA384x_RID_FWID ((u16)0xFFFF) 51500b3ed16SGreg Kroah-Hartman 51600b3ed16SGreg Kroah-Hartman /*---------------------------------------------------------------------- 51700b3ed16SGreg Kroah-Hartman Information RID Lengths: NIC Information 51800b3ed16SGreg Kroah-Hartman This is the length of JUST the DATA part of the RID (does not 51900b3ed16SGreg Kroah-Hartman include the len or code fields) 52000b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 521aaad4303SSolomon Peachy #define HFA384x_RID_MAXLOADTIME_LEN ((u16)0) 522aaad4303SSolomon Peachy #define HFA384x_RID_DOWNLOADBUFFER_LEN ((u16)sizeof(hfa384x_downloadbuffer_t)) 523aaad4303SSolomon Peachy #define HFA384x_RID_PRIIDENTITY_LEN ((u16)8) 524aaad4303SSolomon Peachy #define HFA384x_RID_PRISUPRANGE_LEN ((u16)10) 525aaad4303SSolomon Peachy #define HFA384x_RID_CFIACTRANGES_LEN ((u16)10) 526aaad4303SSolomon Peachy #define HFA384x_RID_NICSERIALNUMBER_LEN ((u16)12) 527aaad4303SSolomon Peachy #define HFA384x_RID_NICIDENTITY_LEN ((u16)8) 528aaad4303SSolomon Peachy #define HFA384x_RID_MFISUPRANGE_LEN ((u16)10) 529aaad4303SSolomon Peachy #define HFA384x_RID_CFISUPRANGE_LEN ((u16)10) 530aaad4303SSolomon Peachy #define HFA384x_RID_CHANNELLIST_LEN ((u16)0) 531aaad4303SSolomon Peachy #define HFA384x_RID_REGULATORYDOMAINS_LEN ((u16)12) 532aaad4303SSolomon Peachy #define HFA384x_RID_TEMPTYPE_LEN ((u16)0) 533aaad4303SSolomon Peachy #define HFA384x_RID_CIS_LEN ((u16)480) 534aaad4303SSolomon Peachy #define HFA384x_RID_STAIDENTITY_LEN ((u16)8) 535aaad4303SSolomon Peachy #define HFA384x_RID_STASUPRANGE_LEN ((u16)10) 536aaad4303SSolomon Peachy #define HFA384x_RID_MFIACTRANGES_LEN ((u16)10) 537aaad4303SSolomon Peachy #define HFA384x_RID_CFIACTRANGES2_LEN ((u16)10) 538aaad4303SSolomon Peachy #define HFA384x_RID_BUILDSEQ_LEN ((u16)sizeof(hfa384x_BuildSeq_t)) 539aaad4303SSolomon Peachy #define HFA384x_RID_FWID_LEN ((u16)sizeof(hfa384x_FWID_t)) 54000b3ed16SGreg Kroah-Hartman 54100b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 54200b3ed16SGreg Kroah-Hartman Information RIDs: MAC Information 54300b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 544aaad4303SSolomon Peachy #define HFA384x_RID_PORTSTATUS ((u16)0xFD40) 545aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTSSID ((u16)0xFD41) 546aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTBSSID ((u16)0xFD42) 547aaad4303SSolomon Peachy #define HFA384x_RID_COMMSQUALITY ((u16)0xFD43) 548aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTTXRATE ((u16)0xFD44) 549aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTBCNint ((u16)0xFD45) 550aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTSCALETHRESH ((u16)0xFD46) 551aaad4303SSolomon Peachy #define HFA384x_RID_PROTOCOLRSPTIME ((u16)0xFD47) 552aaad4303SSolomon Peachy #define HFA384x_RID_SHORTRETRYLIMIT ((u16)0xFD48) 553aaad4303SSolomon Peachy #define HFA384x_RID_LONGRETRYLIMIT ((u16)0xFD49) 554aaad4303SSolomon Peachy #define HFA384x_RID_MAXTXLIFETIME ((u16)0xFD4A) 555aaad4303SSolomon Peachy #define HFA384x_RID_MAXRXLIFETIME ((u16)0xFD4B) 556aaad4303SSolomon Peachy #define HFA384x_RID_CFPOLLABLE ((u16)0xFD4C) 557aaad4303SSolomon Peachy #define HFA384x_RID_AUTHALGORITHMS ((u16)0xFD4D) 558aaad4303SSolomon Peachy #define HFA384x_RID_PRIVACYOPTIMP ((u16)0xFD4F) 559aaad4303SSolomon Peachy #define HFA384x_RID_DBMCOMMSQUALITY ((u16)0xFD51) 560aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTTXRATE1 ((u16)0xFD80) 561aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTTXRATE2 ((u16)0xFD81) 562aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTTXRATE3 ((u16)0xFD82) 563aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTTXRATE4 ((u16)0xFD83) 564aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTTXRATE5 ((u16)0xFD84) 565aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTTXRATE6 ((u16)0xFD85) 566aaad4303SSolomon Peachy #define HFA384x_RID_OWNMACADDRESS ((u16)0xFD86) 567aaad4303SSolomon Peachy // #define HFA384x_RID_PCFINFO ((u16)0xFD87) 568aaad4303SSolomon Peachy #define HFA384x_RID_SCANRESULTS ((u16)0xFD88) // NEW 569aaad4303SSolomon Peachy #define HFA384x_RID_HOSTSCANRESULTS ((u16)0xFD89) // NEW 570aaad4303SSolomon Peachy #define HFA384x_RID_AUTHENTICATIONUSED ((u16)0xFD8A) // NEW 571aaad4303SSolomon Peachy #define HFA384x_RID_ASSOCIATEFAILURE ((u16)0xFD8D) // 1.8.0 57200b3ed16SGreg Kroah-Hartman 57300b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 57400b3ed16SGreg Kroah-Hartman Information RID Lengths: MAC Information 57500b3ed16SGreg Kroah-Hartman This is the length of JUST the DATA part of the RID (does not 57600b3ed16SGreg Kroah-Hartman include the len or code fields) 57700b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 578aaad4303SSolomon Peachy #define HFA384x_RID_PORTSTATUS_LEN ((u16)0) 579aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTSSID_LEN ((u16)34) 580aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTBSSID_LEN ((u16)WLAN_BSSID_LEN) 581aaad4303SSolomon Peachy #define HFA384x_RID_COMMSQUALITY_LEN ((u16)sizeof(hfa384x_commsquality_t)) 582aaad4303SSolomon Peachy #define HFA384x_RID_DBMCOMMSQUALITY_LEN ((u16)sizeof(hfa384x_dbmcommsquality_t)) 583aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTTXRATE_LEN ((u16)0) 584aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTBCNint_LEN ((u16)0) 585aaad4303SSolomon Peachy #define HFA384x_RID_STACURSCALETHRESH_LEN ((u16)12) 586aaad4303SSolomon Peachy #define HFA384x_RID_APCURSCALETHRESH_LEN ((u16)6) 587aaad4303SSolomon Peachy #define HFA384x_RID_PROTOCOLRSPTIME_LEN ((u16)0) 588aaad4303SSolomon Peachy #define HFA384x_RID_SHORTRETRYLIMIT_LEN ((u16)0) 589aaad4303SSolomon Peachy #define HFA384x_RID_LONGRETRYLIMIT_LEN ((u16)0) 590aaad4303SSolomon Peachy #define HFA384x_RID_MAXTXLIFETIME_LEN ((u16)0) 591aaad4303SSolomon Peachy #define HFA384x_RID_MAXRXLIFETIME_LEN ((u16)0) 592aaad4303SSolomon Peachy #define HFA384x_RID_CFPOLLABLE_LEN ((u16)0) 593aaad4303SSolomon Peachy #define HFA384x_RID_AUTHALGORITHMS_LEN ((u16)4) 594aaad4303SSolomon Peachy #define HFA384x_RID_PRIVACYOPTIMP_LEN ((u16)0) 595aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTTXRATE1_LEN ((u16)0) 596aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTTXRATE2_LEN ((u16)0) 597aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTTXRATE3_LEN ((u16)0) 598aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTTXRATE4_LEN ((u16)0) 599aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTTXRATE5_LEN ((u16)0) 600aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTTXRATE6_LEN ((u16)0) 601aaad4303SSolomon Peachy #define HFA384x_RID_OWNMACADDRESS_LEN ((u16)6) 602aaad4303SSolomon Peachy #define HFA384x_RID_PCFINFO_LEN ((u16)6) 603aaad4303SSolomon Peachy #define HFA384x_RID_CNFAPPCFINFO_LEN ((u16)sizeof(hfa384x_PCFInfo_data_t)) 604aaad4303SSolomon Peachy #define HFA384x_RID_SCANREQUEST_LEN ((u16)sizeof(hfa384x_ScanRequest_data_t)) 605aaad4303SSolomon Peachy #define HFA384x_RID_JOINREQUEST_LEN ((u16)sizeof(hfa384x_JoinRequest_data_t)) 606aaad4303SSolomon Peachy #define HFA384x_RID_AUTHENTICATESTA_LEN ((u16)sizeof(hfa384x_authenticateStation_data_t)) 607aaad4303SSolomon Peachy #define HFA384x_RID_CHANNELINFOREQUEST_LEN ((u16)sizeof(hfa384x_ChannelInfoRequest_data_t)) 60800b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 60900b3ed16SGreg Kroah-Hartman Information RIDs: Modem Information 61000b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 611aaad4303SSolomon Peachy #define HFA384x_RID_PHYTYPE ((u16)0xFDC0) 612aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTCHANNEL ((u16)0xFDC1) 613aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTPOWERSTATE ((u16)0xFDC2) 614aaad4303SSolomon Peachy #define HFA384x_RID_CCAMODE ((u16)0xFDC3) 615aaad4303SSolomon Peachy #define HFA384x_RID_SUPPORTEDDATARATES ((u16)0xFDC6) 616aaad4303SSolomon Peachy #define HFA384x_RID_LFOSTATUS ((u16)0xFDC7) // 1.7.1 61700b3ed16SGreg Kroah-Hartman 61800b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 61900b3ed16SGreg Kroah-Hartman Information RID Lengths: Modem Information 62000b3ed16SGreg Kroah-Hartman This is the length of JUST the DATA part of the RID (does not 62100b3ed16SGreg Kroah-Hartman include the len or code fields) 62200b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 623aaad4303SSolomon Peachy #define HFA384x_RID_PHYTYPE_LEN ((u16)0) 624aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTCHANNEL_LEN ((u16)0) 625aaad4303SSolomon Peachy #define HFA384x_RID_CURRENTPOWERSTATE_LEN ((u16)0) 626aaad4303SSolomon Peachy #define HFA384x_RID_CCAMODE_LEN ((u16)0) 627aaad4303SSolomon Peachy #define HFA384x_RID_SUPPORTEDDATARATES_LEN ((u16)10) 62800b3ed16SGreg Kroah-Hartman 62900b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 63000b3ed16SGreg Kroah-Hartman API ENHANCEMENTS (NOT ALREADY IMPLEMENTED) 63100b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 632aaad4303SSolomon Peachy #define HFA384x_RID_CNFWEPDEFAULTKEYID ((u16)0xFC23) 633aaad4303SSolomon Peachy #define HFA384x_RID_CNFWEPDEFAULTKEY0 ((u16)0xFC24) 634aaad4303SSolomon Peachy #define HFA384x_RID_CNFWEPDEFAULTKEY1 ((u16)0xFC25) 635aaad4303SSolomon Peachy #define HFA384x_RID_CNFWEPDEFAULTKEY2 ((u16)0xFC26) 636aaad4303SSolomon Peachy #define HFA384x_RID_CNFWEPDEFAULTKEY3 ((u16)0xFC27) 637aaad4303SSolomon Peachy #define HFA384x_RID_CNFWEPFLAGS ((u16)0xFC28) 638aaad4303SSolomon Peachy #define HFA384x_RID_CNFWEPKEYMAPTABLE ((u16)0xFC29) 639aaad4303SSolomon Peachy #define HFA384x_RID_CNFAUTHENTICATION ((u16)0xFC2A) 640aaad4303SSolomon Peachy #define HFA384x_RID_CNFMAXASSOCSTATIONS ((u16)0xFC2B) 641aaad4303SSolomon Peachy #define HFA384x_RID_CNFTXCONTROL ((u16)0xFC2C) 642aaad4303SSolomon Peachy #define HFA384x_RID_CNFROAMINGMODE ((u16)0xFC2D) 643aaad4303SSolomon Peachy #define HFA384x_RID_CNFHOSTAUTHASSOC ((u16)0xFC2E) 644aaad4303SSolomon Peachy #define HFA384x_RID_CNFRCVCRCERROR ((u16)0xFC30) 645aaad4303SSolomon Peachy // #define HFA384x_RID_CNFMMLIFE ((u16)0xFC31) 646aaad4303SSolomon Peachy #define HFA384x_RID_CNFALTRETRYCNT ((u16)0xFC32) 647aaad4303SSolomon Peachy #define HFA384x_RID_CNFAPBCNint ((u16)0xFC33) 648aaad4303SSolomon Peachy #define HFA384x_RID_CNFAPPCFINFO ((u16)0xFC34) 649aaad4303SSolomon Peachy #define HFA384x_RID_CNFSTAPCFINFO ((u16)0xFC35) 650aaad4303SSolomon Peachy #define HFA384x_RID_CNFPRIORITYQUSAGE ((u16)0xFC37) 651aaad4303SSolomon Peachy #define HFA384x_RID_CNFTIMCTRL ((u16)0xFC40) 652aaad4303SSolomon Peachy #define HFA384x_RID_CNFTHIRTY2TALLY ((u16)0xFC42) 653aaad4303SSolomon Peachy #define HFA384x_RID_CNFENHSECURITY ((u16)0xFC43) 654aaad4303SSolomon Peachy #define HFA384x_RID_CNFDBMADJUST ((u16)0xFC46) // NEW 655aaad4303SSolomon Peachy #define HFA384x_RID_CNFWPADATA ((u16)0xFC48) // 1.7.0 656aaad4303SSolomon Peachy #define HFA384x_RID_CNFPROPOGATIONDELAY ((u16)0xFC49) // 1.7.6 657aaad4303SSolomon Peachy #define HFA384x_RID_CNFSHORTPREAMBLE ((u16)0xFCB0) 658aaad4303SSolomon Peachy #define HFA384x_RID_CNFEXCLONGPREAMBLE ((u16)0xFCB1) 659aaad4303SSolomon Peachy #define HFA384x_RID_CNFAUTHRSPTIMEOUT ((u16)0xFCB2) 660aaad4303SSolomon Peachy #define HFA384x_RID_CNFBASICRATES ((u16)0xFCB3) 661aaad4303SSolomon Peachy #define HFA384x_RID_CNFSUPPRATES ((u16)0xFCB4) 662aaad4303SSolomon Peachy #define HFA384x_RID_CNFFALLBACKCTRL ((u16)0xFCB5) // NEW 663aaad4303SSolomon Peachy #define HFA384x_RID_WEPKEYSTATUS ((u16)0xFCB6) // NEW 664aaad4303SSolomon Peachy #define HFA384x_RID_WEPKEYMAPINDEX ((u16)0xFCB7) // NEW 665aaad4303SSolomon Peachy #define HFA384x_RID_BROADCASTKEYID ((u16)0xFCB8) // NEW 666aaad4303SSolomon Peachy #define HFA384x_RID_ENTSECFLAGEYID ((u16)0xFCB9) // NEW 667aaad4303SSolomon Peachy #define HFA384x_RID_CNFPASSIVESCANCTRL ((u16)0xFCBA) // NEW STA 668aaad4303SSolomon Peachy #define HFA384x_RID_CNFWPAHANDLING ((u16)0xFCBB) // 1.7.0 669aaad4303SSolomon Peachy #define HFA384x_RID_MDCCONTROL ((u16)0xFCBC) // 1.7.0/1.4.0 670aaad4303SSolomon Peachy #define HFA384x_RID_MDCCOUNTRY ((u16)0xFCBD) // 1.7.0/1.4.0 671aaad4303SSolomon Peachy #define HFA384x_RID_TXPOWERMAX ((u16)0xFCBE) // 1.7.0/1.4.0 672aaad4303SSolomon Peachy #define HFA384x_RID_CNFLFOENBLED ((u16)0xFCBF) // 1.6.3 673aaad4303SSolomon Peachy #define HFA384x_RID_CAPINFO ((u16)0xFCC0) // 1.7.0/1.3.7 674aaad4303SSolomon Peachy #define HFA384x_RID_LISTENintERVAL ((u16)0xFCC1) // 1.7.0/1.3.7 675aaad4303SSolomon Peachy #define HFA384x_RID_DIVERSITYENABLED ((u16)0xFCC2) // 1.7.0/1.3.7 676aaad4303SSolomon Peachy #define HFA384x_RID_LED_CONTROL ((u16)0xFCC4) // 1.7.6 677aaad4303SSolomon Peachy #define HFA384x_RID_HFO_DELAY ((u16)0xFCC5) // 1.7.6 678aaad4303SSolomon Peachy #define HFA384x_RID_DISSALOWEDBSSID ((u16)0xFCC6) // 1.8.0 679aaad4303SSolomon Peachy #define HFA384x_RID_SCANREQUEST ((u16)0xFCE1) 680aaad4303SSolomon Peachy #define HFA384x_RID_JOINREQUEST ((u16)0xFCE2) 681aaad4303SSolomon Peachy #define HFA384x_RID_AUTHENTICATESTA ((u16)0xFCE3) 682aaad4303SSolomon Peachy #define HFA384x_RID_CHANNELINFOREQUEST ((u16)0xFCE4) 683aaad4303SSolomon Peachy #define HFA384x_RID_HOSTSCAN ((u16)0xFCE5) // NEW STA 684aaad4303SSolomon Peachy #define HFA384x_RID_ASSOCIATESTA ((u16)0xFCE6) 68500b3ed16SGreg Kroah-Hartman 686aaad4303SSolomon Peachy #define HFA384x_RID_CNFWEPDEFAULTKEY_LEN ((u16)6) 687aaad4303SSolomon Peachy #define HFA384x_RID_CNFWEP128DEFAULTKEY_LEN ((u16)14) 688aaad4303SSolomon Peachy #define HFA384x_RID_CNFPRIOQUSAGE_LEN ((u16)4) 68900b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 69000b3ed16SGreg Kroah-Hartman PD Record codes 69100b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 692aaad4303SSolomon Peachy #define HFA384x_PDR_PCB_PARTNUM ((u16)0x0001) 693aaad4303SSolomon Peachy #define HFA384x_PDR_PDAVER ((u16)0x0002) 694aaad4303SSolomon Peachy #define HFA384x_PDR_NIC_SERIAL ((u16)0x0003) 695aaad4303SSolomon Peachy #define HFA384x_PDR_MKK_MEASUREMENTS ((u16)0x0004) 696aaad4303SSolomon Peachy #define HFA384x_PDR_NIC_RAMSIZE ((u16)0x0005) 697aaad4303SSolomon Peachy #define HFA384x_PDR_MFISUPRANGE ((u16)0x0006) 698aaad4303SSolomon Peachy #define HFA384x_PDR_CFISUPRANGE ((u16)0x0007) 699aaad4303SSolomon Peachy #define HFA384x_PDR_NICID ((u16)0x0008) 700aaad4303SSolomon Peachy //#define HFA384x_PDR_REFDAC_MEASUREMENTS ((u16)0x0010) 701aaad4303SSolomon Peachy //#define HFA384x_PDR_VGDAC_MEASUREMENTS ((u16)0x0020) 702aaad4303SSolomon Peachy //#define HFA384x_PDR_LEVEL_COMP_MEASUREMENTS ((u16)0x0030) 703aaad4303SSolomon Peachy //#define HFA384x_PDR_MODEM_TRIMDAC_MEASUREMENTS ((u16)0x0040) 704aaad4303SSolomon Peachy //#define HFA384x_PDR_COREGA_HACK ((u16)0x00ff) 705aaad4303SSolomon Peachy #define HFA384x_PDR_MAC_ADDRESS ((u16)0x0101) 706aaad4303SSolomon Peachy //#define HFA384x_PDR_MKK_CALLNAME ((u16)0x0102) 707aaad4303SSolomon Peachy #define HFA384x_PDR_REGDOMAIN ((u16)0x0103) 708aaad4303SSolomon Peachy #define HFA384x_PDR_ALLOWED_CHANNEL ((u16)0x0104) 709aaad4303SSolomon Peachy #define HFA384x_PDR_DEFAULT_CHANNEL ((u16)0x0105) 710aaad4303SSolomon Peachy //#define HFA384x_PDR_PRIVACY_OPTION ((u16)0x0106) 711aaad4303SSolomon Peachy #define HFA384x_PDR_TEMPTYPE ((u16)0x0107) 712aaad4303SSolomon Peachy //#define HFA384x_PDR_REFDAC_SETUP ((u16)0x0110) 713aaad4303SSolomon Peachy //#define HFA384x_PDR_VGDAC_SETUP ((u16)0x0120) 714aaad4303SSolomon Peachy //#define HFA384x_PDR_LEVEL_COMP_SETUP ((u16)0x0130) 715aaad4303SSolomon Peachy //#define HFA384x_PDR_TRIMDAC_SETUP ((u16)0x0140) 716aaad4303SSolomon Peachy #define HFA384x_PDR_IFR_SETTING ((u16)0x0200) 717aaad4303SSolomon Peachy #define HFA384x_PDR_RFR_SETTING ((u16)0x0201) 718aaad4303SSolomon Peachy #define HFA384x_PDR_HFA3861_BASELINE ((u16)0x0202) 719aaad4303SSolomon Peachy #define HFA384x_PDR_HFA3861_SHADOW ((u16)0x0203) 720aaad4303SSolomon Peachy #define HFA384x_PDR_HFA3861_IFRF ((u16)0x0204) 721aaad4303SSolomon Peachy #define HFA384x_PDR_HFA3861_CHCALSP ((u16)0x0300) 722aaad4303SSolomon Peachy #define HFA384x_PDR_HFA3861_CHCALI ((u16)0x0301) 723aaad4303SSolomon Peachy #define HFA384x_PDR_MAX_TX_POWER ((u16)0x0302) 724aaad4303SSolomon Peachy #define HFA384x_PDR_MASTER_CHAN_LIST ((u16)0x0303) 725aaad4303SSolomon Peachy #define HFA384x_PDR_3842_NIC_CONFIG ((u16)0x0400) 726aaad4303SSolomon Peachy #define HFA384x_PDR_USB_ID ((u16)0x0401) 727aaad4303SSolomon Peachy #define HFA384x_PDR_PCI_ID ((u16)0x0402) 728aaad4303SSolomon Peachy #define HFA384x_PDR_PCI_IFCONF ((u16)0x0403) 729aaad4303SSolomon Peachy #define HFA384x_PDR_PCI_PMCONF ((u16)0x0404) 730aaad4303SSolomon Peachy #define HFA384x_PDR_RFENRGY ((u16)0x0406) 731aaad4303SSolomon Peachy #define HFA384x_PDR_USB_POWER_TYPE ((u16)0x0407) 732aaad4303SSolomon Peachy //#define HFA384x_PDR_UNKNOWN408 ((u16)0x0408) 733aaad4303SSolomon Peachy #define HFA384x_PDR_USB_MAX_POWER ((u16)0x0409) 734aaad4303SSolomon Peachy #define HFA384x_PDR_USB_MANUFACTURER ((u16)0x0410) 735aaad4303SSolomon Peachy #define HFA384x_PDR_USB_PRODUCT ((u16)0x0411) 736aaad4303SSolomon Peachy #define HFA384x_PDR_ANT_DIVERSITY ((u16)0x0412) 737aaad4303SSolomon Peachy #define HFA384x_PDR_HFO_DELAY ((u16)0x0413) 738aaad4303SSolomon Peachy #define HFA384x_PDR_SCALE_THRESH ((u16)0x0414) 73900b3ed16SGreg Kroah-Hartman 740aaad4303SSolomon Peachy #define HFA384x_PDR_HFA3861_MANF_TESTSP ((u16)0x0900) 741aaad4303SSolomon Peachy #define HFA384x_PDR_HFA3861_MANF_TESTI ((u16)0x0901) 742aaad4303SSolomon Peachy #define HFA384x_PDR_END_OF_PDA ((u16)0x0000) 74300b3ed16SGreg Kroah-Hartman 74400b3ed16SGreg Kroah-Hartman 74500b3ed16SGreg Kroah-Hartman /*=============================================================*/ 74600b3ed16SGreg Kroah-Hartman /*------ Macros -----------------------------------------------*/ 74700b3ed16SGreg Kroah-Hartman 74800b3ed16SGreg Kroah-Hartman /*--- Register ID macros ------------------------*/ 74900b3ed16SGreg Kroah-Hartman 75000b3ed16SGreg Kroah-Hartman #define HFA384x_CMD HFA384x_CMD_OFF 75100b3ed16SGreg Kroah-Hartman #define HFA384x_PARAM0 HFA384x_PARAM0_OFF 75200b3ed16SGreg Kroah-Hartman #define HFA384x_PARAM1 HFA384x_PARAM1_OFF 75300b3ed16SGreg Kroah-Hartman #define HFA384x_PARAM2 HFA384x_PARAM2_OFF 75400b3ed16SGreg Kroah-Hartman #define HFA384x_STATUS HFA384x_STATUS_OFF 75500b3ed16SGreg Kroah-Hartman #define HFA384x_RESP0 HFA384x_RESP0_OFF 75600b3ed16SGreg Kroah-Hartman #define HFA384x_RESP1 HFA384x_RESP1_OFF 75700b3ed16SGreg Kroah-Hartman #define HFA384x_RESP2 HFA384x_RESP2_OFF 75800b3ed16SGreg Kroah-Hartman #define HFA384x_INFOFID HFA384x_INFOFID_OFF 75900b3ed16SGreg Kroah-Hartman #define HFA384x_RXFID HFA384x_RXFID_OFF 76000b3ed16SGreg Kroah-Hartman #define HFA384x_ALLOCFID HFA384x_ALLOCFID_OFF 76100b3ed16SGreg Kroah-Hartman #define HFA384x_TXCOMPLFID HFA384x_TXCOMPLFID_OFF 76200b3ed16SGreg Kroah-Hartman #define HFA384x_SELECT0 HFA384x_SELECT0_OFF 76300b3ed16SGreg Kroah-Hartman #define HFA384x_OFFSET0 HFA384x_OFFSET0_OFF 76400b3ed16SGreg Kroah-Hartman #define HFA384x_DATA0 HFA384x_DATA0_OFF 76500b3ed16SGreg Kroah-Hartman #define HFA384x_SELECT1 HFA384x_SELECT1_OFF 76600b3ed16SGreg Kroah-Hartman #define HFA384x_OFFSET1 HFA384x_OFFSET1_OFF 76700b3ed16SGreg Kroah-Hartman #define HFA384x_DATA1 HFA384x_DATA1_OFF 76800b3ed16SGreg Kroah-Hartman #define HFA384x_EVSTAT HFA384x_EVSTAT_OFF 769aaad4303SSolomon Peachy #define HFA384x_intEN HFA384x_INTEN_OFF 77000b3ed16SGreg Kroah-Hartman #define HFA384x_EVACK HFA384x_EVACK_OFF 77100b3ed16SGreg Kroah-Hartman #define HFA384x_CONTROL HFA384x_CONTROL_OFF 77200b3ed16SGreg Kroah-Hartman #define HFA384x_SWSUPPORT0 HFA384x_SWSUPPORT0_OFF 77300b3ed16SGreg Kroah-Hartman #define HFA384x_SWSUPPORT1 HFA384x_SWSUPPORT1_OFF 77400b3ed16SGreg Kroah-Hartman #define HFA384x_SWSUPPORT2 HFA384x_SWSUPPORT2_OFF 77500b3ed16SGreg Kroah-Hartman #define HFA384x_AUXPAGE HFA384x_AUXPAGE_OFF 77600b3ed16SGreg Kroah-Hartman #define HFA384x_AUXOFFSET HFA384x_AUXOFFSET_OFF 77700b3ed16SGreg Kroah-Hartman #define HFA384x_AUXDATA HFA384x_AUXDATA_OFF 77800b3ed16SGreg Kroah-Hartman #define HFA384x_PCICOR HFA384x_PCICOR_OFF 77900b3ed16SGreg Kroah-Hartman #define HFA384x_PCIHCR HFA384x_PCIHCR_OFF 78000b3ed16SGreg Kroah-Hartman 78100b3ed16SGreg Kroah-Hartman 78200b3ed16SGreg Kroah-Hartman /*--- Register Test/Get/Set Field macros ------------------------*/ 78300b3ed16SGreg Kroah-Hartman 784aaad4303SSolomon Peachy #define HFA384x_CMD_ISBUSY(value) ((u16)(((u16)value) & HFA384x_CMD_BUSY)) 785aaad4303SSolomon Peachy #define HFA384x_CMD_AINFO_GET(value) ((u16)(((u16)(value) & HFA384x_CMD_AINFO) >> 8)) 786aaad4303SSolomon Peachy #define HFA384x_CMD_AINFO_SET(value) ((u16)((u16)(value) << 8)) 787aaad4303SSolomon Peachy #define HFA384x_CMD_MACPORT_GET(value) ((u16)(HFA384x_CMD_AINFO_GET((u16)(value) & HFA384x_CMD_MACPORT))) 788aaad4303SSolomon Peachy #define HFA384x_CMD_MACPORT_SET(value) ((u16)HFA384x_CMD_AINFO_SET(value)) 789aaad4303SSolomon Peachy #define HFA384x_CMD_ISRECL(value) ((u16)(HFA384x_CMD_AINFO_GET((u16)(value) & HFA384x_CMD_RECL))) 790aaad4303SSolomon Peachy #define HFA384x_CMD_RECL_SET(value) ((u16)HFA384x_CMD_AINFO_SET(value)) 791aaad4303SSolomon Peachy #define HFA384x_CMD_QOS_GET(value) ((u16)((((u16)(value))&((u16)0x3000)) >> 12)) 792aaad4303SSolomon Peachy #define HFA384x_CMD_QOS_SET(value) ((u16)((((u16)(value)) << 12) & 0x3000)) 793aaad4303SSolomon Peachy #define HFA384x_CMD_ISWRITE(value) ((u16)(HFA384x_CMD_AINFO_GET((u16)(value) & HFA384x_CMD_WRITE))) 794aaad4303SSolomon Peachy #define HFA384x_CMD_WRITE_SET(value) ((u16)HFA384x_CMD_AINFO_SET((u16)value)) 795aaad4303SSolomon Peachy #define HFA384x_CMD_PROGMODE_GET(value) ((u16)(HFA384x_CMD_AINFO_GET((u16)(value) & HFA384x_CMD_PROGMODE))) 796aaad4303SSolomon Peachy #define HFA384x_CMD_PROGMODE_SET(value) ((u16)HFA384x_CMD_AINFO_SET((u16)value)) 797aaad4303SSolomon Peachy #define HFA384x_CMD_CMDCODE_GET(value) ((u16)(((u16)(value)) & HFA384x_CMD_CMDCODE)) 798aaad4303SSolomon Peachy #define HFA384x_CMD_CMDCODE_SET(value) ((u16)(value)) 79900b3ed16SGreg Kroah-Hartman 800aaad4303SSolomon Peachy #define HFA384x_STATUS_RESULT_GET(value) ((u16)((((u16)(value)) & HFA384x_STATUS_RESULT) >> 8)) 801aaad4303SSolomon Peachy #define HFA384x_STATUS_RESULT_SET(value) (((u16)(value)) << 8) 802aaad4303SSolomon Peachy #define HFA384x_STATUS_CMDCODE_GET(value) (((u16)(value)) & HFA384x_STATUS_CMDCODE) 803aaad4303SSolomon Peachy #define HFA384x_STATUS_CMDCODE_SET(value) ((u16)(value)) 80400b3ed16SGreg Kroah-Hartman 805aaad4303SSolomon Peachy #define HFA384x_OFFSET_ISBUSY(value) ((u16)(((u16)(value)) & HFA384x_OFFSET_BUSY)) 806aaad4303SSolomon Peachy #define HFA384x_OFFSET_ISERR(value) ((u16)(((u16)(value)) & HFA384x_OFFSET_ERR)) 807aaad4303SSolomon Peachy #define HFA384x_OFFSET_DATAOFF_GET(value) ((u16)(((u16)(value)) & HFA384x_OFFSET_DATAOFF)) 808aaad4303SSolomon Peachy #define HFA384x_OFFSET_DATAOFF_SET(value) ((u16)(value)) 80900b3ed16SGreg Kroah-Hartman 810aaad4303SSolomon Peachy #define HFA384x_EVSTAT_ISTICK(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_TICK)) 811aaad4303SSolomon Peachy #define HFA384x_EVSTAT_ISWTERR(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_WTERR)) 812aaad4303SSolomon Peachy #define HFA384x_EVSTAT_ISINFDROP(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_INFDROP)) 813aaad4303SSolomon Peachy #define HFA384x_EVSTAT_ISINFO(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_INFO)) 814aaad4303SSolomon Peachy #define HFA384x_EVSTAT_ISDTIM(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_DTIM)) 815aaad4303SSolomon Peachy #define HFA384x_EVSTAT_ISCMD(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_CMD)) 816aaad4303SSolomon Peachy #define HFA384x_EVSTAT_ISALLOC(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_ALLOC)) 817aaad4303SSolomon Peachy #define HFA384x_EVSTAT_ISTXEXC(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_TXEXC)) 818aaad4303SSolomon Peachy #define HFA384x_EVSTAT_ISTX(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_TX)) 819aaad4303SSolomon Peachy #define HFA384x_EVSTAT_ISRX(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_RX)) 82000b3ed16SGreg Kroah-Hartman 821aaad4303SSolomon Peachy #define HFA384x_EVSTAT_ISBAP_OP(value) ((u16)(((u16)(value)) & HFA384x_int_BAP_OP)) 82200b3ed16SGreg Kroah-Hartman 823aaad4303SSolomon Peachy #define HFA384x_intEN_ISTICK(value) ((u16)(((u16)(value)) & HFA384x_INTEN_TICK)) 824aaad4303SSolomon Peachy #define HFA384x_intEN_TICK_SET(value) ((u16)(((u16)(value)) << 15)) 825aaad4303SSolomon Peachy #define HFA384x_intEN_ISWTERR(value) ((u16)(((u16)(value)) & HFA384x_INTEN_WTERR)) 826aaad4303SSolomon Peachy #define HFA384x_intEN_WTERR_SET(value) ((u16)(((u16)(value)) << 14)) 827aaad4303SSolomon Peachy #define HFA384x_intEN_ISINFDROP(value) ((u16)(((u16)(value)) & HFA384x_INTEN_INFDROP)) 828aaad4303SSolomon Peachy #define HFA384x_intEN_INFDROP_SET(value) ((u16)(((u16)(value)) << 13)) 829aaad4303SSolomon Peachy #define HFA384x_intEN_ISINFO(value) ((u16)(((u16)(value)) & HFA384x_INTEN_INFO)) 830aaad4303SSolomon Peachy #define HFA384x_intEN_INFO_SET(value) ((u16)(((u16)(value)) << 7)) 831aaad4303SSolomon Peachy #define HFA384x_intEN_ISDTIM(value) ((u16)(((u16)(value)) & HFA384x_INTEN_DTIM)) 832aaad4303SSolomon Peachy #define HFA384x_intEN_DTIM_SET(value) ((u16)(((u16)(value)) << 5)) 833aaad4303SSolomon Peachy #define HFA384x_intEN_ISCMD(value) ((u16)(((u16)(value)) & HFA384x_INTEN_CMD)) 834aaad4303SSolomon Peachy #define HFA384x_intEN_CMD_SET(value) ((u16)(((u16)(value)) << 4)) 835aaad4303SSolomon Peachy #define HFA384x_intEN_ISALLOC(value) ((u16)(((u16)(value)) & HFA384x_INTEN_ALLOC)) 836aaad4303SSolomon Peachy #define HFA384x_intEN_ALLOC_SET(value) ((u16)(((u16)(value)) << 3)) 837aaad4303SSolomon Peachy #define HFA384x_intEN_ISTXEXC(value) ((u16)(((u16)(value)) & HFA384x_INTEN_TXEXC)) 838aaad4303SSolomon Peachy #define HFA384x_intEN_TXEXC_SET(value) ((u16)(((u16)(value)) << 2)) 839aaad4303SSolomon Peachy #define HFA384x_intEN_ISTX(value) ((u16)(((u16)(value)) & HFA384x_INTEN_TX)) 840aaad4303SSolomon Peachy #define HFA384x_intEN_TX_SET(value) ((u16)(((u16)(value)) << 1)) 841aaad4303SSolomon Peachy #define HFA384x_intEN_ISRX(value) ((u16)(((u16)(value)) & HFA384x_INTEN_RX)) 842aaad4303SSolomon Peachy #define HFA384x_intEN_RX_SET(value) ((u16)(((u16)(value)) << 0)) 84300b3ed16SGreg Kroah-Hartman 844aaad4303SSolomon Peachy #define HFA384x_EVACK_ISTICK(value) ((u16)(((u16)(value)) & HFA384x_EVACK_TICK)) 845aaad4303SSolomon Peachy #define HFA384x_EVACK_TICK_SET(value) ((u16)(((u16)(value)) << 15)) 846aaad4303SSolomon Peachy #define HFA384x_EVACK_ISWTERR(value) ((u16)(((u16)(value)) & HFA384x_EVACK_WTERR)) 847aaad4303SSolomon Peachy #define HFA384x_EVACK_WTERR_SET(value) ((u16)(((u16)(value)) << 14)) 848aaad4303SSolomon Peachy #define HFA384x_EVACK_ISINFDROP(value) ((u16)(((u16)(value)) & HFA384x_EVACK_INFDROP)) 849aaad4303SSolomon Peachy #define HFA384x_EVACK_INFDROP_SET(value) ((u16)(((u16)(value)) << 13)) 850aaad4303SSolomon Peachy #define HFA384x_EVACK_ISINFO(value) ((u16)(((u16)(value)) & HFA384x_EVACK_INFO)) 851aaad4303SSolomon Peachy #define HFA384x_EVACK_INFO_SET(value) ((u16)(((u16)(value)) << 7)) 852aaad4303SSolomon Peachy #define HFA384x_EVACK_ISDTIM(value) ((u16)(((u16)(value)) & HFA384x_EVACK_DTIM)) 853aaad4303SSolomon Peachy #define HFA384x_EVACK_DTIM_SET(value) ((u16)(((u16)(value)) << 5)) 854aaad4303SSolomon Peachy #define HFA384x_EVACK_ISCMD(value) ((u16)(((u16)(value)) & HFA384x_EVACK_CMD)) 855aaad4303SSolomon Peachy #define HFA384x_EVACK_CMD_SET(value) ((u16)(((u16)(value)) << 4)) 856aaad4303SSolomon Peachy #define HFA384x_EVACK_ISALLOC(value) ((u16)(((u16)(value)) & HFA384x_EVACK_ALLOC)) 857aaad4303SSolomon Peachy #define HFA384x_EVACK_ALLOC_SET(value) ((u16)(((u16)(value)) << 3)) 858aaad4303SSolomon Peachy #define HFA384x_EVACK_ISTXEXC(value) ((u16)(((u16)(value)) & HFA384x_EVACK_TXEXC)) 859aaad4303SSolomon Peachy #define HFA384x_EVACK_TXEXC_SET(value) ((u16)(((u16)(value)) << 2)) 860aaad4303SSolomon Peachy #define HFA384x_EVACK_ISTX(value) ((u16)(((u16)(value)) & HFA384x_EVACK_TX)) 861aaad4303SSolomon Peachy #define HFA384x_EVACK_TX_SET(value) ((u16)(((u16)(value)) << 1)) 862aaad4303SSolomon Peachy #define HFA384x_EVACK_ISRX(value) ((u16)(((u16)(value)) & HFA384x_EVACK_RX)) 863aaad4303SSolomon Peachy #define HFA384x_EVACK_RX_SET(value) ((u16)(((u16)(value)) << 0)) 86400b3ed16SGreg Kroah-Hartman 865aaad4303SSolomon Peachy #define HFA384x_CONTROL_AUXEN_SET(value) ((u16)(((u16)(value)) << 14)) 866aaad4303SSolomon Peachy #define HFA384x_CONTROL_AUXEN_GET(value) ((u16)(((u16)(value)) >> 14)) 86700b3ed16SGreg Kroah-Hartman 86800b3ed16SGreg Kroah-Hartman /* Byte Order */ 86900b3ed16SGreg Kroah-Hartman #ifdef __KERNEL__ 870aaad4303SSolomon Peachy #define hfa384x2host_16(n) (__le16_to_cpu((u16)(n))) 871aaad4303SSolomon Peachy #define hfa384x2host_32(n) (__le32_to_cpu((u32)(n))) 872aaad4303SSolomon Peachy #define host2hfa384x_16(n) (__cpu_to_le16((u16)(n))) 873aaad4303SSolomon Peachy #define host2hfa384x_32(n) (__cpu_to_le32((u32)(n))) 87400b3ed16SGreg Kroah-Hartman #endif 87500b3ed16SGreg Kroah-Hartman 87600b3ed16SGreg Kroah-Hartman /* Host Maintained State Info */ 87700b3ed16SGreg Kroah-Hartman #define HFA384x_STATE_PREINIT 0 87800b3ed16SGreg Kroah-Hartman #define HFA384x_STATE_INIT 1 87900b3ed16SGreg Kroah-Hartman #define HFA384x_STATE_RUNNING 2 88000b3ed16SGreg Kroah-Hartman 88100b3ed16SGreg Kroah-Hartman /*=============================================================*/ 88200b3ed16SGreg Kroah-Hartman /*------ Types and their related constants --------------------*/ 88300b3ed16SGreg Kroah-Hartman 88400b3ed16SGreg Kroah-Hartman #define HFA384x_HOSTAUTHASSOC_HOSTAUTH BIT0 88500b3ed16SGreg Kroah-Hartman #define HFA384x_HOSTAUTHASSOC_HOSTASSOC BIT1 88600b3ed16SGreg Kroah-Hartman 88700b3ed16SGreg Kroah-Hartman #define HFA384x_WHAHANDLING_DISABLED 0 88800b3ed16SGreg Kroah-Hartman #define HFA384x_WHAHANDLING_PASSTHROUGH BIT1 88900b3ed16SGreg Kroah-Hartman 89000b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------*/ 89100b3ed16SGreg Kroah-Hartman /* Commonly used basic types */ 89200b3ed16SGreg Kroah-Hartman typedef struct hfa384x_bytestr 89300b3ed16SGreg Kroah-Hartman { 894aaad4303SSolomon Peachy u16 len; 895aaad4303SSolomon Peachy u8 data[0]; 89600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_bytestr_t; 89700b3ed16SGreg Kroah-Hartman 89800b3ed16SGreg Kroah-Hartman typedef struct hfa384x_bytestr32 89900b3ed16SGreg Kroah-Hartman { 900aaad4303SSolomon Peachy u16 len; 901aaad4303SSolomon Peachy u8 data[32]; 90200b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_bytestr32_t; 90300b3ed16SGreg Kroah-Hartman 90400b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 90500b3ed16SGreg Kroah-Hartman Configuration Record Structures: 90600b3ed16SGreg Kroah-Hartman Network Parameters, Static Configuration Entities 90700b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 90800b3ed16SGreg Kroah-Hartman /* Prototype structure: all configuration record structures start with 90900b3ed16SGreg Kroah-Hartman these members */ 91000b3ed16SGreg Kroah-Hartman 91100b3ed16SGreg Kroah-Hartman typedef struct hfa384x_record 91200b3ed16SGreg Kroah-Hartman { 913aaad4303SSolomon Peachy u16 reclen; 914aaad4303SSolomon Peachy u16 rid; 91500b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_rec_t; 91600b3ed16SGreg Kroah-Hartman 91700b3ed16SGreg Kroah-Hartman typedef struct hfa384x_record16 91800b3ed16SGreg Kroah-Hartman { 919aaad4303SSolomon Peachy u16 reclen; 920aaad4303SSolomon Peachy u16 rid; 921aaad4303SSolomon Peachy u16 val; 92200b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_rec16_t; 92300b3ed16SGreg Kroah-Hartman 92400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_record32 92500b3ed16SGreg Kroah-Hartman { 926aaad4303SSolomon Peachy u16 reclen; 927aaad4303SSolomon Peachy u16 rid; 928aaad4303SSolomon Peachy u32 val; 92900b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_rec32; 93000b3ed16SGreg Kroah-Hartman 93100b3ed16SGreg Kroah-Hartman /*-- Hardware/Firmware Component Information ----------*/ 93200b3ed16SGreg Kroah-Hartman typedef struct hfa384x_compident 93300b3ed16SGreg Kroah-Hartman { 934aaad4303SSolomon Peachy u16 id; 935aaad4303SSolomon Peachy u16 variant; 936aaad4303SSolomon Peachy u16 major; 937aaad4303SSolomon Peachy u16 minor; 93800b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_compident_t; 93900b3ed16SGreg Kroah-Hartman 94000b3ed16SGreg Kroah-Hartman typedef struct hfa384x_caplevel 94100b3ed16SGreg Kroah-Hartman { 942aaad4303SSolomon Peachy u16 role; 943aaad4303SSolomon Peachy u16 id; 944aaad4303SSolomon Peachy u16 variant; 945aaad4303SSolomon Peachy u16 bottom; 946aaad4303SSolomon Peachy u16 top; 94700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_caplevel_t; 94800b3ed16SGreg Kroah-Hartman 94900b3ed16SGreg Kroah-Hartman /*-- Configuration Record: cnfPortType --*/ 95000b3ed16SGreg Kroah-Hartman typedef struct hfa384x_cnfPortType 95100b3ed16SGreg Kroah-Hartman { 952aaad4303SSolomon Peachy u16 cnfPortType; 95300b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_cnfPortType_t; 95400b3ed16SGreg Kroah-Hartman 95500b3ed16SGreg Kroah-Hartman /*-- Configuration Record: cnfOwnMACAddress --*/ 95600b3ed16SGreg Kroah-Hartman typedef struct hfa384x_cnfOwnMACAddress 95700b3ed16SGreg Kroah-Hartman { 958aaad4303SSolomon Peachy u8 cnfOwnMACAddress[6]; 95900b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnMACAddress_t; 96000b3ed16SGreg Kroah-Hartman 96100b3ed16SGreg Kroah-Hartman /*-- Configuration Record: cnfDesiredSSID --*/ 96200b3ed16SGreg Kroah-Hartman typedef struct hfa384x_cnfDesiredSSID 96300b3ed16SGreg Kroah-Hartman { 964aaad4303SSolomon Peachy u8 cnfDesiredSSID[34]; 96500b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_cnfDesiredSSID_t; 96600b3ed16SGreg Kroah-Hartman 96700b3ed16SGreg Kroah-Hartman /*-- Configuration Record: cnfOwnChannel --*/ 96800b3ed16SGreg Kroah-Hartman typedef struct hfa384x_cnfOwnChannel 96900b3ed16SGreg Kroah-Hartman { 970aaad4303SSolomon Peachy u16 cnfOwnChannel; 97100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnChannel_t; 97200b3ed16SGreg Kroah-Hartman 97300b3ed16SGreg Kroah-Hartman /*-- Configuration Record: cnfOwnSSID --*/ 97400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_cnfOwnSSID 97500b3ed16SGreg Kroah-Hartman { 976aaad4303SSolomon Peachy u8 cnfOwnSSID[34]; 97700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnSSID_t; 97800b3ed16SGreg Kroah-Hartman 97900b3ed16SGreg Kroah-Hartman /*-- Configuration Record: cnfOwnATIMWindow --*/ 98000b3ed16SGreg Kroah-Hartman typedef struct hfa384x_cnfOwnATIMWindow 98100b3ed16SGreg Kroah-Hartman { 982aaad4303SSolomon Peachy u16 cnfOwnATIMWindow; 98300b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnATIMWindow_t; 98400b3ed16SGreg Kroah-Hartman 98500b3ed16SGreg Kroah-Hartman /*-- Configuration Record: cnfSystemScale --*/ 98600b3ed16SGreg Kroah-Hartman typedef struct hfa384x_cnfSystemScale 98700b3ed16SGreg Kroah-Hartman { 988aaad4303SSolomon Peachy u16 cnfSystemScale; 98900b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_cnfSystemScale_t; 99000b3ed16SGreg Kroah-Hartman 99100b3ed16SGreg Kroah-Hartman /*-- Configuration Record: cnfMaxDataLength --*/ 99200b3ed16SGreg Kroah-Hartman typedef struct hfa384x_cnfMaxDataLength 99300b3ed16SGreg Kroah-Hartman { 994aaad4303SSolomon Peachy u16 cnfMaxDataLength; 99500b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_cnfMaxDataLength_t; 99600b3ed16SGreg Kroah-Hartman 99700b3ed16SGreg Kroah-Hartman /*-- Configuration Record: cnfWDSAddress --*/ 99800b3ed16SGreg Kroah-Hartman typedef struct hfa384x_cnfWDSAddress 99900b3ed16SGreg Kroah-Hartman { 1000aaad4303SSolomon Peachy u8 cnfWDSAddress[6]; 100100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_cnfWDSAddress_t; 100200b3ed16SGreg Kroah-Hartman 100300b3ed16SGreg Kroah-Hartman /*-- Configuration Record: cnfPMEnabled --*/ 100400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_cnfPMEnabled 100500b3ed16SGreg Kroah-Hartman { 1006aaad4303SSolomon Peachy u16 cnfPMEnabled; 100700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_cnfPMEnabled_t; 100800b3ed16SGreg Kroah-Hartman 100900b3ed16SGreg Kroah-Hartman /*-- Configuration Record: cnfPMEPS --*/ 101000b3ed16SGreg Kroah-Hartman typedef struct hfa384x_cnfPMEPS 101100b3ed16SGreg Kroah-Hartman { 1012aaad4303SSolomon Peachy u16 cnfPMEPS; 101300b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_cnfPMEPS_t; 101400b3ed16SGreg Kroah-Hartman 101500b3ed16SGreg Kroah-Hartman /*-- Configuration Record: cnfMulticastReceive --*/ 101600b3ed16SGreg Kroah-Hartman typedef struct hfa384x_cnfMulticastReceive 101700b3ed16SGreg Kroah-Hartman { 1018aaad4303SSolomon Peachy u16 cnfMulticastReceive; 101900b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_cnfMulticastReceive_t; 102000b3ed16SGreg Kroah-Hartman 102100b3ed16SGreg Kroah-Hartman /*-- Configuration Record: cnfAuthentication --*/ 102200b3ed16SGreg Kroah-Hartman #define HFA384x_CNFAUTHENTICATION_OPENSYSTEM 0x0001 102300b3ed16SGreg Kroah-Hartman #define HFA384x_CNFAUTHENTICATION_SHAREDKEY 0x0002 102400b3ed16SGreg Kroah-Hartman #define HFA384x_CNFAUTHENTICATION_LEAP 0x0004 102500b3ed16SGreg Kroah-Hartman 102600b3ed16SGreg Kroah-Hartman /*-- Configuration Record: cnfMaxSleepDuration --*/ 102700b3ed16SGreg Kroah-Hartman typedef struct hfa384x_cnfMaxSleepDuration 102800b3ed16SGreg Kroah-Hartman { 1029aaad4303SSolomon Peachy u16 cnfMaxSleepDuration; 103000b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_cnfMaxSleepDuration_t; 103100b3ed16SGreg Kroah-Hartman 103200b3ed16SGreg Kroah-Hartman /*-- Configuration Record: cnfPMHoldoverDuration --*/ 103300b3ed16SGreg Kroah-Hartman typedef struct hfa384x_cnfPMHoldoverDuration 103400b3ed16SGreg Kroah-Hartman { 1035aaad4303SSolomon Peachy u16 cnfPMHoldoverDuration; 103600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_cnfPMHoldoverDuration_t; 103700b3ed16SGreg Kroah-Hartman 103800b3ed16SGreg Kroah-Hartman /*-- Configuration Record: cnfOwnName --*/ 103900b3ed16SGreg Kroah-Hartman typedef struct hfa384x_cnfOwnName 104000b3ed16SGreg Kroah-Hartman { 1041aaad4303SSolomon Peachy u8 cnfOwnName[34]; 104200b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnName_t; 104300b3ed16SGreg Kroah-Hartman 104400b3ed16SGreg Kroah-Hartman /*-- Configuration Record: cnfOwnDTIMPeriod --*/ 104500b3ed16SGreg Kroah-Hartman typedef struct hfa384x_cnfOwnDTIMPeriod 104600b3ed16SGreg Kroah-Hartman { 1047aaad4303SSolomon Peachy u16 cnfOwnDTIMPeriod; 104800b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnDTIMPeriod_t; 104900b3ed16SGreg Kroah-Hartman 105000b3ed16SGreg Kroah-Hartman /*-- Configuration Record: cnfWDSAddress --*/ 105100b3ed16SGreg Kroah-Hartman typedef struct hfa384x_cnfWDSAddressN 105200b3ed16SGreg Kroah-Hartman { 1053aaad4303SSolomon Peachy u8 cnfWDSAddress[6]; 105400b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_cnfWDSAddressN_t; 105500b3ed16SGreg Kroah-Hartman 105600b3ed16SGreg Kroah-Hartman /*-- Configuration Record: cnfMulticastPMBuffering --*/ 105700b3ed16SGreg Kroah-Hartman typedef struct hfa384x_cnfMulticastPMBuffering 105800b3ed16SGreg Kroah-Hartman { 1059aaad4303SSolomon Peachy u16 cnfMulticastPMBuffering; 106000b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_cnfMulticastPMBuffering_t; 106100b3ed16SGreg Kroah-Hartman 106200b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 106300b3ed16SGreg Kroah-Hartman Configuration Record Structures: 106400b3ed16SGreg Kroah-Hartman Network Parameters, Dynamic Configuration Entities 106500b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 106600b3ed16SGreg Kroah-Hartman 106700b3ed16SGreg Kroah-Hartman /*-- Configuration Record: GroupAddresses --*/ 106800b3ed16SGreg Kroah-Hartman typedef struct hfa384x_GroupAddresses 106900b3ed16SGreg Kroah-Hartman { 1070aaad4303SSolomon Peachy u8 MACAddress[16][6]; 107100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_GroupAddresses_t; 107200b3ed16SGreg Kroah-Hartman 107300b3ed16SGreg Kroah-Hartman /*-- Configuration Record: CreateIBSS --*/ 107400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_CreateIBSS 107500b3ed16SGreg Kroah-Hartman { 1076aaad4303SSolomon Peachy u16 CreateIBSS; 107700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_CreateIBSS_t; 107800b3ed16SGreg Kroah-Hartman 107900b3ed16SGreg Kroah-Hartman #define HFA384x_CREATEIBSS_JOINCREATEIBSS 0 108000b3ed16SGreg Kroah-Hartman #define HFA384x_CREATEIBSS_JOINESS_JOINCREATEIBSS 1 108100b3ed16SGreg Kroah-Hartman #define HFA384x_CREATEIBSS_JOINIBSS 2 108200b3ed16SGreg Kroah-Hartman #define HFA384x_CREATEIBSS_JOINESS_JOINIBSS 3 108300b3ed16SGreg Kroah-Hartman 108400b3ed16SGreg Kroah-Hartman /*-- Configuration Record: FragmentationThreshold --*/ 108500b3ed16SGreg Kroah-Hartman typedef struct hfa384x_FragmentationThreshold 108600b3ed16SGreg Kroah-Hartman { 1087aaad4303SSolomon Peachy u16 FragmentationThreshold; 108800b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_FragmentationThreshold_t; 108900b3ed16SGreg Kroah-Hartman 109000b3ed16SGreg Kroah-Hartman /*-- Configuration Record: RTSThreshold --*/ 109100b3ed16SGreg Kroah-Hartman typedef struct hfa384x_RTSThreshold 109200b3ed16SGreg Kroah-Hartman { 1093aaad4303SSolomon Peachy u16 RTSThreshold; 109400b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_RTSThreshold_t; 109500b3ed16SGreg Kroah-Hartman 109600b3ed16SGreg Kroah-Hartman /*-- Configuration Record: TxRateControl --*/ 109700b3ed16SGreg Kroah-Hartman typedef struct hfa384x_TxRateControl 109800b3ed16SGreg Kroah-Hartman { 1099aaad4303SSolomon Peachy u16 TxRateControl; 110000b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_TxRateControl_t; 110100b3ed16SGreg Kroah-Hartman 110200b3ed16SGreg Kroah-Hartman /*-- Configuration Record: PromiscuousMode --*/ 110300b3ed16SGreg Kroah-Hartman typedef struct hfa384x_PromiscuousMode 110400b3ed16SGreg Kroah-Hartman { 1105aaad4303SSolomon Peachy u16 PromiscuousMode; 110600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_PromiscuousMode_t; 110700b3ed16SGreg Kroah-Hartman 110800b3ed16SGreg Kroah-Hartman /*-- Configuration Record: ScanRequest (data portion only) --*/ 110900b3ed16SGreg Kroah-Hartman typedef struct hfa384x_ScanRequest_data 111000b3ed16SGreg Kroah-Hartman { 1111aaad4303SSolomon Peachy u16 channelList; 1112aaad4303SSolomon Peachy u16 txRate; 111300b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_ScanRequest_data_t; 111400b3ed16SGreg Kroah-Hartman 111500b3ed16SGreg Kroah-Hartman /*-- Configuration Record: HostScanRequest (data portion only) --*/ 111600b3ed16SGreg Kroah-Hartman typedef struct hfa384x_HostScanRequest_data 111700b3ed16SGreg Kroah-Hartman { 1118aaad4303SSolomon Peachy u16 channelList; 1119aaad4303SSolomon Peachy u16 txRate; 112000b3ed16SGreg Kroah-Hartman hfa384x_bytestr32_t ssid; 112100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_HostScanRequest_data_t; 112200b3ed16SGreg Kroah-Hartman 112300b3ed16SGreg Kroah-Hartman /*-- Configuration Record: JoinRequest (data portion only) --*/ 112400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_JoinRequest_data 112500b3ed16SGreg Kroah-Hartman { 1126aaad4303SSolomon Peachy u8 bssid[WLAN_BSSID_LEN]; 1127aaad4303SSolomon Peachy u16 channel; 112800b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_JoinRequest_data_t; 112900b3ed16SGreg Kroah-Hartman 113000b3ed16SGreg Kroah-Hartman /*-- Configuration Record: authenticateStation (data portion only) --*/ 113100b3ed16SGreg Kroah-Hartman typedef struct hfa384x_authenticateStation_data 113200b3ed16SGreg Kroah-Hartman { 1133aaad4303SSolomon Peachy u8 address[WLAN_ADDR_LEN]; 1134aaad4303SSolomon Peachy u16 status; 1135aaad4303SSolomon Peachy u16 algorithm; 113600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_authenticateStation_data_t; 113700b3ed16SGreg Kroah-Hartman 113800b3ed16SGreg Kroah-Hartman /*-- Configuration Record: associateStation (data portion only) --*/ 113900b3ed16SGreg Kroah-Hartman typedef struct hfa384x_associateStation_data 114000b3ed16SGreg Kroah-Hartman { 1141aaad4303SSolomon Peachy u8 address[WLAN_ADDR_LEN]; 1142aaad4303SSolomon Peachy u16 status; 1143aaad4303SSolomon Peachy u16 type; 114400b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_associateStation_data_t; 114500b3ed16SGreg Kroah-Hartman 114600b3ed16SGreg Kroah-Hartman /*-- Configuration Record: ChannelInfoRequest (data portion only) --*/ 114700b3ed16SGreg Kroah-Hartman typedef struct hfa384x_ChannelInfoRequest_data 114800b3ed16SGreg Kroah-Hartman { 1149aaad4303SSolomon Peachy u16 channelList; 1150aaad4303SSolomon Peachy u16 channelDwellTime; 115100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_ChannelInfoRequest_data_t; 115200b3ed16SGreg Kroah-Hartman 115300b3ed16SGreg Kroah-Hartman /*-- Configuration Record: WEPKeyMapping (data portion only) --*/ 115400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_WEPKeyMapping 115500b3ed16SGreg Kroah-Hartman { 1156aaad4303SSolomon Peachy u8 address[WLAN_ADDR_LEN]; 1157aaad4303SSolomon Peachy u16 key_index; 1158aaad4303SSolomon Peachy u8 key[16]; 1159aaad4303SSolomon Peachy u8 mic_transmit_key[4]; 1160aaad4303SSolomon Peachy u8 mic_receive_key[4]; 116100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_WEPKeyMapping_t; 116200b3ed16SGreg Kroah-Hartman 116300b3ed16SGreg Kroah-Hartman /*-- Configuration Record: WPAData (data portion only) --*/ 116400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_WPAData 116500b3ed16SGreg Kroah-Hartman { 1166aaad4303SSolomon Peachy u16 datalen; 1167aaad4303SSolomon Peachy u8 data[0]; // max 80 116800b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_WPAData_t; 116900b3ed16SGreg Kroah-Hartman 117000b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 117100b3ed16SGreg Kroah-Hartman Configuration Record Structures: Behavior Parameters 117200b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 117300b3ed16SGreg Kroah-Hartman 117400b3ed16SGreg Kroah-Hartman /*-- Configuration Record: TickTime --*/ 117500b3ed16SGreg Kroah-Hartman typedef struct hfa384x_TickTime 117600b3ed16SGreg Kroah-Hartman { 1177aaad4303SSolomon Peachy u16 TickTime; 117800b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_TickTime_t; 117900b3ed16SGreg Kroah-Hartman 118000b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 118100b3ed16SGreg Kroah-Hartman Information Record Structures: NIC Information 118200b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 118300b3ed16SGreg Kroah-Hartman 118400b3ed16SGreg Kroah-Hartman /*-- Information Record: MaxLoadTime --*/ 118500b3ed16SGreg Kroah-Hartman typedef struct hfa384x_MaxLoadTime 118600b3ed16SGreg Kroah-Hartman { 1187aaad4303SSolomon Peachy u16 MaxLoadTime; 118800b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_MaxLoadTime_t; 118900b3ed16SGreg Kroah-Hartman 119000b3ed16SGreg Kroah-Hartman /*-- Information Record: DownLoadBuffer --*/ 119100b3ed16SGreg Kroah-Hartman /* NOTE: The page and offset are in AUX format */ 119200b3ed16SGreg Kroah-Hartman typedef struct hfa384x_downloadbuffer 119300b3ed16SGreg Kroah-Hartman { 1194aaad4303SSolomon Peachy u16 page; 1195aaad4303SSolomon Peachy u16 offset; 1196aaad4303SSolomon Peachy u16 len; 119700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_downloadbuffer_t; 119800b3ed16SGreg Kroah-Hartman 119900b3ed16SGreg Kroah-Hartman /*-- Information Record: PRIIdentity --*/ 120000b3ed16SGreg Kroah-Hartman typedef struct hfa384x_PRIIdentity 120100b3ed16SGreg Kroah-Hartman { 1202aaad4303SSolomon Peachy u16 PRICompID; 1203aaad4303SSolomon Peachy u16 PRIVariant; 1204aaad4303SSolomon Peachy u16 PRIMajorVersion; 1205aaad4303SSolomon Peachy u16 PRIMinorVersion; 120600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_PRIIdentity_t; 120700b3ed16SGreg Kroah-Hartman 120800b3ed16SGreg Kroah-Hartman /*-- Information Record: PRISupRange --*/ 120900b3ed16SGreg Kroah-Hartman typedef struct hfa384x_PRISupRange 121000b3ed16SGreg Kroah-Hartman { 1211aaad4303SSolomon Peachy u16 PRIRole; 1212aaad4303SSolomon Peachy u16 PRIID; 1213aaad4303SSolomon Peachy u16 PRIVariant; 1214aaad4303SSolomon Peachy u16 PRIBottom; 1215aaad4303SSolomon Peachy u16 PRITop; 121600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_PRISupRange_t; 121700b3ed16SGreg Kroah-Hartman 121800b3ed16SGreg Kroah-Hartman /*-- Information Record: CFIActRanges --*/ 121900b3ed16SGreg Kroah-Hartman typedef struct hfa384x_CFIActRanges 122000b3ed16SGreg Kroah-Hartman { 1221aaad4303SSolomon Peachy u16 CFIRole; 1222aaad4303SSolomon Peachy u16 CFIID; 1223aaad4303SSolomon Peachy u16 CFIVariant; 1224aaad4303SSolomon Peachy u16 CFIBottom; 1225aaad4303SSolomon Peachy u16 CFITop; 122600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_CFIActRanges_t; 122700b3ed16SGreg Kroah-Hartman 122800b3ed16SGreg Kroah-Hartman /*-- Information Record: NICSerialNumber --*/ 122900b3ed16SGreg Kroah-Hartman typedef struct hfa384x_NICSerialNumber 123000b3ed16SGreg Kroah-Hartman { 1231aaad4303SSolomon Peachy u8 NICSerialNumber[12]; 123200b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_NICSerialNumber_t; 123300b3ed16SGreg Kroah-Hartman 123400b3ed16SGreg Kroah-Hartman /*-- Information Record: NICIdentity --*/ 123500b3ed16SGreg Kroah-Hartman typedef struct hfa384x_NICIdentity 123600b3ed16SGreg Kroah-Hartman { 1237aaad4303SSolomon Peachy u16 NICCompID; 1238aaad4303SSolomon Peachy u16 NICVariant; 1239aaad4303SSolomon Peachy u16 NICMajorVersion; 1240aaad4303SSolomon Peachy u16 NICMinorVersion; 124100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_NICIdentity_t; 124200b3ed16SGreg Kroah-Hartman 124300b3ed16SGreg Kroah-Hartman /*-- Information Record: MFISupRange --*/ 124400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_MFISupRange 124500b3ed16SGreg Kroah-Hartman { 1246aaad4303SSolomon Peachy u16 MFIRole; 1247aaad4303SSolomon Peachy u16 MFIID; 1248aaad4303SSolomon Peachy u16 MFIVariant; 1249aaad4303SSolomon Peachy u16 MFIBottom; 1250aaad4303SSolomon Peachy u16 MFITop; 125100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_MFISupRange_t; 125200b3ed16SGreg Kroah-Hartman 125300b3ed16SGreg Kroah-Hartman /*-- Information Record: CFISupRange --*/ 125400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_CFISupRange 125500b3ed16SGreg Kroah-Hartman { 1256aaad4303SSolomon Peachy u16 CFIRole; 1257aaad4303SSolomon Peachy u16 CFIID; 1258aaad4303SSolomon Peachy u16 CFIVariant; 1259aaad4303SSolomon Peachy u16 CFIBottom; 1260aaad4303SSolomon Peachy u16 CFITop; 126100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_CFISupRange_t; 126200b3ed16SGreg Kroah-Hartman 126300b3ed16SGreg Kroah-Hartman /*-- Information Record: BUILDSEQ:BuildSeq --*/ 126400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_BuildSeq { 1265aaad4303SSolomon Peachy u16 primary; 1266aaad4303SSolomon Peachy u16 secondary; 126700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_BuildSeq_t; 126800b3ed16SGreg Kroah-Hartman 126900b3ed16SGreg Kroah-Hartman /*-- Information Record: FWID --*/ 127000b3ed16SGreg Kroah-Hartman #define HFA384x_FWID_LEN 14 127100b3ed16SGreg Kroah-Hartman typedef struct hfa384x_FWID { 1272aaad4303SSolomon Peachy u8 primary[HFA384x_FWID_LEN]; 1273aaad4303SSolomon Peachy u8 secondary[HFA384x_FWID_LEN]; 127400b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_FWID_t; 127500b3ed16SGreg Kroah-Hartman 127600b3ed16SGreg Kroah-Hartman /*-- Information Record: ChannelList --*/ 127700b3ed16SGreg Kroah-Hartman typedef struct hfa384x_ChannelList 127800b3ed16SGreg Kroah-Hartman { 1279aaad4303SSolomon Peachy u16 ChannelList; 128000b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_ChannelList_t; 128100b3ed16SGreg Kroah-Hartman 128200b3ed16SGreg Kroah-Hartman /*-- Information Record: RegulatoryDomains --*/ 128300b3ed16SGreg Kroah-Hartman typedef struct hfa384x_RegulatoryDomains 128400b3ed16SGreg Kroah-Hartman { 1285aaad4303SSolomon Peachy u8 RegulatoryDomains[12]; 128600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_RegulatoryDomains_t; 128700b3ed16SGreg Kroah-Hartman 128800b3ed16SGreg Kroah-Hartman /*-- Information Record: TempType --*/ 128900b3ed16SGreg Kroah-Hartman typedef struct hfa384x_TempType 129000b3ed16SGreg Kroah-Hartman { 1291aaad4303SSolomon Peachy u16 TempType; 129200b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_TempType_t; 129300b3ed16SGreg Kroah-Hartman 129400b3ed16SGreg Kroah-Hartman /*-- Information Record: CIS --*/ 129500b3ed16SGreg Kroah-Hartman typedef struct hfa384x_CIS 129600b3ed16SGreg Kroah-Hartman { 1297aaad4303SSolomon Peachy u8 CIS[480]; 129800b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_CIS_t; 129900b3ed16SGreg Kroah-Hartman 130000b3ed16SGreg Kroah-Hartman /*-- Information Record: STAIdentity --*/ 130100b3ed16SGreg Kroah-Hartman typedef struct hfa384x_STAIdentity 130200b3ed16SGreg Kroah-Hartman { 1303aaad4303SSolomon Peachy u16 STACompID; 1304aaad4303SSolomon Peachy u16 STAVariant; 1305aaad4303SSolomon Peachy u16 STAMajorVersion; 1306aaad4303SSolomon Peachy u16 STAMinorVersion; 130700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_STAIdentity_t; 130800b3ed16SGreg Kroah-Hartman 130900b3ed16SGreg Kroah-Hartman /*-- Information Record: STASupRange --*/ 131000b3ed16SGreg Kroah-Hartman typedef struct hfa384x_STASupRange 131100b3ed16SGreg Kroah-Hartman { 1312aaad4303SSolomon Peachy u16 STARole; 1313aaad4303SSolomon Peachy u16 STAID; 1314aaad4303SSolomon Peachy u16 STAVariant; 1315aaad4303SSolomon Peachy u16 STABottom; 1316aaad4303SSolomon Peachy u16 STATop; 131700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_STASupRange_t; 131800b3ed16SGreg Kroah-Hartman 131900b3ed16SGreg Kroah-Hartman /*-- Information Record: MFIActRanges --*/ 132000b3ed16SGreg Kroah-Hartman typedef struct hfa384x_MFIActRanges 132100b3ed16SGreg Kroah-Hartman { 1322aaad4303SSolomon Peachy u16 MFIRole; 1323aaad4303SSolomon Peachy u16 MFIID; 1324aaad4303SSolomon Peachy u16 MFIVariant; 1325aaad4303SSolomon Peachy u16 MFIBottom; 1326aaad4303SSolomon Peachy u16 MFITop; 132700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_MFIActRanges_t; 132800b3ed16SGreg Kroah-Hartman 132900b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 133000b3ed16SGreg Kroah-Hartman Information Record Structures: NIC Information 133100b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 133200b3ed16SGreg Kroah-Hartman 133300b3ed16SGreg Kroah-Hartman /*-- Information Record: PortStatus --*/ 133400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_PortStatus 133500b3ed16SGreg Kroah-Hartman { 1336aaad4303SSolomon Peachy u16 PortStatus; 133700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_PortStatus_t; 133800b3ed16SGreg Kroah-Hartman 1339aaad4303SSolomon Peachy #define HFA384x_PSTATUS_DISABLED ((u16)1) 1340aaad4303SSolomon Peachy #define HFA384x_PSTATUS_SEARCHING ((u16)2) 1341aaad4303SSolomon Peachy #define HFA384x_PSTATUS_CONN_IBSS ((u16)3) 1342aaad4303SSolomon Peachy #define HFA384x_PSTATUS_CONN_ESS ((u16)4) 1343aaad4303SSolomon Peachy #define HFA384x_PSTATUS_OUTOFRANGE ((u16)5) 1344aaad4303SSolomon Peachy #define HFA384x_PSTATUS_CONN_WDS ((u16)6) 134500b3ed16SGreg Kroah-Hartman 134600b3ed16SGreg Kroah-Hartman /*-- Information Record: CurrentSSID --*/ 134700b3ed16SGreg Kroah-Hartman typedef struct hfa384x_CurrentSSID 134800b3ed16SGreg Kroah-Hartman { 1349aaad4303SSolomon Peachy u8 CurrentSSID[34]; 135000b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_CurrentSSID_t; 135100b3ed16SGreg Kroah-Hartman 135200b3ed16SGreg Kroah-Hartman /*-- Information Record: CurrentBSSID --*/ 135300b3ed16SGreg Kroah-Hartman typedef struct hfa384x_CurrentBSSID 135400b3ed16SGreg Kroah-Hartman { 1355aaad4303SSolomon Peachy u8 CurrentBSSID[6]; 135600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_CurrentBSSID_t; 135700b3ed16SGreg Kroah-Hartman 135800b3ed16SGreg Kroah-Hartman /*-- Information Record: commsquality --*/ 135900b3ed16SGreg Kroah-Hartman typedef struct hfa384x_commsquality 136000b3ed16SGreg Kroah-Hartman { 1361aaad4303SSolomon Peachy u16 CQ_currBSS; 1362aaad4303SSolomon Peachy u16 ASL_currBSS; 1363aaad4303SSolomon Peachy u16 ANL_currFC; 136400b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_commsquality_t; 136500b3ed16SGreg Kroah-Hartman 136600b3ed16SGreg Kroah-Hartman /*-- Information Record: dmbcommsquality --*/ 136700b3ed16SGreg Kroah-Hartman typedef struct hfa384x_dbmcommsquality 136800b3ed16SGreg Kroah-Hartman { 1369aaad4303SSolomon Peachy u16 CQdbm_currBSS; 1370aaad4303SSolomon Peachy u16 ASLdbm_currBSS; 1371aaad4303SSolomon Peachy u16 ANLdbm_currFC; 137200b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_dbmcommsquality_t; 137300b3ed16SGreg Kroah-Hartman 137400b3ed16SGreg Kroah-Hartman /*-- Information Record: CurrentTxRate --*/ 137500b3ed16SGreg Kroah-Hartman typedef struct hfa384x_CurrentTxRate 137600b3ed16SGreg Kroah-Hartman { 1377aaad4303SSolomon Peachy u16 CurrentTxRate; 137800b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_CurrentTxRate_t; 137900b3ed16SGreg Kroah-Hartman 138000b3ed16SGreg Kroah-Hartman /*-- Information Record: CurrentBeaconInterval --*/ 138100b3ed16SGreg Kroah-Hartman typedef struct hfa384x_CurrentBeaconInterval 138200b3ed16SGreg Kroah-Hartman { 1383aaad4303SSolomon Peachy u16 CurrentBeaconInterval; 138400b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_CurrentBeaconInterval_t; 138500b3ed16SGreg Kroah-Hartman 138600b3ed16SGreg Kroah-Hartman /*-- Information Record: CurrentScaleThresholds --*/ 138700b3ed16SGreg Kroah-Hartman typedef struct hfa384x_CurrentScaleThresholds 138800b3ed16SGreg Kroah-Hartman { 1389aaad4303SSolomon Peachy u16 EnergyDetectThreshold; 1390aaad4303SSolomon Peachy u16 CarrierDetectThreshold; 1391aaad4303SSolomon Peachy u16 DeferDetectThreshold; 1392aaad4303SSolomon Peachy u16 CellSearchThreshold; /* Stations only */ 1393aaad4303SSolomon Peachy u16 DeadSpotThreshold; /* Stations only */ 139400b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_CurrentScaleThresholds_t; 139500b3ed16SGreg Kroah-Hartman 139600b3ed16SGreg Kroah-Hartman /*-- Information Record: ProtocolRspTime --*/ 139700b3ed16SGreg Kroah-Hartman typedef struct hfa384x_ProtocolRspTime 139800b3ed16SGreg Kroah-Hartman { 1399aaad4303SSolomon Peachy u16 ProtocolRspTime; 140000b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_ProtocolRspTime_t; 140100b3ed16SGreg Kroah-Hartman 140200b3ed16SGreg Kroah-Hartman /*-- Information Record: ShortRetryLimit --*/ 140300b3ed16SGreg Kroah-Hartman typedef struct hfa384x_ShortRetryLimit 140400b3ed16SGreg Kroah-Hartman { 1405aaad4303SSolomon Peachy u16 ShortRetryLimit; 140600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_ShortRetryLimit_t; 140700b3ed16SGreg Kroah-Hartman 140800b3ed16SGreg Kroah-Hartman /*-- Information Record: LongRetryLimit --*/ 140900b3ed16SGreg Kroah-Hartman typedef struct hfa384x_LongRetryLimit 141000b3ed16SGreg Kroah-Hartman { 1411aaad4303SSolomon Peachy u16 LongRetryLimit; 141200b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_LongRetryLimit_t; 141300b3ed16SGreg Kroah-Hartman 141400b3ed16SGreg Kroah-Hartman /*-- Information Record: MaxTransmitLifetime --*/ 141500b3ed16SGreg Kroah-Hartman typedef struct hfa384x_MaxTransmitLifetime 141600b3ed16SGreg Kroah-Hartman { 1417aaad4303SSolomon Peachy u16 MaxTransmitLifetime; 141800b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_MaxTransmitLifetime_t; 141900b3ed16SGreg Kroah-Hartman 142000b3ed16SGreg Kroah-Hartman /*-- Information Record: MaxReceiveLifetime --*/ 142100b3ed16SGreg Kroah-Hartman typedef struct hfa384x_MaxReceiveLifetime 142200b3ed16SGreg Kroah-Hartman { 1423aaad4303SSolomon Peachy u16 MaxReceiveLifetime; 142400b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_MaxReceiveLifetime_t; 142500b3ed16SGreg Kroah-Hartman 142600b3ed16SGreg Kroah-Hartman /*-- Information Record: CFPollable --*/ 142700b3ed16SGreg Kroah-Hartman typedef struct hfa384x_CFPollable 142800b3ed16SGreg Kroah-Hartman { 1429aaad4303SSolomon Peachy u16 CFPollable; 143000b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_CFPollable_t; 143100b3ed16SGreg Kroah-Hartman 143200b3ed16SGreg Kroah-Hartman /*-- Information Record: AuthenticationAlgorithms --*/ 143300b3ed16SGreg Kroah-Hartman typedef struct hfa384x_AuthenticationAlgorithms 143400b3ed16SGreg Kroah-Hartman { 1435aaad4303SSolomon Peachy u16 AuthenticationType; 1436aaad4303SSolomon Peachy u16 TypeEnabled; 143700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_AuthenticationAlgorithms_t; 143800b3ed16SGreg Kroah-Hartman 143900b3ed16SGreg Kroah-Hartman /*-- Information Record: AuthenticationAlgorithms 144000b3ed16SGreg Kroah-Hartman (data only --*/ 144100b3ed16SGreg Kroah-Hartman typedef struct hfa384x_AuthenticationAlgorithms_data 144200b3ed16SGreg Kroah-Hartman { 1443aaad4303SSolomon Peachy u16 AuthenticationType; 1444aaad4303SSolomon Peachy u16 TypeEnabled; 144500b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_AuthenticationAlgorithms_data_t; 144600b3ed16SGreg Kroah-Hartman 144700b3ed16SGreg Kroah-Hartman /*-- Information Record: PrivacyOptionImplemented --*/ 144800b3ed16SGreg Kroah-Hartman typedef struct hfa384x_PrivacyOptionImplemented 144900b3ed16SGreg Kroah-Hartman { 1450aaad4303SSolomon Peachy u16 PrivacyOptionImplemented; 145100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_PrivacyOptionImplemented_t; 145200b3ed16SGreg Kroah-Hartman 145300b3ed16SGreg Kroah-Hartman /*-- Information Record: OwnMACAddress --*/ 145400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_OwnMACAddress 145500b3ed16SGreg Kroah-Hartman { 1456aaad4303SSolomon Peachy u8 OwnMACAddress[6]; 145700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_OwnMACAddress_t; 145800b3ed16SGreg Kroah-Hartman 145900b3ed16SGreg Kroah-Hartman /*-- Information Record: PCFInfo --*/ 146000b3ed16SGreg Kroah-Hartman typedef struct hfa384x_PCFInfo 146100b3ed16SGreg Kroah-Hartman { 1462aaad4303SSolomon Peachy u16 MediumOccupancyLimit; 1463aaad4303SSolomon Peachy u16 CFPPeriod; 1464aaad4303SSolomon Peachy u16 CFPMaxDuration; 1465aaad4303SSolomon Peachy u16 CFPFlags; 146600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_PCFInfo_t; 146700b3ed16SGreg Kroah-Hartman 146800b3ed16SGreg Kroah-Hartman /*-- Information Record: PCFInfo (data portion only) --*/ 146900b3ed16SGreg Kroah-Hartman typedef struct hfa384x_PCFInfo_data 147000b3ed16SGreg Kroah-Hartman { 1471aaad4303SSolomon Peachy u16 MediumOccupancyLimit; 1472aaad4303SSolomon Peachy u16 CFPPeriod; 1473aaad4303SSolomon Peachy u16 CFPMaxDuration; 1474aaad4303SSolomon Peachy u16 CFPFlags; 147500b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_PCFInfo_data_t; 147600b3ed16SGreg Kroah-Hartman 147700b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 147800b3ed16SGreg Kroah-Hartman Information Record Structures: Modem Information Records 147900b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 148000b3ed16SGreg Kroah-Hartman 148100b3ed16SGreg Kroah-Hartman /*-- Information Record: PHYType --*/ 148200b3ed16SGreg Kroah-Hartman typedef struct hfa384x_PHYType 148300b3ed16SGreg Kroah-Hartman { 1484aaad4303SSolomon Peachy u16 PHYType; 148500b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_PHYType_t; 148600b3ed16SGreg Kroah-Hartman 148700b3ed16SGreg Kroah-Hartman /*-- Information Record: CurrentChannel --*/ 148800b3ed16SGreg Kroah-Hartman typedef struct hfa384x_CurrentChannel 148900b3ed16SGreg Kroah-Hartman { 1490aaad4303SSolomon Peachy u16 CurrentChannel; 149100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_CurrentChannel_t; 149200b3ed16SGreg Kroah-Hartman 149300b3ed16SGreg Kroah-Hartman /*-- Information Record: CurrentPowerState --*/ 149400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_CurrentPowerState 149500b3ed16SGreg Kroah-Hartman { 1496aaad4303SSolomon Peachy u16 CurrentPowerState; 149700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_CurrentPowerState_t; 149800b3ed16SGreg Kroah-Hartman 149900b3ed16SGreg Kroah-Hartman /*-- Information Record: CCAMode --*/ 150000b3ed16SGreg Kroah-Hartman typedef struct hfa384x_CCAMode 150100b3ed16SGreg Kroah-Hartman { 1502aaad4303SSolomon Peachy u16 CCAMode; 150300b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_CCAMode_t; 150400b3ed16SGreg Kroah-Hartman 150500b3ed16SGreg Kroah-Hartman /*-- Information Record: SupportedDataRates --*/ 150600b3ed16SGreg Kroah-Hartman typedef struct hfa384x_SupportedDataRates 150700b3ed16SGreg Kroah-Hartman { 1508aaad4303SSolomon Peachy u8 SupportedDataRates[10]; 150900b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_SupportedDataRates_t; 151000b3ed16SGreg Kroah-Hartman 151100b3ed16SGreg Kroah-Hartman /*-- Information Record: LFOStatus --*/ 151200b3ed16SGreg Kroah-Hartman typedef struct hfa384x_LFOStatus 151300b3ed16SGreg Kroah-Hartman { 1514aaad4303SSolomon Peachy u16 TestResults; 1515aaad4303SSolomon Peachy u16 LFOResult; 1516aaad4303SSolomon Peachy u16 VRHFOResult; 151700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_LFOStatus_t; 151800b3ed16SGreg Kroah-Hartman 151900b3ed16SGreg Kroah-Hartman #define HFA384x_TESTRESULT_ALLPASSED BIT0 152000b3ed16SGreg Kroah-Hartman #define HFA384x_TESTRESULT_LFO_FAIL BIT1 152100b3ed16SGreg Kroah-Hartman #define HFA384x_TESTRESULT_VR_HF0_FAIL BIT2 152200b3ed16SGreg Kroah-Hartman #define HFA384x_HOST_FIRM_COORDINATE BIT7 152300b3ed16SGreg Kroah-Hartman #define HFA384x_TESTRESULT_COORDINATE BIT15 152400b3ed16SGreg Kroah-Hartman 152500b3ed16SGreg Kroah-Hartman /*-- Information Record: LEDControl --*/ 152600b3ed16SGreg Kroah-Hartman typedef struct hfa384x_LEDControl 152700b3ed16SGreg Kroah-Hartman { 1528aaad4303SSolomon Peachy u16 searching_on; 1529aaad4303SSolomon Peachy u16 searching_off; 1530aaad4303SSolomon Peachy u16 assoc_on; 1531aaad4303SSolomon Peachy u16 assoc_off; 1532aaad4303SSolomon Peachy u16 activity; 153300b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_LEDControl_t; 153400b3ed16SGreg Kroah-Hartman 153500b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 153600b3ed16SGreg Kroah-Hartman FRAME DESCRIPTORS AND FRAME STRUCTURES 153700b3ed16SGreg Kroah-Hartman 153800b3ed16SGreg Kroah-Hartman FRAME DESCRIPTORS: Offsets 153900b3ed16SGreg Kroah-Hartman 154000b3ed16SGreg Kroah-Hartman ---------------------------------------------------------------------- 154100b3ed16SGreg Kroah-Hartman Control Info (offset 44-51) 154200b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 1543aaad4303SSolomon Peachy #define HFA384x_FD_STATUS_OFF ((u16)0x44) 1544aaad4303SSolomon Peachy #define HFA384x_FD_TIME_OFF ((u16)0x46) 1545aaad4303SSolomon Peachy #define HFA384x_FD_SWSUPPORT_OFF ((u16)0x4A) 1546aaad4303SSolomon Peachy #define HFA384x_FD_SILENCE_OFF ((u16)0x4A) 1547aaad4303SSolomon Peachy #define HFA384x_FD_SIGNAL_OFF ((u16)0x4B) 1548aaad4303SSolomon Peachy #define HFA384x_FD_RATE_OFF ((u16)0x4C) 1549aaad4303SSolomon Peachy #define HFA384x_FD_RXFLOW_OFF ((u16)0x4D) 1550aaad4303SSolomon Peachy #define HFA384x_FD_RESERVED_OFF ((u16)0x4E) 1551aaad4303SSolomon Peachy #define HFA384x_FD_TXCONTROL_OFF ((u16)0x50) 155200b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 155300b3ed16SGreg Kroah-Hartman 802.11 Header (offset 52-6B) 155400b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 1555aaad4303SSolomon Peachy #define HFA384x_FD_FRAMECONTROL_OFF ((u16)0x52) 1556aaad4303SSolomon Peachy #define HFA384x_FD_DURATIONID_OFF ((u16)0x54) 1557aaad4303SSolomon Peachy #define HFA384x_FD_ADDRESS1_OFF ((u16)0x56) 1558aaad4303SSolomon Peachy #define HFA384x_FD_ADDRESS2_OFF ((u16)0x5C) 1559aaad4303SSolomon Peachy #define HFA384x_FD_ADDRESS3_OFF ((u16)0x62) 1560aaad4303SSolomon Peachy #define HFA384x_FD_SEQCONTROL_OFF ((u16)0x68) 1561aaad4303SSolomon Peachy #define HFA384x_FD_ADDRESS4_OFF ((u16)0x6A) 1562aaad4303SSolomon Peachy #define HFA384x_FD_DATALEN_OFF ((u16)0x70) 156300b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 156400b3ed16SGreg Kroah-Hartman 802.3 Header (offset 72-7F) 156500b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 1566aaad4303SSolomon Peachy #define HFA384x_FD_DESTADDRESS_OFF ((u16)0x72) 1567aaad4303SSolomon Peachy #define HFA384x_FD_SRCADDRESS_OFF ((u16)0x78) 1568aaad4303SSolomon Peachy #define HFA384x_FD_DATALENGTH_OFF ((u16)0x7E) 156900b3ed16SGreg Kroah-Hartman 157000b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 157100b3ed16SGreg Kroah-Hartman FRAME STRUCTURES: Communication Frames 157200b3ed16SGreg Kroah-Hartman ---------------------------------------------------------------------- 157300b3ed16SGreg Kroah-Hartman Communication Frames: Transmit Frames 157400b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 157500b3ed16SGreg Kroah-Hartman /*-- Communication Frame: Transmit Frame Structure --*/ 157600b3ed16SGreg Kroah-Hartman typedef struct hfa384x_tx_frame 157700b3ed16SGreg Kroah-Hartman { 1578aaad4303SSolomon Peachy u16 status; 1579aaad4303SSolomon Peachy u16 reserved1; 1580aaad4303SSolomon Peachy u16 reserved2; 1581aaad4303SSolomon Peachy u32 sw_support; 1582aaad4303SSolomon Peachy u8 tx_retrycount; 1583aaad4303SSolomon Peachy u8 tx_rate; 1584aaad4303SSolomon Peachy u16 tx_control; 158500b3ed16SGreg Kroah-Hartman 158600b3ed16SGreg Kroah-Hartman /*-- 802.11 Header Information --*/ 158700b3ed16SGreg Kroah-Hartman 1588aaad4303SSolomon Peachy u16 frame_control; 1589aaad4303SSolomon Peachy u16 duration_id; 1590aaad4303SSolomon Peachy u8 address1[6]; 1591aaad4303SSolomon Peachy u8 address2[6]; 1592aaad4303SSolomon Peachy u8 address3[6]; 1593aaad4303SSolomon Peachy u16 sequence_control; 1594aaad4303SSolomon Peachy u8 address4[6]; 1595aaad4303SSolomon Peachy u16 data_len; /* little endian format */ 159600b3ed16SGreg Kroah-Hartman 159700b3ed16SGreg Kroah-Hartman /*-- 802.3 Header Information --*/ 159800b3ed16SGreg Kroah-Hartman 1599aaad4303SSolomon Peachy u8 dest_addr[6]; 1600aaad4303SSolomon Peachy u8 src_addr[6]; 1601aaad4303SSolomon Peachy u16 data_length; /* big endian format */ 160200b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_tx_frame_t; 160300b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 160400b3ed16SGreg Kroah-Hartman Communication Frames: Field Masks for Transmit Frames 160500b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 160600b3ed16SGreg Kroah-Hartman /*-- Status Field --*/ 1607aaad4303SSolomon Peachy #define HFA384x_TXSTATUS_ACKERR ((u16)BIT5) 1608aaad4303SSolomon Peachy #define HFA384x_TXSTATUS_FORMERR ((u16)BIT3) 1609aaad4303SSolomon Peachy #define HFA384x_TXSTATUS_DISCON ((u16)BIT2) 1610aaad4303SSolomon Peachy #define HFA384x_TXSTATUS_AGEDERR ((u16)BIT1) 1611aaad4303SSolomon Peachy #define HFA384x_TXSTATUS_RETRYERR ((u16)BIT0) 161200b3ed16SGreg Kroah-Hartman /*-- Transmit Control Field --*/ 1613aaad4303SSolomon Peachy #define HFA384x_TX_CFPOLL ((u16)BIT12) 1614aaad4303SSolomon Peachy #define HFA384x_TX_PRST ((u16)BIT11) 1615aaad4303SSolomon Peachy #define HFA384x_TX_MACPORT ((u16)(BIT10 | BIT9 | BIT8)) 1616aaad4303SSolomon Peachy #define HFA384x_TX_NOENCRYPT ((u16)BIT7) 1617aaad4303SSolomon Peachy #define HFA384x_TX_RETRYSTRAT ((u16)(BIT6 | BIT5)) 1618aaad4303SSolomon Peachy #define HFA384x_TX_STRUCTYPE ((u16)(BIT4 | BIT3)) 1619aaad4303SSolomon Peachy #define HFA384x_TX_TXEX ((u16)BIT2) 1620aaad4303SSolomon Peachy #define HFA384x_TX_TXOK ((u16)BIT1) 162100b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 162200b3ed16SGreg Kroah-Hartman Communication Frames: Test/Get/Set Field Values for Transmit Frames 162300b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 162400b3ed16SGreg Kroah-Hartman /*-- Status Field --*/ 162500b3ed16SGreg Kroah-Hartman #define HFA384x_TXSTATUS_ISERROR(v) \ 1626aaad4303SSolomon Peachy (((u16)(v))&\ 162700b3ed16SGreg Kroah-Hartman (HFA384x_TXSTATUS_ACKERR|HFA384x_TXSTATUS_FORMERR|\ 162800b3ed16SGreg Kroah-Hartman HFA384x_TXSTATUS_DISCON|HFA384x_TXSTATUS_AGEDERR|\ 162900b3ed16SGreg Kroah-Hartman HFA384x_TXSTATUS_RETRYERR)) 163000b3ed16SGreg Kroah-Hartman 1631aaad4303SSolomon Peachy #define HFA384x_TXSTATUS_ISACKERR(v) ((u16)(((u16)(v)) & HFA384x_TXSTATUS_ACKERR)) 1632aaad4303SSolomon Peachy #define HFA384x_TXSTATUS_ISFORMERR(v) ((u16)(((u16)(v)) & HFA384x_TXSTATUS_FORMERR)) 1633aaad4303SSolomon Peachy #define HFA384x_TXSTATUS_ISDISCON(v) ((u16)(((u16)(v)) & HFA384x_TXSTATUS_DISCON)) 1634aaad4303SSolomon Peachy #define HFA384x_TXSTATUS_ISAGEDERR(v) ((u16)(((u16)(v)) & HFA384x_TXSTATUS_AGEDERR)) 1635aaad4303SSolomon Peachy #define HFA384x_TXSTATUS_ISRETRYERR(v) ((u16)(((u16)(v)) & HFA384x_TXSTATUS_RETRYERR)) 163600b3ed16SGreg Kroah-Hartman 1637aaad4303SSolomon Peachy #define HFA384x_TX_GET(v,m,s) ((((u16)(v))&((u16)(m)))>>((u16)(s))) 1638aaad4303SSolomon Peachy #define HFA384x_TX_SET(v,m,s) ((((u16)(v))<<((u16)(s)))&((u16)(m))) 163900b3ed16SGreg Kroah-Hartman 164000b3ed16SGreg Kroah-Hartman #define HFA384x_TX_CFPOLL_GET(v) HFA384x_TX_GET(v, HFA384x_TX_CFPOLL,12) 164100b3ed16SGreg Kroah-Hartman #define HFA384x_TX_CFPOLL_SET(v) HFA384x_TX_SET(v, HFA384x_TX_CFPOLL,12) 164200b3ed16SGreg Kroah-Hartman #define HFA384x_TX_PRST_GET(v) HFA384x_TX_GET(v, HFA384x_TX_PRST,11) 164300b3ed16SGreg Kroah-Hartman #define HFA384x_TX_PRST_SET(v) HFA384x_TX_SET(v, HFA384x_TX_PRST,11) 164400b3ed16SGreg Kroah-Hartman #define HFA384x_TX_MACPORT_GET(v) HFA384x_TX_GET(v, HFA384x_TX_MACPORT, 8) 164500b3ed16SGreg Kroah-Hartman #define HFA384x_TX_MACPORT_SET(v) HFA384x_TX_SET(v, HFA384x_TX_MACPORT, 8) 164600b3ed16SGreg Kroah-Hartman #define HFA384x_TX_NOENCRYPT_GET(v) HFA384x_TX_GET(v, HFA384x_TX_NOENCRYPT, 7) 164700b3ed16SGreg Kroah-Hartman #define HFA384x_TX_NOENCRYPT_SET(v) HFA384x_TX_SET(v, HFA384x_TX_NOENCRYPT, 7) 164800b3ed16SGreg Kroah-Hartman #define HFA384x_TX_RETRYSTRAT_GET(v) HFA384x_TX_GET(v, HFA384x_TX_RETRYSTRAT, 5) 164900b3ed16SGreg Kroah-Hartman #define HFA384x_TX_RETRYSTRAT_SET(v) HFA384x_TX_SET(v, HFA384x_TX_RETRYSTRAT, 5) 165000b3ed16SGreg Kroah-Hartman #define HFA384x_TX_STRUCTYPE_GET(v) HFA384x_TX_GET(v, HFA384x_TX_STRUCTYPE, 3) 165100b3ed16SGreg Kroah-Hartman #define HFA384x_TX_STRUCTYPE_SET(v) HFA384x_TX_SET(v, HFA384x_TX_STRUCTYPE, 3) 165200b3ed16SGreg Kroah-Hartman #define HFA384x_TX_TXEX_GET(v) HFA384x_TX_GET(v, HFA384x_TX_TXEX, 2) 165300b3ed16SGreg Kroah-Hartman #define HFA384x_TX_TXEX_SET(v) HFA384x_TX_SET(v, HFA384x_TX_TXEX, 2) 165400b3ed16SGreg Kroah-Hartman #define HFA384x_TX_TXOK_GET(v) HFA384x_TX_GET(v, HFA384x_TX_TXOK, 1) 165500b3ed16SGreg Kroah-Hartman #define HFA384x_TX_TXOK_SET(v) HFA384x_TX_SET(v, HFA384x_TX_TXOK, 1) 165600b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 165700b3ed16SGreg Kroah-Hartman Communication Frames: Receive Frames 165800b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 165900b3ed16SGreg Kroah-Hartman /*-- Communication Frame: Receive Frame Structure --*/ 166000b3ed16SGreg Kroah-Hartman typedef struct hfa384x_rx_frame 166100b3ed16SGreg Kroah-Hartman { 166200b3ed16SGreg Kroah-Hartman /*-- MAC rx descriptor (hfa384x byte order) --*/ 1663aaad4303SSolomon Peachy u16 status; 1664aaad4303SSolomon Peachy u32 time; 1665aaad4303SSolomon Peachy u8 silence; 1666aaad4303SSolomon Peachy u8 signal; 1667aaad4303SSolomon Peachy u8 rate; 1668aaad4303SSolomon Peachy u8 rx_flow; 1669aaad4303SSolomon Peachy u16 reserved1; 1670aaad4303SSolomon Peachy u16 reserved2; 167100b3ed16SGreg Kroah-Hartman 167200b3ed16SGreg Kroah-Hartman /*-- 802.11 Header Information (802.11 byte order) --*/ 1673aaad4303SSolomon Peachy u16 frame_control; 1674aaad4303SSolomon Peachy u16 duration_id; 1675aaad4303SSolomon Peachy u8 address1[6]; 1676aaad4303SSolomon Peachy u8 address2[6]; 1677aaad4303SSolomon Peachy u8 address3[6]; 1678aaad4303SSolomon Peachy u16 sequence_control; 1679aaad4303SSolomon Peachy u8 address4[6]; 1680aaad4303SSolomon Peachy u16 data_len; /* hfa384x (little endian) format */ 168100b3ed16SGreg Kroah-Hartman 168200b3ed16SGreg Kroah-Hartman /*-- 802.3 Header Information --*/ 1683aaad4303SSolomon Peachy u8 dest_addr[6]; 1684aaad4303SSolomon Peachy u8 src_addr[6]; 1685aaad4303SSolomon Peachy u16 data_length; /* IEEE? (big endian) format */ 168600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_rx_frame_t; 168700b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 168800b3ed16SGreg Kroah-Hartman Communication Frames: Field Masks for Receive Frames 168900b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 169000b3ed16SGreg Kroah-Hartman /*-- Offsets --------*/ 1691aaad4303SSolomon Peachy #define HFA384x_RX_DATA_LEN_OFF ((u16)44) 1692aaad4303SSolomon Peachy #define HFA384x_RX_80211HDR_OFF ((u16)14) 1693aaad4303SSolomon Peachy #define HFA384x_RX_DATA_OFF ((u16)60) 169400b3ed16SGreg Kroah-Hartman 169500b3ed16SGreg Kroah-Hartman /*-- Status Fields --*/ 1696aaad4303SSolomon Peachy #define HFA384x_RXSTATUS_MSGTYPE ((u16)(BIT15 | BIT14 | BIT13)) 1697aaad4303SSolomon Peachy #define HFA384x_RXSTATUS_MACPORT ((u16)(BIT10 | BIT9 | BIT8)) 1698aaad4303SSolomon Peachy #define HFA384x_RXSTATUS_UNDECR ((u16)BIT1) 1699aaad4303SSolomon Peachy #define HFA384x_RXSTATUS_FCSERR ((u16)BIT0) 170000b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 170100b3ed16SGreg Kroah-Hartman Communication Frames: Test/Get/Set Field Values for Receive Frames 170200b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 1703aaad4303SSolomon Peachy #define HFA384x_RXSTATUS_MSGTYPE_GET(value) ((u16)((((u16)(value)) & HFA384x_RXSTATUS_MSGTYPE) >> 13)) 1704aaad4303SSolomon Peachy #define HFA384x_RXSTATUS_MSGTYPE_SET(value) ((u16)(((u16)(value)) << 13)) 1705aaad4303SSolomon Peachy #define HFA384x_RXSTATUS_MACPORT_GET(value) ((u16)((((u16)(value)) & HFA384x_RXSTATUS_MACPORT) >> 8)) 1706aaad4303SSolomon Peachy #define HFA384x_RXSTATUS_MACPORT_SET(value) ((u16)(((u16)(value)) << 8)) 1707aaad4303SSolomon Peachy #define HFA384x_RXSTATUS_ISUNDECR(value) ((u16)(((u16)(value)) & HFA384x_RXSTATUS_UNDECR)) 1708aaad4303SSolomon Peachy #define HFA384x_RXSTATUS_ISFCSERR(value) ((u16)(((u16)(value)) & HFA384x_RXSTATUS_FCSERR)) 170900b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 171000b3ed16SGreg Kroah-Hartman FRAME STRUCTURES: Information Types and Information Frame Structures 171100b3ed16SGreg Kroah-Hartman ---------------------------------------------------------------------- 171200b3ed16SGreg Kroah-Hartman Information Types 171300b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 1714aaad4303SSolomon Peachy #define HFA384x_IT_HANDOVERADDR ((u16)0xF000UL) 1715aaad4303SSolomon Peachy #define HFA384x_IT_HANDOVERDEAUTHADDRESS ((u16)0xF001UL)//AP 1.3.7 1716aaad4303SSolomon Peachy #define HFA384x_IT_COMMTALLIES ((u16)0xF100UL) 1717aaad4303SSolomon Peachy #define HFA384x_IT_SCANRESULTS ((u16)0xF101UL) 1718aaad4303SSolomon Peachy #define HFA384x_IT_CHINFORESULTS ((u16)0xF102UL) 1719aaad4303SSolomon Peachy #define HFA384x_IT_HOSTSCANRESULTS ((u16)0xF103UL) 1720aaad4303SSolomon Peachy #define HFA384x_IT_LINKSTATUS ((u16)0xF200UL) 1721aaad4303SSolomon Peachy #define HFA384x_IT_ASSOCSTATUS ((u16)0xF201UL) 1722aaad4303SSolomon Peachy #define HFA384x_IT_AUTHREQ ((u16)0xF202UL) 1723aaad4303SSolomon Peachy #define HFA384x_IT_PSUSERCNT ((u16)0xF203UL) 1724aaad4303SSolomon Peachy #define HFA384x_IT_KEYIDCHANGED ((u16)0xF204UL) 1725aaad4303SSolomon Peachy #define HFA384x_IT_ASSOCREQ ((u16)0xF205UL) 1726aaad4303SSolomon Peachy #define HFA384x_IT_MICFAILURE ((u16)0xF206UL) 172700b3ed16SGreg Kroah-Hartman 172800b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 172900b3ed16SGreg Kroah-Hartman Information Frames Structures 173000b3ed16SGreg Kroah-Hartman ---------------------------------------------------------------------- 173100b3ed16SGreg Kroah-Hartman Information Frames: Notification Frame Structures 173200b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 173300b3ed16SGreg Kroah-Hartman /*-- Notification Frame,MAC Mgmt: Handover Address --*/ 173400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_HandoverAddr 173500b3ed16SGreg Kroah-Hartman { 1736aaad4303SSolomon Peachy u16 framelen; 1737aaad4303SSolomon Peachy u16 infotype; 1738aaad4303SSolomon Peachy u8 handover_addr[WLAN_BSSID_LEN]; 173900b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_HandoverAddr_t; 174000b3ed16SGreg Kroah-Hartman 174100b3ed16SGreg Kroah-Hartman /*-- Inquiry Frame, Diagnose: Communication Tallies --*/ 174200b3ed16SGreg Kroah-Hartman typedef struct hfa384x_CommTallies16 174300b3ed16SGreg Kroah-Hartman { 1744aaad4303SSolomon Peachy u16 txunicastframes; 1745aaad4303SSolomon Peachy u16 txmulticastframes; 1746aaad4303SSolomon Peachy u16 txfragments; 1747aaad4303SSolomon Peachy u16 txunicastoctets; 1748aaad4303SSolomon Peachy u16 txmulticastoctets; 1749aaad4303SSolomon Peachy u16 txdeferredtrans; 1750aaad4303SSolomon Peachy u16 txsingleretryframes; 1751aaad4303SSolomon Peachy u16 txmultipleretryframes; 1752aaad4303SSolomon Peachy u16 txretrylimitexceeded; 1753aaad4303SSolomon Peachy u16 txdiscards; 1754aaad4303SSolomon Peachy u16 rxunicastframes; 1755aaad4303SSolomon Peachy u16 rxmulticastframes; 1756aaad4303SSolomon Peachy u16 rxfragments; 1757aaad4303SSolomon Peachy u16 rxunicastoctets; 1758aaad4303SSolomon Peachy u16 rxmulticastoctets; 1759aaad4303SSolomon Peachy u16 rxfcserrors; 1760aaad4303SSolomon Peachy u16 rxdiscardsnobuffer; 1761aaad4303SSolomon Peachy u16 txdiscardswrongsa; 1762aaad4303SSolomon Peachy u16 rxdiscardswepundecr; 1763aaad4303SSolomon Peachy u16 rxmsginmsgfrag; 1764aaad4303SSolomon Peachy u16 rxmsginbadmsgfrag; 176500b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_CommTallies16_t; 176600b3ed16SGreg Kroah-Hartman 176700b3ed16SGreg Kroah-Hartman typedef struct hfa384x_CommTallies32 176800b3ed16SGreg Kroah-Hartman { 1769aaad4303SSolomon Peachy u32 txunicastframes; 1770aaad4303SSolomon Peachy u32 txmulticastframes; 1771aaad4303SSolomon Peachy u32 txfragments; 1772aaad4303SSolomon Peachy u32 txunicastoctets; 1773aaad4303SSolomon Peachy u32 txmulticastoctets; 1774aaad4303SSolomon Peachy u32 txdeferredtrans; 1775aaad4303SSolomon Peachy u32 txsingleretryframes; 1776aaad4303SSolomon Peachy u32 txmultipleretryframes; 1777aaad4303SSolomon Peachy u32 txretrylimitexceeded; 1778aaad4303SSolomon Peachy u32 txdiscards; 1779aaad4303SSolomon Peachy u32 rxunicastframes; 1780aaad4303SSolomon Peachy u32 rxmulticastframes; 1781aaad4303SSolomon Peachy u32 rxfragments; 1782aaad4303SSolomon Peachy u32 rxunicastoctets; 1783aaad4303SSolomon Peachy u32 rxmulticastoctets; 1784aaad4303SSolomon Peachy u32 rxfcserrors; 1785aaad4303SSolomon Peachy u32 rxdiscardsnobuffer; 1786aaad4303SSolomon Peachy u32 txdiscardswrongsa; 1787aaad4303SSolomon Peachy u32 rxdiscardswepundecr; 1788aaad4303SSolomon Peachy u32 rxmsginmsgfrag; 1789aaad4303SSolomon Peachy u32 rxmsginbadmsgfrag; 179000b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_CommTallies32_t; 179100b3ed16SGreg Kroah-Hartman 179200b3ed16SGreg Kroah-Hartman /*-- Inquiry Frame, Diagnose: Scan Results & Subfields--*/ 179300b3ed16SGreg Kroah-Hartman typedef struct hfa384x_ScanResultSub 179400b3ed16SGreg Kroah-Hartman { 1795aaad4303SSolomon Peachy u16 chid; 1796aaad4303SSolomon Peachy u16 anl; 1797aaad4303SSolomon Peachy u16 sl; 1798aaad4303SSolomon Peachy u8 bssid[WLAN_BSSID_LEN]; 1799aaad4303SSolomon Peachy u16 bcnint; 1800aaad4303SSolomon Peachy u16 capinfo; 180100b3ed16SGreg Kroah-Hartman hfa384x_bytestr32_t ssid; 1802aaad4303SSolomon Peachy u8 supprates[10]; /* 802.11 info element */ 1803aaad4303SSolomon Peachy u16 proberesp_rate; 180400b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_ScanResultSub_t; 180500b3ed16SGreg Kroah-Hartman 180600b3ed16SGreg Kroah-Hartman typedef struct hfa384x_ScanResult 180700b3ed16SGreg Kroah-Hartman { 1808aaad4303SSolomon Peachy u16 rsvd; 1809aaad4303SSolomon Peachy u16 scanreason; 181000b3ed16SGreg Kroah-Hartman hfa384x_ScanResultSub_t 181100b3ed16SGreg Kroah-Hartman result[HFA384x_SCANRESULT_MAX]; 181200b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_ScanResult_t; 181300b3ed16SGreg Kroah-Hartman 181400b3ed16SGreg Kroah-Hartman /*-- Inquiry Frame, Diagnose: ChInfo Results & Subfields--*/ 181500b3ed16SGreg Kroah-Hartman typedef struct hfa384x_ChInfoResultSub 181600b3ed16SGreg Kroah-Hartman { 1817aaad4303SSolomon Peachy u16 chid; 1818aaad4303SSolomon Peachy u16 anl; 1819aaad4303SSolomon Peachy u16 pnl; 1820aaad4303SSolomon Peachy u16 active; 182100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_ChInfoResultSub_t; 182200b3ed16SGreg Kroah-Hartman 182300b3ed16SGreg Kroah-Hartman #define HFA384x_CHINFORESULT_BSSACTIVE BIT0 182400b3ed16SGreg Kroah-Hartman #define HFA384x_CHINFORESULT_PCFACTIVE BIT1 182500b3ed16SGreg Kroah-Hartman 182600b3ed16SGreg Kroah-Hartman typedef struct hfa384x_ChInfoResult 182700b3ed16SGreg Kroah-Hartman { 1828aaad4303SSolomon Peachy u16 scanchannels; 182900b3ed16SGreg Kroah-Hartman hfa384x_ChInfoResultSub_t 183000b3ed16SGreg Kroah-Hartman result[HFA384x_CHINFORESULT_MAX]; 183100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_ChInfoResult_t; 183200b3ed16SGreg Kroah-Hartman 183300b3ed16SGreg Kroah-Hartman /*-- Inquiry Frame, Diagnose: Host Scan Results & Subfields--*/ 183400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_HScanResultSub 183500b3ed16SGreg Kroah-Hartman { 1836aaad4303SSolomon Peachy u16 chid; 1837aaad4303SSolomon Peachy u16 anl; 1838aaad4303SSolomon Peachy u16 sl; 1839aaad4303SSolomon Peachy u8 bssid[WLAN_BSSID_LEN]; 1840aaad4303SSolomon Peachy u16 bcnint; 1841aaad4303SSolomon Peachy u16 capinfo; 184200b3ed16SGreg Kroah-Hartman hfa384x_bytestr32_t ssid; 1843aaad4303SSolomon Peachy u8 supprates[10]; /* 802.11 info element */ 1844aaad4303SSolomon Peachy u16 proberesp_rate; 1845aaad4303SSolomon Peachy u16 atim; 184600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_HScanResultSub_t; 184700b3ed16SGreg Kroah-Hartman 184800b3ed16SGreg Kroah-Hartman typedef struct hfa384x_HScanResult 184900b3ed16SGreg Kroah-Hartman { 1850aaad4303SSolomon Peachy u16 nresult; 1851aaad4303SSolomon Peachy u16 rsvd; 185200b3ed16SGreg Kroah-Hartman hfa384x_HScanResultSub_t 185300b3ed16SGreg Kroah-Hartman result[HFA384x_HSCANRESULT_MAX]; 185400b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_HScanResult_t; 185500b3ed16SGreg Kroah-Hartman 185600b3ed16SGreg Kroah-Hartman /*-- Unsolicited Frame, MAC Mgmt: LinkStatus --*/ 185700b3ed16SGreg Kroah-Hartman 1858aaad4303SSolomon Peachy #define HFA384x_LINK_NOTCONNECTED ((u16)0) 1859aaad4303SSolomon Peachy #define HFA384x_LINK_CONNECTED ((u16)1) 1860aaad4303SSolomon Peachy #define HFA384x_LINK_DISCONNECTED ((u16)2) 1861aaad4303SSolomon Peachy #define HFA384x_LINK_AP_CHANGE ((u16)3) 1862aaad4303SSolomon Peachy #define HFA384x_LINK_AP_OUTOFRANGE ((u16)4) 1863aaad4303SSolomon Peachy #define HFA384x_LINK_AP_INRANGE ((u16)5) 1864aaad4303SSolomon Peachy #define HFA384x_LINK_ASSOCFAIL ((u16)6) 186500b3ed16SGreg Kroah-Hartman 186600b3ed16SGreg Kroah-Hartman typedef struct hfa384x_LinkStatus 186700b3ed16SGreg Kroah-Hartman { 1868aaad4303SSolomon Peachy u16 linkstatus; 186900b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_LinkStatus_t; 187000b3ed16SGreg Kroah-Hartman 187100b3ed16SGreg Kroah-Hartman 187200b3ed16SGreg Kroah-Hartman /*-- Unsolicited Frame, MAC Mgmt: AssociationStatus (--*/ 187300b3ed16SGreg Kroah-Hartman 1874aaad4303SSolomon Peachy #define HFA384x_ASSOCSTATUS_STAASSOC ((u16)1) 1875aaad4303SSolomon Peachy #define HFA384x_ASSOCSTATUS_REASSOC ((u16)2) 1876aaad4303SSolomon Peachy #define HFA384x_ASSOCSTATUS_DISASSOC ((u16)3) 1877aaad4303SSolomon Peachy #define HFA384x_ASSOCSTATUS_ASSOCFAIL ((u16)4) 1878aaad4303SSolomon Peachy #define HFA384x_ASSOCSTATUS_AUTHFAIL ((u16)5) 187900b3ed16SGreg Kroah-Hartman 188000b3ed16SGreg Kroah-Hartman typedef struct hfa384x_AssocStatus 188100b3ed16SGreg Kroah-Hartman { 1882aaad4303SSolomon Peachy u16 assocstatus; 1883aaad4303SSolomon Peachy u8 sta_addr[WLAN_ADDR_LEN]; 188400b3ed16SGreg Kroah-Hartman /* old_ap_addr is only valid if assocstatus == 2 */ 1885aaad4303SSolomon Peachy u8 old_ap_addr[WLAN_ADDR_LEN]; 1886aaad4303SSolomon Peachy u16 reason; 1887aaad4303SSolomon Peachy u16 reserved; 188800b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_AssocStatus_t; 188900b3ed16SGreg Kroah-Hartman 189000b3ed16SGreg Kroah-Hartman /*-- Unsolicited Frame, MAC Mgmt: AuthRequest (AP Only) --*/ 189100b3ed16SGreg Kroah-Hartman 189200b3ed16SGreg Kroah-Hartman typedef struct hfa384x_AuthRequest 189300b3ed16SGreg Kroah-Hartman { 1894aaad4303SSolomon Peachy u8 sta_addr[WLAN_ADDR_LEN]; 1895aaad4303SSolomon Peachy u16 algorithm; 189600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_AuthReq_t; 189700b3ed16SGreg Kroah-Hartman 189800b3ed16SGreg Kroah-Hartman /*-- Unsolicited Frame, MAC Mgmt: AssocRequest (AP Only) --*/ 189900b3ed16SGreg Kroah-Hartman 190000b3ed16SGreg Kroah-Hartman typedef struct hfa384x_AssocRequest 190100b3ed16SGreg Kroah-Hartman { 1902aaad4303SSolomon Peachy u8 sta_addr[WLAN_ADDR_LEN]; 1903aaad4303SSolomon Peachy u16 type; 1904aaad4303SSolomon Peachy u8 wpa_data[80]; 190500b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_AssocReq_t; 190600b3ed16SGreg Kroah-Hartman 190700b3ed16SGreg Kroah-Hartman 190800b3ed16SGreg Kroah-Hartman #define HFA384x_ASSOCREQ_TYPE_ASSOC 0 190900b3ed16SGreg Kroah-Hartman #define HFA384x_ASSOCREQ_TYPE_REASSOC 1 191000b3ed16SGreg Kroah-Hartman 191100b3ed16SGreg Kroah-Hartman /*-- Unsolicited Frame, MAC Mgmt: MIC Failure (AP Only) --*/ 191200b3ed16SGreg Kroah-Hartman 191300b3ed16SGreg Kroah-Hartman typedef struct hfa384x_MicFailure 191400b3ed16SGreg Kroah-Hartman { 1915aaad4303SSolomon Peachy u8 sender[WLAN_ADDR_LEN]; 1916aaad4303SSolomon Peachy u8 dest[WLAN_ADDR_LEN]; 191700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_MicFailure_t; 191800b3ed16SGreg Kroah-Hartman 191900b3ed16SGreg Kroah-Hartman /*-- Unsolicited Frame, MAC Mgmt: PSUserCount (AP Only) --*/ 192000b3ed16SGreg Kroah-Hartman 192100b3ed16SGreg Kroah-Hartman typedef struct hfa384x_PSUserCount 192200b3ed16SGreg Kroah-Hartman { 1923aaad4303SSolomon Peachy u16 usercnt; 192400b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_PSUserCount_t; 192500b3ed16SGreg Kroah-Hartman 192600b3ed16SGreg Kroah-Hartman typedef struct hfa384x_KeyIDChanged 192700b3ed16SGreg Kroah-Hartman { 1928aaad4303SSolomon Peachy u8 sta_addr[WLAN_ADDR_LEN]; 1929aaad4303SSolomon Peachy u16 keyid; 193000b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_KeyIDChanged_t; 193100b3ed16SGreg Kroah-Hartman 193200b3ed16SGreg Kroah-Hartman /*-- Collection of all Inf frames ---------------*/ 193300b3ed16SGreg Kroah-Hartman typedef union hfa384x_infodata { 193400b3ed16SGreg Kroah-Hartman hfa384x_CommTallies16_t commtallies16; 193500b3ed16SGreg Kroah-Hartman hfa384x_CommTallies32_t commtallies32; 193600b3ed16SGreg Kroah-Hartman hfa384x_ScanResult_t scanresult; 193700b3ed16SGreg Kroah-Hartman hfa384x_ChInfoResult_t chinforesult; 193800b3ed16SGreg Kroah-Hartman hfa384x_HScanResult_t hscanresult; 193900b3ed16SGreg Kroah-Hartman hfa384x_LinkStatus_t linkstatus; 194000b3ed16SGreg Kroah-Hartman hfa384x_AssocStatus_t assocstatus; 194100b3ed16SGreg Kroah-Hartman hfa384x_AuthReq_t authreq; 194200b3ed16SGreg Kroah-Hartman hfa384x_PSUserCount_t psusercnt; 194300b3ed16SGreg Kroah-Hartman hfa384x_KeyIDChanged_t keyidchanged; 194400b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_infodata_t; 194500b3ed16SGreg Kroah-Hartman 194600b3ed16SGreg Kroah-Hartman typedef struct hfa384x_InfFrame 194700b3ed16SGreg Kroah-Hartman { 1948aaad4303SSolomon Peachy u16 framelen; 1949aaad4303SSolomon Peachy u16 infotype; 195000b3ed16SGreg Kroah-Hartman hfa384x_infodata_t info; 195100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_InfFrame_t; 195200b3ed16SGreg Kroah-Hartman 195300b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 195400b3ed16SGreg Kroah-Hartman USB Packet structures and constants. 195500b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 195600b3ed16SGreg Kroah-Hartman 195700b3ed16SGreg Kroah-Hartman /* Should be sent to the ctrlout endpoint */ 195800b3ed16SGreg Kroah-Hartman #define HFA384x_USB_ENBULKIN 6 195900b3ed16SGreg Kroah-Hartman 196000b3ed16SGreg Kroah-Hartman /* Should be sent to the bulkout endpoint */ 196100b3ed16SGreg Kroah-Hartman #define HFA384x_USB_TXFRM 0 196200b3ed16SGreg Kroah-Hartman #define HFA384x_USB_CMDREQ 1 196300b3ed16SGreg Kroah-Hartman #define HFA384x_USB_WRIDREQ 2 196400b3ed16SGreg Kroah-Hartman #define HFA384x_USB_RRIDREQ 3 196500b3ed16SGreg Kroah-Hartman #define HFA384x_USB_WMEMREQ 4 196600b3ed16SGreg Kroah-Hartman #define HFA384x_USB_RMEMREQ 5 196700b3ed16SGreg Kroah-Hartman 196800b3ed16SGreg Kroah-Hartman /* Received from the bulkin endpoint */ 196900b3ed16SGreg Kroah-Hartman #define HFA384x_USB_ISFRM(a) (!((a) & 0x8000)) 197000b3ed16SGreg Kroah-Hartman #define HFA384x_USB_ISTXFRM(a) (((a) & 0x9000) == 0x1000) 197100b3ed16SGreg Kroah-Hartman #define HFA384x_USB_ISRXFRM(a) (!((a) & 0x9000)) 197200b3ed16SGreg Kroah-Hartman #define HFA384x_USB_INFOFRM 0x8000 197300b3ed16SGreg Kroah-Hartman #define HFA384x_USB_CMDRESP 0x8001 197400b3ed16SGreg Kroah-Hartman #define HFA384x_USB_WRIDRESP 0x8002 197500b3ed16SGreg Kroah-Hartman #define HFA384x_USB_RRIDRESP 0x8003 197600b3ed16SGreg Kroah-Hartman #define HFA384x_USB_WMEMRESP 0x8004 197700b3ed16SGreg Kroah-Hartman #define HFA384x_USB_RMEMRESP 0x8005 197800b3ed16SGreg Kroah-Hartman #define HFA384x_USB_BUFAVAIL 0x8006 197900b3ed16SGreg Kroah-Hartman #define HFA384x_USB_ERROR 0x8007 198000b3ed16SGreg Kroah-Hartman 198100b3ed16SGreg Kroah-Hartman /*------------------------------------*/ 198200b3ed16SGreg Kroah-Hartman /* Request (bulk OUT) packet contents */ 198300b3ed16SGreg Kroah-Hartman 198400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_usb_txfrm { 198500b3ed16SGreg Kroah-Hartman hfa384x_tx_frame_t desc; 1986aaad4303SSolomon Peachy u8 data[WLAN_DATA_MAXLEN]; 198700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_usb_txfrm_t; 198800b3ed16SGreg Kroah-Hartman 198900b3ed16SGreg Kroah-Hartman typedef struct hfa384x_usb_cmdreq { 1990aaad4303SSolomon Peachy u16 type; 1991aaad4303SSolomon Peachy u16 cmd; 1992aaad4303SSolomon Peachy u16 parm0; 1993aaad4303SSolomon Peachy u16 parm1; 1994aaad4303SSolomon Peachy u16 parm2; 1995aaad4303SSolomon Peachy u8 pad[54]; 199600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_usb_cmdreq_t; 199700b3ed16SGreg Kroah-Hartman 199800b3ed16SGreg Kroah-Hartman typedef struct hfa384x_usb_wridreq { 1999aaad4303SSolomon Peachy u16 type; 2000aaad4303SSolomon Peachy u16 frmlen; 2001aaad4303SSolomon Peachy u16 rid; 2002aaad4303SSolomon Peachy u8 data[HFA384x_RIDDATA_MAXLEN]; 200300b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_usb_wridreq_t; 200400b3ed16SGreg Kroah-Hartman 200500b3ed16SGreg Kroah-Hartman typedef struct hfa384x_usb_rridreq { 2006aaad4303SSolomon Peachy u16 type; 2007aaad4303SSolomon Peachy u16 frmlen; 2008aaad4303SSolomon Peachy u16 rid; 2009aaad4303SSolomon Peachy u8 pad[58]; 201000b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_usb_rridreq_t; 201100b3ed16SGreg Kroah-Hartman 201200b3ed16SGreg Kroah-Hartman typedef struct hfa384x_usb_wmemreq { 2013aaad4303SSolomon Peachy u16 type; 2014aaad4303SSolomon Peachy u16 frmlen; 2015aaad4303SSolomon Peachy u16 offset; 2016aaad4303SSolomon Peachy u16 page; 2017aaad4303SSolomon Peachy u8 data[HFA384x_USB_RWMEM_MAXLEN]; 201800b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_usb_wmemreq_t; 201900b3ed16SGreg Kroah-Hartman 202000b3ed16SGreg Kroah-Hartman typedef struct hfa384x_usb_rmemreq { 2021aaad4303SSolomon Peachy u16 type; 2022aaad4303SSolomon Peachy u16 frmlen; 2023aaad4303SSolomon Peachy u16 offset; 2024aaad4303SSolomon Peachy u16 page; 2025aaad4303SSolomon Peachy u8 pad[56]; 202600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_usb_rmemreq_t; 202700b3ed16SGreg Kroah-Hartman 202800b3ed16SGreg Kroah-Hartman /*------------------------------------*/ 202900b3ed16SGreg Kroah-Hartman /* Response (bulk IN) packet contents */ 203000b3ed16SGreg Kroah-Hartman 203100b3ed16SGreg Kroah-Hartman typedef struct hfa384x_usb_rxfrm { 203200b3ed16SGreg Kroah-Hartman hfa384x_rx_frame_t desc; 2033aaad4303SSolomon Peachy u8 data[WLAN_DATA_MAXLEN]; 203400b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_usb_rxfrm_t; 203500b3ed16SGreg Kroah-Hartman 203600b3ed16SGreg Kroah-Hartman typedef struct hfa384x_usb_infofrm { 2037aaad4303SSolomon Peachy u16 type; 203800b3ed16SGreg Kroah-Hartman hfa384x_InfFrame_t info; 203900b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_usb_infofrm_t; 204000b3ed16SGreg Kroah-Hartman 204100b3ed16SGreg Kroah-Hartman typedef struct hfa384x_usb_statusresp { 2042aaad4303SSolomon Peachy u16 type; 2043aaad4303SSolomon Peachy u16 status; 2044aaad4303SSolomon Peachy u16 resp0; 2045aaad4303SSolomon Peachy u16 resp1; 2046aaad4303SSolomon Peachy u16 resp2; 204700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_usb_cmdresp_t; 204800b3ed16SGreg Kroah-Hartman 204900b3ed16SGreg Kroah-Hartman typedef hfa384x_usb_cmdresp_t hfa384x_usb_wridresp_t; 205000b3ed16SGreg Kroah-Hartman 205100b3ed16SGreg Kroah-Hartman typedef struct hfa384x_usb_rridresp { 2052aaad4303SSolomon Peachy u16 type; 2053aaad4303SSolomon Peachy u16 frmlen; 2054aaad4303SSolomon Peachy u16 rid; 2055aaad4303SSolomon Peachy u8 data[HFA384x_RIDDATA_MAXLEN]; 205600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_usb_rridresp_t; 205700b3ed16SGreg Kroah-Hartman 205800b3ed16SGreg Kroah-Hartman typedef hfa384x_usb_cmdresp_t hfa384x_usb_wmemresp_t; 205900b3ed16SGreg Kroah-Hartman 206000b3ed16SGreg Kroah-Hartman typedef struct hfa384x_usb_rmemresp { 2061aaad4303SSolomon Peachy u16 type; 2062aaad4303SSolomon Peachy u16 frmlen; 2063aaad4303SSolomon Peachy u8 data[HFA384x_USB_RWMEM_MAXLEN]; 206400b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_usb_rmemresp_t; 206500b3ed16SGreg Kroah-Hartman 206600b3ed16SGreg Kroah-Hartman typedef struct hfa384x_usb_bufavail { 2067aaad4303SSolomon Peachy u16 type; 2068aaad4303SSolomon Peachy u16 frmlen; 206900b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_usb_bufavail_t; 207000b3ed16SGreg Kroah-Hartman 207100b3ed16SGreg Kroah-Hartman typedef struct hfa384x_usb_error { 2072aaad4303SSolomon Peachy u16 type; 2073aaad4303SSolomon Peachy u16 errortype; 207400b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_usb_error_t; 207500b3ed16SGreg Kroah-Hartman 207600b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------*/ 207700b3ed16SGreg Kroah-Hartman /* Unions for packaging all the known packet types together */ 207800b3ed16SGreg Kroah-Hartman 207900b3ed16SGreg Kroah-Hartman typedef union hfa384x_usbout { 2080aaad4303SSolomon Peachy u16 type; 208100b3ed16SGreg Kroah-Hartman hfa384x_usb_txfrm_t txfrm; 208200b3ed16SGreg Kroah-Hartman hfa384x_usb_cmdreq_t cmdreq; 208300b3ed16SGreg Kroah-Hartman hfa384x_usb_wridreq_t wridreq; 208400b3ed16SGreg Kroah-Hartman hfa384x_usb_rridreq_t rridreq; 208500b3ed16SGreg Kroah-Hartman hfa384x_usb_wmemreq_t wmemreq; 208600b3ed16SGreg Kroah-Hartman hfa384x_usb_rmemreq_t rmemreq; 208700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_usbout_t; 208800b3ed16SGreg Kroah-Hartman 208900b3ed16SGreg Kroah-Hartman typedef union hfa384x_usbin { 2090aaad4303SSolomon Peachy u16 type; 209100b3ed16SGreg Kroah-Hartman hfa384x_usb_rxfrm_t rxfrm; 209200b3ed16SGreg Kroah-Hartman hfa384x_usb_txfrm_t txfrm; 209300b3ed16SGreg Kroah-Hartman hfa384x_usb_infofrm_t infofrm; 209400b3ed16SGreg Kroah-Hartman hfa384x_usb_cmdresp_t cmdresp; 209500b3ed16SGreg Kroah-Hartman hfa384x_usb_wridresp_t wridresp; 209600b3ed16SGreg Kroah-Hartman hfa384x_usb_rridresp_t rridresp; 209700b3ed16SGreg Kroah-Hartman hfa384x_usb_wmemresp_t wmemresp; 209800b3ed16SGreg Kroah-Hartman hfa384x_usb_rmemresp_t rmemresp; 209900b3ed16SGreg Kroah-Hartman hfa384x_usb_bufavail_t bufavail; 210000b3ed16SGreg Kroah-Hartman hfa384x_usb_error_t usberror; 2101aaad4303SSolomon Peachy u8 boguspad[3000]; 210200b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_usbin_t; 210300b3ed16SGreg Kroah-Hartman 210400b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 210500b3ed16SGreg Kroah-Hartman PD record structures. 210600b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 210700b3ed16SGreg Kroah-Hartman 210800b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_pcb_partnum 210900b3ed16SGreg Kroah-Hartman { 2110aaad4303SSolomon Peachy u8 num[8]; 211100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_pcb_partnum_t; 211200b3ed16SGreg Kroah-Hartman 211300b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_pcb_tracenum 211400b3ed16SGreg Kroah-Hartman { 2115aaad4303SSolomon Peachy u8 num[8]; 211600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_pcb_tracenum_t; 211700b3ed16SGreg Kroah-Hartman 211800b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_nic_serial 211900b3ed16SGreg Kroah-Hartman { 2120aaad4303SSolomon Peachy u8 num[12]; 212100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_serial_t; 212200b3ed16SGreg Kroah-Hartman 212300b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_mkk_measurements 212400b3ed16SGreg Kroah-Hartman { 212500b3ed16SGreg Kroah-Hartman double carrier_freq; 212600b3ed16SGreg Kroah-Hartman double occupied_band; 212700b3ed16SGreg Kroah-Hartman double power_density; 212800b3ed16SGreg Kroah-Hartman double tx_spur_f1; 212900b3ed16SGreg Kroah-Hartman double tx_spur_f2; 213000b3ed16SGreg Kroah-Hartman double tx_spur_f3; 213100b3ed16SGreg Kroah-Hartman double tx_spur_f4; 213200b3ed16SGreg Kroah-Hartman double tx_spur_l1; 213300b3ed16SGreg Kroah-Hartman double tx_spur_l2; 213400b3ed16SGreg Kroah-Hartman double tx_spur_l3; 213500b3ed16SGreg Kroah-Hartman double tx_spur_l4; 213600b3ed16SGreg Kroah-Hartman double rx_spur_f1; 213700b3ed16SGreg Kroah-Hartman double rx_spur_f2; 213800b3ed16SGreg Kroah-Hartman double rx_spur_l1; 213900b3ed16SGreg Kroah-Hartman double rx_spur_l2; 214000b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mkk_measurements_t; 214100b3ed16SGreg Kroah-Hartman 214200b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_nic_ramsize 214300b3ed16SGreg Kroah-Hartman { 2144aaad4303SSolomon Peachy u8 size[12]; /* units of KB */ 214500b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_ramsize_t; 214600b3ed16SGreg Kroah-Hartman 214700b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_mfisuprange 214800b3ed16SGreg Kroah-Hartman { 2149aaad4303SSolomon Peachy u16 id; 2150aaad4303SSolomon Peachy u16 variant; 2151aaad4303SSolomon Peachy u16 bottom; 2152aaad4303SSolomon Peachy u16 top; 215300b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mfisuprange_t; 215400b3ed16SGreg Kroah-Hartman 215500b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_cfisuprange 215600b3ed16SGreg Kroah-Hartman { 2157aaad4303SSolomon Peachy u16 id; 2158aaad4303SSolomon Peachy u16 variant; 2159aaad4303SSolomon Peachy u16 bottom; 2160aaad4303SSolomon Peachy u16 top; 216100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_cfisuprange_t; 216200b3ed16SGreg Kroah-Hartman 216300b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_nicid 216400b3ed16SGreg Kroah-Hartman { 2165aaad4303SSolomon Peachy u16 id; 2166aaad4303SSolomon Peachy u16 variant; 2167aaad4303SSolomon Peachy u16 major; 2168aaad4303SSolomon Peachy u16 minor; 216900b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nicid_t; 217000b3ed16SGreg Kroah-Hartman 217100b3ed16SGreg Kroah-Hartman 217200b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_refdac_measurements 217300b3ed16SGreg Kroah-Hartman { 2174aaad4303SSolomon Peachy u16 value[0]; 217500b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_refdac_measurements_t; 217600b3ed16SGreg Kroah-Hartman 217700b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_vgdac_measurements 217800b3ed16SGreg Kroah-Hartman { 2179aaad4303SSolomon Peachy u16 value[0]; 218000b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_vgdac_measurements_t; 218100b3ed16SGreg Kroah-Hartman 218200b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_level_comp_measurements 218300b3ed16SGreg Kroah-Hartman { 2184aaad4303SSolomon Peachy u16 value[0]; 218500b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_level_compc_measurements_t; 218600b3ed16SGreg Kroah-Hartman 218700b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_mac_address 218800b3ed16SGreg Kroah-Hartman { 2189aaad4303SSolomon Peachy u8 addr[6]; 219000b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mac_address_t; 219100b3ed16SGreg Kroah-Hartman 219200b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_mkk_callname 219300b3ed16SGreg Kroah-Hartman { 2194aaad4303SSolomon Peachy u8 callname[8]; 219500b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mkk_callname_t; 219600b3ed16SGreg Kroah-Hartman 219700b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_regdomain 219800b3ed16SGreg Kroah-Hartman { 2199aaad4303SSolomon Peachy u16 numdomains; 2200aaad4303SSolomon Peachy u16 domain[5]; 220100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_regdomain_t; 220200b3ed16SGreg Kroah-Hartman 220300b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_allowed_channel 220400b3ed16SGreg Kroah-Hartman { 2205aaad4303SSolomon Peachy u16 ch_bitmap; 220600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_allowed_channel_t; 220700b3ed16SGreg Kroah-Hartman 220800b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_default_channel 220900b3ed16SGreg Kroah-Hartman { 2210aaad4303SSolomon Peachy u16 channel; 221100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_default_channel_t; 221200b3ed16SGreg Kroah-Hartman 221300b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_privacy_option 221400b3ed16SGreg Kroah-Hartman { 2215aaad4303SSolomon Peachy u16 available; 221600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_privacy_option_t; 221700b3ed16SGreg Kroah-Hartman 221800b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_temptype 221900b3ed16SGreg Kroah-Hartman { 2220aaad4303SSolomon Peachy u16 type; 222100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_temptype_t; 222200b3ed16SGreg Kroah-Hartman 222300b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_refdac_setup 222400b3ed16SGreg Kroah-Hartman { 2225aaad4303SSolomon Peachy u16 ch_value[14]; 222600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_refdac_setup_t; 222700b3ed16SGreg Kroah-Hartman 222800b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_vgdac_setup 222900b3ed16SGreg Kroah-Hartman { 2230aaad4303SSolomon Peachy u16 ch_value[14]; 223100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_vgdac_setup_t; 223200b3ed16SGreg Kroah-Hartman 223300b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_level_comp_setup 223400b3ed16SGreg Kroah-Hartman { 2235aaad4303SSolomon Peachy u16 ch_value[14]; 223600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_level_comp_setup_t; 223700b3ed16SGreg Kroah-Hartman 223800b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_trimdac_setup 223900b3ed16SGreg Kroah-Hartman { 2240aaad4303SSolomon Peachy u16 trimidac; 2241aaad4303SSolomon Peachy u16 trimqdac; 224200b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_trimdac_setup_t; 224300b3ed16SGreg Kroah-Hartman 224400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_ifr_setting 224500b3ed16SGreg Kroah-Hartman { 2246aaad4303SSolomon Peachy u16 value[3]; 224700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_ifr_setting_t; 224800b3ed16SGreg Kroah-Hartman 224900b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_rfr_setting 225000b3ed16SGreg Kroah-Hartman { 2251aaad4303SSolomon Peachy u16 value[3]; 225200b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_rfr_setting_t; 225300b3ed16SGreg Kroah-Hartman 225400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_hfa3861_baseline 225500b3ed16SGreg Kroah-Hartman { 2256aaad4303SSolomon Peachy u16 value[50]; 225700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_baseline_t; 225800b3ed16SGreg Kroah-Hartman 225900b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_hfa3861_shadow 226000b3ed16SGreg Kroah-Hartman { 2261aaad4303SSolomon Peachy u32 value[32]; 226200b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_shadow_t; 226300b3ed16SGreg Kroah-Hartman 226400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_hfa3861_ifrf 226500b3ed16SGreg Kroah-Hartman { 2266aaad4303SSolomon Peachy u32 value[20]; 226700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_ifrf_t; 226800b3ed16SGreg Kroah-Hartman 226900b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_hfa3861_chcalsp 227000b3ed16SGreg Kroah-Hartman { 2271aaad4303SSolomon Peachy u16 value[14]; 227200b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_chcalsp_t; 227300b3ed16SGreg Kroah-Hartman 227400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_hfa3861_chcali 227500b3ed16SGreg Kroah-Hartman { 2276aaad4303SSolomon Peachy u16 value[17]; 227700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_chcali_t; 227800b3ed16SGreg Kroah-Hartman 227900b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_hfa3861_nic_config 228000b3ed16SGreg Kroah-Hartman { 2281aaad4303SSolomon Peachy u16 config_bitmap; 228200b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_config_t; 228300b3ed16SGreg Kroah-Hartman 228400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_hfo_delay 228500b3ed16SGreg Kroah-Hartman { 2286aaad4303SSolomon Peachy u8 hfo_delay; 228700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_hfo_delay_t; 228800b3ed16SGreg Kroah-Hartman 228900b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_hfa3861_manf_testsp 229000b3ed16SGreg Kroah-Hartman { 2291aaad4303SSolomon Peachy u16 value[30]; 229200b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_manf_testsp_t; 229300b3ed16SGreg Kroah-Hartman 229400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdr_hfa3861_manf_testi 229500b3ed16SGreg Kroah-Hartman { 2296aaad4303SSolomon Peachy u16 value[30]; 229700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_manf_testi_t; 229800b3ed16SGreg Kroah-Hartman 229900b3ed16SGreg Kroah-Hartman typedef struct hfa384x_end_of_pda 230000b3ed16SGreg Kroah-Hartman { 2301aaad4303SSolomon Peachy u16 crc; 230200b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdr_end_of_pda_t; 230300b3ed16SGreg Kroah-Hartman 230400b3ed16SGreg Kroah-Hartman typedef struct hfa384x_pdrec 230500b3ed16SGreg Kroah-Hartman { 2306aaad4303SSolomon Peachy u16 len; /* in words */ 2307aaad4303SSolomon Peachy u16 code; 230800b3ed16SGreg Kroah-Hartman union pdr { 230900b3ed16SGreg Kroah-Hartman hfa384x_pdr_pcb_partnum_t pcb_partnum; 231000b3ed16SGreg Kroah-Hartman hfa384x_pdr_pcb_tracenum_t pcb_tracenum; 231100b3ed16SGreg Kroah-Hartman hfa384x_pdr_nic_serial_t nic_serial; 231200b3ed16SGreg Kroah-Hartman hfa384x_pdr_mkk_measurements_t mkk_measurements; 231300b3ed16SGreg Kroah-Hartman hfa384x_pdr_nic_ramsize_t nic_ramsize; 231400b3ed16SGreg Kroah-Hartman hfa384x_pdr_mfisuprange_t mfisuprange; 231500b3ed16SGreg Kroah-Hartman hfa384x_pdr_cfisuprange_t cfisuprange; 231600b3ed16SGreg Kroah-Hartman hfa384x_pdr_nicid_t nicid; 231700b3ed16SGreg Kroah-Hartman hfa384x_pdr_refdac_measurements_t refdac_measurements; 231800b3ed16SGreg Kroah-Hartman hfa384x_pdr_vgdac_measurements_t vgdac_measurements; 231900b3ed16SGreg Kroah-Hartman hfa384x_pdr_level_compc_measurements_t level_compc_measurements; 232000b3ed16SGreg Kroah-Hartman hfa384x_pdr_mac_address_t mac_address; 232100b3ed16SGreg Kroah-Hartman hfa384x_pdr_mkk_callname_t mkk_callname; 232200b3ed16SGreg Kroah-Hartman hfa384x_pdr_regdomain_t regdomain; 232300b3ed16SGreg Kroah-Hartman hfa384x_pdr_allowed_channel_t allowed_channel; 232400b3ed16SGreg Kroah-Hartman hfa384x_pdr_default_channel_t default_channel; 232500b3ed16SGreg Kroah-Hartman hfa384x_pdr_privacy_option_t privacy_option; 232600b3ed16SGreg Kroah-Hartman hfa384x_pdr_temptype_t temptype; 232700b3ed16SGreg Kroah-Hartman hfa384x_pdr_refdac_setup_t refdac_setup; 232800b3ed16SGreg Kroah-Hartman hfa384x_pdr_vgdac_setup_t vgdac_setup; 232900b3ed16SGreg Kroah-Hartman hfa384x_pdr_level_comp_setup_t level_comp_setup; 233000b3ed16SGreg Kroah-Hartman hfa384x_pdr_trimdac_setup_t trimdac_setup; 233100b3ed16SGreg Kroah-Hartman hfa384x_pdr_ifr_setting_t ifr_setting; 233200b3ed16SGreg Kroah-Hartman hfa384x_pdr_rfr_setting_t rfr_setting; 233300b3ed16SGreg Kroah-Hartman hfa384x_pdr_hfa3861_baseline_t hfa3861_baseline; 233400b3ed16SGreg Kroah-Hartman hfa384x_pdr_hfa3861_shadow_t hfa3861_shadow; 233500b3ed16SGreg Kroah-Hartman hfa384x_pdr_hfa3861_ifrf_t hfa3861_ifrf; 233600b3ed16SGreg Kroah-Hartman hfa384x_pdr_hfa3861_chcalsp_t hfa3861_chcalsp; 233700b3ed16SGreg Kroah-Hartman hfa384x_pdr_hfa3861_chcali_t hfa3861_chcali; 233800b3ed16SGreg Kroah-Hartman hfa384x_pdr_nic_config_t nic_config; 233900b3ed16SGreg Kroah-Hartman hfa384x_hfo_delay_t hfo_delay; 234000b3ed16SGreg Kroah-Hartman hfa384x_pdr_hfa3861_manf_testsp_t hfa3861_manf_testsp; 234100b3ed16SGreg Kroah-Hartman hfa384x_pdr_hfa3861_manf_testi_t hfa3861_manf_testi; 234200b3ed16SGreg Kroah-Hartman hfa384x_pdr_end_of_pda_t end_of_pda; 234300b3ed16SGreg Kroah-Hartman 234400b3ed16SGreg Kroah-Hartman } data; 234500b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ hfa384x_pdrec_t; 234600b3ed16SGreg Kroah-Hartman 234700b3ed16SGreg Kroah-Hartman 234800b3ed16SGreg Kroah-Hartman #ifdef __KERNEL__ 234900b3ed16SGreg Kroah-Hartman /*-------------------------------------------------------------------- 235000b3ed16SGreg Kroah-Hartman --- MAC state structure, argument to all functions -- 235100b3ed16SGreg Kroah-Hartman --- Also, a collection of support types -- 235200b3ed16SGreg Kroah-Hartman --------------------------------------------------------------------*/ 235300b3ed16SGreg Kroah-Hartman typedef struct hfa384x_statusresult 235400b3ed16SGreg Kroah-Hartman { 2355aaad4303SSolomon Peachy u16 status; 2356aaad4303SSolomon Peachy u16 resp0; 2357aaad4303SSolomon Peachy u16 resp1; 2358aaad4303SSolomon Peachy u16 resp2; 235900b3ed16SGreg Kroah-Hartman } hfa384x_cmdresult_t; 236000b3ed16SGreg Kroah-Hartman 236100b3ed16SGreg Kroah-Hartman /* USB Control Exchange (CTLX): 236200b3ed16SGreg Kroah-Hartman * A queue of the structure below is maintained for all of the 236300b3ed16SGreg Kroah-Hartman * Request/Response type USB packets supported by Prism2. 236400b3ed16SGreg Kroah-Hartman */ 236500b3ed16SGreg Kroah-Hartman /* The following hfa384x_* structures are arguments to 236600b3ed16SGreg Kroah-Hartman * the usercb() for the different CTLX types. 236700b3ed16SGreg Kroah-Hartman */ 236800b3ed16SGreg Kroah-Hartman typedef hfa384x_cmdresult_t hfa384x_wridresult_t; 236900b3ed16SGreg Kroah-Hartman typedef hfa384x_cmdresult_t hfa384x_wmemresult_t; 237000b3ed16SGreg Kroah-Hartman 237100b3ed16SGreg Kroah-Hartman typedef struct hfa384x_rridresult 237200b3ed16SGreg Kroah-Hartman { 2373aaad4303SSolomon Peachy u16 rid; 237400b3ed16SGreg Kroah-Hartman const void *riddata; 2375aaad4303SSolomon Peachy unsigned int riddata_len; 237600b3ed16SGreg Kroah-Hartman } hfa384x_rridresult_t; 237700b3ed16SGreg Kroah-Hartman 237800b3ed16SGreg Kroah-Hartman enum ctlx_state { 237900b3ed16SGreg Kroah-Hartman CTLX_START = 0, /* Start state, not queued */ 238000b3ed16SGreg Kroah-Hartman 238100b3ed16SGreg Kroah-Hartman CTLX_COMPLETE, /* CTLX successfully completed */ 238200b3ed16SGreg Kroah-Hartman CTLX_REQ_FAILED, /* OUT URB completed w/ error */ 238300b3ed16SGreg Kroah-Hartman 238400b3ed16SGreg Kroah-Hartman CTLX_PENDING, /* Queued, data valid */ 238500b3ed16SGreg Kroah-Hartman CTLX_REQ_SUBMITTED, /* OUT URB submitted */ 238600b3ed16SGreg Kroah-Hartman CTLX_REQ_COMPLETE, /* OUT URB complete */ 238700b3ed16SGreg Kroah-Hartman CTLX_RESP_COMPLETE /* IN URB received */ 238800b3ed16SGreg Kroah-Hartman }; 238900b3ed16SGreg Kroah-Hartman typedef enum ctlx_state CTLX_STATE; 239000b3ed16SGreg Kroah-Hartman 239100b3ed16SGreg Kroah-Hartman struct hfa384x_usbctlx; 239200b3ed16SGreg Kroah-Hartman struct hfa384x; 239300b3ed16SGreg Kroah-Hartman 239400b3ed16SGreg Kroah-Hartman typedef void (*ctlx_cmdcb_t)( struct hfa384x*, const struct hfa384x_usbctlx* ); 239500b3ed16SGreg Kroah-Hartman 239600b3ed16SGreg Kroah-Hartman typedef void (*ctlx_usercb_t)( 239700b3ed16SGreg Kroah-Hartman struct hfa384x *hw, 239800b3ed16SGreg Kroah-Hartman void *ctlxresult, 239900b3ed16SGreg Kroah-Hartman void *usercb_data); 240000b3ed16SGreg Kroah-Hartman 240100b3ed16SGreg Kroah-Hartman typedef struct hfa384x_usbctlx 240200b3ed16SGreg Kroah-Hartman { 240300b3ed16SGreg Kroah-Hartman struct list_head list; 240400b3ed16SGreg Kroah-Hartman 240500b3ed16SGreg Kroah-Hartman size_t outbufsize; 240600b3ed16SGreg Kroah-Hartman hfa384x_usbout_t outbuf; /* pkt buf for OUT */ 240700b3ed16SGreg Kroah-Hartman hfa384x_usbin_t inbuf; /* pkt buf for IN(a copy) */ 240800b3ed16SGreg Kroah-Hartman 240900b3ed16SGreg Kroah-Hartman CTLX_STATE state; /* Tracks running state */ 241000b3ed16SGreg Kroah-Hartman 241100b3ed16SGreg Kroah-Hartman struct completion done; 241200b3ed16SGreg Kroah-Hartman volatile int reapable; /* Food for the reaper task */ 241300b3ed16SGreg Kroah-Hartman 241400b3ed16SGreg Kroah-Hartman ctlx_cmdcb_t cmdcb; /* Async command callback */ 241500b3ed16SGreg Kroah-Hartman ctlx_usercb_t usercb; /* Async user callback, */ 241600b3ed16SGreg Kroah-Hartman void *usercb_data; /* at CTLX completion */ 241700b3ed16SGreg Kroah-Hartman 241800b3ed16SGreg Kroah-Hartman int variant; /* Identifies cmd variant */ 241900b3ed16SGreg Kroah-Hartman } hfa384x_usbctlx_t; 242000b3ed16SGreg Kroah-Hartman 242100b3ed16SGreg Kroah-Hartman typedef struct hfa384x_usbctlxq 242200b3ed16SGreg Kroah-Hartman { 242300b3ed16SGreg Kroah-Hartman spinlock_t lock; 242400b3ed16SGreg Kroah-Hartman struct list_head pending; 242500b3ed16SGreg Kroah-Hartman struct list_head active; 242600b3ed16SGreg Kroah-Hartman struct list_head completing; 242700b3ed16SGreg Kroah-Hartman struct list_head reapable; 242800b3ed16SGreg Kroah-Hartman } hfa384x_usbctlxq_t; 242900b3ed16SGreg Kroah-Hartman 243000b3ed16SGreg Kroah-Hartman typedef struct hfa484x_metacmd 243100b3ed16SGreg Kroah-Hartman { 2432aaad4303SSolomon Peachy u16 cmd; 243300b3ed16SGreg Kroah-Hartman 2434aaad4303SSolomon Peachy u16 parm0; 2435aaad4303SSolomon Peachy u16 parm1; 2436aaad4303SSolomon Peachy u16 parm2; 243700b3ed16SGreg Kroah-Hartman 243800b3ed16SGreg Kroah-Hartman hfa384x_cmdresult_t result; 243900b3ed16SGreg Kroah-Hartman } hfa384x_metacmd_t; 244000b3ed16SGreg Kroah-Hartman 244100b3ed16SGreg Kroah-Hartman #define MAX_PRISM2_GRP_ADDR 16 244200b3ed16SGreg Kroah-Hartman #define MAX_GRP_ADDR 32 244300b3ed16SGreg Kroah-Hartman #define WLAN_COMMENT_MAX 80 /* Max. length of user comment string. */ 244400b3ed16SGreg Kroah-Hartman 244500b3ed16SGreg Kroah-Hartman #define MM_SAT_PCF (BIT14) 244600b3ed16SGreg Kroah-Hartman #define MM_GCSD_PCF (BIT15) 244700b3ed16SGreg Kroah-Hartman #define MM_GCSD_PCF_EB (BIT14 | BIT15) 244800b3ed16SGreg Kroah-Hartman 244900b3ed16SGreg Kroah-Hartman #define WLAN_STATE_STOPPED 0 /* Network is not active. */ 245000b3ed16SGreg Kroah-Hartman #define WLAN_STATE_STARTED 1 /* Network has been started. */ 245100b3ed16SGreg Kroah-Hartman 245200b3ed16SGreg Kroah-Hartman #define WLAN_AUTH_MAX 60 /* Max. # of authenticated stations. */ 245300b3ed16SGreg Kroah-Hartman #define WLAN_ACCESS_MAX 60 /* Max. # of stations in an access list. */ 245400b3ed16SGreg Kroah-Hartman #define WLAN_ACCESS_NONE 0 /* No stations may be authenticated. */ 245500b3ed16SGreg Kroah-Hartman #define WLAN_ACCESS_ALL 1 /* All stations may be authenticated. */ 245600b3ed16SGreg Kroah-Hartman #define WLAN_ACCESS_ALLOW 2 /* Authenticate only "allowed" stations. */ 245700b3ed16SGreg Kroah-Hartman #define WLAN_ACCESS_DENY 3 /* Do not authenticate "denied" stations. */ 245800b3ed16SGreg Kroah-Hartman 245900b3ed16SGreg Kroah-Hartman /* XXX These are going away ASAP */ 246000b3ed16SGreg Kroah-Hartman typedef struct prism2sta_authlist 246100b3ed16SGreg Kroah-Hartman { 2462aaad4303SSolomon Peachy unsigned int cnt; 2463aaad4303SSolomon Peachy u8 addr[WLAN_AUTH_MAX][WLAN_ADDR_LEN]; 2464aaad4303SSolomon Peachy u8 assoc[WLAN_AUTH_MAX]; 246500b3ed16SGreg Kroah-Hartman } prism2sta_authlist_t; 246600b3ed16SGreg Kroah-Hartman 246700b3ed16SGreg Kroah-Hartman typedef struct prism2sta_accesslist 246800b3ed16SGreg Kroah-Hartman { 2469aaad4303SSolomon Peachy unsigned int modify; 2470aaad4303SSolomon Peachy unsigned int cnt; 2471aaad4303SSolomon Peachy u8 addr[WLAN_ACCESS_MAX][WLAN_ADDR_LEN]; 2472aaad4303SSolomon Peachy unsigned int cnt1; 2473aaad4303SSolomon Peachy u8 addr1[WLAN_ACCESS_MAX][WLAN_ADDR_LEN]; 247400b3ed16SGreg Kroah-Hartman } prism2sta_accesslist_t; 247500b3ed16SGreg Kroah-Hartman 247600b3ed16SGreg Kroah-Hartman typedef struct hfa384x 247700b3ed16SGreg Kroah-Hartman { 247800b3ed16SGreg Kroah-Hartman /* USB support data */ 247900b3ed16SGreg Kroah-Hartman struct usb_device *usb; 248000b3ed16SGreg Kroah-Hartman struct urb rx_urb; 248100b3ed16SGreg Kroah-Hartman struct sk_buff *rx_urb_skb; 248200b3ed16SGreg Kroah-Hartman struct urb tx_urb; 248300b3ed16SGreg Kroah-Hartman struct urb ctlx_urb; 248400b3ed16SGreg Kroah-Hartman hfa384x_usbout_t txbuff; 248500b3ed16SGreg Kroah-Hartman hfa384x_usbctlxq_t ctlxq; 248600b3ed16SGreg Kroah-Hartman struct timer_list reqtimer; 248700b3ed16SGreg Kroah-Hartman struct timer_list resptimer; 248800b3ed16SGreg Kroah-Hartman 248900b3ed16SGreg Kroah-Hartman struct timer_list throttle; 249000b3ed16SGreg Kroah-Hartman 249100b3ed16SGreg Kroah-Hartman struct tasklet_struct reaper_bh; 249200b3ed16SGreg Kroah-Hartman struct tasklet_struct completion_bh; 249300b3ed16SGreg Kroah-Hartman 249400b3ed16SGreg Kroah-Hartman struct work_struct usb_work; 249500b3ed16SGreg Kroah-Hartman 249600b3ed16SGreg Kroah-Hartman unsigned long usb_flags; 249700b3ed16SGreg Kroah-Hartman #define THROTTLE_RX 0 249800b3ed16SGreg Kroah-Hartman #define THROTTLE_TX 1 249900b3ed16SGreg Kroah-Hartman #define WORK_RX_HALT 2 250000b3ed16SGreg Kroah-Hartman #define WORK_TX_HALT 3 250100b3ed16SGreg Kroah-Hartman #define WORK_RX_RESUME 4 250200b3ed16SGreg Kroah-Hartman #define WORK_TX_RESUME 5 250300b3ed16SGreg Kroah-Hartman 250400b3ed16SGreg Kroah-Hartman unsigned short req_timer_done:1; 250500b3ed16SGreg Kroah-Hartman unsigned short resp_timer_done:1; 250600b3ed16SGreg Kroah-Hartman 250700b3ed16SGreg Kroah-Hartman int endp_in; 250800b3ed16SGreg Kroah-Hartman int endp_out; 250900b3ed16SGreg Kroah-Hartman 251000b3ed16SGreg Kroah-Hartman int sniff_fcs; 251100b3ed16SGreg Kroah-Hartman int sniff_channel; 251200b3ed16SGreg Kroah-Hartman int sniff_truncate; 251300b3ed16SGreg Kroah-Hartman int sniffhdr; 251400b3ed16SGreg Kroah-Hartman 251500b3ed16SGreg Kroah-Hartman wait_queue_head_t cmdq; /* wait queue itself */ 251600b3ed16SGreg Kroah-Hartman 251700b3ed16SGreg Kroah-Hartman /* Controller state */ 2518aaad4303SSolomon Peachy u32 state; 2519aaad4303SSolomon Peachy u32 isap; 2520aaad4303SSolomon Peachy u8 port_enabled[HFA384x_NUMPORTS_MAX]; 252100b3ed16SGreg Kroah-Hartman 252200b3ed16SGreg Kroah-Hartman /* Download support */ 2523aaad4303SSolomon Peachy unsigned int dlstate; 252400b3ed16SGreg Kroah-Hartman hfa384x_downloadbuffer_t bufinfo; 2525aaad4303SSolomon Peachy u16 dltimeout; 252600b3ed16SGreg Kroah-Hartman 252700b3ed16SGreg Kroah-Hartman int scanflag; /* to signal scan comlete */ 252800b3ed16SGreg Kroah-Hartman int join_ap; /* are we joined to a specific ap */ 252900b3ed16SGreg Kroah-Hartman int join_retries; /* number of join retries till we fail */ 253000b3ed16SGreg Kroah-Hartman hfa384x_JoinRequest_data_t joinreq; /* join request saved data */ 253100b3ed16SGreg Kroah-Hartman 253200b3ed16SGreg Kroah-Hartman wlandevice_t *wlandev; 253300b3ed16SGreg Kroah-Hartman /* Timer to allow for the deferred processing of linkstatus messages */ 253400b3ed16SGreg Kroah-Hartman struct work_struct link_bh; 253500b3ed16SGreg Kroah-Hartman 253600b3ed16SGreg Kroah-Hartman struct work_struct commsqual_bh; 253700b3ed16SGreg Kroah-Hartman hfa384x_commsquality_t qual; 253800b3ed16SGreg Kroah-Hartman struct timer_list commsqual_timer; 253900b3ed16SGreg Kroah-Hartman 2540aaad4303SSolomon Peachy u16 link_status; 2541aaad4303SSolomon Peachy u16 link_status_new; 254200b3ed16SGreg Kroah-Hartman struct sk_buff_head authq; 254300b3ed16SGreg Kroah-Hartman 254400b3ed16SGreg Kroah-Hartman /* And here we have stuff that used to be in priv */ 254500b3ed16SGreg Kroah-Hartman 254600b3ed16SGreg Kroah-Hartman /* State variables */ 2547aaad4303SSolomon Peachy unsigned int presniff_port_type; 2548aaad4303SSolomon Peachy u16 presniff_wepflags; 2549aaad4303SSolomon Peachy u32 dot11_desired_bss_type; 255000b3ed16SGreg Kroah-Hartman 255100b3ed16SGreg Kroah-Hartman int dbmadjust; 255200b3ed16SGreg Kroah-Hartman 255300b3ed16SGreg Kroah-Hartman /* Group Addresses - right now, there are up to a total 255400b3ed16SGreg Kroah-Hartman of MAX_GRP_ADDR group addresses */ 2555aaad4303SSolomon Peachy u8 dot11_grp_addr[MAX_GRP_ADDR][WLAN_ADDR_LEN]; 2556aaad4303SSolomon Peachy unsigned int dot11_grpcnt; 255700b3ed16SGreg Kroah-Hartman 255800b3ed16SGreg Kroah-Hartman /* Component Identities */ 255900b3ed16SGreg Kroah-Hartman hfa384x_compident_t ident_nic; 256000b3ed16SGreg Kroah-Hartman hfa384x_compident_t ident_pri_fw; 256100b3ed16SGreg Kroah-Hartman hfa384x_compident_t ident_sta_fw; 256200b3ed16SGreg Kroah-Hartman hfa384x_compident_t ident_ap_fw; 2563aaad4303SSolomon Peachy u16 mm_mods; 256400b3ed16SGreg Kroah-Hartman 256500b3ed16SGreg Kroah-Hartman /* Supplier compatibility ranges */ 256600b3ed16SGreg Kroah-Hartman hfa384x_caplevel_t cap_sup_mfi; 256700b3ed16SGreg Kroah-Hartman hfa384x_caplevel_t cap_sup_cfi; 256800b3ed16SGreg Kroah-Hartman hfa384x_caplevel_t cap_sup_pri; 256900b3ed16SGreg Kroah-Hartman hfa384x_caplevel_t cap_sup_sta; 257000b3ed16SGreg Kroah-Hartman hfa384x_caplevel_t cap_sup_ap; 257100b3ed16SGreg Kroah-Hartman 257200b3ed16SGreg Kroah-Hartman /* Actor compatibility ranges */ 257300b3ed16SGreg Kroah-Hartman hfa384x_caplevel_t cap_act_pri_cfi; /* pri f/w to controller interface */ 257400b3ed16SGreg Kroah-Hartman hfa384x_caplevel_t cap_act_sta_cfi; /* sta f/w to controller interface */ 257500b3ed16SGreg Kroah-Hartman hfa384x_caplevel_t cap_act_sta_mfi; /* sta f/w to modem interface */ 257600b3ed16SGreg Kroah-Hartman hfa384x_caplevel_t cap_act_ap_cfi; /* ap f/w to controller interface */ 257700b3ed16SGreg Kroah-Hartman hfa384x_caplevel_t cap_act_ap_mfi; /* ap f/w to modem interface */ 257800b3ed16SGreg Kroah-Hartman 2579aaad4303SSolomon Peachy u32 psusercount; /* Power save user count. */ 258000b3ed16SGreg Kroah-Hartman hfa384x_CommTallies32_t tallies; /* Communication tallies. */ 2581aaad4303SSolomon Peachy u8 comment[WLAN_COMMENT_MAX+1]; /* User comment */ 258200b3ed16SGreg Kroah-Hartman 258300b3ed16SGreg Kroah-Hartman /* Channel Info request results (AP only) */ 258400b3ed16SGreg Kroah-Hartman struct { 258500b3ed16SGreg Kroah-Hartman atomic_t done; 2586aaad4303SSolomon Peachy u8 count; 258700b3ed16SGreg Kroah-Hartman hfa384x_ChInfoResult_t results; 258800b3ed16SGreg Kroah-Hartman } channel_info; 258900b3ed16SGreg Kroah-Hartman 259000b3ed16SGreg Kroah-Hartman hfa384x_InfFrame_t *scanresults; 259100b3ed16SGreg Kroah-Hartman 259200b3ed16SGreg Kroah-Hartman 259300b3ed16SGreg Kroah-Hartman prism2sta_authlist_t authlist; /* Authenticated station list. */ 2594aaad4303SSolomon Peachy unsigned int accessmode; /* Access mode. */ 259500b3ed16SGreg Kroah-Hartman prism2sta_accesslist_t allow; /* Allowed station list. */ 259600b3ed16SGreg Kroah-Hartman prism2sta_accesslist_t deny; /* Denied station list. */ 259700b3ed16SGreg Kroah-Hartman 259800b3ed16SGreg Kroah-Hartman } hfa384x_t; 259900b3ed16SGreg Kroah-Hartman 260000b3ed16SGreg Kroah-Hartman /*=============================================================*/ 260100b3ed16SGreg Kroah-Hartman /*--- Function Declarations -----------------------------------*/ 260200b3ed16SGreg Kroah-Hartman /*=============================================================*/ 260300b3ed16SGreg Kroah-Hartman void 260400b3ed16SGreg Kroah-Hartman hfa384x_create( 260500b3ed16SGreg Kroah-Hartman hfa384x_t *hw, 260600b3ed16SGreg Kroah-Hartman struct usb_device *usb); 260700b3ed16SGreg Kroah-Hartman 260800b3ed16SGreg Kroah-Hartman void hfa384x_destroy(hfa384x_t *hw); 260900b3ed16SGreg Kroah-Hartman 261000b3ed16SGreg Kroah-Hartman irqreturn_t 261100b3ed16SGreg Kroah-Hartman hfa384x_interrupt(int irq, void *dev_id PT_REGS); 261200b3ed16SGreg Kroah-Hartman int 261300b3ed16SGreg Kroah-Hartman hfa384x_corereset( hfa384x_t *hw, int holdtime, int settletime, int genesis); 261400b3ed16SGreg Kroah-Hartman int 261500b3ed16SGreg Kroah-Hartman hfa384x_drvr_chinforesults( hfa384x_t *hw); 261600b3ed16SGreg Kroah-Hartman int 261700b3ed16SGreg Kroah-Hartman hfa384x_drvr_commtallies( hfa384x_t *hw); 261800b3ed16SGreg Kroah-Hartman int 2619aaad4303SSolomon Peachy hfa384x_drvr_disable(hfa384x_t *hw, u16 macport); 262000b3ed16SGreg Kroah-Hartman int 2621aaad4303SSolomon Peachy hfa384x_drvr_enable(hfa384x_t *hw, u16 macport); 262200b3ed16SGreg Kroah-Hartman int 262300b3ed16SGreg Kroah-Hartman hfa384x_drvr_flashdl_enable(hfa384x_t *hw); 262400b3ed16SGreg Kroah-Hartman int 262500b3ed16SGreg Kroah-Hartman hfa384x_drvr_flashdl_disable(hfa384x_t *hw); 262600b3ed16SGreg Kroah-Hartman int 2627aaad4303SSolomon Peachy hfa384x_drvr_flashdl_write(hfa384x_t *hw, u32 daddr, void* buf, u32 len); 262800b3ed16SGreg Kroah-Hartman int 2629aaad4303SSolomon Peachy hfa384x_drvr_getconfig(hfa384x_t *hw, u16 rid, void *buf, u16 len); 263000b3ed16SGreg Kroah-Hartman int 2631aaad4303SSolomon Peachy hfa384x_drvr_handover( hfa384x_t *hw, u8 *addr); 263200b3ed16SGreg Kroah-Hartman int 263300b3ed16SGreg Kroah-Hartman hfa384x_drvr_hostscanresults( hfa384x_t *hw); 263400b3ed16SGreg Kroah-Hartman int 263500b3ed16SGreg Kroah-Hartman hfa384x_drvr_low_level(hfa384x_t *hw, hfa384x_metacmd_t *cmd); 263600b3ed16SGreg Kroah-Hartman int 2637aaad4303SSolomon Peachy hfa384x_drvr_mmi_read(hfa384x_t *hw, u32 address, u32 *result); 263800b3ed16SGreg Kroah-Hartman int 2639aaad4303SSolomon Peachy hfa384x_drvr_mmi_write(hfa384x_t *hw, u32 address, u32 data); 264000b3ed16SGreg Kroah-Hartman int 2641aaad4303SSolomon Peachy hfa384x_drvr_ramdl_enable(hfa384x_t *hw, u32 exeaddr); 264200b3ed16SGreg Kroah-Hartman int 264300b3ed16SGreg Kroah-Hartman hfa384x_drvr_ramdl_disable(hfa384x_t *hw); 264400b3ed16SGreg Kroah-Hartman int 2645aaad4303SSolomon Peachy hfa384x_drvr_ramdl_write(hfa384x_t *hw, u32 daddr, void* buf, u32 len); 264600b3ed16SGreg Kroah-Hartman int 2647aaad4303SSolomon Peachy hfa384x_drvr_readpda(hfa384x_t *hw, void *buf, unsigned int len); 264800b3ed16SGreg Kroah-Hartman int 264900b3ed16SGreg Kroah-Hartman hfa384x_drvr_scanresults( hfa384x_t *hw); 265000b3ed16SGreg Kroah-Hartman 265100b3ed16SGreg Kroah-Hartman int 2652aaad4303SSolomon Peachy hfa384x_drvr_setconfig(hfa384x_t *hw, u16 rid, void *buf, u16 len); 265300b3ed16SGreg Kroah-Hartman 265400b3ed16SGreg Kroah-Hartman static inline int 2655aaad4303SSolomon Peachy hfa384x_drvr_getconfig16(hfa384x_t *hw, u16 rid, void *val) 265600b3ed16SGreg Kroah-Hartman { 265700b3ed16SGreg Kroah-Hartman int result = 0; 2658aaad4303SSolomon Peachy result = hfa384x_drvr_getconfig(hw, rid, val, sizeof(u16)); 265900b3ed16SGreg Kroah-Hartman if ( result == 0 ) { 2660aaad4303SSolomon Peachy *((u16*)val) = hfa384x2host_16(*((u16*)val)); 266100b3ed16SGreg Kroah-Hartman } 266200b3ed16SGreg Kroah-Hartman return result; 266300b3ed16SGreg Kroah-Hartman } 266400b3ed16SGreg Kroah-Hartman 266500b3ed16SGreg Kroah-Hartman static inline int 2666aaad4303SSolomon Peachy hfa384x_drvr_getconfig32(hfa384x_t *hw, u16 rid, void *val) 266700b3ed16SGreg Kroah-Hartman { 266800b3ed16SGreg Kroah-Hartman int result = 0; 266900b3ed16SGreg Kroah-Hartman 2670aaad4303SSolomon Peachy result = hfa384x_drvr_getconfig(hw, rid, val, sizeof(u32)); 267100b3ed16SGreg Kroah-Hartman if ( result == 0 ) { 2672aaad4303SSolomon Peachy *((u32*)val) = hfa384x2host_32(*((u32*)val)); 267300b3ed16SGreg Kroah-Hartman } 267400b3ed16SGreg Kroah-Hartman 267500b3ed16SGreg Kroah-Hartman return result; 267600b3ed16SGreg Kroah-Hartman } 267700b3ed16SGreg Kroah-Hartman 267800b3ed16SGreg Kroah-Hartman static inline int 2679aaad4303SSolomon Peachy hfa384x_drvr_setconfig16(hfa384x_t *hw, u16 rid, u16 val) 268000b3ed16SGreg Kroah-Hartman { 2681aaad4303SSolomon Peachy u16 value = host2hfa384x_16(val); 268200b3ed16SGreg Kroah-Hartman return hfa384x_drvr_setconfig(hw, rid, &value, sizeof(value)); 268300b3ed16SGreg Kroah-Hartman } 268400b3ed16SGreg Kroah-Hartman 268500b3ed16SGreg Kroah-Hartman static inline int 2686aaad4303SSolomon Peachy hfa384x_drvr_setconfig32(hfa384x_t *hw, u16 rid, u32 val) 268700b3ed16SGreg Kroah-Hartman { 2688aaad4303SSolomon Peachy u32 value = host2hfa384x_32(val); 268900b3ed16SGreg Kroah-Hartman return hfa384x_drvr_setconfig(hw, rid, &value, sizeof(value)); 269000b3ed16SGreg Kroah-Hartman } 269100b3ed16SGreg Kroah-Hartman 269200b3ed16SGreg Kroah-Hartman int 269300b3ed16SGreg Kroah-Hartman hfa384x_drvr_getconfig_async(hfa384x_t *hw, 2694aaad4303SSolomon Peachy u16 rid, 269500b3ed16SGreg Kroah-Hartman ctlx_usercb_t usercb, 269600b3ed16SGreg Kroah-Hartman void *usercb_data); 269700b3ed16SGreg Kroah-Hartman 269800b3ed16SGreg Kroah-Hartman int 269900b3ed16SGreg Kroah-Hartman hfa384x_drvr_setconfig_async(hfa384x_t *hw, 2700aaad4303SSolomon Peachy u16 rid, 270100b3ed16SGreg Kroah-Hartman void *buf, 2702aaad4303SSolomon Peachy u16 len, 270300b3ed16SGreg Kroah-Hartman ctlx_usercb_t usercb, 270400b3ed16SGreg Kroah-Hartman void *usercb_data); 270500b3ed16SGreg Kroah-Hartman 270600b3ed16SGreg Kroah-Hartman static inline int 2707aaad4303SSolomon Peachy hfa384x_drvr_setconfig16_async(hfa384x_t *hw, u16 rid, u16 val) 270800b3ed16SGreg Kroah-Hartman { 2709aaad4303SSolomon Peachy u16 value = host2hfa384x_16(val); 271000b3ed16SGreg Kroah-Hartman return hfa384x_drvr_setconfig_async(hw, rid, &value, sizeof(value), 271100b3ed16SGreg Kroah-Hartman NULL , NULL); 271200b3ed16SGreg Kroah-Hartman } 271300b3ed16SGreg Kroah-Hartman 271400b3ed16SGreg Kroah-Hartman static inline int 2715aaad4303SSolomon Peachy hfa384x_drvr_setconfig32_async(hfa384x_t *hw, u16 rid, u32 val) 271600b3ed16SGreg Kroah-Hartman { 2717aaad4303SSolomon Peachy u32 value = host2hfa384x_32(val); 271800b3ed16SGreg Kroah-Hartman return hfa384x_drvr_setconfig_async(hw, rid, &value, sizeof(value), 271900b3ed16SGreg Kroah-Hartman NULL , NULL); 272000b3ed16SGreg Kroah-Hartman } 272100b3ed16SGreg Kroah-Hartman 272200b3ed16SGreg Kroah-Hartman 272300b3ed16SGreg Kroah-Hartman int 272400b3ed16SGreg Kroah-Hartman hfa384x_drvr_start(hfa384x_t *hw); 272500b3ed16SGreg Kroah-Hartman int 272600b3ed16SGreg Kroah-Hartman hfa384x_drvr_stop(hfa384x_t *hw); 272700b3ed16SGreg Kroah-Hartman int 272800b3ed16SGreg Kroah-Hartman hfa384x_drvr_txframe(hfa384x_t *hw, struct sk_buff *skb, p80211_hdr_t *p80211_hdr, p80211_metawep_t *p80211_wep); 272900b3ed16SGreg Kroah-Hartman void 273000b3ed16SGreg Kroah-Hartman hfa384x_tx_timeout(wlandevice_t *wlandev); 273100b3ed16SGreg Kroah-Hartman 273200b3ed16SGreg Kroah-Hartman int 273300b3ed16SGreg Kroah-Hartman hfa384x_cmd_initialize(hfa384x_t *hw); 273400b3ed16SGreg Kroah-Hartman int 2735aaad4303SSolomon Peachy hfa384x_cmd_enable(hfa384x_t *hw, u16 macport); 273600b3ed16SGreg Kroah-Hartman int 2737aaad4303SSolomon Peachy hfa384x_cmd_disable(hfa384x_t *hw, u16 macport); 273800b3ed16SGreg Kroah-Hartman int 273900b3ed16SGreg Kroah-Hartman hfa384x_cmd_diagnose(hfa384x_t *hw); 274000b3ed16SGreg Kroah-Hartman int 2741aaad4303SSolomon Peachy hfa384x_cmd_allocate(hfa384x_t *hw, u16 len); 274200b3ed16SGreg Kroah-Hartman int 2743aaad4303SSolomon Peachy hfa384x_cmd_transmit(hfa384x_t *hw, u16 reclaim, u16 qos, u16 fid); 274400b3ed16SGreg Kroah-Hartman int 2745aaad4303SSolomon Peachy hfa384x_cmd_clearpersist(hfa384x_t *hw, u16 fid); 274600b3ed16SGreg Kroah-Hartman int 2747aaad4303SSolomon Peachy hfa384x_cmd_notify(hfa384x_t *hw, u16 reclaim, u16 fid, void *buf, u16 len); 274800b3ed16SGreg Kroah-Hartman int 2749aaad4303SSolomon Peachy hfa384x_cmd_inquire(hfa384x_t *hw, u16 fid); 275000b3ed16SGreg Kroah-Hartman int 2751aaad4303SSolomon Peachy hfa384x_cmd_access(hfa384x_t *hw, u16 write, u16 rid, void *buf, u16 len); 275200b3ed16SGreg Kroah-Hartman int 2753aaad4303SSolomon Peachy hfa384x_cmd_monitor(hfa384x_t *hw, u16 enable); 275400b3ed16SGreg Kroah-Hartman int 275500b3ed16SGreg Kroah-Hartman hfa384x_cmd_download( 275600b3ed16SGreg Kroah-Hartman hfa384x_t *hw, 2757aaad4303SSolomon Peachy u16 mode, 2758aaad4303SSolomon Peachy u16 lowaddr, 2759aaad4303SSolomon Peachy u16 highaddr, 2760aaad4303SSolomon Peachy u16 codelen); 276100b3ed16SGreg Kroah-Hartman int 276200b3ed16SGreg Kroah-Hartman hfa384x_cmd_aux_enable(hfa384x_t *hw, int force); 276300b3ed16SGreg Kroah-Hartman int 276400b3ed16SGreg Kroah-Hartman hfa384x_cmd_aux_disable(hfa384x_t *hw); 276500b3ed16SGreg Kroah-Hartman int 276600b3ed16SGreg Kroah-Hartman hfa384x_copy_from_bap( 276700b3ed16SGreg Kroah-Hartman hfa384x_t *hw, 2768aaad4303SSolomon Peachy u16 bap, 2769aaad4303SSolomon Peachy u16 id, 2770aaad4303SSolomon Peachy u16 offset, 277100b3ed16SGreg Kroah-Hartman void *buf, 2772aaad4303SSolomon Peachy unsigned int len); 277300b3ed16SGreg Kroah-Hartman int 277400b3ed16SGreg Kroah-Hartman hfa384x_copy_to_bap( 277500b3ed16SGreg Kroah-Hartman hfa384x_t *hw, 2776aaad4303SSolomon Peachy u16 bap, 2777aaad4303SSolomon Peachy u16 id, 2778aaad4303SSolomon Peachy u16 offset, 277900b3ed16SGreg Kroah-Hartman void *buf, 2780aaad4303SSolomon Peachy unsigned int len); 278100b3ed16SGreg Kroah-Hartman void 278200b3ed16SGreg Kroah-Hartman hfa384x_copy_from_aux( 278300b3ed16SGreg Kroah-Hartman hfa384x_t *hw, 2784aaad4303SSolomon Peachy u32 cardaddr, 2785aaad4303SSolomon Peachy u32 auxctl, 278600b3ed16SGreg Kroah-Hartman void *buf, 2787aaad4303SSolomon Peachy unsigned int len); 278800b3ed16SGreg Kroah-Hartman void 278900b3ed16SGreg Kroah-Hartman hfa384x_copy_to_aux( 279000b3ed16SGreg Kroah-Hartman hfa384x_t *hw, 2791aaad4303SSolomon Peachy u32 cardaddr, 2792aaad4303SSolomon Peachy u32 auxctl, 279300b3ed16SGreg Kroah-Hartman void *buf, 2794aaad4303SSolomon Peachy unsigned int len); 279500b3ed16SGreg Kroah-Hartman 279600b3ed16SGreg Kroah-Hartman #endif /* __KERNEL__ */ 279700b3ed16SGreg Kroah-Hartman 279800b3ed16SGreg Kroah-Hartman #endif /* _HFA384x_H */ 2799