/* hfa384x.h
*
* Defines the constants and data structures for the hfa384x
*
* Copyright (C) 1999 AbsoluteValue Systems, Inc.  All Rights Reserved.
* --------------------------------------------------------------------
*
* linux-wlan
*
*   The contents of this file are subject to the Mozilla Public
*   License Version 1.1 (the "License"); you may not use this file
*   except in compliance with the License. You may obtain a copy of
*   the License at http://www.mozilla.org/MPL/
*
*   Software distributed under the License is distributed on an "AS
*   IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
*   implied. See the License for the specific language governing
*   rights and limitations under the License.
*
*   Alternatively, the contents of this file may be used under the
*   terms of the GNU Public License version 2 (the "GPL"), in which
*   case the provisions of the GPL are applicable instead of the
*   above.  If you wish to allow the use of your version of this file
*   only under the terms of the GPL and not to allow others to use
*   your version of this file under the MPL, indicate your decision
*   by deleting the provisions above and replace them with the notice
*   and other provisions required by the GPL.  If you do not delete
*   the provisions above, a recipient may use your version of this
*   file under either the MPL or the GPL.
*
* --------------------------------------------------------------------
*
* Inquiries regarding the linux-wlan Open Source project can be
* made directly to:
*
* AbsoluteValue Systems Inc.
* info@linux-wlan.com
* http://www.linux-wlan.com
*
* --------------------------------------------------------------------
*
* Portions of the development of this software were funded by
* Intersil Corporation as part of PRISM(R) chipset product development.
*
* --------------------------------------------------------------------
*
*   [Implementation and usage notes]
*
*   [References]
*	CW10 Programmer's Manual v1.5
*	IEEE 802.11 D10.0
*
* --------------------------------------------------------------------
*/

#ifndef _HFA384x_H
#define _HFA384x_H

/*=============================================================*/
#define HFA384x_FIRMWARE_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))

#define HFA384x_LEVEL_TO_dBm(v)   (0x100 + (v) * 100 / 255 - 100)

/*------ Constants --------------------------------------------*/
/*--- Mins & Maxs -----------------------------------*/
#define		HFA384x_CMD_ALLOC_LEN_MIN	((UINT16)4)
#define		HFA384x_CMD_ALLOC_LEN_MAX	((UINT16)2400)
#define		HFA384x_BAP_DATALEN_MAX		((UINT16)4096)
#define		HFA384x_BAP_OFFSET_MAX		((UINT16)4096)
#define		HFA384x_PORTID_MAX		((UINT16)7)
#define		HFA384x_NUMPORTS_MAX		((UINT16)(HFA384x_PORTID_MAX+1))
#define		HFA384x_PDR_LEN_MAX		((UINT16)512)	/* in bytes, from EK */
#define		HFA384x_PDA_RECS_MAX		((UINT16)200)	/* a guess */
#define		HFA384x_PDA_LEN_MAX		((UINT16)1024)	/* in bytes, from EK */
#define		HFA384x_SCANRESULT_MAX		((UINT16)31)
#define		HFA384x_HSCANRESULT_MAX		((UINT16)31)
#define		HFA384x_CHINFORESULT_MAX	((UINT16)16)
#define		HFA384x_DRVR_FIDSTACKLEN_MAX	(10)
#define		HFA384x_DRVR_TXBUF_MAX		(sizeof(hfa384x_tx_frame_t) + \
						WLAN_DATA_MAXLEN - \
						WLAN_WEP_IV_LEN - \
						WLAN_WEP_ICV_LEN + 2)
#define		HFA384x_DRVR_MAGIC		(0x4a2d)
#define		HFA384x_INFODATA_MAXLEN		(sizeof(hfa384x_infodata_t))
#define		HFA384x_INFOFRM_MAXLEN		(sizeof(hfa384x_InfFrame_t))
#define		HFA384x_RID_GUESSING_MAXLEN	2048  /* I'm not really sure */
#define		HFA384x_RIDDATA_MAXLEN		HFA384x_RID_GUESSING_MAXLEN
#define		HFA384x_USB_RWMEM_MAXLEN	2048

/*--- Support Constants -----------------------------*/
#define		HFA384x_BAP_PROC			((UINT16)0)
#define		HFA384x_BAP_INT				((UINT16)1)
#define		HFA384x_PORTTYPE_IBSS			((UINT16)0)
#define		HFA384x_PORTTYPE_BSS			((UINT16)1)
#define		HFA384x_PORTTYPE_WDS			((UINT16)2)
#define		HFA384x_PORTTYPE_PSUEDOIBSS		((UINT16)3)
#define		HFA384x_PORTTYPE_HOSTAP    		((UINT16)6)
#define		HFA384x_WEPFLAGS_PRIVINVOKED		((UINT16)BIT0)
#define		HFA384x_WEPFLAGS_EXCLUDE		((UINT16)BIT1)
#define		HFA384x_WEPFLAGS_DISABLE_TXCRYPT	((UINT16)BIT4)
#define		HFA384x_WEPFLAGS_DISABLE_RXCRYPT	((UINT16)BIT7)
#define		HFA384x_WEPFLAGS_DISALLOW_MIXED 	((UINT16)BIT11)
#define		HFA384x_WEPFLAGS_IV_INTERVAL1		((UINT16)0)
#define		HFA384x_WEPFLAGS_IV_INTERVAL10		((UINT16)BIT5)
#define		HFA384x_WEPFLAGS_IV_INTERVAL50		((UINT16)BIT6)
#define		HFA384x_WEPFLAGS_IV_INTERVAL100		((UINT16)(BIT5 | BIT6))
#define		HFA384x_WEPFLAGS_FIRMWARE_WPA  		((UINT16)BIT8)
#define		HFA384x_WEPFLAGS_HOST_MIC      		((UINT16)BIT9)
#define 	HFA384x_ROAMMODE_FWSCAN_FWROAM		((UINT16)1)
#define 	HFA384x_ROAMMODE_FWSCAN_HOSTROAM	((UINT16)2)
#define 	HFA384x_ROAMMODE_HOSTSCAN_HOSTROAM	((UINT16)3)
#define 	HFA384x_PORTSTATUS_DISABLED		((UINT16)1)
#define 	HFA384x_PORTSTATUS_INITSRCH		((UINT16)2)
#define 	HFA384x_PORTSTATUS_CONN_IBSS		((UINT16)3)
#define 	HFA384x_PORTSTATUS_CONN_ESS		((UINT16)4)
#define 	HFA384x_PORTSTATUS_OOR_ESS		((UINT16)5)
#define 	HFA384x_PORTSTATUS_CONN_WDS		((UINT16)6)
#define 	HFA384x_PORTSTATUS_HOSTAP		((UINT16)8)
#define		HFA384x_RATEBIT_1			((UINT16)1)
#define		HFA384x_RATEBIT_2			((UINT16)2)
#define		HFA384x_RATEBIT_5dot5			((UINT16)4)
#define		HFA384x_RATEBIT_11			((UINT16)8)

/*--- Just some symbolic names for legibility -------*/
#define		HFA384x_TXCMD_NORECL		((UINT16)0)
#define		HFA384x_TXCMD_RECL		((UINT16)1)

/*--- MAC Internal memory constants and macros ------*/
/* masks and macros used to manipulate MAC internal memory addresses. */
/* MAC internal memory addresses are 23 bit quantities.  The MAC uses
 * a paged address space where the upper 16 bits are the page number
 * and the lower 7 bits are the offset.  There are various Host API
 * elements that require two 16-bit quantities to specify a MAC
 * internal memory address.  Unfortunately, some of the API's use a
 * page/offset format where the offset value is JUST the lower seven
 * bits and the page is  the remaining 16 bits.  Some of the API's
 * assume that the 23 bit address has been split at the 16th bit.  We
 * refer to these two formats as AUX format and CMD format.  The
 * macros below help handle some of this.
 */

/* Handy constant */
#define		HFA384x_ADDR_AUX_OFF_MAX	((UINT16)0x007f)

/* Mask bits for discarding unwanted pieces in a flat address */
#define		HFA384x_ADDR_FLAT_AUX_PAGE_MASK	(0x007fff80)
#define		HFA384x_ADDR_FLAT_AUX_OFF_MASK	(0x0000007f)
#define		HFA384x_ADDR_FLAT_CMD_PAGE_MASK	(0xffff0000)
#define		HFA384x_ADDR_FLAT_CMD_OFF_MASK	(0x0000ffff)

/* Mask bits for discarding unwanted pieces in AUX format 16-bit address parts */
#define		HFA384x_ADDR_AUX_PAGE_MASK	(0xffff)
#define		HFA384x_ADDR_AUX_OFF_MASK	(0x007f)

/* Mask bits for discarding unwanted pieces in CMD format 16-bit address parts */
#define		HFA384x_ADDR_CMD_PAGE_MASK	(0x007f)
#define		HFA384x_ADDR_CMD_OFF_MASK	(0xffff)

/* Make a 32-bit flat address from AUX format 16-bit page and offset */
#define		HFA384x_ADDR_AUX_MKFLAT(p,o)	\
		(((UINT32)(((UINT16)(p))&HFA384x_ADDR_AUX_PAGE_MASK)) <<7) | \
		((UINT32)(((UINT16)(o))&HFA384x_ADDR_AUX_OFF_MASK))

/* Make a 32-bit flat address from CMD format 16-bit page and offset */
#define		HFA384x_ADDR_CMD_MKFLAT(p,o)	\
		(((UINT32)(((UINT16)(p))&HFA384x_ADDR_CMD_PAGE_MASK)) <<16) | \
		((UINT32)(((UINT16)(o))&HFA384x_ADDR_CMD_OFF_MASK))

/* Make AUX format offset and page from a 32-bit flat address */
#define		HFA384x_ADDR_AUX_MKPAGE(f) \
		((UINT16)((((UINT32)(f))&HFA384x_ADDR_FLAT_AUX_PAGE_MASK)>>7))
#define		HFA384x_ADDR_AUX_MKOFF(f) \
		((UINT16)(((UINT32)(f))&HFA384x_ADDR_FLAT_AUX_OFF_MASK))

/* Make CMD format offset and page from a 32-bit flat address */
#define		HFA384x_ADDR_CMD_MKPAGE(f) \
		((UINT16)((((UINT32)(f))&HFA384x_ADDR_FLAT_CMD_PAGE_MASK)>>16))
#define		HFA384x_ADDR_CMD_MKOFF(f) \
		((UINT16)(((UINT32)(f))&HFA384x_ADDR_FLAT_CMD_OFF_MASK))

/*--- Aux register masks/tests ----------------------*/
/* Some of the upper bits of the AUX offset register are used to */
/*  select address space. */
#define		HFA384x_AUX_CTL_EXTDS	(0x00)
#define		HFA384x_AUX_CTL_NV	(0x01)
#define		HFA384x_AUX_CTL_PHY	(0x02)
#define		HFA384x_AUX_CTL_ICSRAM	(0x03)

/* Make AUX register offset and page values from a flat address */
#define		HFA384x_AUX_MKOFF(f, c) \
	(HFA384x_ADDR_AUX_MKOFF(f) | (((UINT16)(c))<<12))
#define		HFA384x_AUX_MKPAGE(f)	HFA384x_ADDR_AUX_MKPAGE(f)


/*--- Controller Memory addresses -------------------*/
#define		HFA3842_PDA_BASE	(0x007f0000UL)
#define		HFA3841_PDA_BASE	(0x003f0000UL)
#define		HFA3841_PDA_BOGUS_BASE	(0x00390000UL)

/*--- Driver Download states  -----------------------*/
#define		HFA384x_DLSTATE_DISABLED		0
#define		HFA384x_DLSTATE_RAMENABLED		1
#define		HFA384x_DLSTATE_FLASHENABLED		2
#define		HFA384x_DLSTATE_FLASHWRITTEN		3
#define		HFA384x_DLSTATE_FLASHWRITEPENDING	4
#define		HFA384x_DLSTATE_GENESIS 		5

/*--- Register I/O offsets --------------------------*/
#if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX))

#define		HFA384x_CMD_OFF			(0x00)
#define		HFA384x_PARAM0_OFF		(0x02)
#define		HFA384x_PARAM1_OFF		(0x04)
#define		HFA384x_PARAM2_OFF		(0x06)
#define		HFA384x_STATUS_OFF		(0x08)
#define		HFA384x_RESP0_OFF		(0x0A)
#define		HFA384x_RESP1_OFF		(0x0C)
#define		HFA384x_RESP2_OFF		(0x0E)
#define		HFA384x_INFOFID_OFF		(0x10)
#define		HFA384x_RXFID_OFF		(0x20)
#define		HFA384x_ALLOCFID_OFF		(0x22)
#define		HFA384x_TXCOMPLFID_OFF		(0x24)
#define		HFA384x_SELECT0_OFF		(0x18)
#define		HFA384x_OFFSET0_OFF		(0x1C)
#define		HFA384x_DATA0_OFF		(0x36)
#define		HFA384x_SELECT1_OFF		(0x1A)
#define		HFA384x_OFFSET1_OFF		(0x1E)
#define		HFA384x_DATA1_OFF		(0x38)
#define		HFA384x_EVSTAT_OFF		(0x30)
#define		HFA384x_INTEN_OFF		(0x32)
#define		HFA384x_EVACK_OFF		(0x34)
#define		HFA384x_CONTROL_OFF		(0x14)
#define		HFA384x_SWSUPPORT0_OFF		(0x28)
#define		HFA384x_SWSUPPORT1_OFF		(0x2A)
#define		HFA384x_SWSUPPORT2_OFF		(0x2C)
#define		HFA384x_AUXPAGE_OFF		(0x3A)
#define		HFA384x_AUXOFFSET_OFF		(0x3C)
#define		HFA384x_AUXDATA_OFF		(0x3E)

#elif (WLAN_HOSTIF == WLAN_PCI || WLAN_HOSTIF == WLAN_USB)

#define		HFA384x_CMD_OFF			(0x00)
#define		HFA384x_PARAM0_OFF		(0x04)
#define		HFA384x_PARAM1_OFF		(0x08)
#define		HFA384x_PARAM2_OFF		(0x0c)
#define		HFA384x_STATUS_OFF		(0x10)
#define		HFA384x_RESP0_OFF		(0x14)
#define		HFA384x_RESP1_OFF		(0x18)
#define		HFA384x_RESP2_OFF		(0x1c)
#define		HFA384x_INFOFID_OFF		(0x20)
#define		HFA384x_RXFID_OFF		(0x40)
#define		HFA384x_ALLOCFID_OFF		(0x44)
#define		HFA384x_TXCOMPLFID_OFF		(0x48)
#define		HFA384x_SELECT0_OFF		(0x30)
#define		HFA384x_OFFSET0_OFF		(0x38)
#define		HFA384x_DATA0_OFF		(0x6c)
#define		HFA384x_SELECT1_OFF		(0x34)
#define		HFA384x_OFFSET1_OFF		(0x3c)
#define		HFA384x_DATA1_OFF		(0x70)
#define		HFA384x_EVSTAT_OFF		(0x60)
#define		HFA384x_INTEN_OFF		(0x64)
#define		HFA384x_EVACK_OFF		(0x68)
#define		HFA384x_CONTROL_OFF		(0x28)
#define		HFA384x_SWSUPPORT0_OFF		(0x50)
#define		HFA384x_SWSUPPORT1_OFF		(0x54)
#define		HFA384x_SWSUPPORT2_OFF		(0x58)
#define		HFA384x_AUXPAGE_OFF		(0x74)
#define		HFA384x_AUXOFFSET_OFF		(0x78)
#define		HFA384x_AUXDATA_OFF		(0x7c)
#define		HFA384x_PCICOR_OFF		(0x4c)
#define		HFA384x_PCIHCR_OFF		(0x5c)
#define		HFA384x_PCI_M0_ADDRH_OFF	(0x80)
#define		HFA384x_PCI_M0_ADDRL_OFF	(0x84)
#define		HFA384x_PCI_M0_LEN_OFF		(0x88)
#define		HFA384x_PCI_M0_CTL_OFF		(0x8c)
#define		HFA384x_PCI_STATUS_OFF		(0x98)
#define		HFA384x_PCI_M1_ADDRH_OFF	(0xa0)
#define		HFA384x_PCI_M1_ADDRL_OFF	(0xa4)
#define		HFA384x_PCI_M1_LEN_OFF		(0xa8)
#define		HFA384x_PCI_M1_CTL_OFF		(0xac)

#endif

/*--- Register Field Masks --------------------------*/
#define		HFA384x_CMD_BUSY		((UINT16)BIT15)
#define		HFA384x_CMD_AINFO		((UINT16)(BIT14 | BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8))
#define		HFA384x_CMD_MACPORT		((UINT16)(BIT10 | BIT9 | BIT8))
#define		HFA384x_CMD_RECL		((UINT16)BIT8)
#define		HFA384x_CMD_WRITE		((UINT16)BIT8)
#define		HFA384x_CMD_PROGMODE		((UINT16)(BIT9 | BIT8))
#define		HFA384x_CMD_CMDCODE		((UINT16)(BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0))

#define		HFA384x_STATUS_RESULT		((UINT16)(BIT14 | BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8))
#define		HFA384x_STATUS_CMDCODE		((UINT16)(BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0))

#define		HFA384x_OFFSET_BUSY		((UINT16)BIT15)
#define		HFA384x_OFFSET_ERR		((UINT16)BIT14)
#define		HFA384x_OFFSET_DATAOFF		((UINT16)(BIT11 | BIT10 | BIT9 | BIT8 | BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1))

#define		HFA384x_EVSTAT_TICK		((UINT16)BIT15)
#define		HFA384x_EVSTAT_WTERR		((UINT16)BIT14)
#define		HFA384x_EVSTAT_INFDROP		((UINT16)BIT13)
#define		HFA384x_EVSTAT_INFO		((UINT16)BIT7)
#define		HFA384x_EVSTAT_DTIM		((UINT16)BIT5)
#define		HFA384x_EVSTAT_CMD		((UINT16)BIT4)
#define		HFA384x_EVSTAT_ALLOC		((UINT16)BIT3)
#define		HFA384x_EVSTAT_TXEXC		((UINT16)BIT2)
#define		HFA384x_EVSTAT_TX		((UINT16)BIT1)
#define		HFA384x_EVSTAT_RX		((UINT16)BIT0)

#define         HFA384x_INT_BAP_OP           (HFA384x_EVSTAT_INFO|HFA384x_EVSTAT_RX|HFA384x_EVSTAT_TX|HFA384x_EVSTAT_TXEXC)

#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)

#define		HFA384x_INTEN_TICK		((UINT16)BIT15)
#define		HFA384x_INTEN_WTERR		((UINT16)BIT14)
#define		HFA384x_INTEN_INFDROP		((UINT16)BIT13)
#define		HFA384x_INTEN_INFO		((UINT16)BIT7)
#define		HFA384x_INTEN_DTIM		((UINT16)BIT5)
#define		HFA384x_INTEN_CMD		((UINT16)BIT4)
#define		HFA384x_INTEN_ALLOC		((UINT16)BIT3)
#define		HFA384x_INTEN_TXEXC		((UINT16)BIT2)
#define		HFA384x_INTEN_TX		((UINT16)BIT1)
#define		HFA384x_INTEN_RX		((UINT16)BIT0)

#define		HFA384x_EVACK_TICK		((UINT16)BIT15)
#define		HFA384x_EVACK_WTERR		((UINT16)BIT14)
#define		HFA384x_EVACK_INFDROP		((UINT16)BIT13)
#define		HFA384x_EVACK_INFO		((UINT16)BIT7)
#define		HFA384x_EVACK_DTIM		((UINT16)BIT5)
#define		HFA384x_EVACK_CMD		((UINT16)BIT4)
#define		HFA384x_EVACK_ALLOC		((UINT16)BIT3)
#define		HFA384x_EVACK_TXEXC		((UINT16)BIT2)
#define		HFA384x_EVACK_TX		((UINT16)BIT1)
#define		HFA384x_EVACK_RX		((UINT16)BIT0)

#define		HFA384x_CONTROL_AUXEN		((UINT16)(BIT15 | BIT14))


/*--- Command Code Constants --------------------------*/
/*--- Controller Commands --------------------------*/
#define		HFA384x_CMDCODE_INIT		((UINT16)0x00)
#define		HFA384x_CMDCODE_ENABLE		((UINT16)0x01)
#define		HFA384x_CMDCODE_DISABLE		((UINT16)0x02)
#define		HFA384x_CMDCODE_DIAG		((UINT16)0x03)

/*--- Buffer Mgmt Commands --------------------------*/
#define		HFA384x_CMDCODE_ALLOC		((UINT16)0x0A)
#define		HFA384x_CMDCODE_TX		((UINT16)0x0B)
#define		HFA384x_CMDCODE_CLRPRST		((UINT16)0x12)

/*--- Regulate Commands --------------------------*/
#define		HFA384x_CMDCODE_NOTIFY		((UINT16)0x10)
#define		HFA384x_CMDCODE_INQ		((UINT16)0x11)

/*--- Configure Commands --------------------------*/
#define		HFA384x_CMDCODE_ACCESS		((UINT16)0x21)
#define		HFA384x_CMDCODE_DOWNLD		((UINT16)0x22)

/*--- Debugging Commands -----------------------------*/
#define 	HFA384x_CMDCODE_MONITOR		((UINT16)(0x38))
#define		HFA384x_MONITOR_ENABLE		((UINT16)(0x0b))
#define		HFA384x_MONITOR_DISABLE		((UINT16)(0x0f))

/*--- Result Codes --------------------------*/
#define		HFA384x_SUCCESS			((UINT16)(0x00))
#define		HFA384x_CARD_FAIL		((UINT16)(0x01))
#define		HFA384x_NO_BUFF			((UINT16)(0x05))
#define		HFA384x_CMD_ERR			((UINT16)(0x7F))

/*--- Programming Modes --------------------------
	MODE 0: Disable programming
	MODE 1: Enable volatile memory programming
	MODE 2: Enable non-volatile memory programming
	MODE 3: Program non-volatile memory section
--------------------------------------------------*/
#define		HFA384x_PROGMODE_DISABLE	((UINT16)0x00)
#define		HFA384x_PROGMODE_RAM		((UINT16)0x01)
#define		HFA384x_PROGMODE_NV		((UINT16)0x02)
#define		HFA384x_PROGMODE_NVWRITE	((UINT16)0x03)

/*--- AUX register enable --------------------------*/
#define		HFA384x_AUXPW0			((UINT16)0xfe01)
#define		HFA384x_AUXPW1			((UINT16)0xdc23)
#define		HFA384x_AUXPW2			((UINT16)0xba45)

#define		HFA384x_CONTROL_AUX_ISDISABLED	((UINT16)0x0000)
#define		HFA384x_CONTROL_AUX_ISENABLED	((UINT16)0xc000)
#define		HFA384x_CONTROL_AUX_DOENABLE	((UINT16)0x8000)
#define		HFA384x_CONTROL_AUX_DODISABLE	((UINT16)0x4000)

/*--- Record ID Constants --------------------------*/
/*--------------------------------------------------------------------
Configuration RIDs: Network Parameters, Static Configuration Entities
--------------------------------------------------------------------*/
#define		HFA384x_RID_CNFPORTTYPE		((UINT16)0xFC00)
#define		HFA384x_RID_CNFOWNMACADDR	((UINT16)0xFC01)
#define		HFA384x_RID_CNFDESIREDSSID	((UINT16)0xFC02)
#define		HFA384x_RID_CNFOWNCHANNEL	((UINT16)0xFC03)
#define		HFA384x_RID_CNFOWNSSID		((UINT16)0xFC04)
#define		HFA384x_RID_CNFOWNATIMWIN	((UINT16)0xFC05)
#define		HFA384x_RID_CNFSYSSCALE		((UINT16)0xFC06)
#define		HFA384x_RID_CNFMAXDATALEN	((UINT16)0xFC07)
#define		HFA384x_RID_CNFWDSADDR		((UINT16)0xFC08)
#define		HFA384x_RID_CNFPMENABLED	((UINT16)0xFC09)
#define		HFA384x_RID_CNFPMEPS		((UINT16)0xFC0A)
#define		HFA384x_RID_CNFMULTICASTRX	((UINT16)0xFC0B)
#define		HFA384x_RID_CNFMAXSLEEPDUR	((UINT16)0xFC0C)
#define		HFA384x_RID_CNFPMHOLDDUR	((UINT16)0xFC0D)
#define		HFA384x_RID_CNFOWNNAME		((UINT16)0xFC0E)
#define		HFA384x_RID_CNFOWNDTIMPER	((UINT16)0xFC10)
#define		HFA384x_RID_CNFWDSADDR1		((UINT16)0xFC11)
#define		HFA384x_RID_CNFWDSADDR2		((UINT16)0xFC12)
#define		HFA384x_RID_CNFWDSADDR3		((UINT16)0xFC13)
#define		HFA384x_RID_CNFWDSADDR4		((UINT16)0xFC14)
#define		HFA384x_RID_CNFWDSADDR5		((UINT16)0xFC15)
#define		HFA384x_RID_CNFWDSADDR6		((UINT16)0xFC16)
#define		HFA384x_RID_CNFMCASTPMBUFF	((UINT16)0xFC17)

/*--------------------------------------------------------------------
Configuration RID lengths: Network Params, Static Config Entities
  This is the length of JUST the DATA part of the RID (does not
  include the len or code fields)
--------------------------------------------------------------------*/
/* TODO: fill in the rest of these */
#define		HFA384x_RID_CNFPORTTYPE_LEN	((UINT16)2)
#define		HFA384x_RID_CNFOWNMACADDR_LEN	((UINT16)6)
#define		HFA384x_RID_CNFDESIREDSSID_LEN	((UINT16)34)
#define		HFA384x_RID_CNFOWNCHANNEL_LEN	((UINT16)2)
#define		HFA384x_RID_CNFOWNSSID_LEN	((UINT16)34)
#define		HFA384x_RID_CNFOWNATIMWIN_LEN	((UINT16)2)
#define		HFA384x_RID_CNFSYSSCALE_LEN	((UINT16)0)
#define		HFA384x_RID_CNFMAXDATALEN_LEN	((UINT16)0)
#define		HFA384x_RID_CNFWDSADDR_LEN	((UINT16)6)
#define		HFA384x_RID_CNFPMENABLED_LEN	((UINT16)0)
#define		HFA384x_RID_CNFPMEPS_LEN	((UINT16)0)
#define		HFA384x_RID_CNFMULTICASTRX_LEN	((UINT16)0)
#define		HFA384x_RID_CNFMAXSLEEPDUR_LEN	((UINT16)0)
#define		HFA384x_RID_CNFPMHOLDDUR_LEN	((UINT16)0)
#define		HFA384x_RID_CNFOWNNAME_LEN	((UINT16)34)
#define		HFA384x_RID_CNFOWNDTIMPER_LEN	((UINT16)0)
#define		HFA384x_RID_CNFWDSADDR1_LEN	((UINT16)6)
#define		HFA384x_RID_CNFWDSADDR2_LEN	((UINT16)6)
#define		HFA384x_RID_CNFWDSADDR3_LEN	((UINT16)6)
#define		HFA384x_RID_CNFWDSADDR4_LEN	((UINT16)6)
#define		HFA384x_RID_CNFWDSADDR5_LEN	((UINT16)6)
#define		HFA384x_RID_CNFWDSADDR6_LEN	((UINT16)6)
#define		HFA384x_RID_CNFMCASTPMBUFF_LEN	((UINT16)0)
#define		HFA384x_RID_CNFAUTHENTICATION_LEN ((UINT16)sizeof(UINT16))
#define		HFA384x_RID_CNFMAXSLEEPDUR_LEN	((UINT16)0)

/*--------------------------------------------------------------------
Configuration RIDs: Network Parameters, Dynamic Configuration Entities
--------------------------------------------------------------------*/
#define		HFA384x_RID_GROUPADDR		((UINT16)0xFC80)
#define		HFA384x_RID_CREATEIBSS		((UINT16)0xFC81)
#define		HFA384x_RID_FRAGTHRESH		((UINT16)0xFC82)
#define		HFA384x_RID_RTSTHRESH		((UINT16)0xFC83)
#define		HFA384x_RID_TXRATECNTL		((UINT16)0xFC84)
#define		HFA384x_RID_PROMISCMODE		((UINT16)0xFC85)
#define		HFA384x_RID_FRAGTHRESH0		((UINT16)0xFC90)
#define		HFA384x_RID_FRAGTHRESH1		((UINT16)0xFC91)
#define		HFA384x_RID_FRAGTHRESH2		((UINT16)0xFC92)
#define		HFA384x_RID_FRAGTHRESH3		((UINT16)0xFC93)
#define		HFA384x_RID_FRAGTHRESH4		((UINT16)0xFC94)
#define		HFA384x_RID_FRAGTHRESH5		((UINT16)0xFC95)
#define		HFA384x_RID_FRAGTHRESH6		((UINT16)0xFC96)
#define		HFA384x_RID_RTSTHRESH0		((UINT16)0xFC97)
#define		HFA384x_RID_RTSTHRESH1		((UINT16)0xFC98)
#define		HFA384x_RID_RTSTHRESH2		((UINT16)0xFC99)
#define		HFA384x_RID_RTSTHRESH3		((UINT16)0xFC9A)
#define		HFA384x_RID_RTSTHRESH4		((UINT16)0xFC9B)
#define		HFA384x_RID_RTSTHRESH5		((UINT16)0xFC9C)
#define		HFA384x_RID_RTSTHRESH6		((UINT16)0xFC9D)
#define		HFA384x_RID_TXRATECNTL0		((UINT16)0xFC9E)
#define		HFA384x_RID_TXRATECNTL1		((UINT16)0xFC9F)
#define		HFA384x_RID_TXRATECNTL2		((UINT16)0xFCA0)
#define		HFA384x_RID_TXRATECNTL3		((UINT16)0xFCA1)
#define		HFA384x_RID_TXRATECNTL4		((UINT16)0xFCA2)
#define		HFA384x_RID_TXRATECNTL5		((UINT16)0xFCA3)
#define		HFA384x_RID_TXRATECNTL6		((UINT16)0xFCA4)

/*--------------------------------------------------------------------
Configuration RID Lengths: Network Param, Dynamic Config Entities
  This is the length of JUST the DATA part of the RID (does not
  include the len or code fields)
--------------------------------------------------------------------*/
/* TODO: fill in the rest of these */
#define		HFA384x_RID_GROUPADDR_LEN	((UINT16)16 * WLAN_ADDR_LEN)
#define		HFA384x_RID_CREATEIBSS_LEN	((UINT16)0)
#define		HFA384x_RID_FRAGTHRESH_LEN	((UINT16)0)
#define		HFA384x_RID_RTSTHRESH_LEN	((UINT16)0)
#define		HFA384x_RID_TXRATECNTL_LEN	((UINT16)4)
#define		HFA384x_RID_PROMISCMODE_LEN	((UINT16)2)
#define		HFA384x_RID_FRAGTHRESH0_LEN	((UINT16)0)
#define		HFA384x_RID_FRAGTHRESH1_LEN	((UINT16)0)
#define		HFA384x_RID_FRAGTHRESH2_LEN	((UINT16)0)
#define		HFA384x_RID_FRAGTHRESH3_LEN	((UINT16)0)
#define		HFA384x_RID_FRAGTHRESH4_LEN	((UINT16)0)
#define		HFA384x_RID_FRAGTHRESH5_LEN	((UINT16)0)
#define		HFA384x_RID_FRAGTHRESH6_LEN	((UINT16)0)
#define		HFA384x_RID_RTSTHRESH0_LEN	((UINT16)0)
#define		HFA384x_RID_RTSTHRESH1_LEN	((UINT16)0)
#define		HFA384x_RID_RTSTHRESH2_LEN	((UINT16)0)
#define		HFA384x_RID_RTSTHRESH3_LEN	((UINT16)0)
#define		HFA384x_RID_RTSTHRESH4_LEN	((UINT16)0)
#define		HFA384x_RID_RTSTHRESH5_LEN	((UINT16)0)
#define		HFA384x_RID_RTSTHRESH6_LEN	((UINT16)0)
#define		HFA384x_RID_TXRATECNTL0_LEN	((UINT16)0)
#define		HFA384x_RID_TXRATECNTL1_LEN	((UINT16)0)
#define		HFA384x_RID_TXRATECNTL2_LEN	((UINT16)0)
#define		HFA384x_RID_TXRATECNTL3_LEN	((UINT16)0)
#define		HFA384x_RID_TXRATECNTL4_LEN	((UINT16)0)
#define		HFA384x_RID_TXRATECNTL5_LEN	((UINT16)0)
#define		HFA384x_RID_TXRATECNTL6_LEN	((UINT16)0)

/*--------------------------------------------------------------------
Configuration RIDs: Behavior Parameters
--------------------------------------------------------------------*/
#define		HFA384x_RID_ITICKTIME		((UINT16)0xFCE0)

/*--------------------------------------------------------------------
Configuration RID Lengths: Behavior Parameters
  This is the length of JUST the DATA part of the RID (does not
  include the len or code fields)
--------------------------------------------------------------------*/
#define		HFA384x_RID_ITICKTIME_LEN	((UINT16)2)

/*----------------------------------------------------------------------
Information RIDs: NIC Information
--------------------------------------------------------------------*/
#define		HFA384x_RID_MAXLOADTIME		((UINT16)0xFD00)
#define		HFA384x_RID_DOWNLOADBUFFER	((UINT16)0xFD01)
#define		HFA384x_RID_PRIIDENTITY		((UINT16)0xFD02)
#define		HFA384x_RID_PRISUPRANGE		((UINT16)0xFD03)
#define		HFA384x_RID_PRI_CFIACTRANGES	((UINT16)0xFD04)
#define		HFA384x_RID_NICSERIALNUMBER	((UINT16)0xFD0A)
#define		HFA384x_RID_NICIDENTITY		((UINT16)0xFD0B)
#define		HFA384x_RID_MFISUPRANGE		((UINT16)0xFD0C)
#define		HFA384x_RID_CFISUPRANGE		((UINT16)0xFD0D)
#define		HFA384x_RID_CHANNELLIST		((UINT16)0xFD10)
#define		HFA384x_RID_REGULATORYDOMAINS	((UINT16)0xFD11)
#define		HFA384x_RID_TEMPTYPE		((UINT16)0xFD12)
#define		HFA384x_RID_CIS			((UINT16)0xFD13)
#define		HFA384x_RID_STAIDENTITY		((UINT16)0xFD20)
#define		HFA384x_RID_STASUPRANGE		((UINT16)0xFD21)
#define		HFA384x_RID_STA_MFIACTRANGES	((UINT16)0xFD22)
#define		HFA384x_RID_STA_CFIACTRANGES	((UINT16)0xFD23)
#define		HFA384x_RID_BUILDSEQ		((UINT16)0xFFFE)
#define		HFA384x_RID_FWID		((UINT16)0xFFFF)

/*----------------------------------------------------------------------
Information RID Lengths: NIC Information
  This is the length of JUST the DATA part of the RID (does not
  include the len or code fields)
--------------------------------------------------------------------*/
#define		HFA384x_RID_MAXLOADTIME_LEN		((UINT16)0)
#define		HFA384x_RID_DOWNLOADBUFFER_LEN		((UINT16)sizeof(hfa384x_downloadbuffer_t))
#define		HFA384x_RID_PRIIDENTITY_LEN		((UINT16)8)
#define		HFA384x_RID_PRISUPRANGE_LEN		((UINT16)10)
#define		HFA384x_RID_CFIACTRANGES_LEN		((UINT16)10)
#define		HFA384x_RID_NICSERIALNUMBER_LEN		((UINT16)12)
#define		HFA384x_RID_NICIDENTITY_LEN		((UINT16)8)
#define		HFA384x_RID_MFISUPRANGE_LEN		((UINT16)10)
#define		HFA384x_RID_CFISUPRANGE_LEN		((UINT16)10)
#define		HFA384x_RID_CHANNELLIST_LEN		((UINT16)0)
#define		HFA384x_RID_REGULATORYDOMAINS_LEN	((UINT16)12)
#define		HFA384x_RID_TEMPTYPE_LEN		((UINT16)0)
#define		HFA384x_RID_CIS_LEN			((UINT16)480)
#define		HFA384x_RID_STAIDENTITY_LEN		((UINT16)8)
#define		HFA384x_RID_STASUPRANGE_LEN		((UINT16)10)
#define		HFA384x_RID_MFIACTRANGES_LEN		((UINT16)10)
#define		HFA384x_RID_CFIACTRANGES2_LEN		((UINT16)10)
#define		HFA384x_RID_BUILDSEQ_LEN		((UINT16)sizeof(hfa384x_BuildSeq_t))
#define		HFA384x_RID_FWID_LEN			((UINT16)sizeof(hfa384x_FWID_t))

/*--------------------------------------------------------------------
Information RIDs:  MAC Information
--------------------------------------------------------------------*/
#define		HFA384x_RID_PORTSTATUS		((UINT16)0xFD40)
#define		HFA384x_RID_CURRENTSSID		((UINT16)0xFD41)
#define		HFA384x_RID_CURRENTBSSID	((UINT16)0xFD42)
#define		HFA384x_RID_COMMSQUALITY	((UINT16)0xFD43)
#define		HFA384x_RID_CURRENTTXRATE	((UINT16)0xFD44)
#define		HFA384x_RID_CURRENTBCNINT	((UINT16)0xFD45)
#define		HFA384x_RID_CURRENTSCALETHRESH	((UINT16)0xFD46)
#define		HFA384x_RID_PROTOCOLRSPTIME	((UINT16)0xFD47)
#define		HFA384x_RID_SHORTRETRYLIMIT	((UINT16)0xFD48)
#define		HFA384x_RID_LONGRETRYLIMIT	((UINT16)0xFD49)
#define		HFA384x_RID_MAXTXLIFETIME	((UINT16)0xFD4A)
#define		HFA384x_RID_MAXRXLIFETIME	((UINT16)0xFD4B)
#define		HFA384x_RID_CFPOLLABLE		((UINT16)0xFD4C)
#define		HFA384x_RID_AUTHALGORITHMS	((UINT16)0xFD4D)
#define		HFA384x_RID_PRIVACYOPTIMP	((UINT16)0xFD4F)
#define		HFA384x_RID_DBMCOMMSQUALITY	((UINT16)0xFD51)
#define		HFA384x_RID_CURRENTTXRATE1	((UINT16)0xFD80)
#define		HFA384x_RID_CURRENTTXRATE2	((UINT16)0xFD81)
#define		HFA384x_RID_CURRENTTXRATE3	((UINT16)0xFD82)
#define		HFA384x_RID_CURRENTTXRATE4	((UINT16)0xFD83)
#define		HFA384x_RID_CURRENTTXRATE5	((UINT16)0xFD84)
#define		HFA384x_RID_CURRENTTXRATE6	((UINT16)0xFD85)
#define		HFA384x_RID_OWNMACADDRESS	((UINT16)0xFD86)
// #define	HFA384x_RID_PCFINFO		((UINT16)0xFD87)
#define		HFA384x_RID_SCANRESULTS       	((UINT16)0xFD88) // NEW
#define		HFA384x_RID_HOSTSCANRESULTS   	((UINT16)0xFD89) // NEW
#define		HFA384x_RID_AUTHENTICATIONUSED	((UINT16)0xFD8A) // NEW
#define		HFA384x_RID_ASSOCIATEFAILURE  	((UINT16)0xFD8D) // 1.8.0

/*--------------------------------------------------------------------
Information RID Lengths:  MAC Information
  This is the length of JUST the DATA part of the RID (does not
  include the len or code fields)
--------------------------------------------------------------------*/
#define		HFA384x_RID_PORTSTATUS_LEN		((UINT16)0)
#define		HFA384x_RID_CURRENTSSID_LEN		((UINT16)34)
#define		HFA384x_RID_CURRENTBSSID_LEN		((UINT16)WLAN_BSSID_LEN)
#define		HFA384x_RID_COMMSQUALITY_LEN		((UINT16)sizeof(hfa384x_commsquality_t))
#define		HFA384x_RID_DBMCOMMSQUALITY_LEN		((UINT16)sizeof(hfa384x_dbmcommsquality_t))
#define		HFA384x_RID_CURRENTTXRATE_LEN		((UINT16)0)
#define		HFA384x_RID_CURRENTBCNINT_LEN		((UINT16)0)
#define		HFA384x_RID_STACURSCALETHRESH_LEN	((UINT16)12)
#define		HFA384x_RID_APCURSCALETHRESH_LEN	((UINT16)6)
#define		HFA384x_RID_PROTOCOLRSPTIME_LEN		((UINT16)0)
#define		HFA384x_RID_SHORTRETRYLIMIT_LEN		((UINT16)0)
#define		HFA384x_RID_LONGRETRYLIMIT_LEN		((UINT16)0)
#define		HFA384x_RID_MAXTXLIFETIME_LEN		((UINT16)0)
#define		HFA384x_RID_MAXRXLIFETIME_LEN		((UINT16)0)
#define		HFA384x_RID_CFPOLLABLE_LEN		((UINT16)0)
#define		HFA384x_RID_AUTHALGORITHMS_LEN		((UINT16)4)
#define		HFA384x_RID_PRIVACYOPTIMP_LEN		((UINT16)0)
#define		HFA384x_RID_CURRENTTXRATE1_LEN		((UINT16)0)
#define		HFA384x_RID_CURRENTTXRATE2_LEN		((UINT16)0)
#define		HFA384x_RID_CURRENTTXRATE3_LEN		((UINT16)0)
#define		HFA384x_RID_CURRENTTXRATE4_LEN		((UINT16)0)
#define		HFA384x_RID_CURRENTTXRATE5_LEN		((UINT16)0)
#define		HFA384x_RID_CURRENTTXRATE6_LEN		((UINT16)0)
#define		HFA384x_RID_OWNMACADDRESS_LEN		((UINT16)6)
#define		HFA384x_RID_PCFINFO_LEN			((UINT16)6)
#define		HFA384x_RID_CNFAPPCFINFO_LEN		((UINT16)sizeof(hfa384x_PCFInfo_data_t))
#define		HFA384x_RID_SCANREQUEST_LEN		((UINT16)sizeof(hfa384x_ScanRequest_data_t))
#define		HFA384x_RID_JOINREQUEST_LEN		((UINT16)sizeof(hfa384x_JoinRequest_data_t))
#define		HFA384x_RID_AUTHENTICATESTA_LEN		((UINT16)sizeof(hfa384x_authenticateStation_data_t))
#define		HFA384x_RID_CHANNELINFOREQUEST_LEN	((UINT16)sizeof(hfa384x_ChannelInfoRequest_data_t))
/*--------------------------------------------------------------------
Information RIDs:  Modem Information
--------------------------------------------------------------------*/
#define		HFA384x_RID_PHYTYPE		((UINT16)0xFDC0)
#define		HFA384x_RID_CURRENTCHANNEL	((UINT16)0xFDC1)
#define		HFA384x_RID_CURRENTPOWERSTATE	((UINT16)0xFDC2)
#define		HFA384x_RID_CCAMODE		((UINT16)0xFDC3)
#define		HFA384x_RID_SUPPORTEDDATARATES	((UINT16)0xFDC6)
#define		HFA384x_RID_LFOSTATUS           ((UINT16)0xFDC7) // 1.7.1

/*--------------------------------------------------------------------
Information RID Lengths:  Modem Information
  This is the length of JUST the DATA part of the RID (does not
  include the len or code fields)
--------------------------------------------------------------------*/
#define		HFA384x_RID_PHYTYPE_LEN			((UINT16)0)
#define		HFA384x_RID_CURRENTCHANNEL_LEN		((UINT16)0)
#define		HFA384x_RID_CURRENTPOWERSTATE_LEN	((UINT16)0)
#define		HFA384x_RID_CCAMODE_LEN			((UINT16)0)
#define		HFA384x_RID_SUPPORTEDDATARATES_LEN	((UINT16)10)

/*--------------------------------------------------------------------
API ENHANCEMENTS (NOT ALREADY IMPLEMENTED)
--------------------------------------------------------------------*/
#define		HFA384x_RID_CNFWEPDEFAULTKEYID	((UINT16)0xFC23)
#define		HFA384x_RID_CNFWEPDEFAULTKEY0	((UINT16)0xFC24)
#define		HFA384x_RID_CNFWEPDEFAULTKEY1	((UINT16)0xFC25)
#define		HFA384x_RID_CNFWEPDEFAULTKEY2	((UINT16)0xFC26)
#define		HFA384x_RID_CNFWEPDEFAULTKEY3	((UINT16)0xFC27)
#define		HFA384x_RID_CNFWEPFLAGS		((UINT16)0xFC28)
#define		HFA384x_RID_CNFWEPKEYMAPTABLE	((UINT16)0xFC29)
#define		HFA384x_RID_CNFAUTHENTICATION	((UINT16)0xFC2A)
#define		HFA384x_RID_CNFMAXASSOCSTATIONS	((UINT16)0xFC2B)
#define		HFA384x_RID_CNFTXCONTROL	((UINT16)0xFC2C)
#define		HFA384x_RID_CNFROAMINGMODE	((UINT16)0xFC2D)
#define		HFA384x_RID_CNFHOSTAUTHASSOC	((UINT16)0xFC2E)
#define		HFA384x_RID_CNFRCVCRCERROR	((UINT16)0xFC30)
// #define		HFA384x_RID_CNFMMLIFE		((UINT16)0xFC31)
#define		HFA384x_RID_CNFALTRETRYCNT	((UINT16)0xFC32)
#define		HFA384x_RID_CNFAPBCNINT		((UINT16)0xFC33)
#define		HFA384x_RID_CNFAPPCFINFO	((UINT16)0xFC34)
#define		HFA384x_RID_CNFSTAPCFINFO	((UINT16)0xFC35)
#define		HFA384x_RID_CNFPRIORITYQUSAGE	((UINT16)0xFC37)
#define		HFA384x_RID_CNFTIMCTRL		((UINT16)0xFC40)
#define		HFA384x_RID_CNFTHIRTY2TALLY	((UINT16)0xFC42)
#define		HFA384x_RID_CNFENHSECURITY	((UINT16)0xFC43)
#define		HFA384x_RID_CNFDBMADJUST  	((UINT16)0xFC46) // NEW
#define		HFA384x_RID_CNFWPADATA       	((UINT16)0xFC48) // 1.7.0
#define		HFA384x_RID_CNFPROPOGATIONDELAY	((UINT16)0xFC49) // 1.7.6
#define		HFA384x_RID_CNFSHORTPREAMBLE	((UINT16)0xFCB0)
#define		HFA384x_RID_CNFEXCLONGPREAMBLE	((UINT16)0xFCB1)
#define		HFA384x_RID_CNFAUTHRSPTIMEOUT	((UINT16)0xFCB2)
#define		HFA384x_RID_CNFBASICRATES	((UINT16)0xFCB3)
#define		HFA384x_RID_CNFSUPPRATES	((UINT16)0xFCB4)
#define		HFA384x_RID_CNFFALLBACKCTRL	((UINT16)0xFCB5) // NEW
#define		HFA384x_RID_WEPKEYSTATUS   	((UINT16)0xFCB6) // NEW
#define		HFA384x_RID_WEPKEYMAPINDEX 	((UINT16)0xFCB7) // NEW
#define		HFA384x_RID_BROADCASTKEYID 	((UINT16)0xFCB8) // NEW
#define		HFA384x_RID_ENTSECFLAGEYID 	((UINT16)0xFCB9) // NEW
#define		HFA384x_RID_CNFPASSIVESCANCTRL	((UINT16)0xFCBA) // NEW STA
#define		HFA384x_RID_CNFWPAHANDLING	((UINT16)0xFCBB) // 1.7.0
#define		HFA384x_RID_MDCCONTROL        	((UINT16)0xFCBC) // 1.7.0/1.4.0
#define		HFA384x_RID_MDCCOUNTRY        	((UINT16)0xFCBD) // 1.7.0/1.4.0
#define		HFA384x_RID_TXPOWERMAX        	((UINT16)0xFCBE) // 1.7.0/1.4.0
#define		HFA384x_RID_CNFLFOENBLED      	((UINT16)0xFCBF) // 1.6.3
#define         HFA384x_RID_CAPINFO             ((UINT16)0xFCC0) // 1.7.0/1.3.7
#define         HFA384x_RID_LISTENINTERVAL      ((UINT16)0xFCC1) // 1.7.0/1.3.7
#define         HFA384x_RID_DIVERSITYENABLED    ((UINT16)0xFCC2) // 1.7.0/1.3.7
#define         HFA384x_RID_LED_CONTROL         ((UINT16)0xFCC4) // 1.7.6
#define         HFA384x_RID_HFO_DELAY           ((UINT16)0xFCC5) // 1.7.6
#define         HFA384x_RID_DISSALOWEDBSSID     ((UINT16)0xFCC6) // 1.8.0
#define		HFA384x_RID_SCANREQUEST		((UINT16)0xFCE1)
#define		HFA384x_RID_JOINREQUEST		((UINT16)0xFCE2)
#define		HFA384x_RID_AUTHENTICATESTA	((UINT16)0xFCE3)
#define		HFA384x_RID_CHANNELINFOREQUEST	((UINT16)0xFCE4)
#define		HFA384x_RID_HOSTSCAN          	((UINT16)0xFCE5) // NEW STA
#define		HFA384x_RID_ASSOCIATESTA	((UINT16)0xFCE6)

#define		HFA384x_RID_CNFWEPDEFAULTKEY_LEN	((UINT16)6)
#define		HFA384x_RID_CNFWEP128DEFAULTKEY_LEN	((UINT16)14)
#define		HFA384x_RID_CNFPRIOQUSAGE_LEN		((UINT16)4)
/*--------------------------------------------------------------------
PD Record codes
--------------------------------------------------------------------*/
#define HFA384x_PDR_PCB_PARTNUM		((UINT16)0x0001)
#define HFA384x_PDR_PDAVER		((UINT16)0x0002)
#define HFA384x_PDR_NIC_SERIAL		((UINT16)0x0003)
#define HFA384x_PDR_MKK_MEASUREMENTS	((UINT16)0x0004)
#define HFA384x_PDR_NIC_RAMSIZE		((UINT16)0x0005)
#define HFA384x_PDR_MFISUPRANGE		((UINT16)0x0006)
#define HFA384x_PDR_CFISUPRANGE		((UINT16)0x0007)
#define HFA384x_PDR_NICID		((UINT16)0x0008)
//#define HFA384x_PDR_REFDAC_MEASUREMENTS	((UINT16)0x0010)
//#define HFA384x_PDR_VGDAC_MEASUREMENTS	((UINT16)0x0020)
//#define HFA384x_PDR_LEVEL_COMP_MEASUREMENTS	((UINT16)0x0030)
//#define HFA384x_PDR_MODEM_TRIMDAC_MEASUREMENTS	((UINT16)0x0040)
//#define HFA384x_PDR_COREGA_HACK		((UINT16)0x00ff)
#define HFA384x_PDR_MAC_ADDRESS		((UINT16)0x0101)
//#define HFA384x_PDR_MKK_CALLNAME	((UINT16)0x0102)
#define HFA384x_PDR_REGDOMAIN		((UINT16)0x0103)
#define HFA384x_PDR_ALLOWED_CHANNEL	((UINT16)0x0104)
#define HFA384x_PDR_DEFAULT_CHANNEL	((UINT16)0x0105)
//#define HFA384x_PDR_PRIVACY_OPTION	((UINT16)0x0106)
#define HFA384x_PDR_TEMPTYPE		((UINT16)0x0107)
//#define HFA384x_PDR_REFDAC_SETUP	((UINT16)0x0110)
//#define HFA384x_PDR_VGDAC_SETUP		((UINT16)0x0120)
//#define HFA384x_PDR_LEVEL_COMP_SETUP	((UINT16)0x0130)
//#define HFA384x_PDR_TRIMDAC_SETUP	((UINT16)0x0140)
#define HFA384x_PDR_IFR_SETTING		((UINT16)0x0200)
#define HFA384x_PDR_RFR_SETTING		((UINT16)0x0201)
#define HFA384x_PDR_HFA3861_BASELINE	((UINT16)0x0202)
#define HFA384x_PDR_HFA3861_SHADOW	((UINT16)0x0203)
#define HFA384x_PDR_HFA3861_IFRF	((UINT16)0x0204)
#define HFA384x_PDR_HFA3861_CHCALSP	((UINT16)0x0300)
#define HFA384x_PDR_HFA3861_CHCALI	((UINT16)0x0301)
#define HFA384x_PDR_MAX_TX_POWER  	((UINT16)0x0302)
#define HFA384x_PDR_MASTER_CHAN_LIST	((UINT16)0x0303)
#define HFA384x_PDR_3842_NIC_CONFIG	((UINT16)0x0400)
#define HFA384x_PDR_USB_ID		((UINT16)0x0401)
#define HFA384x_PDR_PCI_ID		((UINT16)0x0402)
#define HFA384x_PDR_PCI_IFCONF		((UINT16)0x0403)
#define HFA384x_PDR_PCI_PMCONF		((UINT16)0x0404)
#define HFA384x_PDR_RFENRGY		((UINT16)0x0406)
#define HFA384x_PDR_USB_POWER_TYPE      ((UINT16)0x0407)
//#define HFA384x_PDR_UNKNOWN408		((UINT16)0x0408)
#define HFA384x_PDR_USB_MAX_POWER	((UINT16)0x0409)
#define HFA384x_PDR_USB_MANUFACTURER	((UINT16)0x0410)
#define HFA384x_PDR_USB_PRODUCT  	((UINT16)0x0411)
#define HFA384x_PDR_ANT_DIVERSITY   	((UINT16)0x0412)
#define HFA384x_PDR_HFO_DELAY       	((UINT16)0x0413)
#define HFA384x_PDR_SCALE_THRESH 	((UINT16)0x0414)

#define HFA384x_PDR_HFA3861_MANF_TESTSP	((UINT16)0x0900)
#define HFA384x_PDR_HFA3861_MANF_TESTI	((UINT16)0x0901)
#define HFA384x_PDR_END_OF_PDA		((UINT16)0x0000)


/*=============================================================*/
/*------ Macros -----------------------------------------------*/

/*--- Register ID macros ------------------------*/

#define		HFA384x_CMD		HFA384x_CMD_OFF
#define		HFA384x_PARAM0		HFA384x_PARAM0_OFF
#define		HFA384x_PARAM1		HFA384x_PARAM1_OFF
#define		HFA384x_PARAM2		HFA384x_PARAM2_OFF
#define		HFA384x_STATUS		HFA384x_STATUS_OFF
#define		HFA384x_RESP0		HFA384x_RESP0_OFF
#define		HFA384x_RESP1		HFA384x_RESP1_OFF
#define		HFA384x_RESP2		HFA384x_RESP2_OFF
#define		HFA384x_INFOFID		HFA384x_INFOFID_OFF
#define		HFA384x_RXFID		HFA384x_RXFID_OFF
#define		HFA384x_ALLOCFID	HFA384x_ALLOCFID_OFF
#define		HFA384x_TXCOMPLFID	HFA384x_TXCOMPLFID_OFF
#define		HFA384x_SELECT0		HFA384x_SELECT0_OFF
#define		HFA384x_OFFSET0		HFA384x_OFFSET0_OFF
#define		HFA384x_DATA0		HFA384x_DATA0_OFF
#define		HFA384x_SELECT1		HFA384x_SELECT1_OFF
#define		HFA384x_OFFSET1		HFA384x_OFFSET1_OFF
#define		HFA384x_DATA1		HFA384x_DATA1_OFF
#define		HFA384x_EVSTAT		HFA384x_EVSTAT_OFF
#define		HFA384x_INTEN		HFA384x_INTEN_OFF
#define		HFA384x_EVACK		HFA384x_EVACK_OFF
#define		HFA384x_CONTROL		HFA384x_CONTROL_OFF
#define		HFA384x_SWSUPPORT0	HFA384x_SWSUPPORT0_OFF
#define		HFA384x_SWSUPPORT1	HFA384x_SWSUPPORT1_OFF
#define		HFA384x_SWSUPPORT2	HFA384x_SWSUPPORT2_OFF
#define		HFA384x_AUXPAGE		HFA384x_AUXPAGE_OFF
#define		HFA384x_AUXOFFSET	HFA384x_AUXOFFSET_OFF
#define		HFA384x_AUXDATA		HFA384x_AUXDATA_OFF
#define		HFA384x_PCICOR		HFA384x_PCICOR_OFF
#define		HFA384x_PCIHCR		HFA384x_PCIHCR_OFF


/*--- Register Test/Get/Set Field macros ------------------------*/

#define		HFA384x_CMD_ISBUSY(value)		((UINT16)(((UINT16)value) & HFA384x_CMD_BUSY))
#define		HFA384x_CMD_AINFO_GET(value)		((UINT16)(((UINT16)(value) & HFA384x_CMD_AINFO) >> 8))
#define		HFA384x_CMD_AINFO_SET(value)		((UINT16)((UINT16)(value) << 8))
#define		HFA384x_CMD_MACPORT_GET(value)		((UINT16)(HFA384x_CMD_AINFO_GET((UINT16)(value) & HFA384x_CMD_MACPORT)))
#define		HFA384x_CMD_MACPORT_SET(value)		((UINT16)HFA384x_CMD_AINFO_SET(value))
#define		HFA384x_CMD_ISRECL(value)		((UINT16)(HFA384x_CMD_AINFO_GET((UINT16)(value) & HFA384x_CMD_RECL)))
#define		HFA384x_CMD_RECL_SET(value)		((UINT16)HFA384x_CMD_AINFO_SET(value))
#define		HFA384x_CMD_QOS_GET(value)		((UINT16)((((UINT16)(value))&((UINT16)0x3000)) >> 12))
#define		HFA384x_CMD_QOS_SET(value)		((UINT16)((((UINT16)(value)) << 12) & 0x3000))
#define		HFA384x_CMD_ISWRITE(value)		((UINT16)(HFA384x_CMD_AINFO_GET((UINT16)(value) & HFA384x_CMD_WRITE)))
#define		HFA384x_CMD_WRITE_SET(value)		((UINT16)HFA384x_CMD_AINFO_SET((UINT16)value))
#define		HFA384x_CMD_PROGMODE_GET(value)		((UINT16)(HFA384x_CMD_AINFO_GET((UINT16)(value) & HFA384x_CMD_PROGMODE)))
#define		HFA384x_CMD_PROGMODE_SET(value)		((UINT16)HFA384x_CMD_AINFO_SET((UINT16)value))
#define		HFA384x_CMD_CMDCODE_GET(value)		((UINT16)(((UINT16)(value)) & HFA384x_CMD_CMDCODE))
#define		HFA384x_CMD_CMDCODE_SET(value)		((UINT16)(value))

#define		HFA384x_STATUS_RESULT_GET(value)	((UINT16)((((UINT16)(value)) & HFA384x_STATUS_RESULT) >> 8))
#define		HFA384x_STATUS_RESULT_SET(value)	(((UINT16)(value)) << 8)
#define		HFA384x_STATUS_CMDCODE_GET(value)	(((UINT16)(value)) & HFA384x_STATUS_CMDCODE)
#define		HFA384x_STATUS_CMDCODE_SET(value)	((UINT16)(value))

#define		HFA384x_OFFSET_ISBUSY(value)		((UINT16)(((UINT16)(value)) & HFA384x_OFFSET_BUSY))
#define		HFA384x_OFFSET_ISERR(value)		((UINT16)(((UINT16)(value)) & HFA384x_OFFSET_ERR))
#define		HFA384x_OFFSET_DATAOFF_GET(value)	((UINT16)(((UINT16)(value)) & HFA384x_OFFSET_DATAOFF))
#define		HFA384x_OFFSET_DATAOFF_SET(value)	((UINT16)(value))

#define		HFA384x_EVSTAT_ISTICK(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_TICK))
#define		HFA384x_EVSTAT_ISWTERR(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_WTERR))
#define		HFA384x_EVSTAT_ISINFDROP(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_INFDROP))
#define		HFA384x_EVSTAT_ISINFO(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_INFO))
#define		HFA384x_EVSTAT_ISDTIM(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_DTIM))
#define		HFA384x_EVSTAT_ISCMD(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_CMD))
#define		HFA384x_EVSTAT_ISALLOC(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_ALLOC))
#define		HFA384x_EVSTAT_ISTXEXC(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_TXEXC))
#define		HFA384x_EVSTAT_ISTX(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_TX))
#define		HFA384x_EVSTAT_ISRX(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_RX))

#define		HFA384x_EVSTAT_ISBAP_OP(value)		((UINT16)(((UINT16)(value)) & HFA384x_INT_BAP_OP))

#define		HFA384x_INTEN_ISTICK(value)		((UINT16)(((UINT16)(value)) & HFA384x_INTEN_TICK))
#define		HFA384x_INTEN_TICK_SET(value)		((UINT16)(((UINT16)(value)) << 15))
#define		HFA384x_INTEN_ISWTERR(value)		((UINT16)(((UINT16)(value)) & HFA384x_INTEN_WTERR))
#define		HFA384x_INTEN_WTERR_SET(value)		((UINT16)(((UINT16)(value)) << 14))
#define		HFA384x_INTEN_ISINFDROP(value)		((UINT16)(((UINT16)(value)) & HFA384x_INTEN_INFDROP))
#define		HFA384x_INTEN_INFDROP_SET(value)	((UINT16)(((UINT16)(value)) << 13))
#define		HFA384x_INTEN_ISINFO(value)		((UINT16)(((UINT16)(value)) & HFA384x_INTEN_INFO))
#define		HFA384x_INTEN_INFO_SET(value)		((UINT16)(((UINT16)(value)) << 7))
#define		HFA384x_INTEN_ISDTIM(value)		((UINT16)(((UINT16)(value)) & HFA384x_INTEN_DTIM))
#define		HFA384x_INTEN_DTIM_SET(value)		((UINT16)(((UINT16)(value)) << 5))
#define		HFA384x_INTEN_ISCMD(value)		((UINT16)(((UINT16)(value)) & HFA384x_INTEN_CMD))
#define		HFA384x_INTEN_CMD_SET(value)		((UINT16)(((UINT16)(value)) << 4))
#define		HFA384x_INTEN_ISALLOC(value)		((UINT16)(((UINT16)(value)) & HFA384x_INTEN_ALLOC))
#define		HFA384x_INTEN_ALLOC_SET(value)		((UINT16)(((UINT16)(value)) << 3))
#define		HFA384x_INTEN_ISTXEXC(value)		((UINT16)(((UINT16)(value)) & HFA384x_INTEN_TXEXC))
#define		HFA384x_INTEN_TXEXC_SET(value)		((UINT16)(((UINT16)(value)) << 2))
#define		HFA384x_INTEN_ISTX(value)		((UINT16)(((UINT16)(value)) & HFA384x_INTEN_TX))
#define		HFA384x_INTEN_TX_SET(value)		((UINT16)(((UINT16)(value)) << 1))
#define		HFA384x_INTEN_ISRX(value)		((UINT16)(((UINT16)(value)) & HFA384x_INTEN_RX))
#define		HFA384x_INTEN_RX_SET(value)		((UINT16)(((UINT16)(value)) << 0))

#define		HFA384x_EVACK_ISTICK(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVACK_TICK))
#define		HFA384x_EVACK_TICK_SET(value)		((UINT16)(((UINT16)(value)) << 15))
#define		HFA384x_EVACK_ISWTERR(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVACK_WTERR))
#define		HFA384x_EVACK_WTERR_SET(value)		((UINT16)(((UINT16)(value)) << 14))
#define		HFA384x_EVACK_ISINFDROP(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVACK_INFDROP))
#define		HFA384x_EVACK_INFDROP_SET(value)	((UINT16)(((UINT16)(value)) << 13))
#define		HFA384x_EVACK_ISINFO(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVACK_INFO))
#define		HFA384x_EVACK_INFO_SET(value)		((UINT16)(((UINT16)(value)) << 7))
#define		HFA384x_EVACK_ISDTIM(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVACK_DTIM))
#define		HFA384x_EVACK_DTIM_SET(value)		((UINT16)(((UINT16)(value)) << 5))
#define		HFA384x_EVACK_ISCMD(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVACK_CMD))
#define		HFA384x_EVACK_CMD_SET(value)		((UINT16)(((UINT16)(value)) << 4))
#define		HFA384x_EVACK_ISALLOC(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVACK_ALLOC))
#define		HFA384x_EVACK_ALLOC_SET(value)		((UINT16)(((UINT16)(value)) << 3))
#define		HFA384x_EVACK_ISTXEXC(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVACK_TXEXC))
#define		HFA384x_EVACK_TXEXC_SET(value)		((UINT16)(((UINT16)(value)) << 2))
#define		HFA384x_EVACK_ISTX(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVACK_TX))
#define		HFA384x_EVACK_TX_SET(value)		((UINT16)(((UINT16)(value)) << 1))
#define		HFA384x_EVACK_ISRX(value)		((UINT16)(((UINT16)(value)) & HFA384x_EVACK_RX))
#define		HFA384x_EVACK_RX_SET(value)		((UINT16)(((UINT16)(value)) << 0))

#define		HFA384x_CONTROL_AUXEN_SET(value)	((UINT16)(((UINT16)(value)) << 14))
#define		HFA384x_CONTROL_AUXEN_GET(value)	((UINT16)(((UINT16)(value)) >> 14))

/* Byte Order */
#ifdef __KERNEL__
#define hfa384x2host_16(n)	(__le16_to_cpu((UINT16)(n)))
#define hfa384x2host_32(n)	(__le32_to_cpu((UINT32)(n)))
#define host2hfa384x_16(n)	(__cpu_to_le16((UINT16)(n)))
#define host2hfa384x_32(n)	(__cpu_to_le32((UINT32)(n)))
#endif

/* Host Maintained State Info */
#define HFA384x_STATE_PREINIT	0
#define HFA384x_STATE_INIT	1
#define HFA384x_STATE_RUNNING	2

/*=============================================================*/
/*------ Types and their related constants --------------------*/

#define HFA384x_HOSTAUTHASSOC_HOSTAUTH   BIT0
#define HFA384x_HOSTAUTHASSOC_HOSTASSOC  BIT1

#define HFA384x_WHAHANDLING_DISABLED     0
#define HFA384x_WHAHANDLING_PASSTHROUGH  BIT1

/*-------------------------------------------------------------*/
/* Commonly used basic types */
typedef struct hfa384x_bytestr
{
	UINT16	len;
	UINT8	data[0];
} __WLAN_ATTRIB_PACK__ hfa384x_bytestr_t;

typedef struct hfa384x_bytestr32
{
	UINT16	len;
	UINT8	data[32];
} __WLAN_ATTRIB_PACK__ hfa384x_bytestr32_t;

/*--------------------------------------------------------------------
Configuration Record Structures:
	Network Parameters, Static Configuration Entities
--------------------------------------------------------------------*/
/* Prototype structure: all configuration record structures start with
these members */

typedef struct hfa384x_record
{
	UINT16	reclen;
	UINT16	rid;
} __WLAN_ATTRIB_PACK__ hfa384x_rec_t;

typedef struct hfa384x_record16
{
	UINT16	reclen;
	UINT16	rid;
	UINT16	val;
} __WLAN_ATTRIB_PACK__ hfa384x_rec16_t;

typedef struct hfa384x_record32
{
	UINT16	reclen;
	UINT16	rid;
	UINT32	val;
} __WLAN_ATTRIB_PACK__ hfa384x_rec32;

/*-- Hardware/Firmware Component Information ----------*/
typedef struct hfa384x_compident
{
	UINT16	id;
	UINT16	variant;
	UINT16	major;
	UINT16	minor;
} __WLAN_ATTRIB_PACK__ hfa384x_compident_t;

typedef struct hfa384x_caplevel
{
	UINT16	role;
	UINT16	id;
	UINT16	variant;
	UINT16	bottom;
	UINT16	top;
} __WLAN_ATTRIB_PACK__ hfa384x_caplevel_t;

/*-- Configuration Record: cnfPortType --*/
typedef struct hfa384x_cnfPortType
{
	UINT16	cnfPortType;
} __WLAN_ATTRIB_PACK__ hfa384x_cnfPortType_t;

/*-- Configuration Record: cnfOwnMACAddress --*/
typedef struct hfa384x_cnfOwnMACAddress
{
	UINT8	cnfOwnMACAddress[6];
} __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnMACAddress_t;

/*-- Configuration Record: cnfDesiredSSID --*/
typedef struct hfa384x_cnfDesiredSSID
{
	UINT8	cnfDesiredSSID[34];
} __WLAN_ATTRIB_PACK__ hfa384x_cnfDesiredSSID_t;

/*-- Configuration Record: cnfOwnChannel --*/
typedef struct hfa384x_cnfOwnChannel
{
	UINT16	cnfOwnChannel;
} __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnChannel_t;

/*-- Configuration Record: cnfOwnSSID --*/
typedef struct hfa384x_cnfOwnSSID
{
	UINT8	cnfOwnSSID[34];
} __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnSSID_t;

/*-- Configuration Record: cnfOwnATIMWindow --*/
typedef struct hfa384x_cnfOwnATIMWindow
{
	UINT16	cnfOwnATIMWindow;
} __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnATIMWindow_t;

/*-- Configuration Record: cnfSystemScale --*/
typedef struct hfa384x_cnfSystemScale
{
	UINT16	cnfSystemScale;
} __WLAN_ATTRIB_PACK__ hfa384x_cnfSystemScale_t;

/*-- Configuration Record: cnfMaxDataLength --*/
typedef struct hfa384x_cnfMaxDataLength
{
	UINT16	cnfMaxDataLength;
} __WLAN_ATTRIB_PACK__ hfa384x_cnfMaxDataLength_t;

/*-- Configuration Record: cnfWDSAddress --*/
typedef struct hfa384x_cnfWDSAddress
{
	UINT8	cnfWDSAddress[6];
} __WLAN_ATTRIB_PACK__ hfa384x_cnfWDSAddress_t;

/*-- Configuration Record: cnfPMEnabled --*/
typedef struct hfa384x_cnfPMEnabled
{
	UINT16	cnfPMEnabled;
} __WLAN_ATTRIB_PACK__ hfa384x_cnfPMEnabled_t;

/*-- Configuration Record: cnfPMEPS --*/
typedef struct hfa384x_cnfPMEPS
{
	UINT16	cnfPMEPS;
} __WLAN_ATTRIB_PACK__ hfa384x_cnfPMEPS_t;

/*-- Configuration Record: cnfMulticastReceive --*/
typedef struct hfa384x_cnfMulticastReceive
{
	UINT16	cnfMulticastReceive;
} __WLAN_ATTRIB_PACK__ hfa384x_cnfMulticastReceive_t;

/*-- Configuration Record: cnfAuthentication --*/
#define HFA384x_CNFAUTHENTICATION_OPENSYSTEM	0x0001
#define HFA384x_CNFAUTHENTICATION_SHAREDKEY	0x0002
#define HFA384x_CNFAUTHENTICATION_LEAP     	0x0004

/*-- Configuration Record: cnfMaxSleepDuration --*/
typedef struct hfa384x_cnfMaxSleepDuration
{
	UINT16	cnfMaxSleepDuration;
} __WLAN_ATTRIB_PACK__ hfa384x_cnfMaxSleepDuration_t;

/*-- Configuration Record: cnfPMHoldoverDuration --*/
typedef struct hfa384x_cnfPMHoldoverDuration
{
	UINT16	cnfPMHoldoverDuration;
} __WLAN_ATTRIB_PACK__ hfa384x_cnfPMHoldoverDuration_t;

/*-- Configuration Record: cnfOwnName --*/
typedef struct hfa384x_cnfOwnName
{
	UINT8	cnfOwnName[34];
} __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnName_t;

/*-- Configuration Record: cnfOwnDTIMPeriod --*/
typedef struct hfa384x_cnfOwnDTIMPeriod
{
	UINT16	cnfOwnDTIMPeriod;
} __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnDTIMPeriod_t;

/*-- Configuration Record: cnfWDSAddress --*/
typedef struct hfa384x_cnfWDSAddressN
{
	UINT8	cnfWDSAddress[6];
} __WLAN_ATTRIB_PACK__ hfa384x_cnfWDSAddressN_t;

/*-- Configuration Record: cnfMulticastPMBuffering --*/
typedef struct hfa384x_cnfMulticastPMBuffering
{
	UINT16	cnfMulticastPMBuffering;
} __WLAN_ATTRIB_PACK__ hfa384x_cnfMulticastPMBuffering_t;

/*--------------------------------------------------------------------
Configuration Record Structures:
	Network Parameters, Dynamic Configuration Entities
--------------------------------------------------------------------*/

/*-- Configuration Record: GroupAddresses --*/
typedef struct hfa384x_GroupAddresses
{
	UINT8	MACAddress[16][6];
} __WLAN_ATTRIB_PACK__ hfa384x_GroupAddresses_t;

/*-- Configuration Record: CreateIBSS --*/
typedef struct hfa384x_CreateIBSS
{
	UINT16	CreateIBSS;
} __WLAN_ATTRIB_PACK__ hfa384x_CreateIBSS_t;

#define HFA384x_CREATEIBSS_JOINCREATEIBSS          0
#define HFA384x_CREATEIBSS_JOINESS_JOINCREATEIBSS  1
#define HFA384x_CREATEIBSS_JOINIBSS                2
#define HFA384x_CREATEIBSS_JOINESS_JOINIBSS        3

/*-- Configuration Record: FragmentationThreshold --*/
typedef struct hfa384x_FragmentationThreshold
{
	UINT16	FragmentationThreshold;
} __WLAN_ATTRIB_PACK__ hfa384x_FragmentationThreshold_t;

/*-- Configuration Record: RTSThreshold --*/
typedef struct hfa384x_RTSThreshold
{
	UINT16	RTSThreshold;
} __WLAN_ATTRIB_PACK__ hfa384x_RTSThreshold_t;

/*-- Configuration Record: TxRateControl --*/
typedef struct hfa384x_TxRateControl
{
	UINT16	TxRateControl;
} __WLAN_ATTRIB_PACK__ hfa384x_TxRateControl_t;

/*-- Configuration Record: PromiscuousMode --*/
typedef struct hfa384x_PromiscuousMode
{
	UINT16	PromiscuousMode;
} __WLAN_ATTRIB_PACK__ hfa384x_PromiscuousMode_t;

/*-- Configuration Record: ScanRequest (data portion only) --*/
typedef struct hfa384x_ScanRequest_data
{
	UINT16	channelList;
	UINT16	txRate;
} __WLAN_ATTRIB_PACK__ hfa384x_ScanRequest_data_t;

/*-- Configuration Record: HostScanRequest (data portion only) --*/
typedef struct hfa384x_HostScanRequest_data
{
	UINT16	channelList;
	UINT16	txRate;
	hfa384x_bytestr32_t ssid;
} __WLAN_ATTRIB_PACK__ hfa384x_HostScanRequest_data_t;

/*-- Configuration Record: JoinRequest (data portion only) --*/
typedef struct hfa384x_JoinRequest_data
{
	UINT8	bssid[WLAN_BSSID_LEN];
	UINT16	channel;
} __WLAN_ATTRIB_PACK__ hfa384x_JoinRequest_data_t;

/*-- Configuration Record: authenticateStation (data portion only) --*/
typedef struct hfa384x_authenticateStation_data
{
	UINT8	address[WLAN_ADDR_LEN];
	UINT16	status;
	UINT16	algorithm;
} __WLAN_ATTRIB_PACK__ hfa384x_authenticateStation_data_t;

/*-- Configuration Record: associateStation (data portion only) --*/
typedef struct hfa384x_associateStation_data
{
	UINT8	address[WLAN_ADDR_LEN];
	UINT16	status;
	UINT16	type;
} __WLAN_ATTRIB_PACK__ hfa384x_associateStation_data_t;

/*-- Configuration Record: ChannelInfoRequest (data portion only) --*/
typedef struct hfa384x_ChannelInfoRequest_data
{
	UINT16	channelList;
	UINT16	channelDwellTime;
} __WLAN_ATTRIB_PACK__ hfa384x_ChannelInfoRequest_data_t;

/*-- Configuration Record: WEPKeyMapping (data portion only) --*/
typedef struct hfa384x_WEPKeyMapping
{
	UINT8	address[WLAN_ADDR_LEN];
	UINT16	key_index;
	UINT8 	key[16];
	UINT8 	mic_transmit_key[4];
	UINT8 	mic_receive_key[4];
} __WLAN_ATTRIB_PACK__ hfa384x_WEPKeyMapping_t;

/*-- Configuration Record: WPAData       (data portion only) --*/
typedef struct hfa384x_WPAData
{
	UINT16	datalen;
        UINT8 	data[0]; // max 80
} __WLAN_ATTRIB_PACK__ hfa384x_WPAData_t;

/*--------------------------------------------------------------------
Configuration Record Structures: Behavior Parameters
--------------------------------------------------------------------*/

/*-- Configuration Record: TickTime --*/
typedef struct hfa384x_TickTime
{
	UINT16	TickTime;
} __WLAN_ATTRIB_PACK__ hfa384x_TickTime_t;

/*--------------------------------------------------------------------
Information Record Structures: NIC Information
--------------------------------------------------------------------*/

/*-- Information Record: MaxLoadTime --*/
typedef struct hfa384x_MaxLoadTime
{
	UINT16	MaxLoadTime;
} __WLAN_ATTRIB_PACK__ hfa384x_MaxLoadTime_t;

/*-- Information Record: DownLoadBuffer --*/
/* NOTE: The page and offset are in AUX format */
typedef struct hfa384x_downloadbuffer
{
	UINT16	page;
	UINT16	offset;
	UINT16	len;
} __WLAN_ATTRIB_PACK__ hfa384x_downloadbuffer_t;

/*-- Information Record: PRIIdentity --*/
typedef struct hfa384x_PRIIdentity
{
	UINT16	PRICompID;
	UINT16	PRIVariant;
	UINT16	PRIMajorVersion;
	UINT16	PRIMinorVersion;
} __WLAN_ATTRIB_PACK__ hfa384x_PRIIdentity_t;

/*-- Information Record: PRISupRange --*/
typedef struct hfa384x_PRISupRange
{
	UINT16	PRIRole;
	UINT16	PRIID;
	UINT16	PRIVariant;
	UINT16	PRIBottom;
	UINT16	PRITop;
} __WLAN_ATTRIB_PACK__ hfa384x_PRISupRange_t;

/*-- Information Record: CFIActRanges --*/
typedef struct hfa384x_CFIActRanges
{
	UINT16	CFIRole;
	UINT16	CFIID;
	UINT16	CFIVariant;
	UINT16	CFIBottom;
	UINT16	CFITop;
} __WLAN_ATTRIB_PACK__ hfa384x_CFIActRanges_t;

/*-- Information Record: NICSerialNumber --*/
typedef struct hfa384x_NICSerialNumber
{
	UINT8	NICSerialNumber[12];
} __WLAN_ATTRIB_PACK__ hfa384x_NICSerialNumber_t;

/*-- Information Record: NICIdentity --*/
typedef struct hfa384x_NICIdentity
{
	UINT16	NICCompID;
	UINT16	NICVariant;
	UINT16	NICMajorVersion;
	UINT16	NICMinorVersion;
} __WLAN_ATTRIB_PACK__ hfa384x_NICIdentity_t;

/*-- Information Record: MFISupRange --*/
typedef struct hfa384x_MFISupRange
{
	UINT16	MFIRole;
	UINT16	MFIID;
	UINT16	MFIVariant;
	UINT16	MFIBottom;
	UINT16	MFITop;
} __WLAN_ATTRIB_PACK__ hfa384x_MFISupRange_t;

/*-- Information Record: CFISupRange --*/
typedef struct hfa384x_CFISupRange
{
	UINT16	CFIRole;
	UINT16	CFIID;
	UINT16	CFIVariant;
	UINT16	CFIBottom;
	UINT16	CFITop;
} __WLAN_ATTRIB_PACK__ hfa384x_CFISupRange_t;

/*-- Information Record: BUILDSEQ:BuildSeq --*/
typedef struct hfa384x_BuildSeq {
	UINT16	primary;
	UINT16	secondary;
} __WLAN_ATTRIB_PACK__ hfa384x_BuildSeq_t;

/*-- Information Record: FWID --*/
#define HFA384x_FWID_LEN	14
typedef struct hfa384x_FWID {
	UINT8	primary[HFA384x_FWID_LEN];
	UINT8	secondary[HFA384x_FWID_LEN];
} __WLAN_ATTRIB_PACK__ hfa384x_FWID_t;

/*-- Information Record: ChannelList --*/
typedef struct hfa384x_ChannelList
{
	UINT16	ChannelList;
} __WLAN_ATTRIB_PACK__ hfa384x_ChannelList_t;

/*-- Information Record: RegulatoryDomains --*/
typedef struct hfa384x_RegulatoryDomains
{
	UINT8	RegulatoryDomains[12];
} __WLAN_ATTRIB_PACK__ hfa384x_RegulatoryDomains_t;

/*-- Information Record: TempType --*/
typedef struct hfa384x_TempType
{
	UINT16	TempType;
} __WLAN_ATTRIB_PACK__ hfa384x_TempType_t;

/*-- Information Record: CIS --*/
typedef struct hfa384x_CIS
{
	UINT8	CIS[480];
} __WLAN_ATTRIB_PACK__ hfa384x_CIS_t;

/*-- Information Record: STAIdentity --*/
typedef struct hfa384x_STAIdentity
{
	UINT16	STACompID;
	UINT16	STAVariant;
	UINT16	STAMajorVersion;
	UINT16	STAMinorVersion;
} __WLAN_ATTRIB_PACK__ hfa384x_STAIdentity_t;

/*-- Information Record: STASupRange --*/
typedef struct hfa384x_STASupRange
{
	UINT16	STARole;
	UINT16	STAID;
	UINT16	STAVariant;
	UINT16	STABottom;
	UINT16	STATop;
} __WLAN_ATTRIB_PACK__ hfa384x_STASupRange_t;

/*-- Information Record: MFIActRanges --*/
typedef struct hfa384x_MFIActRanges
{
	UINT16	MFIRole;
	UINT16	MFIID;
	UINT16	MFIVariant;
	UINT16	MFIBottom;
	UINT16	MFITop;
} __WLAN_ATTRIB_PACK__ hfa384x_MFIActRanges_t;

/*--------------------------------------------------------------------
Information Record Structures: NIC Information
--------------------------------------------------------------------*/

/*-- Information Record: PortStatus --*/
typedef struct hfa384x_PortStatus
{
	UINT16	PortStatus;
} __WLAN_ATTRIB_PACK__ hfa384x_PortStatus_t;

#define HFA384x_PSTATUS_DISABLED	((UINT16)1)
#define HFA384x_PSTATUS_SEARCHING	((UINT16)2)
#define HFA384x_PSTATUS_CONN_IBSS	((UINT16)3)
#define HFA384x_PSTATUS_CONN_ESS	((UINT16)4)
#define HFA384x_PSTATUS_OUTOFRANGE	((UINT16)5)
#define HFA384x_PSTATUS_CONN_WDS	((UINT16)6)

/*-- Information Record: CurrentSSID --*/
typedef struct hfa384x_CurrentSSID
{
	UINT8	CurrentSSID[34];
} __WLAN_ATTRIB_PACK__ hfa384x_CurrentSSID_t;

/*-- Information Record: CurrentBSSID --*/
typedef struct hfa384x_CurrentBSSID
{
	UINT8	CurrentBSSID[6];
} __WLAN_ATTRIB_PACK__ hfa384x_CurrentBSSID_t;

/*-- Information Record: commsquality --*/
typedef struct hfa384x_commsquality
{
	UINT16	CQ_currBSS;
	UINT16	ASL_currBSS;
	UINT16	ANL_currFC;
} __WLAN_ATTRIB_PACK__ hfa384x_commsquality_t;

/*-- Information Record: dmbcommsquality --*/
typedef struct hfa384x_dbmcommsquality
{
	UINT16	CQdbm_currBSS;
	UINT16	ASLdbm_currBSS;
	UINT16	ANLdbm_currFC;
} __WLAN_ATTRIB_PACK__ hfa384x_dbmcommsquality_t;

/*-- Information Record: CurrentTxRate --*/
typedef struct hfa384x_CurrentTxRate
{
	UINT16	CurrentTxRate;
} __WLAN_ATTRIB_PACK__ hfa384x_CurrentTxRate_t;

/*-- Information Record: CurrentBeaconInterval --*/
typedef struct hfa384x_CurrentBeaconInterval
{
	UINT16	CurrentBeaconInterval;
} __WLAN_ATTRIB_PACK__ hfa384x_CurrentBeaconInterval_t;

/*-- Information Record: CurrentScaleThresholds --*/
typedef struct hfa384x_CurrentScaleThresholds
{
	UINT16	EnergyDetectThreshold;
	UINT16	CarrierDetectThreshold;
	UINT16	DeferDetectThreshold;
	UINT16	CellSearchThreshold; /* Stations only */
	UINT16	DeadSpotThreshold; /* Stations only */
} __WLAN_ATTRIB_PACK__ hfa384x_CurrentScaleThresholds_t;

/*-- Information Record: ProtocolRspTime --*/
typedef struct hfa384x_ProtocolRspTime
{
	UINT16	ProtocolRspTime;
} __WLAN_ATTRIB_PACK__ hfa384x_ProtocolRspTime_t;

/*-- Information Record: ShortRetryLimit --*/
typedef struct hfa384x_ShortRetryLimit
{
	UINT16	ShortRetryLimit;
} __WLAN_ATTRIB_PACK__ hfa384x_ShortRetryLimit_t;

/*-- Information Record: LongRetryLimit --*/
typedef struct hfa384x_LongRetryLimit
{
	UINT16	LongRetryLimit;
} __WLAN_ATTRIB_PACK__ hfa384x_LongRetryLimit_t;

/*-- Information Record: MaxTransmitLifetime --*/
typedef struct hfa384x_MaxTransmitLifetime
{
	UINT16	MaxTransmitLifetime;
} __WLAN_ATTRIB_PACK__ hfa384x_MaxTransmitLifetime_t;

/*-- Information Record: MaxReceiveLifetime --*/
typedef struct hfa384x_MaxReceiveLifetime
{
	UINT16	MaxReceiveLifetime;
} __WLAN_ATTRIB_PACK__ hfa384x_MaxReceiveLifetime_t;

/*-- Information Record: CFPollable --*/
typedef struct hfa384x_CFPollable
{
	UINT16	CFPollable;
} __WLAN_ATTRIB_PACK__ hfa384x_CFPollable_t;

/*-- Information Record: AuthenticationAlgorithms --*/
typedef struct hfa384x_AuthenticationAlgorithms
{
	UINT16	AuthenticationType;
	UINT16	TypeEnabled;
} __WLAN_ATTRIB_PACK__ hfa384x_AuthenticationAlgorithms_t;

/*-- Information Record: AuthenticationAlgorithms
(data only --*/
typedef struct hfa384x_AuthenticationAlgorithms_data
{
	UINT16	AuthenticationType;
	UINT16	TypeEnabled;
} __WLAN_ATTRIB_PACK__ hfa384x_AuthenticationAlgorithms_data_t;

/*-- Information Record: PrivacyOptionImplemented --*/
typedef struct hfa384x_PrivacyOptionImplemented
{
	UINT16	PrivacyOptionImplemented;
} __WLAN_ATTRIB_PACK__ hfa384x_PrivacyOptionImplemented_t;

/*-- Information Record: OwnMACAddress --*/
typedef struct hfa384x_OwnMACAddress
{
	UINT8	OwnMACAddress[6];
} __WLAN_ATTRIB_PACK__ hfa384x_OwnMACAddress_t;

/*-- Information Record: PCFInfo --*/
typedef struct hfa384x_PCFInfo
{
	UINT16	MediumOccupancyLimit;
	UINT16	CFPPeriod;
	UINT16	CFPMaxDuration;
	UINT16	CFPFlags;
} __WLAN_ATTRIB_PACK__ hfa384x_PCFInfo_t;

/*-- Information Record: PCFInfo (data portion only) --*/
typedef struct hfa384x_PCFInfo_data
{
	UINT16	MediumOccupancyLimit;
	UINT16	CFPPeriod;
	UINT16	CFPMaxDuration;
	UINT16	CFPFlags;
} __WLAN_ATTRIB_PACK__ hfa384x_PCFInfo_data_t;

/*--------------------------------------------------------------------
Information Record Structures: Modem Information Records
--------------------------------------------------------------------*/

/*-- Information Record: PHYType --*/
typedef struct hfa384x_PHYType
{
	UINT16	PHYType;
} __WLAN_ATTRIB_PACK__ hfa384x_PHYType_t;

/*-- Information Record: CurrentChannel --*/
typedef struct hfa384x_CurrentChannel
{
	UINT16	CurrentChannel;
} __WLAN_ATTRIB_PACK__ hfa384x_CurrentChannel_t;

/*-- Information Record: CurrentPowerState --*/
typedef struct hfa384x_CurrentPowerState
{
	UINT16	CurrentPowerState;
} __WLAN_ATTRIB_PACK__ hfa384x_CurrentPowerState_t;

/*-- Information Record: CCAMode --*/
typedef struct hfa384x_CCAMode
{
	UINT16	CCAMode;
} __WLAN_ATTRIB_PACK__ hfa384x_CCAMode_t;

/*-- Information Record: SupportedDataRates --*/
typedef struct hfa384x_SupportedDataRates
{
	UINT8	SupportedDataRates[10];
} __WLAN_ATTRIB_PACK__ hfa384x_SupportedDataRates_t;

/*-- Information Record: LFOStatus --*/
typedef struct hfa384x_LFOStatus
{
	UINT16  TestResults;
	UINT16  LFOResult;
	UINT16  VRHFOResult;
} __WLAN_ATTRIB_PACK__ hfa384x_LFOStatus_t;

#define HFA384x_TESTRESULT_ALLPASSED    BIT0
#define HFA384x_TESTRESULT_LFO_FAIL     BIT1
#define HFA384x_TESTRESULT_VR_HF0_FAIL  BIT2
#define HFA384x_HOST_FIRM_COORDINATE    BIT7
#define HFA384x_TESTRESULT_COORDINATE   BIT15

/*-- Information Record: LEDControl --*/
typedef struct hfa384x_LEDControl
{
	UINT16  searching_on;
	UINT16  searching_off;
	UINT16  assoc_on;
	UINT16  assoc_off;
	UINT16  activity;
} __WLAN_ATTRIB_PACK__ hfa384x_LEDControl_t;

/*--------------------------------------------------------------------
                 FRAME DESCRIPTORS AND FRAME STRUCTURES

FRAME DESCRIPTORS: Offsets

----------------------------------------------------------------------
Control Info (offset 44-51)
--------------------------------------------------------------------*/
#define		HFA384x_FD_STATUS_OFF			((UINT16)0x44)
#define		HFA384x_FD_TIME_OFF			((UINT16)0x46)
#define		HFA384x_FD_SWSUPPORT_OFF		((UINT16)0x4A)
#define		HFA384x_FD_SILENCE_OFF			((UINT16)0x4A)
#define		HFA384x_FD_SIGNAL_OFF			((UINT16)0x4B)
#define		HFA384x_FD_RATE_OFF			((UINT16)0x4C)
#define		HFA384x_FD_RXFLOW_OFF			((UINT16)0x4D)
#define		HFA384x_FD_RESERVED_OFF			((UINT16)0x4E)
#define		HFA384x_FD_TXCONTROL_OFF		((UINT16)0x50)
/*--------------------------------------------------------------------
802.11 Header (offset 52-6B)
--------------------------------------------------------------------*/
#define		HFA384x_FD_FRAMECONTROL_OFF		((UINT16)0x52)
#define		HFA384x_FD_DURATIONID_OFF		((UINT16)0x54)
#define		HFA384x_FD_ADDRESS1_OFF			((UINT16)0x56)
#define		HFA384x_FD_ADDRESS2_OFF			((UINT16)0x5C)
#define		HFA384x_FD_ADDRESS3_OFF			((UINT16)0x62)
#define		HFA384x_FD_SEQCONTROL_OFF		((UINT16)0x68)
#define		HFA384x_FD_ADDRESS4_OFF			((UINT16)0x6A)
#define		HFA384x_FD_DATALEN_OFF			((UINT16)0x70)
/*--------------------------------------------------------------------
802.3 Header (offset 72-7F)
--------------------------------------------------------------------*/
#define		HFA384x_FD_DESTADDRESS_OFF		((UINT16)0x72)
#define		HFA384x_FD_SRCADDRESS_OFF		((UINT16)0x78)
#define		HFA384x_FD_DATALENGTH_OFF		((UINT16)0x7E)

/*--------------------------------------------------------------------
FRAME STRUCTURES: Communication Frames
----------------------------------------------------------------------
Communication Frames: Transmit Frames
--------------------------------------------------------------------*/
/*-- Communication Frame: Transmit Frame Structure --*/
typedef struct hfa384x_tx_frame
{
	UINT16	status;
	UINT16	reserved1;
	UINT16	reserved2;
	UINT32	sw_support;
	UINT8	tx_retrycount;
	UINT8   tx_rate;
	UINT16	tx_control;

	/*-- 802.11 Header Information --*/

	UINT16	frame_control;
	UINT16	duration_id;
	UINT8	address1[6];
	UINT8	address2[6];
	UINT8	address3[6];
	UINT16	sequence_control;
	UINT8	address4[6];
	UINT16	data_len; /* little endian format */

	/*-- 802.3 Header Information --*/

	UINT8	dest_addr[6];
	UINT8	src_addr[6];
	UINT16	data_length; /* big endian format */
} __WLAN_ATTRIB_PACK__ hfa384x_tx_frame_t;
/*--------------------------------------------------------------------
Communication Frames: Field Masks for Transmit Frames
--------------------------------------------------------------------*/
/*-- Status Field --*/
#define		HFA384x_TXSTATUS_ACKERR			((UINT16)BIT5)
#define		HFA384x_TXSTATUS_FORMERR		((UINT16)BIT3)
#define		HFA384x_TXSTATUS_DISCON			((UINT16)BIT2)
#define		HFA384x_TXSTATUS_AGEDERR		((UINT16)BIT1)
#define		HFA384x_TXSTATUS_RETRYERR		((UINT16)BIT0)
/*-- Transmit Control Field --*/
#define		HFA384x_TX_CFPOLL			((UINT16)BIT12)
#define		HFA384x_TX_PRST				((UINT16)BIT11)
#define		HFA384x_TX_MACPORT			((UINT16)(BIT10 | BIT9 | BIT8))
#define		HFA384x_TX_NOENCRYPT			((UINT16)BIT7)
#define		HFA384x_TX_RETRYSTRAT			((UINT16)(BIT6 | BIT5))
#define		HFA384x_TX_STRUCTYPE			((UINT16)(BIT4 | BIT3))
#define		HFA384x_TX_TXEX				((UINT16)BIT2)
#define		HFA384x_TX_TXOK				((UINT16)BIT1)
/*--------------------------------------------------------------------
Communication Frames: Test/Get/Set Field Values for Transmit Frames
--------------------------------------------------------------------*/
/*-- Status Field --*/
#define HFA384x_TXSTATUS_ISERROR(v)	\
	(((UINT16)(v))&\
	(HFA384x_TXSTATUS_ACKERR|HFA384x_TXSTATUS_FORMERR|\
	HFA384x_TXSTATUS_DISCON|HFA384x_TXSTATUS_AGEDERR|\
	HFA384x_TXSTATUS_RETRYERR))

#define	HFA384x_TXSTATUS_ISACKERR(v)	((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_ACKERR))
#define	HFA384x_TXSTATUS_ISFORMERR(v)	((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_FORMERR))
#define	HFA384x_TXSTATUS_ISDISCON(v)	((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_DISCON))
#define	HFA384x_TXSTATUS_ISAGEDERR(v)	((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_AGEDERR))
#define	HFA384x_TXSTATUS_ISRETRYERR(v)	((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_RETRYERR))

#define	HFA384x_TX_GET(v,m,s)		((((UINT16)(v))&((UINT16)(m)))>>((UINT16)(s)))
#define	HFA384x_TX_SET(v,m,s)		((((UINT16)(v))<<((UINT16)(s)))&((UINT16)(m)))

#define	HFA384x_TX_CFPOLL_GET(v)	HFA384x_TX_GET(v, HFA384x_TX_CFPOLL,12)
#define	HFA384x_TX_CFPOLL_SET(v)	HFA384x_TX_SET(v, HFA384x_TX_CFPOLL,12)
#define	HFA384x_TX_PRST_GET(v)		HFA384x_TX_GET(v, HFA384x_TX_PRST,11)
#define	HFA384x_TX_PRST_SET(v)		HFA384x_TX_SET(v, HFA384x_TX_PRST,11)
#define	HFA384x_TX_MACPORT_GET(v)	HFA384x_TX_GET(v, HFA384x_TX_MACPORT, 8)
#define	HFA384x_TX_MACPORT_SET(v)	HFA384x_TX_SET(v, HFA384x_TX_MACPORT, 8)
#define	HFA384x_TX_NOENCRYPT_GET(v)	HFA384x_TX_GET(v, HFA384x_TX_NOENCRYPT, 7)
#define	HFA384x_TX_NOENCRYPT_SET(v)	HFA384x_TX_SET(v, HFA384x_TX_NOENCRYPT, 7)
#define	HFA384x_TX_RETRYSTRAT_GET(v)	HFA384x_TX_GET(v, HFA384x_TX_RETRYSTRAT, 5)
#define	HFA384x_TX_RETRYSTRAT_SET(v)	HFA384x_TX_SET(v, HFA384x_TX_RETRYSTRAT, 5)
#define	HFA384x_TX_STRUCTYPE_GET(v)	HFA384x_TX_GET(v, HFA384x_TX_STRUCTYPE, 3)
#define	HFA384x_TX_STRUCTYPE_SET(v)	HFA384x_TX_SET(v, HFA384x_TX_STRUCTYPE, 3)
#define	HFA384x_TX_TXEX_GET(v)		HFA384x_TX_GET(v, HFA384x_TX_TXEX, 2)
#define	HFA384x_TX_TXEX_SET(v)		HFA384x_TX_SET(v, HFA384x_TX_TXEX, 2)
#define	HFA384x_TX_TXOK_GET(v)		HFA384x_TX_GET(v, HFA384x_TX_TXOK, 1)
#define	HFA384x_TX_TXOK_SET(v)		HFA384x_TX_SET(v, HFA384x_TX_TXOK, 1)
/*--------------------------------------------------------------------
Communication Frames: Receive Frames
--------------------------------------------------------------------*/
/*-- Communication Frame: Receive Frame Structure --*/
typedef struct hfa384x_rx_frame
{
	/*-- MAC rx descriptor (hfa384x byte order) --*/
	UINT16	status;
	UINT32	time;
	UINT8	silence;
	UINT8	signal;
	UINT8	rate;
	UINT8	rx_flow;
	UINT16	reserved1;
	UINT16	reserved2;

	/*-- 802.11 Header Information (802.11 byte order) --*/
	UINT16	frame_control;
	UINT16	duration_id;
	UINT8	address1[6];
	UINT8	address2[6];
	UINT8	address3[6];
	UINT16	sequence_control;
	UINT8	address4[6];
	UINT16	data_len; /* hfa384x (little endian) format */

	/*-- 802.3 Header Information --*/
	UINT8	dest_addr[6];
	UINT8	src_addr[6];
	UINT16	data_length; /* IEEE? (big endian) format */
} __WLAN_ATTRIB_PACK__ hfa384x_rx_frame_t;
/*--------------------------------------------------------------------
Communication Frames: Field Masks for Receive Frames
--------------------------------------------------------------------*/
/*-- Offsets --------*/
#define		HFA384x_RX_DATA_LEN_OFF			((UINT16)44)
#define		HFA384x_RX_80211HDR_OFF			((UINT16)14)
#define		HFA384x_RX_DATA_OFF			((UINT16)60)

/*-- Status Fields --*/
#define		HFA384x_RXSTATUS_MSGTYPE		((UINT16)(BIT15 | BIT14 | BIT13))
#define		HFA384x_RXSTATUS_MACPORT		((UINT16)(BIT10 | BIT9 | BIT8))
#define		HFA384x_RXSTATUS_UNDECR			((UINT16)BIT1)
#define		HFA384x_RXSTATUS_FCSERR			((UINT16)BIT0)
/*--------------------------------------------------------------------
Communication Frames: Test/Get/Set Field Values for Receive Frames
--------------------------------------------------------------------*/
#define		HFA384x_RXSTATUS_MSGTYPE_GET(value)	((UINT16)((((UINT16)(value)) & HFA384x_RXSTATUS_MSGTYPE) >> 13))
#define		HFA384x_RXSTATUS_MSGTYPE_SET(value)	((UINT16)(((UINT16)(value)) << 13))
#define		HFA384x_RXSTATUS_MACPORT_GET(value)	((UINT16)((((UINT16)(value)) & HFA384x_RXSTATUS_MACPORT) >> 8))
#define		HFA384x_RXSTATUS_MACPORT_SET(value)	((UINT16)(((UINT16)(value)) << 8))
#define		HFA384x_RXSTATUS_ISUNDECR(value)	((UINT16)(((UINT16)(value)) & HFA384x_RXSTATUS_UNDECR))
#define		HFA384x_RXSTATUS_ISFCSERR(value)	((UINT16)(((UINT16)(value)) & HFA384x_RXSTATUS_FCSERR))
/*--------------------------------------------------------------------
 FRAME STRUCTURES: Information Types and Information Frame Structures
----------------------------------------------------------------------
Information Types
--------------------------------------------------------------------*/
#define		HFA384x_IT_HANDOVERADDR			((UINT16)0xF000UL)
#define		HFA384x_IT_HANDOVERDEAUTHADDRESS	((UINT16)0xF001UL)//AP 1.3.7
#define		HFA384x_IT_COMMTALLIES			((UINT16)0xF100UL)
#define		HFA384x_IT_SCANRESULTS			((UINT16)0xF101UL)
#define		HFA384x_IT_CHINFORESULTS		((UINT16)0xF102UL)
#define		HFA384x_IT_HOSTSCANRESULTS		((UINT16)0xF103UL)
#define		HFA384x_IT_LINKSTATUS			((UINT16)0xF200UL)
#define		HFA384x_IT_ASSOCSTATUS			((UINT16)0xF201UL)
#define		HFA384x_IT_AUTHREQ			((UINT16)0xF202UL)
#define		HFA384x_IT_PSUSERCNT			((UINT16)0xF203UL)
#define		HFA384x_IT_KEYIDCHANGED			((UINT16)0xF204UL)
#define		HFA384x_IT_ASSOCREQ    			((UINT16)0xF205UL)
#define		HFA384x_IT_MICFAILURE  			((UINT16)0xF206UL)

/*--------------------------------------------------------------------
Information Frames Structures
----------------------------------------------------------------------
Information Frames: Notification Frame Structures
--------------------------------------------------------------------*/
/*--  Notification Frame,MAC Mgmt: Handover Address --*/
typedef struct hfa384x_HandoverAddr
{
	UINT16	framelen;
	UINT16	infotype;
	UINT8	handover_addr[WLAN_BSSID_LEN];
} __WLAN_ATTRIB_PACK__ hfa384x_HandoverAddr_t;

/*--  Inquiry Frame, Diagnose: Communication Tallies --*/
typedef struct hfa384x_CommTallies16
{
	UINT16	txunicastframes;
	UINT16	txmulticastframes;
	UINT16	txfragments;
	UINT16	txunicastoctets;
	UINT16	txmulticastoctets;
	UINT16	txdeferredtrans;
	UINT16	txsingleretryframes;
	UINT16	txmultipleretryframes;
	UINT16	txretrylimitexceeded;
	UINT16	txdiscards;
	UINT16	rxunicastframes;
	UINT16	rxmulticastframes;
	UINT16	rxfragments;
	UINT16	rxunicastoctets;
	UINT16	rxmulticastoctets;
	UINT16	rxfcserrors;
	UINT16	rxdiscardsnobuffer;
	UINT16	txdiscardswrongsa;
	UINT16	rxdiscardswepundecr;
	UINT16	rxmsginmsgfrag;
	UINT16	rxmsginbadmsgfrag;
} __WLAN_ATTRIB_PACK__ hfa384x_CommTallies16_t;

typedef struct hfa384x_CommTallies32
{
	UINT32	txunicastframes;
	UINT32	txmulticastframes;
	UINT32	txfragments;
	UINT32	txunicastoctets;
	UINT32	txmulticastoctets;
	UINT32	txdeferredtrans;
	UINT32	txsingleretryframes;
	UINT32	txmultipleretryframes;
	UINT32	txretrylimitexceeded;
	UINT32	txdiscards;
	UINT32	rxunicastframes;
	UINT32	rxmulticastframes;
	UINT32	rxfragments;
	UINT32	rxunicastoctets;
	UINT32	rxmulticastoctets;
	UINT32	rxfcserrors;
	UINT32	rxdiscardsnobuffer;
	UINT32	txdiscardswrongsa;
	UINT32	rxdiscardswepundecr;
	UINT32	rxmsginmsgfrag;
	UINT32	rxmsginbadmsgfrag;
} __WLAN_ATTRIB_PACK__ hfa384x_CommTallies32_t;

/*--  Inquiry Frame, Diagnose: Scan Results & Subfields--*/
typedef struct hfa384x_ScanResultSub
{
	UINT16	chid;
	UINT16	anl;
	UINT16	sl;
	UINT8	bssid[WLAN_BSSID_LEN];
	UINT16	bcnint;
	UINT16	capinfo;
	hfa384x_bytestr32_t	ssid;
	UINT8	supprates[10]; /* 802.11 info element */
	UINT16	proberesp_rate;
} __WLAN_ATTRIB_PACK__ hfa384x_ScanResultSub_t;

typedef struct hfa384x_ScanResult
{
	UINT16	rsvd;
	UINT16	scanreason;
	hfa384x_ScanResultSub_t
		result[HFA384x_SCANRESULT_MAX];
} __WLAN_ATTRIB_PACK__ hfa384x_ScanResult_t;

/*--  Inquiry Frame, Diagnose: ChInfo Results & Subfields--*/
typedef struct hfa384x_ChInfoResultSub
{
	UINT16	chid;
	UINT16	anl;
	UINT16	pnl;
	UINT16	active;
} __WLAN_ATTRIB_PACK__ hfa384x_ChInfoResultSub_t;

#define HFA384x_CHINFORESULT_BSSACTIVE	BIT0
#define HFA384x_CHINFORESULT_PCFACTIVE	BIT1

typedef struct hfa384x_ChInfoResult
{
	UINT16	scanchannels;
	hfa384x_ChInfoResultSub_t
		result[HFA384x_CHINFORESULT_MAX];
} __WLAN_ATTRIB_PACK__ hfa384x_ChInfoResult_t;

/*--  Inquiry Frame, Diagnose: Host Scan Results & Subfields--*/
typedef struct hfa384x_HScanResultSub
{
	UINT16	chid;
	UINT16	anl;
	UINT16	sl;
	UINT8	bssid[WLAN_BSSID_LEN];
	UINT16	bcnint;
	UINT16	capinfo;
	hfa384x_bytestr32_t	ssid;
	UINT8	supprates[10]; /* 802.11 info element */
	UINT16	proberesp_rate;
	UINT16	atim;
} __WLAN_ATTRIB_PACK__ hfa384x_HScanResultSub_t;

typedef struct hfa384x_HScanResult
{
	UINT16	nresult;
	UINT16	rsvd;
	hfa384x_HScanResultSub_t
		result[HFA384x_HSCANRESULT_MAX];
} __WLAN_ATTRIB_PACK__ hfa384x_HScanResult_t;

/*--  Unsolicited Frame, MAC Mgmt: LinkStatus --*/

#define HFA384x_LINK_NOTCONNECTED	((UINT16)0)
#define HFA384x_LINK_CONNECTED		((UINT16)1)
#define HFA384x_LINK_DISCONNECTED	((UINT16)2)
#define HFA384x_LINK_AP_CHANGE		((UINT16)3)
#define HFA384x_LINK_AP_OUTOFRANGE	((UINT16)4)
#define HFA384x_LINK_AP_INRANGE		((UINT16)5)
#define HFA384x_LINK_ASSOCFAIL		((UINT16)6)

typedef struct hfa384x_LinkStatus
{
	UINT16	linkstatus;
} __WLAN_ATTRIB_PACK__ hfa384x_LinkStatus_t;


/*--  Unsolicited Frame, MAC Mgmt: AssociationStatus (--*/

#define HFA384x_ASSOCSTATUS_STAASSOC	((UINT16)1)
#define HFA384x_ASSOCSTATUS_REASSOC	((UINT16)2)
#define HFA384x_ASSOCSTATUS_DISASSOC	((UINT16)3)
#define HFA384x_ASSOCSTATUS_ASSOCFAIL	((UINT16)4)
#define HFA384x_ASSOCSTATUS_AUTHFAIL	((UINT16)5)

typedef struct hfa384x_AssocStatus
{
	UINT16	assocstatus;
	UINT8	sta_addr[WLAN_ADDR_LEN];
	/* old_ap_addr is only valid if assocstatus == 2 */
	UINT8	old_ap_addr[WLAN_ADDR_LEN];
	UINT16	reason;
	UINT16	reserved;
} __WLAN_ATTRIB_PACK__ hfa384x_AssocStatus_t;

/*--  Unsolicited Frame, MAC Mgmt: AuthRequest (AP Only) --*/

typedef struct hfa384x_AuthRequest
{
	UINT8	sta_addr[WLAN_ADDR_LEN];
	UINT16	algorithm;
} __WLAN_ATTRIB_PACK__ hfa384x_AuthReq_t;

/*--  Unsolicited Frame, MAC Mgmt: AssocRequest (AP Only) --*/

typedef struct hfa384x_AssocRequest
{
	UINT8	sta_addr[WLAN_ADDR_LEN];
	UINT16	type;
	UINT8   wpa_data[80];
} __WLAN_ATTRIB_PACK__ hfa384x_AssocReq_t;


#define HFA384x_ASSOCREQ_TYPE_ASSOC     0
#define HFA384x_ASSOCREQ_TYPE_REASSOC   1

/*--  Unsolicited Frame, MAC Mgmt: MIC Failure  (AP Only) --*/

typedef struct hfa384x_MicFailure
{
	UINT8	sender[WLAN_ADDR_LEN];
	UINT8	dest[WLAN_ADDR_LEN];
} __WLAN_ATTRIB_PACK__ hfa384x_MicFailure_t;

/*--  Unsolicited Frame, MAC Mgmt: PSUserCount (AP Only) --*/

typedef struct hfa384x_PSUserCount
{
	UINT16	usercnt;
} __WLAN_ATTRIB_PACK__ hfa384x_PSUserCount_t;

typedef struct hfa384x_KeyIDChanged
{
	UINT8	sta_addr[WLAN_ADDR_LEN];
	UINT16	keyid;
} __WLAN_ATTRIB_PACK__ hfa384x_KeyIDChanged_t;

/*--  Collection of all Inf frames ---------------*/
typedef union hfa384x_infodata {
	hfa384x_CommTallies16_t	commtallies16;
	hfa384x_CommTallies32_t	commtallies32;
	hfa384x_ScanResult_t	scanresult;
	hfa384x_ChInfoResult_t	chinforesult;
	hfa384x_HScanResult_t	hscanresult;
	hfa384x_LinkStatus_t	linkstatus;
	hfa384x_AssocStatus_t	assocstatus;
	hfa384x_AuthReq_t	authreq;
	hfa384x_PSUserCount_t	psusercnt;
	hfa384x_KeyIDChanged_t  keyidchanged;
} __WLAN_ATTRIB_PACK__ hfa384x_infodata_t;

typedef struct hfa384x_InfFrame
{
	UINT16			framelen;
	UINT16			infotype;
	hfa384x_infodata_t	info;
} __WLAN_ATTRIB_PACK__ hfa384x_InfFrame_t;

#if (WLAN_HOSTIF == WLAN_USB)
/*--------------------------------------------------------------------
USB Packet structures and constants.
--------------------------------------------------------------------*/

/* Should be sent to the ctrlout endpoint */
#define HFA384x_USB_ENBULKIN	6

/* Should be sent to the bulkout endpoint */
#define HFA384x_USB_TXFRM	0
#define HFA384x_USB_CMDREQ	1
#define HFA384x_USB_WRIDREQ	2
#define HFA384x_USB_RRIDREQ	3
#define HFA384x_USB_WMEMREQ	4
#define HFA384x_USB_RMEMREQ	5

/* Received from the bulkin endpoint */
#define HFA384x_USB_ISFRM(a)	(!((a) & 0x8000))
#define HFA384x_USB_ISTXFRM(a)	(((a) & 0x9000) == 0x1000)
#define HFA384x_USB_ISRXFRM(a)	(!((a) & 0x9000))
#define HFA384x_USB_INFOFRM	0x8000
#define HFA384x_USB_CMDRESP	0x8001
#define HFA384x_USB_WRIDRESP	0x8002
#define HFA384x_USB_RRIDRESP	0x8003
#define HFA384x_USB_WMEMRESP	0x8004
#define HFA384x_USB_RMEMRESP	0x8005
#define HFA384x_USB_BUFAVAIL	0x8006
#define HFA384x_USB_ERROR	0x8007

/*------------------------------------*/
/* Request (bulk OUT) packet contents */

typedef struct hfa384x_usb_txfrm {
	hfa384x_tx_frame_t	desc;
	UINT8			data[WLAN_DATA_MAXLEN];
} __WLAN_ATTRIB_PACK__ hfa384x_usb_txfrm_t;

typedef struct hfa384x_usb_cmdreq {
	UINT16		type;
	UINT16		cmd;
	UINT16		parm0;
	UINT16		parm1;
	UINT16		parm2;
	UINT8		pad[54];
} __WLAN_ATTRIB_PACK__ hfa384x_usb_cmdreq_t;

typedef struct hfa384x_usb_wridreq {
	UINT16		type;
	UINT16		frmlen;
	UINT16		rid;
	UINT8		data[HFA384x_RIDDATA_MAXLEN];
} __WLAN_ATTRIB_PACK__ hfa384x_usb_wridreq_t;

typedef struct hfa384x_usb_rridreq {
	UINT16		type;
	UINT16		frmlen;
	UINT16		rid;
	UINT8		pad[58];
} __WLAN_ATTRIB_PACK__ hfa384x_usb_rridreq_t;

typedef struct hfa384x_usb_wmemreq {
	UINT16		type;
	UINT16		frmlen;
	UINT16		offset;
	UINT16		page;
	UINT8		data[HFA384x_USB_RWMEM_MAXLEN];
} __WLAN_ATTRIB_PACK__ hfa384x_usb_wmemreq_t;

typedef struct hfa384x_usb_rmemreq {
	UINT16		type;
	UINT16		frmlen;
	UINT16		offset;
	UINT16		page;
	UINT8		pad[56];
} __WLAN_ATTRIB_PACK__ hfa384x_usb_rmemreq_t;

/*------------------------------------*/
/* Response (bulk IN) packet contents */

typedef struct hfa384x_usb_rxfrm {
	hfa384x_rx_frame_t	desc;
	UINT8			data[WLAN_DATA_MAXLEN];
} __WLAN_ATTRIB_PACK__ hfa384x_usb_rxfrm_t;

typedef struct hfa384x_usb_infofrm {
	UINT16			type;
	hfa384x_InfFrame_t	info;
} __WLAN_ATTRIB_PACK__ hfa384x_usb_infofrm_t;

typedef struct hfa384x_usb_statusresp {
	UINT16		type;
	UINT16		status;
	UINT16		resp0;
	UINT16		resp1;
	UINT16		resp2;
} __WLAN_ATTRIB_PACK__ hfa384x_usb_cmdresp_t;

typedef hfa384x_usb_cmdresp_t hfa384x_usb_wridresp_t;

typedef struct hfa384x_usb_rridresp {
	UINT16		type;
	UINT16		frmlen;
	UINT16		rid;
	UINT8		data[HFA384x_RIDDATA_MAXLEN];
} __WLAN_ATTRIB_PACK__ hfa384x_usb_rridresp_t;

typedef hfa384x_usb_cmdresp_t hfa384x_usb_wmemresp_t;

typedef struct hfa384x_usb_rmemresp {
	UINT16		type;
	UINT16		frmlen;
	UINT8		data[HFA384x_USB_RWMEM_MAXLEN];
} __WLAN_ATTRIB_PACK__ hfa384x_usb_rmemresp_t;

typedef struct hfa384x_usb_bufavail {
	UINT16		type;
	UINT16		frmlen;
} __WLAN_ATTRIB_PACK__ hfa384x_usb_bufavail_t;

typedef struct hfa384x_usb_error {
	UINT16		type;
	UINT16		errortype;
} __WLAN_ATTRIB_PACK__ hfa384x_usb_error_t;

/*----------------------------------------------------------*/
/* Unions for packaging all the known packet types together */

typedef union hfa384x_usbout {
	UINT16			type;
	hfa384x_usb_txfrm_t	txfrm;
	hfa384x_usb_cmdreq_t	cmdreq;
	hfa384x_usb_wridreq_t	wridreq;
	hfa384x_usb_rridreq_t	rridreq;
	hfa384x_usb_wmemreq_t	wmemreq;
	hfa384x_usb_rmemreq_t	rmemreq;
} __WLAN_ATTRIB_PACK__ hfa384x_usbout_t;

typedef union hfa384x_usbin {
	UINT16			type;
	hfa384x_usb_rxfrm_t	rxfrm;
	hfa384x_usb_txfrm_t	txfrm;
	hfa384x_usb_infofrm_t	infofrm;
	hfa384x_usb_cmdresp_t	cmdresp;
	hfa384x_usb_wridresp_t	wridresp;
	hfa384x_usb_rridresp_t	rridresp;
	hfa384x_usb_wmemresp_t	wmemresp;
	hfa384x_usb_rmemresp_t	rmemresp;
	hfa384x_usb_bufavail_t	bufavail;
	hfa384x_usb_error_t	usberror;
	UINT8			boguspad[3000];
} __WLAN_ATTRIB_PACK__ hfa384x_usbin_t;

#endif /* WLAN_USB */

/*--------------------------------------------------------------------
PD record structures.
--------------------------------------------------------------------*/

typedef struct hfa384x_pdr_pcb_partnum
{
	UINT8	num[8];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_pcb_partnum_t;

typedef struct hfa384x_pdr_pcb_tracenum
{
	UINT8	num[8];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_pcb_tracenum_t;

typedef struct hfa384x_pdr_nic_serial
{
	UINT8	num[12];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_serial_t;

typedef struct hfa384x_pdr_mkk_measurements
{
	double	carrier_freq;
	double	occupied_band;
	double	power_density;
	double	tx_spur_f1;
	double	tx_spur_f2;
	double	tx_spur_f3;
	double	tx_spur_f4;
	double	tx_spur_l1;
	double	tx_spur_l2;
	double	tx_spur_l3;
	double	tx_spur_l4;
	double	rx_spur_f1;
	double	rx_spur_f2;
	double	rx_spur_l1;
	double	rx_spur_l2;
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_mkk_measurements_t;

typedef struct hfa384x_pdr_nic_ramsize
{
	UINT8	size[12]; /* units of KB */
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_ramsize_t;

typedef struct hfa384x_pdr_mfisuprange
{
	UINT16	id;
	UINT16	variant;
	UINT16	bottom;
	UINT16	top;
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_mfisuprange_t;

typedef struct hfa384x_pdr_cfisuprange
{
	UINT16	id;
	UINT16	variant;
	UINT16	bottom;
	UINT16	top;
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_cfisuprange_t;

typedef struct hfa384x_pdr_nicid
{
	UINT16	id;
	UINT16	variant;
	UINT16	major;
	UINT16	minor;
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_nicid_t;


typedef struct hfa384x_pdr_refdac_measurements
{
	UINT16	value[0];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_refdac_measurements_t;

typedef struct hfa384x_pdr_vgdac_measurements
{
	UINT16	value[0];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_vgdac_measurements_t;

typedef struct hfa384x_pdr_level_comp_measurements
{
	UINT16	value[0];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_level_compc_measurements_t;

typedef struct hfa384x_pdr_mac_address
{
	UINT8	addr[6];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_mac_address_t;

typedef struct hfa384x_pdr_mkk_callname
{
	UINT8	callname[8];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_mkk_callname_t;

typedef struct hfa384x_pdr_regdomain
{
	UINT16	numdomains;
	UINT16	domain[5];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_regdomain_t;

typedef struct hfa384x_pdr_allowed_channel
{
	UINT16	ch_bitmap;
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_allowed_channel_t;

typedef struct hfa384x_pdr_default_channel
{
	UINT16	channel;
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_default_channel_t;

typedef struct hfa384x_pdr_privacy_option
{
	UINT16	available;
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_privacy_option_t;

typedef struct hfa384x_pdr_temptype
{
	UINT16	type;
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_temptype_t;

typedef struct hfa384x_pdr_refdac_setup
{
	UINT16	ch_value[14];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_refdac_setup_t;

typedef struct hfa384x_pdr_vgdac_setup
{
	UINT16	ch_value[14];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_vgdac_setup_t;

typedef struct hfa384x_pdr_level_comp_setup
{
	UINT16	ch_value[14];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_level_comp_setup_t;

typedef struct hfa384x_pdr_trimdac_setup
{
	UINT16	trimidac;
	UINT16	trimqdac;
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_trimdac_setup_t;

typedef struct hfa384x_pdr_ifr_setting
{
	UINT16	value[3];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_ifr_setting_t;

typedef struct hfa384x_pdr_rfr_setting
{
	UINT16	value[3];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_rfr_setting_t;

typedef struct hfa384x_pdr_hfa3861_baseline
{
	UINT16	value[50];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_baseline_t;

typedef struct hfa384x_pdr_hfa3861_shadow
{
	UINT32	value[32];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_shadow_t;

typedef struct hfa384x_pdr_hfa3861_ifrf
{
	UINT32	value[20];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_ifrf_t;

typedef struct hfa384x_pdr_hfa3861_chcalsp
{
	UINT16	value[14];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_chcalsp_t;

typedef struct hfa384x_pdr_hfa3861_chcali
{
	UINT16	value[17];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_chcali_t;

typedef struct hfa384x_pdr_hfa3861_nic_config
{
	UINT16	config_bitmap;
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_config_t;

typedef struct hfa384x_pdr_hfo_delay
{
	UINT8   hfo_delay;
} __WLAN_ATTRIB_PACK__ hfa384x_hfo_delay_t;

typedef struct hfa384x_pdr_hfa3861_manf_testsp
{
	UINT16	value[30];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_manf_testsp_t;

typedef struct hfa384x_pdr_hfa3861_manf_testi
{
	UINT16	value[30];
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_manf_testi_t;

typedef struct hfa384x_end_of_pda
{
	UINT16	crc;
} __WLAN_ATTRIB_PACK__ hfa384x_pdr_end_of_pda_t;

typedef struct hfa384x_pdrec
{
	UINT16	len; /* in words */
	UINT16	code;
	union pdr {
	hfa384x_pdr_pcb_partnum_t	pcb_partnum;
	hfa384x_pdr_pcb_tracenum_t	pcb_tracenum;
	hfa384x_pdr_nic_serial_t	nic_serial;
	hfa384x_pdr_mkk_measurements_t	mkk_measurements;
	hfa384x_pdr_nic_ramsize_t	nic_ramsize;
	hfa384x_pdr_mfisuprange_t	mfisuprange;
	hfa384x_pdr_cfisuprange_t	cfisuprange;
	hfa384x_pdr_nicid_t		nicid;
	hfa384x_pdr_refdac_measurements_t	refdac_measurements;
	hfa384x_pdr_vgdac_measurements_t	vgdac_measurements;
	hfa384x_pdr_level_compc_measurements_t	level_compc_measurements;
	hfa384x_pdr_mac_address_t	mac_address;
	hfa384x_pdr_mkk_callname_t	mkk_callname;
	hfa384x_pdr_regdomain_t		regdomain;
	hfa384x_pdr_allowed_channel_t	allowed_channel;
	hfa384x_pdr_default_channel_t	default_channel;
	hfa384x_pdr_privacy_option_t	privacy_option;
	hfa384x_pdr_temptype_t		temptype;
	hfa384x_pdr_refdac_setup_t	refdac_setup;
	hfa384x_pdr_vgdac_setup_t	vgdac_setup;
	hfa384x_pdr_level_comp_setup_t	level_comp_setup;
	hfa384x_pdr_trimdac_setup_t	trimdac_setup;
	hfa384x_pdr_ifr_setting_t	ifr_setting;
	hfa384x_pdr_rfr_setting_t	rfr_setting;
	hfa384x_pdr_hfa3861_baseline_t	hfa3861_baseline;
	hfa384x_pdr_hfa3861_shadow_t	hfa3861_shadow;
	hfa384x_pdr_hfa3861_ifrf_t	hfa3861_ifrf;
	hfa384x_pdr_hfa3861_chcalsp_t	hfa3861_chcalsp;
	hfa384x_pdr_hfa3861_chcali_t	hfa3861_chcali;
	hfa384x_pdr_nic_config_t	nic_config;
	hfa384x_hfo_delay_t             hfo_delay;
	hfa384x_pdr_hfa3861_manf_testsp_t	hfa3861_manf_testsp;
	hfa384x_pdr_hfa3861_manf_testi_t	hfa3861_manf_testi;
	hfa384x_pdr_end_of_pda_t	end_of_pda;

	} data;
} __WLAN_ATTRIB_PACK__ hfa384x_pdrec_t;


#ifdef __KERNEL__
/*--------------------------------------------------------------------
---  MAC state structure, argument to all functions --
---  Also, a collection of support types --
--------------------------------------------------------------------*/
typedef struct hfa384x_statusresult
{
	UINT16	status;
	UINT16	resp0;
	UINT16	resp1;
	UINT16	resp2;
} hfa384x_cmdresult_t;

#if (WLAN_HOSTIF == WLAN_USB)

/* USB Control Exchange (CTLX):
 *  A queue of the structure below is maintained for all of the
 *  Request/Response type USB packets supported by Prism2.
 */
/* The following hfa384x_* structures are arguments to
 * the usercb() for the different CTLX types.
 */
typedef hfa384x_cmdresult_t hfa384x_wridresult_t;
typedef hfa384x_cmdresult_t hfa384x_wmemresult_t;

typedef struct hfa384x_rridresult
{
	UINT16		rid;
	const void	*riddata;
	UINT		riddata_len;
} hfa384x_rridresult_t;

enum ctlx_state {
	CTLX_START = 0,	/* Start state, not queued */

	CTLX_COMPLETE,	/* CTLX successfully completed */
	CTLX_REQ_FAILED,	/* OUT URB completed w/ error */

	CTLX_PENDING,		/* Queued, data valid */
	CTLX_REQ_SUBMITTED,	/* OUT URB submitted */
	CTLX_REQ_COMPLETE,	/* OUT URB complete */
	CTLX_RESP_COMPLETE	/* IN URB received */
};
typedef enum ctlx_state  CTLX_STATE;

struct hfa384x_usbctlx;
struct hfa384x;

typedef void (*ctlx_cmdcb_t)( struct hfa384x*, const struct hfa384x_usbctlx* );

typedef void (*ctlx_usercb_t)(
	struct hfa384x	*hw,
	void		*ctlxresult,
	void		*usercb_data);

typedef struct hfa384x_usbctlx
{
	struct list_head	list;

	size_t			outbufsize;
	hfa384x_usbout_t	outbuf;		/* pkt buf for OUT */
	hfa384x_usbin_t		inbuf;		/* pkt buf for IN(a copy) */

	CTLX_STATE		state;		/* Tracks running state */

	struct completion	done;
	volatile int		reapable;	/* Food for the reaper task */

	ctlx_cmdcb_t		cmdcb;		/* Async command callback */
	ctlx_usercb_t		usercb;		/* Async user callback, */
	void			*usercb_data;	/*  at CTLX completion  */

	int			variant;	/* Identifies cmd variant */
} hfa384x_usbctlx_t;

typedef struct hfa384x_usbctlxq
{
	spinlock_t		lock;
	struct list_head	pending;
	struct list_head	active;
	struct list_head	completing;
	struct list_head	reapable;
} hfa384x_usbctlxq_t;
#endif

typedef struct hfa484x_metacmd
{
	UINT16		cmd;

	UINT16          parm0;
	UINT16          parm1;
	UINT16          parm2;

#if 0 //XXX cmd irq stuff
	UINT16          bulkid;         /* what RID/FID to copy down. */
	int             bulklen;        /* how much to copy from BAP */
        char            *bulkdata;      /* And to where? */
#endif

	hfa384x_cmdresult_t result;
} hfa384x_metacmd_t;

#define	MAX_PRISM2_GRP_ADDR	16
#define	MAX_GRP_ADDR		32
#define WLAN_COMMENT_MAX	80  /* Max. length of user comment string. */

#define MM_SAT_PCF		(BIT14)
#define MM_GCSD_PCF		(BIT15)
#define MM_GCSD_PCF_EB		(BIT14 | BIT15)

#define WLAN_STATE_STOPPED	0   /* Network is not active. */
#define WLAN_STATE_STARTED	1   /* Network has been started. */

#define WLAN_AUTH_MAX           60  /* Max. # of authenticated stations. */
#define WLAN_ACCESS_MAX		60  /* Max. # of stations in an access list. */
#define WLAN_ACCESS_NONE	0   /* No stations may be authenticated. */
#define WLAN_ACCESS_ALL		1   /* All stations may be authenticated. */
#define WLAN_ACCESS_ALLOW	2   /* Authenticate only "allowed" stations. */
#define WLAN_ACCESS_DENY	3   /* Do not authenticate "denied" stations. */

/* XXX These are going away ASAP */
typedef struct prism2sta_authlist
{
	UINT	cnt;
	UINT8	addr[WLAN_AUTH_MAX][WLAN_ADDR_LEN];
	UINT8	assoc[WLAN_AUTH_MAX];
} prism2sta_authlist_t;

typedef struct prism2sta_accesslist
{
	UINT	modify;
	UINT	cnt;
	UINT8	addr[WLAN_ACCESS_MAX][WLAN_ADDR_LEN];
	UINT	cnt1;
	UINT8	addr1[WLAN_ACCESS_MAX][WLAN_ADDR_LEN];
} prism2sta_accesslist_t;

typedef struct hfa384x
{
#if (WLAN_HOSTIF != WLAN_USB)
	/* Resource config */
	UINT32			iobase;
	char			__iomem *membase;
	UINT32			irq;
#else
	/* USB support data */
	struct usb_device	*usb;
	struct urb		rx_urb;
	struct sk_buff		*rx_urb_skb;
	struct urb		tx_urb;
	struct urb		ctlx_urb;
	hfa384x_usbout_t	txbuff;
	hfa384x_usbctlxq_t	ctlxq;
	struct timer_list	reqtimer;
	struct timer_list	resptimer;

	struct timer_list	throttle;

	struct tasklet_struct	reaper_bh;
	struct tasklet_struct	completion_bh;

	struct work_struct	usb_work;

	unsigned long		usb_flags;
#define THROTTLE_RX	0
#define THROTTLE_TX	1
#define WORK_RX_HALT	2
#define WORK_TX_HALT	3
#define WORK_RX_RESUME	4
#define WORK_TX_RESUME	5

	unsigned short		req_timer_done:1;
	unsigned short		resp_timer_done:1;

	int                     endp_in;
	int                     endp_out;
#endif /* !USB */

#if (WLAN_HOSTIF == WLAN_PCMCIA)
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
	struct pcmcia_device *pdev;
#else
	dev_link_t	*link;
#endif
	dev_node_t	node;
#endif

	int                     sniff_fcs;
	int                     sniff_channel;
	int                     sniff_truncate;
	int                     sniffhdr;

	wait_queue_head_t cmdq;	        /* wait queue itself */

	/* Controller state */
	UINT32		state;
	UINT32		isap;
	UINT8		port_enabled[HFA384x_NUMPORTS_MAX];
#if (WLAN_HOSTIF != WLAN_USB)
	UINT		auxen;
	UINT            isram16;
#endif /* !USB */

	/* Download support */
	UINT				dlstate;
	hfa384x_downloadbuffer_t	bufinfo;
	UINT16				dltimeout;

#if (WLAN_HOSTIF != WLAN_USB)
	spinlock_t	cmdlock;
	volatile int    cmdflag;        /* wait queue flag */
	hfa384x_metacmd_t *cmddata;      /* for our async callback */

	/* BAP support */
	spinlock_t	baplock;
	struct tasklet_struct   bap_tasklet;

	/* MAC buffer ids */
        UINT16          txfid_head;
        UINT16          txfid_tail;
        UINT            txfid_N;
        UINT16          txfid_queue[HFA384x_DRVR_FIDSTACKLEN_MAX];
	UINT16			infofid;
	struct semaphore	infofid_sem;
#endif /* !USB */

	int                          scanflag;    /* to signal scan comlete */
	int                          join_ap;        /* are we joined to a specific ap */
	int                          join_retries;   /* number of join retries till we fail */
	hfa384x_JoinRequest_data_t   joinreq;        /* join request saved data */

	wlandevice_t            *wlandev;
	/* Timer to allow for the deferred processing of linkstatus messages */
	struct work_struct 	link_bh;

        struct work_struct      commsqual_bh;
	hfa384x_commsquality_t  qual;
	struct timer_list	commsqual_timer;

	UINT16 link_status;
	UINT16 link_status_new;
	struct sk_buff_head        authq;

	/* And here we have stuff that used to be in priv */

	/* State variables */
	UINT		presniff_port_type;
	UINT16		presniff_wepflags;
	UINT32		dot11_desired_bss_type;
	int		ap;	/* AP flag: 0 - Station, 1 - Access Point. */

	int             dbmadjust;

	/* Group Addresses - right now, there are up to a total
	of MAX_GRP_ADDR group addresses */
	UINT8		dot11_grp_addr[MAX_GRP_ADDR][WLAN_ADDR_LEN];
	UINT		dot11_grpcnt;

	/* Component Identities */
	hfa384x_compident_t	ident_nic;
	hfa384x_compident_t	ident_pri_fw;
	hfa384x_compident_t	ident_sta_fw;
	hfa384x_compident_t	ident_ap_fw;
	UINT16			mm_mods;

	/* Supplier compatibility ranges */
	hfa384x_caplevel_t	cap_sup_mfi;
	hfa384x_caplevel_t	cap_sup_cfi;
	hfa384x_caplevel_t	cap_sup_pri;
	hfa384x_caplevel_t	cap_sup_sta;
	hfa384x_caplevel_t	cap_sup_ap;

	/* Actor compatibility ranges */
	hfa384x_caplevel_t	cap_act_pri_cfi; /* pri f/w to controller interface */
	hfa384x_caplevel_t	cap_act_sta_cfi; /* sta f/w to controller interface */
	hfa384x_caplevel_t	cap_act_sta_mfi; /* sta f/w to modem interface */
	hfa384x_caplevel_t	cap_act_ap_cfi;  /* ap f/w to controller interface */
	hfa384x_caplevel_t	cap_act_ap_mfi;  /* ap f/w to modem interface */

	UINT32			psusercount;  /* Power save user count. */
	hfa384x_CommTallies32_t	tallies;      /* Communication tallies. */
	UINT8			comment[WLAN_COMMENT_MAX+1]; /* User comment */

	/* Channel Info request results (AP only) */
	struct {
		atomic_t		done;
		UINT8			count;
		hfa384x_ChInfoResult_t	results;
	} channel_info;

	hfa384x_InfFrame_t      *scanresults;


        prism2sta_authlist_t	authlist;     /* Authenticated station list. */
	UINT			accessmode;   /* Access mode. */
        prism2sta_accesslist_t	allow;        /* Allowed station list. */
        prism2sta_accesslist_t	deny;         /* Denied station list. */

} hfa384x_t;

/*=============================================================*/
/*--- Function Declarations -----------------------------------*/
/*=============================================================*/
#if (WLAN_HOSTIF == WLAN_USB)
void
hfa384x_create(
	hfa384x_t *hw,
	struct usb_device *usb);
#else
void
hfa384x_create(
	hfa384x_t *hw,
	UINT irq,
	UINT32 iobase,
	UINT8 __iomem *membase);
#endif

void hfa384x_destroy(hfa384x_t *hw);

irqreturn_t
hfa384x_interrupt(int irq, void *dev_id PT_REGS);
int
hfa384x_corereset( hfa384x_t *hw, int holdtime, int settletime, int genesis);
int
hfa384x_drvr_chinforesults( hfa384x_t *hw);
int
hfa384x_drvr_commtallies( hfa384x_t *hw);
int
hfa384x_drvr_disable(hfa384x_t *hw, UINT16 macport);
int
hfa384x_drvr_enable(hfa384x_t *hw, UINT16 macport);
int
hfa384x_drvr_flashdl_enable(hfa384x_t *hw);
int
hfa384x_drvr_flashdl_disable(hfa384x_t *hw);
int
hfa384x_drvr_flashdl_write(hfa384x_t *hw, UINT32 daddr, void* buf, UINT32 len);
int
hfa384x_drvr_getconfig(hfa384x_t *hw, UINT16 rid, void *buf, UINT16 len);
int
hfa384x_drvr_handover( hfa384x_t *hw, UINT8 *addr);
int
hfa384x_drvr_hostscanresults( hfa384x_t *hw);
int
hfa384x_drvr_low_level(hfa384x_t *hw, hfa384x_metacmd_t *cmd);
int
hfa384x_drvr_mmi_read(hfa384x_t *hw, UINT32 address, UINT32 *result);
int
hfa384x_drvr_mmi_write(hfa384x_t *hw, UINT32 address, UINT32 data);
int
hfa384x_drvr_ramdl_enable(hfa384x_t *hw, UINT32 exeaddr);
int
hfa384x_drvr_ramdl_disable(hfa384x_t *hw);
int
hfa384x_drvr_ramdl_write(hfa384x_t *hw, UINT32 daddr, void* buf, UINT32 len);
int
hfa384x_drvr_readpda(hfa384x_t *hw, void *buf, UINT len);
int
hfa384x_drvr_scanresults( hfa384x_t *hw);

int
hfa384x_drvr_setconfig(hfa384x_t *hw, UINT16 rid, void *buf, UINT16 len);

static inline int
hfa384x_drvr_getconfig16(hfa384x_t *hw, UINT16 rid, void *val)
{
	int		result = 0;
	result = hfa384x_drvr_getconfig(hw, rid, val, sizeof(UINT16));
	if ( result == 0 ) {
		*((UINT16*)val) = hfa384x2host_16(*((UINT16*)val));
	}
	return result;
}

static inline int
hfa384x_drvr_getconfig32(hfa384x_t *hw, UINT16 rid, void *val)
{
	int		result = 0;

	result = hfa384x_drvr_getconfig(hw, rid, val, sizeof(UINT32));
	if ( result == 0 ) {
		*((UINT32*)val) = hfa384x2host_32(*((UINT32*)val));
	}

	return result;
}

static inline int
hfa384x_drvr_setconfig16(hfa384x_t *hw, UINT16 rid, UINT16 val)
{
	UINT16 value = host2hfa384x_16(val);
	return hfa384x_drvr_setconfig(hw, rid, &value, sizeof(value));
}

static inline int
hfa384x_drvr_setconfig32(hfa384x_t *hw, UINT16 rid, UINT32 val)
{
	UINT32 value = host2hfa384x_32(val);
	return hfa384x_drvr_setconfig(hw, rid, &value, sizeof(value));
}

#if (WLAN_HOSTIF == WLAN_USB)
int
hfa384x_drvr_getconfig_async(hfa384x_t     *hw,
                              UINT16        rid,
                              ctlx_usercb_t usercb,
                              void          *usercb_data);

int
hfa384x_drvr_setconfig_async(hfa384x_t *hw,
                              UINT16 rid,
                              void *buf,
                              UINT16 len,
                              ctlx_usercb_t usercb,
                              void *usercb_data);
#else
static inline int
hfa384x_drvr_setconfig_async(hfa384x_t *hw, UINT16 rid, void *buf, UINT16 len,
			     void *ptr1, void *ptr2)
{
         (void)ptr1;
         (void)ptr2;
         return hfa384x_drvr_setconfig(hw, rid, buf, len);
}
#endif

static inline int
hfa384x_drvr_setconfig16_async(hfa384x_t *hw, UINT16 rid, UINT16 val)
{
	UINT16 value = host2hfa384x_16(val);
	return hfa384x_drvr_setconfig_async(hw, rid, &value, sizeof(value),
					    NULL , NULL);
}

static inline int
hfa384x_drvr_setconfig32_async(hfa384x_t *hw, UINT16 rid, UINT32 val)
{
	UINT32 value = host2hfa384x_32(val);
	return hfa384x_drvr_setconfig_async(hw, rid, &value, sizeof(value),
					    NULL , NULL);
}


int
hfa384x_drvr_start(hfa384x_t *hw);
int
hfa384x_drvr_stop(hfa384x_t *hw);
int
hfa384x_drvr_txframe(hfa384x_t *hw, struct sk_buff *skb, p80211_hdr_t *p80211_hdr, p80211_metawep_t *p80211_wep);
void
hfa384x_tx_timeout(wlandevice_t *wlandev);

int
hfa384x_cmd_initialize(hfa384x_t *hw);
int
hfa384x_cmd_enable(hfa384x_t *hw, UINT16 macport);
int
hfa384x_cmd_disable(hfa384x_t *hw, UINT16 macport);
int
hfa384x_cmd_diagnose(hfa384x_t *hw);
int
hfa384x_cmd_allocate(hfa384x_t *hw, UINT16 len);
int
hfa384x_cmd_transmit(hfa384x_t *hw, UINT16 reclaim, UINT16 qos, UINT16 fid);
int
hfa384x_cmd_clearpersist(hfa384x_t *hw, UINT16 fid);
int
hfa384x_cmd_notify(hfa384x_t *hw, UINT16 reclaim, UINT16 fid, void *buf, UINT16 len);
int
hfa384x_cmd_inquire(hfa384x_t *hw, UINT16 fid);
int
hfa384x_cmd_access(hfa384x_t *hw, UINT16 write, UINT16 rid, void *buf, UINT16 len);
int
hfa384x_cmd_monitor(hfa384x_t *hw, UINT16 enable);
int
hfa384x_cmd_download(
	hfa384x_t *hw,
	UINT16 mode,
	UINT16 lowaddr,
	UINT16 highaddr,
	UINT16 codelen);
int
hfa384x_cmd_aux_enable(hfa384x_t *hw, int force);
int
hfa384x_cmd_aux_disable(hfa384x_t *hw);
int
hfa384x_copy_from_bap(
	hfa384x_t *hw,
	UINT16	bap,
	UINT16	id,
	UINT16	offset,
	void	*buf,
	UINT	len);
int
hfa384x_copy_to_bap(
	hfa384x_t *hw,
	UINT16	bap,
	UINT16	id,
	UINT16	offset,
	void	*buf,
	UINT	len);
void
hfa384x_copy_from_aux(
	hfa384x_t *hw,
	UINT32	cardaddr,
	UINT32	auxctl,
	void	*buf,
	UINT	len);
void
hfa384x_copy_to_aux(
	hfa384x_t *hw,
	UINT32	cardaddr,
	UINT32	auxctl,
	void	*buf,
	UINT	len);

#if (WLAN_HOSTIF != WLAN_USB)

/*
   HFA384x is a LITTLE ENDIAN part.

   the get/setreg functions implicitly byte-swap the data to LE.
   the _noswap variants do not perform a byte-swap on the data.
*/

static inline UINT16
__hfa384x_getreg(hfa384x_t *hw, UINT reg);

static inline void
__hfa384x_setreg(hfa384x_t *hw, UINT16 val, UINT reg);

static inline UINT16
__hfa384x_getreg_noswap(hfa384x_t *hw, UINT reg);

static inline void
__hfa384x_setreg_noswap(hfa384x_t *hw, UINT16 val, UINT reg);

#ifdef REVERSE_ENDIAN
#define hfa384x_getreg __hfa384x_getreg_noswap
#define hfa384x_setreg __hfa384x_setreg_noswap
#define hfa384x_getreg_noswap __hfa384x_getreg
#define hfa384x_setreg_noswap __hfa384x_setreg
#else
#define hfa384x_getreg __hfa384x_getreg
#define hfa384x_setreg __hfa384x_setreg
#define hfa384x_getreg_noswap __hfa384x_getreg_noswap
#define hfa384x_setreg_noswap __hfa384x_setreg_noswap
#endif

/*----------------------------------------------------------------
* hfa384x_getreg
*
* Retrieve the value of one of the MAC registers.  Done here
* because different PRISM2 MAC parts use different buses and such.
* NOTE: This function returns the value in HOST ORDER!!!!!!
*
* Arguments:
*       hw         MAC part structure
*       reg        Register identifier (offset for I/O based i/f)
*
* Returns:
*       Value from the register in HOST ORDER!!!!
----------------------------------------------------------------*/
static inline UINT16
__hfa384x_getreg(hfa384x_t *hw, UINT reg)
{
/*	printk(KERN_DEBUG "Reading from 0x%0x\n", hw->membase + reg); */
#if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX))
	return wlan_inw_le16_to_cpu(hw->iobase+reg);
#elif (WLAN_HOSTIF == WLAN_PCI)
	return __le16_to_cpu(readw(hw->membase + reg));
#endif
}

/*----------------------------------------------------------------
* hfa384x_setreg
*
* Set the value of one of the MAC registers.  Done here
* because different PRISM2 MAC parts use different buses and such.
* NOTE: This function assumes the value is in HOST ORDER!!!!!!
*
* Arguments:
*       hw	MAC part structure
*	val	Value, in HOST ORDER!!, to put in the register
*       reg	Register identifier (offset for I/O based i/f)
*
* Returns:
*       Nothing
----------------------------------------------------------------*/
static inline void
__hfa384x_setreg(hfa384x_t *hw, UINT16 val, UINT reg)
{
#if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX))
	wlan_outw_cpu_to_le16( val, hw->iobase + reg);
	return;
#elif (WLAN_HOSTIF == WLAN_PCI)
	writew(__cpu_to_le16(val), hw->membase + reg);
	return;
#endif
}


/*----------------------------------------------------------------
* hfa384x_getreg_noswap
*
* Retrieve the value of one of the MAC registers.  Done here
* because different PRISM2 MAC parts use different buses and such.
*
* Arguments:
*       hw         MAC part structure
*       reg        Register identifier (offset for I/O based i/f)
*
* Returns:
*       Value from the register.
----------------------------------------------------------------*/
static inline UINT16
__hfa384x_getreg_noswap(hfa384x_t *hw, UINT reg)
{
#if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX))
	return wlan_inw(hw->iobase+reg);
#elif (WLAN_HOSTIF == WLAN_PCI)
	return readw(hw->membase + reg);
#endif
}


/*----------------------------------------------------------------
* hfa384x_setreg_noswap
*
* Set the value of one of the MAC registers.  Done here
* because different PRISM2 MAC parts use different buses and such.
*
* Arguments:
*       hw	MAC part structure
*	val	Value to put in the register
*       reg	Register identifier (offset for I/O based i/f)
*
* Returns:
*       Nothing
----------------------------------------------------------------*/
static inline void
__hfa384x_setreg_noswap(hfa384x_t *hw, UINT16 val, UINT reg)
{
#if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX))
	wlan_outw( val, hw->iobase + reg);
	return;
#elif (WLAN_HOSTIF == WLAN_PCI)
	writew(val, hw->membase + reg);
	return;
#endif
}


static inline void hfa384x_events_all(hfa384x_t *hw)
{
	hfa384x_setreg(hw,
		       HFA384x_INT_NORMAL
#ifdef CMD_IRQ
		       | HFA384x_INTEN_CMD_SET(1)
#endif
		       ,
		       HFA384x_INTEN);

}

static inline void hfa384x_events_nobap(hfa384x_t *hw)
{
	hfa384x_setreg(hw,
		        (HFA384x_INT_NORMAL & ~HFA384x_INT_BAP_OP)
#ifdef CMD_IRQ
		       | HFA384x_INTEN_CMD_SET(1)
#endif
		       ,
		       HFA384x_INTEN);

}

#endif /* WLAN_HOSTIF != WLAN_USB */
#endif /* __KERNEL__ */

#endif  /* _HFA384x_H */
