xref: /illumos-gate/usr/src/uts/common/io/mwl/mwl_reg.h (revision d8d81063)
1*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
2*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
3*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Use is subject to license terms.
4*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
5*d8d81063Sfei feng - Sun Microsystems - Beijing China 
6*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
7*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Copyright (c) 2007-2009 Sam Leffler, Errno Consulting
8*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Copyright (c) 2007-2009 Marvell Semiconductor, Inc.
9*d8d81063Sfei feng - Sun Microsystems - Beijing China  * All rights reserved.
10*d8d81063Sfei feng - Sun Microsystems - Beijing China  *
11*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Redistribution and use in source and binary forms, with or without
12*d8d81063Sfei feng - Sun Microsystems - Beijing China  * modification, are permitted provided that the following conditions
13*d8d81063Sfei feng - Sun Microsystems - Beijing China  * are met:
14*d8d81063Sfei feng - Sun Microsystems - Beijing China  * 1. Redistributions of source code must retain the above copyright
15*d8d81063Sfei feng - Sun Microsystems - Beijing China  *    notice, this list of conditions and the following disclaimer,
16*d8d81063Sfei feng - Sun Microsystems - Beijing China  *    without modification.
17*d8d81063Sfei feng - Sun Microsystems - Beijing China  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18*d8d81063Sfei feng - Sun Microsystems - Beijing China  *    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
19*d8d81063Sfei feng - Sun Microsystems - Beijing China  *    redistribution must be conditioned upon including a substantially
20*d8d81063Sfei feng - Sun Microsystems - Beijing China  *    similar Disclaimer requirement for further binary redistribution.
21*d8d81063Sfei feng - Sun Microsystems - Beijing China  *
22*d8d81063Sfei feng - Sun Microsystems - Beijing China  * NO WARRANTY
23*d8d81063Sfei feng - Sun Microsystems - Beijing China  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24*d8d81063Sfei feng - Sun Microsystems - Beijing China  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25*d8d81063Sfei feng - Sun Microsystems - Beijing China  * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
26*d8d81063Sfei feng - Sun Microsystems - Beijing China  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
27*d8d81063Sfei feng - Sun Microsystems - Beijing China  * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
28*d8d81063Sfei feng - Sun Microsystems - Beijing China  * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29*d8d81063Sfei feng - Sun Microsystems - Beijing China  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30*d8d81063Sfei feng - Sun Microsystems - Beijing China  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
31*d8d81063Sfei feng - Sun Microsystems - Beijing China  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32*d8d81063Sfei feng - Sun Microsystems - Beijing China  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
33*d8d81063Sfei feng - Sun Microsystems - Beijing China  * THE POSSIBILITY OF SUCH DAMAGES.
34*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
35*d8d81063Sfei feng - Sun Microsystems - Beijing China 
36*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
37*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Definitions for the Marvell Wireless LAN controller Hardware Access Layer.
38*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
39*d8d81063Sfei feng - Sun Microsystems - Beijing China 
40*d8d81063Sfei feng - Sun Microsystems - Beijing China #ifndef _MWL_REG_H
41*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	_MWL_REG_H
42*d8d81063Sfei feng - Sun Microsystems - Beijing China 
43*d8d81063Sfei feng - Sun Microsystems - Beijing China #ifdef __cplusplus
44*d8d81063Sfei feng - Sun Microsystems - Beijing China extern "C" {
45*d8d81063Sfei feng - Sun Microsystems - Beijing China #endif
46*d8d81063Sfei feng - Sun Microsystems - Beijing China 
47*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MWL_MBSS_SUPPORT		/* enable multi-bss support */
48*d8d81063Sfei feng - Sun Microsystems - Beijing China 
49*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
50*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Host/Firmware Interface definitions.
51*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
52*d8d81063Sfei feng - Sun Microsystems - Beijing China 
53*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
54*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Define total number of TX queues in the shared memory.
55*d8d81063Sfei feng - Sun Microsystems - Beijing China  * This count includes the EDCA queues, Block Ack queues, and HCCA queues
56*d8d81063Sfei feng - Sun Microsystems - Beijing China  * In addition to this, there could be a management packet queue some
57*d8d81063Sfei feng - Sun Microsystems - Beijing China  * time in the future
58*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
59*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	NUM_EDCA_QUEUES		4
60*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	NUM_HCCA_QUEUES		0
61*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	NUM_BA_QUEUES		0
62*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	NUM_MGMT_QUEUES		0
63*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	NUM_ACK_EVENT_QUEUE	1
64*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	TOTAL_TX_QUEUES		\
65*d8d81063Sfei feng - Sun Microsystems - Beijing China 	(NUM_EDCA_QUEUES +	\
66*d8d81063Sfei feng - Sun Microsystems - Beijing China 	NUM_HCCA_QUEUES +	\
67*d8d81063Sfei feng - Sun Microsystems - Beijing China 	NUM_BA_QUEUES +		\
68*d8d81063Sfei feng - Sun Microsystems - Beijing China 	NUM_MGMT_QUEUES +	\
69*d8d81063Sfei feng - Sun Microsystems - Beijing China 	NUM_ACK_EVENT_QUEUE)
70*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MAX_TXWCB_QUEUES	TOTAL_TX_QUEUES - NUM_ACK_EVENT_QUEUE
71*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MAX_RXWCB_QUEUES	1
72*d8d81063Sfei feng - Sun Microsystems - Beijing China 
73*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
74*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Firmware download support.
75*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
76*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	FW_DOWNLOAD_BLOCK_SIZE	256
77*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	FW_CHECK_USECS		(5*1000) /* 5ms */
78*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	FW_MAX_NUM_CHECKS	200
79*d8d81063Sfei feng - Sun Microsystems - Beijing China 
80*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MWL_ANT_INFO_SUPPORT /* per-antenna data in rx descriptor */
81*d8d81063Sfei feng - Sun Microsystems - Beijing China 
82*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_REG_TSF_LOW	0xa600 /* TSF lo */
83*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_REG_TSF_HIGH	0xa604 /* TSF hi */
84*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_REG_CHIP_REV	0xa814 /* chip rev */
85*d8d81063Sfei feng - Sun Microsystems - Beijing China 
86*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
87*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Map to 0x80000000 (Bus control) on BAR0
88*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
89*d8d81063Sfei feng - Sun Microsystems - Beijing China /* From host to ARM */
90*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_REG_H2A_INTERRUPT_EVENTS		0x00000C18
91*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_REG_H2A_INTERRUPT_CAUSE		0x00000C1C
92*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_REG_H2A_INTERRUPT_MASK		0x00000C20
93*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_REG_H2A_INTERRUPT_CLEAR_SEL	0x00000C24
94*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_REG_H2A_INTERRUPT_STATUS_MASK	0x00000C28
95*d8d81063Sfei feng - Sun Microsystems - Beijing China /* From ARM to host */
96*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_REG_A2H_INTERRUPT_EVENTS		0x00000C2C
97*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_REG_A2H_INTERRUPT_CAUSE		0x00000C30
98*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_REG_A2H_INTERRUPT_MASK		0x00000C34
99*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_REG_A2H_INTERRUPT_CLEAR_SEL	0x00000C38
100*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_REG_A2H_INTERRUPT_STATUS_MASK	0x00000C3C
101*d8d81063Sfei feng - Sun Microsystems - Beijing China 
102*d8d81063Sfei feng - Sun Microsystems - Beijing China 
103*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Map to 0x80000000 on BAR1 */
104*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_REG_GEN_PTR		0x00000C10
105*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_REG_INT_CODE		0x00000C14
106*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_REG_SCRATCH		0x00000C40
107*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_REG_FW_PRESENT		0x0000BFFC
108*d8d81063Sfei feng - Sun Microsystems - Beijing China 
109*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_REG_PROMISCUOUS		0xA300
110*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Bit definitio for MACREG_REG_A2H_INTERRUPT_CAUSE (A2HRIC) */
111*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_A2HRIC_BIT_TX_DONE	0x00000001 /* bit 0 */
112*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_A2HRIC_BIT_RX_RDY	0x00000002 /* bit 1 */
113*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_A2HRIC_BIT_OPC_DONE	0x00000004 /* bit 2 */
114*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_A2HRIC_BIT_MAC_EVENT	0x00000008 /* bit 3 */
115*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_A2HRIC_BIT_RX_PROBLEM	0x00000010 /* bit 4 */
116*d8d81063Sfei feng - Sun Microsystems - Beijing China 
117*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_A2HRIC_BIT_RADIO_OFF	0x00000020 /* bit 5 */
118*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_A2HRIC_BIT_RADIO_ON	0x00000040 /* bit 6 */
119*d8d81063Sfei feng - Sun Microsystems - Beijing China 
120*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_A2HRIC_BIT_RADAR_DETECT	0x00000080 /* bit 7 */
121*d8d81063Sfei feng - Sun Microsystems - Beijing China 
122*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_A2HRIC_BIT_ICV_ERROR	0x00000100 /* bit 8 */
123*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_A2HRIC_BIT_MIC_ERROR	0x00000200 /* bit 9 */
124*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_A2HRIC_BIT_QUEUE_EMPTY	0x00004000
125*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_A2HRIC_BIT_QUEUE_FULL	0x00000800
126*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_A2HRIC_BIT_CHAN_SWITCH	0x00001000
127*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_A2HRIC_BIT_TX_WATCHDOG	0x00002000
128*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_A2HRIC_BIT_BA_WATCHDOG	0x00000400
129*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREQ_A2HRIC_BIT_TX_ACK	0x00008000
130*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	ISR_SRC_BITS	((MACREG_A2HRIC_BIT_RX_RDY)	| \
131*d8d81063Sfei feng - Sun Microsystems - Beijing China 			(MACREG_A2HRIC_BIT_TX_DONE)	| \
132*d8d81063Sfei feng - Sun Microsystems - Beijing China 			(MACREG_A2HRIC_BIT_OPC_DONE)	| \
133*d8d81063Sfei feng - Sun Microsystems - Beijing China 			(MACREG_A2HRIC_BIT_MAC_EVENT)	| \
134*d8d81063Sfei feng - Sun Microsystems - Beijing China 			(MACREG_A2HRIC_BIT_MIC_ERROR)	| \
135*d8d81063Sfei feng - Sun Microsystems - Beijing China 			(MACREG_A2HRIC_BIT_ICV_ERROR)	| \
136*d8d81063Sfei feng - Sun Microsystems - Beijing China 			(MACREG_A2HRIC_BIT_RADAR_DETECT)| \
137*d8d81063Sfei feng - Sun Microsystems - Beijing China 			(MACREG_A2HRIC_BIT_CHAN_SWITCH)	| \
138*d8d81063Sfei feng - Sun Microsystems - Beijing China 			(MACREG_A2HRIC_BIT_TX_WATCHDOG)	| \
139*d8d81063Sfei feng - Sun Microsystems - Beijing China 			(MACREG_A2HRIC_BIT_QUEUE_EMPTY)	| \
140*d8d81063Sfei feng - Sun Microsystems - Beijing China 			(MACREG_A2HRIC_BIT_BA_WATCHDOG)	| \
141*d8d81063Sfei feng - Sun Microsystems - Beijing China 			(MACREQ_A2HRIC_BIT_TX_ACK))
142*d8d81063Sfei feng - Sun Microsystems - Beijing China 
143*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_A2HRIC_BIT_MASK	ISR_SRC_BITS
144*d8d81063Sfei feng - Sun Microsystems - Beijing China 
145*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Bit definitio for MACREG_REG_H2A_INTERRUPT_CAUSE (H2ARIC) */
146*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_H2ARIC_BIT_PPA_READY	0x00000001 /* bit 0 */
147*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_H2ARIC_BIT_DOOR_BELL	0x00000002 /* bit 1 */
148*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	ISR_RESET			(1<<15)
149*d8d81063Sfei feng - Sun Microsystems - Beijing China 
150*d8d81063Sfei feng - Sun Microsystems - Beijing China /* INT code register event definition */
151*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MACREG_INT_CODE_CMD_FINISHED	0x00000005
152*d8d81063Sfei feng - Sun Microsystems - Beijing China 
153*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
154*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Define OpMode for SoftAP/Station mode
155*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
156*d8d81063Sfei feng - Sun Microsystems - Beijing China 
157*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
158*d8d81063Sfei feng - Sun Microsystems - Beijing China  * The following mode signature has to be written to PCI scratch register#0
159*d8d81063Sfei feng - Sun Microsystems - Beijing China  * right after successfully downloading the last block of firmware and
160*d8d81063Sfei feng - Sun Microsystems - Beijing China  * before waiting for firmware ready signature
161*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
162*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_STA_MODE		0x5A
163*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_SOFTAP_MODE		0xA5
164*d8d81063Sfei feng - Sun Microsystems - Beijing China 
165*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_STA_FWRDY_SIGNATURE	0xF0F1F2F4
166*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_SOFTAP_FWRDY_SIGNATURE	0xF1F2F4A5
167*d8d81063Sfei feng - Sun Microsystems - Beijing China 
168*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_CODE_DNLD			0x0001
169*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_GET_HW_SPEC			0x0003
170*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_HW_SPEC			0x0004
171*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_MAC_MULTICAST_ADR		0x0010
172*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_802_11_GET_STAT		0x0014
173*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_MAC_REG_ACCESS		0x0019
174*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_BBP_REG_ACCESS		0x001a
175*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_RF_REG_ACCESS		0x001b
176*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_802_11_RADIO_CONTROL	0x001c
177*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_802_11_RF_TX_POWER		0x001e
178*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_802_11_RF_ANTENNA		0x0020
179*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_BEACON			0x0100
180*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_AID			0x010d
181*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_RF_CHANNEL		0x010a
182*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_INFRA_MODE		0x010e
183*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_G_PROTECT_FLAG		0x010f
184*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_802_11_RTS_THSD		0x0113
185*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_802_11_SET_SLOT		0x0114
186*d8d81063Sfei feng - Sun Microsystems - Beijing China 
187*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_802_11H_DETECT_RADAR	0x0120
188*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_WMM_MODE		0x0123
189*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_HT_GUARD_INTERVAL		0x0124
190*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_FIXED_RATE		0x0126
191*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_LINKADAPT_CS_MODE	0x0129
192*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_MAC_ADDR		0x0202
193*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_RATE_ADAPT_MODE		0x0203
194*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_GET_WATCHDOG_BITMAP		0x0205
195*d8d81063Sfei feng - Sun Microsystems - Beijing China 
196*d8d81063Sfei feng - Sun Microsystems - Beijing China /* SoftAP command code */
197*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_BSS_START			0x1100
198*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_NEW_STN			0x1111
199*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_KEEP_ALIVE		0x1112
200*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_APMODE			0x1114
201*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_SWITCH_CHANNEL		0x1121
202*d8d81063Sfei feng - Sun Microsystems - Beijing China 
203*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
204*d8d81063Sfei feng - Sun Microsystems - Beijing China  * @HWENCR@
205*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Command to update firmware encryption keys.
206*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
207*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_UPDATE_ENCRYPTION		0x1122
208*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
209*d8d81063Sfei feng - Sun Microsystems - Beijing China  * @11E-BA@
210*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Command to create/destroy block ACK
211*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
212*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_BASTREAM			0x1125
213*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_RIFS			0x1126
214*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_N_PROTECT_FLAG		0x1131
215*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_N_PROTECT_OPMODE	0x1132
216*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_OPTIMIZATION_LEVEL	0x1133
217*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_GET_CALTABLE		0x1134
218*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_MIMOPSHT		0x1135
219*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_GET_BEACON			0x1138
220*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_REGION_CODE		0x1139
221*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_POWERSAVESTATION	0x1140
222*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_TIM			0x1141
223*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_GET_TIM			0x1142
224*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_GET_SEQNO			0x1143
225*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_DWDS_ENABLE			0x1144
226*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_AMPDU_RETRY_RATEDROP_MODE	0x1145
227*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_CFEND_ENABLE		0x1146
228*d8d81063Sfei feng - Sun Microsystems - Beijing China 
229*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
230*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Define general result code for each command
231*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
232*d8d81063Sfei feng - Sun Microsystems - Beijing China /* RESULT OK */
233*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_RESULT_OK		0x0000
234*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Genenral error */
235*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_RESULT_ERROR		0x0001
236*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Command is not valid */
237*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_RESULT_NOT_SUPPORT	0x0002
238*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Command is pending (will be processed) */
239*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_RESULT_PENDING		0x0003
240*d8d81063Sfei feng - Sun Microsystems - Beijing China /* System is busy (command ignored) */
241*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_RESULT_BUSY		0x0004
242*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Data buffer is not big enough */
243*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_RESULT_PARTIAL_DATA	0x0005
244*d8d81063Sfei feng - Sun Microsystems - Beijing China 
245*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_CMD_SET_EDCA_PARAMS	0x0115
246*d8d81063Sfei feng - Sun Microsystems - Beijing China 
247*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
248*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Definition of action or option for each command
249*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
250*d8d81063Sfei feng - Sun Microsystems - Beijing China 
251*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
252*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Define general purpose action
253*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
254*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_ACT_GEN_READ	0x0000
255*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_ACT_GEN_WRITE	0x0001
256*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_ACT_GEN_GET	0x0000
257*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_ACT_GEN_SET	0x0001
258*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_ACT_GEN_OFF	0x0000
259*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_ACT_GEN_ON	0x0001
260*d8d81063Sfei feng - Sun Microsystems - Beijing China 
261*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_ACT_DIFF_CHANNEL	0x0002
262*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_ACT_GEN_SET_LIST	0x0002
263*d8d81063Sfei feng - Sun Microsystems - Beijing China 
264*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Define action or option for HostCmd_FW_USE_FIXED_RATE */
265*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_ACT_USE_FIXED_RATE	0x0001
266*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_ACT_NOT_USE_FIXED_RATE	0x0002
267*d8d81063Sfei feng - Sun Microsystems - Beijing China 
268*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Define action or option for HostCmd_CMD_802_11_SET_WEP */
269*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_ACT_ADD		0x0002
270*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_ACT_REMOVE	0x0004
271*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HostCmd_ACT_USE_DEFAULT	0x0008
272*d8d81063Sfei feng - Sun Microsystems - Beijing China 
273*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
274*d8d81063Sfei feng - Sun Microsystems - Beijing China  * PUBLIC DEFINITIONS
275*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
276*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	RATE_INDEX_MAX_ARRAY	14
277*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	WOW_MAX_STATION		32
278*d8d81063Sfei feng - Sun Microsystems - Beijing China 
279*d8d81063Sfei feng - Sun Microsystems - Beijing China 
280*d8d81063Sfei feng - Sun Microsystems - Beijing China #pragma pack(1)
281*d8d81063Sfei feng - Sun Microsystems - Beijing China 
282*d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_ant_info {
283*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		rssi_a;	/* RSSI for antenna A */
284*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		rssi_b;	/* RSSI for antenna B */
285*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		rssi_c;	/* RSSI for antenna C */
286*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		rsvd1;	/* Reserved */
287*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		nf_a;	/* Noise floor for antenna A */
288*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		nf_b;	/* Noise floor for antenna B */
289*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		nf_c;	/* Noise floor for antenna C */
290*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		rsvd2;	/* Reserved */
291*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		nf;	/* Noise floor */
292*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		rsvd3[3]; /* Reserved - To make word aligned */
293*d8d81063Sfei feng - Sun Microsystems - Beijing China };
294*d8d81063Sfei feng - Sun Microsystems - Beijing China 
295*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
296*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Hardware tx/rx descriptors.
297*d8d81063Sfei feng - Sun Microsystems - Beijing China  *
298*d8d81063Sfei feng - Sun Microsystems - Beijing China  * NB: tx descriptor size must match f/w expected size
299*d8d81063Sfei feng - Sun Microsystems - Beijing China  * because f/w prefetch's the next descriptor linearly
300*d8d81063Sfei feng - Sun Microsystems - Beijing China  * and doesn't chase the next pointer.
301*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
302*d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_txdesc {
303*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	Status;
304*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_STATUS_IDLE		0x00000000
305*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_STATUS_USED		0x00000001
306*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_STATUS_OK		0x00000001
307*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_STATUS_OK_RETRY	0x00000002
308*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_STATUS_OK_MORE_RETRY	0x00000004
309*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_STATUS_MULTICAST_TX	0x00000008
310*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_STATUS_BROADCAST_TX	0x00000010
311*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_STATUS_FAILED_LINK_ERROR		0x00000020
312*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_STATUS_FAILED_EXCEED_LIMIT		0x00000040
313*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_STATUS_FAILED_XRETRY	EAGLE_TXD_STATUS_FAILED_EXCEED_LIMIT
314*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_STATUS_FAILED_AGING	0x00000080
315*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_STATUS_FW_OWNED	0x80000000
316*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		DataRate;
317*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		TxPriority;
318*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	QosCtrl;
319*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	PktPtr;
320*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	PktLen;
321*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		DestAddr[6];
322*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	pPhysNext;
323*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	SapPktInfo;
324*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_MODE_BONLY	1
325*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_MODE_GONLY	2
326*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_MODE_BG	3
327*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_MODE_NONLY	4
328*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_MODE_BN	5
329*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_MODE_GN	6
330*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_MODE_BGN	7
331*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_MODE_AONLY	8
332*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_MODE_AG	10
333*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_MODE_AN	12
334*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	Format;
335*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_FORMAT	0x0001	/* frame format/rate */
336*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_FORMAT_LEGACY	0x0000	/* legacy rate frame */
337*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_FORMAT_HT	0x0001	/* HT rate frame */
338*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_GI		0x0002	/* guard interval */
339*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_GI_SHORT	0x0002	/* short guard interval */
340*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_GI_LONG	0x0000	/* long guard interval */
341*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_CHW		0x0004	/* channel width */
342*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_CHW_20	0x0000	/* 20MHz channel width */
343*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_CHW_40	0x0004	/* 40MHz channel width */
344*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_RATE		0x01f8	/* tx rate (legacy)/ MCS */
345*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_RATE_S	3
346*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_ADV		0x0600	/* advanced coding */
347*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_ADV_S		9
348*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_ADV_NONE	0x0000
349*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_ADV_LDPC	0x0200
350*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_ADV_RS	0x0400
351*d8d81063Sfei feng - Sun Microsystems - Beijing China /* NB: 3 is reserved */
352*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_ANTENNA	0x1800	/* antenna select */
353*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_ANTENNA_S	11
354*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_EXTCHAN	0x6000	/* extension channel */
355*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_EXTCHAN_S	13
356*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_EXTCHAN_HI	0x0000	/* above */
357*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_EXTCHAN_LO	0x2000	/* below */
358*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_PREAMBLE	0x8000
359*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_PREAMBLE_SHORT 0x8000	/* short preamble */
360*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_PREAMBLE_LONG 0x0000	/* long preamble */
361*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	pad;		/* align to 4-byte boundary */
362*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_FIXED_RATE	0x0100	/* get tx rate from Format */
363*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_TXD_DONT_AGGR	0x0200	/* don't aggregate frame */
364*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	ack_wcb_addr;
365*d8d81063Sfei feng - Sun Microsystems - Beijing China };
366*d8d81063Sfei feng - Sun Microsystems - Beijing China 
367*d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_rxdesc {
368*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* control element */
369*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		RxControl;
370*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_RXD_CTRL_DRIVER_OWN	0x00
371*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_RXD_CTRL_OS_OWN		0x04
372*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_RXD_CTRL_DMA_OWN		0x80
373*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* received signal strengt indication */
374*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		RSSI;
375*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* status field w/ USED bit */
376*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		Status;
377*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_RXD_STATUS_IDLE		0x00
378*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_RXD_STATUS_OK		0x01
379*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_RXD_STATUS_MULTICAST_RX	0x02
380*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_RXD_STATUS_BROADCAST_RX	0x04
381*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_RXD_STATUS_FRAGMENT_RX	0x08
382*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_RXD_STATUS_GENERAL_DECRYPT_ERR	0xff
383*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_RXD_STATUS_DECRYPT_ERR_MASK	0x80
384*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_RXD_STATUS_TKIP_MIC_DECRYPT_ERR	0x02
385*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_RXD_STATUS_WEP_ICV_DECRYPT_ERR	0x04
386*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EAGLE_RXD_STATUS_TKIP_ICV_DECRYPT_ERR	0x08
387*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* channel # pkt received on */
388*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		Channel;
389*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* total length of received data */
390*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	PktLen;
391*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* not used */
392*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		SQ2;
393*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* received data rate */
394*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		Rate;
395*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* physical address of payload data */
396*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	pPhysBuffData;
397*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* physical address of next RX desc */
398*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	pPhysNext;
399*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* received QosCtrl field variable */
400*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	QosCtrl;
401*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* like name states */
402*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	HtSig2;
403*d8d81063Sfei feng - Sun Microsystems - Beijing China #ifdef MWL_ANT_INFO_SUPPORT
404*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* antenna info */
405*d8d81063Sfei feng - Sun Microsystems - Beijing China 	struct mwl_ant_info ai;
406*d8d81063Sfei feng - Sun Microsystems - Beijing China #endif
407*d8d81063Sfei feng - Sun Microsystems - Beijing China };
408*d8d81063Sfei feng - Sun Microsystems - Beijing China #pragma pack()
409*d8d81063Sfei feng - Sun Microsystems - Beijing China 
410*d8d81063Sfei feng - Sun Microsystems - Beijing China 
411*d8d81063Sfei feng - Sun Microsystems - Beijing China 
412*d8d81063Sfei feng - Sun Microsystems - Beijing China // =============================================================================
413*d8d81063Sfei feng - Sun Microsystems - Beijing China //			HOST COMMAND DEFINITIONS
414*d8d81063Sfei feng - Sun Microsystems - Beijing China // =============================================================================
415*d8d81063Sfei feng - Sun Microsystems - Beijing China 
416*d8d81063Sfei feng - Sun Microsystems - Beijing China //
417*d8d81063Sfei feng - Sun Microsystems - Beijing China // Definition of data structure for each command
418*d8d81063Sfei feng - Sun Microsystems - Beijing China //
419*d8d81063Sfei feng - Sun Microsystems - Beijing China // Define general data structure
420*d8d81063Sfei feng - Sun Microsystems - Beijing China #pragma pack(1)
421*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
422*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	Cmd;
423*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	Length;
424*d8d81063Sfei feng - Sun Microsystems - Beijing China #ifdef MWL_MBSS_SUPPORT
425*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		SeqNum;
426*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		MacId;
427*d8d81063Sfei feng - Sun Microsystems - Beijing China #else
428*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	SeqNum;
429*d8d81063Sfei feng - Sun Microsystems - Beijing China #endif
430*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	Result;
431*d8d81063Sfei feng - Sun Microsystems - Beijing China } FWCmdHdr;
432*d8d81063Sfei feng - Sun Microsystems - Beijing China 
433*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
434*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
435*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		annex;
436*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		index;
437*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		len;
438*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		Reserverd;
439*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	CAL_TBL_SIZE	160
440*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t	calTbl[CAL_TBL_SIZE];
441*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_FW_GET_CALTABLE;
442*d8d81063Sfei feng - Sun Microsystems - Beijing China 
443*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
444*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
445*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* version of the HW */
446*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		Version;
447*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* host interface */
448*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		HostIf;
449*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* Max. number of WCB FW can handle */
450*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	NumOfWCB;
451*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* MaxNbr of MC addresses FW can handle */
452*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	NumOfMCastAddr;
453*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* MAC address programmed in HW */
454*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		PermanentAddr[6];
455*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	RegionCode;
456*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* Number of antenna used */
457*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	NumberOfAntenna;
458*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* 4 byte of FW release number */
459*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	FWReleaseNumber;
460*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	WcbBase0;
461*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	RxPdWrPtr;
462*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	RxPdRdPtr;
463*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	ulFwAwakeCookie;
464*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	WcbBase1[3];
465*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_DS_GET_HW_SPEC;
466*d8d81063Sfei feng - Sun Microsystems - Beijing China 
467*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
468*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
469*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* HW revision */
470*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		Version;
471*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* Host interface */
472*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		HostIf;
473*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* Max. number of Multicast address FW can handle */
474*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	NumOfMCastAdr;
475*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* MAC address */
476*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		PermanentAddr[6];
477*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* Region Code */
478*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	RegionCode;
479*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* 4 byte of FW release number */
480*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	FWReleaseNumber;
481*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* Firmware awake cookie */
482*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	ulFwAwakeCookie;
483*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* Device capabilities (see above) */
484*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	DeviceCaps;
485*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* Rx shared memory queue */
486*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	RxPdWrPtr;
487*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* TX queues in WcbBase array */
488*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	NumTxQueues;
489*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* TX WCB Rings */
490*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	WcbBase[MAX_TXWCB_QUEUES];
491*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	Flags;
492*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	SET_HW_SPEC_DISABLEMBSS		0x08
493*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	SET_HW_SPEC_HOSTFORM_BEACON	0x10
494*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	SET_HW_SPEC_HOSTFORM_PROBERESP	0x20
495*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	SET_HW_SPEC_HOST_POWERSAVE	0x40
496*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	SET_HW_SPEC_HOSTENCRDECR_MGMT	0x80
497*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	TxWcbNumPerQueue;
498*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	TotalRxWcb;
499*d8d81063Sfei feng - Sun Microsystems - Beijing China }HostCmd_DS_SET_HW_SPEC;
500*d8d81063Sfei feng - Sun Microsystems - Beijing China 
501*d8d81063Sfei feng - Sun Microsystems - Beijing China // used for stand alone bssid sets/clears
502*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
503*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
504*d8d81063Sfei feng - Sun Microsystems - Beijing China #ifdef MWL_MBSS_SUPPORT
505*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	MacType;
506*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	WL_MAC_TYPE_PRIMARY_CLIENT	0
507*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	WL_MAC_TYPE_SECONDARY_CLIENT	1
508*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	WL_MAC_TYPE_PRIMARY_AP		2
509*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	WL_MAC_TYPE_SECONDARY_AP	3
510*d8d81063Sfei feng - Sun Microsystems - Beijing China #endif
511*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		MacAddr[6];
512*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_DS_SET_MAC,
513*d8d81063Sfei feng - Sun Microsystems - Beijing China 	HostCmd_FW_SET_BSSID,
514*d8d81063Sfei feng - Sun Microsystems - Beijing China 	HostCmd_FW_SET_MAC;
515*d8d81063Sfei feng - Sun Microsystems - Beijing China 
516*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
517*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	LegacyRateBitMap;
518*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	HTRateBitMap;
519*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	CapInfo;
520*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	HTCapabilitiesInfo;
521*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		MacHTParamInfo;
522*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		Rev;
523*d8d81063Sfei feng - Sun Microsystems - Beijing China 	struct {
524*d8d81063Sfei feng - Sun Microsystems - Beijing China 		uint8_t		ControlChan;
525*d8d81063Sfei feng - Sun Microsystems - Beijing China 		uint8_t		AddChan;
526*d8d81063Sfei feng - Sun Microsystems - Beijing China 		uint16_t	OpMode;
527*d8d81063Sfei feng - Sun Microsystems - Beijing China 		uint16_t	stbc;
528*d8d81063Sfei feng - Sun Microsystems - Beijing China 	} AddHtInfo;
529*d8d81063Sfei feng - Sun Microsystems - Beijing China } PeerInfo_t;
530*d8d81063Sfei feng - Sun Microsystems - Beijing China 
531*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
532*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
533*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	AID;
534*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		MacAddr[6];
535*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	StnId;
536*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	Action;
537*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	Reserved;
538*d8d81063Sfei feng - Sun Microsystems - Beijing China 	PeerInfo_t	PeerInfo;
539*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		Qosinfo;
540*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		isQosSta;
541*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	FwStaPtr;
542*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_FW_SET_NEW_STN;
543*d8d81063Sfei feng - Sun Microsystems - Beijing China 
544*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Define data structure for HostCmd_CMD_802_11_RF_ANTENNA */
545*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct _HostCmd_DS_802_11_RF_ANTENNA {
546*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
547*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	Action;
548*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* Number of antennas or 0xffff(diversity) */
549*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	AntennaMode;
550*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_DS_802_11_RF_ANTENNA;
551*d8d81063Sfei feng - Sun Microsystems - Beijing China 
552*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Define data structure for HostCmd_CMD_802_11_RADIO_CONTROL */
553*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
554*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
555*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	Action;
556*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/*
557*d8d81063Sfei feng - Sun Microsystems - Beijing China 	 *  @bit0: 1/0, on/off
558*d8d81063Sfei feng - Sun Microsystems - Beijing China 	 *  @bit1: 1/0, long/short
559*d8d81063Sfei feng - Sun Microsystems - Beijing China 	 *  @bit2: 1/0,auto/fix
560*d8d81063Sfei feng - Sun Microsystems - Beijing China 	 */
561*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	Control;
562*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	RadioOn;
563*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_DS_802_11_RADIO_CONTROL;
564*d8d81063Sfei feng - Sun Microsystems - Beijing China 
565*d8d81063Sfei feng - Sun Microsystems - Beijing China /* for HostCmd_CMD_SET_WMM_MODE */
566*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
567*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
568*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* 0->unset, 1->set */
569*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	Action;
570*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_FW_SetWMMMode;
571*d8d81063Sfei feng - Sun Microsystems - Beijing China 
572*d8d81063Sfei feng - Sun Microsystems - Beijing China /* bits 0-5 specify frequency band */
573*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	FREQ_BAND_2DOT4GHZ	0x0001
574*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	FREQ_BAND_4DOT9GHZ	0x0002	/* XXX not implemented */
575*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	FREQ_BAND_5GHZ		0x0004
576*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	FREQ_BAND_5DOT2GHZ	0x0008	/* XXX not implemented */
577*d8d81063Sfei feng - Sun Microsystems - Beijing China /* bits 6-10 specify channel width */
578*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	CH_AUTO_WIDTH		0x0000	/* XXX not used? */
579*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	CH_10_MHz_WIDTH		0x0040
580*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	CH_20_MHz_WIDTH		0x0080
581*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	CH_40_MHz_WIDTH		0x0100
582*d8d81063Sfei feng - Sun Microsystems - Beijing China /* bits 11-12 specify extension channel */
583*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EXT_CH_NONE		0x0000	/* no extension channel */
584*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EXT_CH_ABOVE_CTRL_CH	0x0800	/* extension channel above */
585*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EXT_CH_AUTO		0x1000	/* XXX not used? */
586*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	EXT_CH_BELOW_CTRL_CH	0x1800	/* extension channel below */
587*d8d81063Sfei feng - Sun Microsystems - Beijing China /* bits 13-31 are reserved */
588*d8d81063Sfei feng - Sun Microsystems - Beijing China 
589*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	FIXED_RATE_WITH_AUTO_RATE_DROP		0
590*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	FIXED_RATE_WITHOUT_AUTORATE_DROP	1
591*d8d81063Sfei feng - Sun Microsystems - Beijing China 
592*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	LEGACY_RATE_TYPE			0
593*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	HT_RATE_TYPE				1
594*d8d81063Sfei feng - Sun Microsystems - Beijing China 
595*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	RETRY_COUNT_VALID			0
596*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	RETRY_COUNT_INVALID			1
597*d8d81063Sfei feng - Sun Microsystems - Beijing China 
598*d8d81063Sfei feng - Sun Microsystems - Beijing China // Define data structure for HostCmd_CMD_802_11_RF_CHANNEL
599*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
600*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
601*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	Action;
602*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		CurrentChannel;	/* channel # */
603*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	ChannelFlags;	/* see below */
604*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_FW_SET_RF_CHANNEL;
605*d8d81063Sfei feng - Sun Microsystems - Beijing China 
606*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	TX_POWER_LEVEL_TOTAL	8
607*d8d81063Sfei feng - Sun Microsystems - Beijing China 
608*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Define data structure for HostCmd_CMD_802_11_RF_TX_POWER */
609*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
610*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
611*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	Action;
612*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	SupportTxPowerLevel;
613*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	CurrentTxPowerLevel;
614*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	Reserved;
615*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	PowerLevelList[TX_POWER_LEVEL_TOTAL];
616*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_DS_802_11_RF_TX_POWER;
617*d8d81063Sfei feng - Sun Microsystems - Beijing China 
618*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
619*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/*
620*d8d81063Sfei feng - Sun Microsystems - Beijing China 	 * lower rate after the retry count
621*d8d81063Sfei feng - Sun Microsystems - Beijing China 	 * 0: legacy, 1: HT
622*d8d81063Sfei feng - Sun Microsystems - Beijing China 	 */
623*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	FixRateType;
624*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/*
625*d8d81063Sfei feng - Sun Microsystems - Beijing China 	 *  0: retry count is not valid
626*d8d81063Sfei feng - Sun Microsystems - Beijing China 	 *  1: use retry count specified
627*d8d81063Sfei feng - Sun Microsystems - Beijing China 	 */
628*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	RetryCountValid;
629*d8d81063Sfei feng - Sun Microsystems - Beijing China } FIX_RATE_FLAG;
630*d8d81063Sfei feng - Sun Microsystems - Beijing China 
631*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef  struct {
632*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FIX_RATE_FLAG	FixRateTypeFlags;
633*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* legacy rate(not index) or an MCS code */
634*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	FixedRate;
635*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	RetryCount;
636*d8d81063Sfei feng - Sun Microsystems - Beijing China } FIXED_RATE_ENTRY;
637*d8d81063Sfei feng - Sun Microsystems - Beijing China 
638*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef  struct {
639*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
640*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/*
641*d8d81063Sfei feng - Sun Microsystems - Beijing China 	 * HostCmd_ACT_GEN_GET			0x0000
642*d8d81063Sfei feng - Sun Microsystems - Beijing China 	 * HostCmd_ACT_GEN_SET 			0x0001
643*d8d81063Sfei feng - Sun Microsystems - Beijing China 	 * HostCmd_ACT_NOT_USE_FIXED_RATE	0x0002
644*d8d81063Sfei feng - Sun Microsystems - Beijing China 	 */
645*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	Action;
646*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* use fixed rate specified but firmware can drop */
647*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	AllowRateDrop;
648*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	EntryCount;
649*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FIXED_RATE_ENTRY FixedRateTable[4];
650*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		MulticastRate;
651*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		MultiRateTxType;
652*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		ManagementRate;
653*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_FW_USE_FIXED_RATE;
654*d8d81063Sfei feng - Sun Microsystems - Beijing China 
655*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Define data structure for HostCmd_CMD_SET_RATE_ADAPT_MODE */
656*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
657*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
658*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	Action;
659*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	RateAdaptMode;
660*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_DS_SET_RATE_ADAPT_MODE;
661*d8d81063Sfei feng - Sun Microsystems - Beijing China 
662*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
663*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
664*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t	OptLevel;
665*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_FW_SET_OPTIMIZATION_LEVEL;
666*d8d81063Sfei feng - Sun Microsystems - Beijing China 
667*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
668*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
669*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	regionCode;
670*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_SET_REGIONCODE_INFO;
671*d8d81063Sfei feng - Sun Microsystems - Beijing China 
672*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
673*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
674*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	Action;	/* 0: Get. 1:Set */
675*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	Option;	/* 0: default. 1:Aggressive */
676*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	Threshold;	/* Range 0-200, default 8 */
677*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_FW_AMPDU_RETRY_RATEDROP_MODE;
678*d8d81063Sfei feng - Sun Microsystems - Beijing China 
679*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
680*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
681*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	Enable;	/* 0 -- Disable. or 1 -- Enable */
682*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_CFEND_ENABLE;
683*d8d81063Sfei feng - Sun Microsystems - Beijing China 
684*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
685*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
686*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	Enable;	/* FALSE: Disable or TRUE: Enable */
687*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_DS_BSS_START;
688*d8d81063Sfei feng - Sun Microsystems - Beijing China 
689*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
690*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
691*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_FW_SET_INFRA_MODE;
692*d8d81063Sfei feng - Sun Microsystems - Beijing China 
693*d8d81063Sfei feng - Sun Microsystems - Beijing China /* used for AID sets/clears */
694*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
695*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
696*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	AssocID;
697*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		MacAddr[6]; /* AP's Mac Address(BSSID) */
698*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	GProtection;
699*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		ApRates[RATE_INDEX_MAX_ARRAY];
700*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_FW_SET_AID;
701*d8d81063Sfei feng - Sun Microsystems - Beijing China 
702*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
703*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
704*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	Action;
705*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	Threshold;
706*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_DS_802_11_RTS_THSD;
707*d8d81063Sfei feng - Sun Microsystems - Beijing China 
708*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Define data structure for HostCmd_CMD_SET_LINKADAPT_CS_MODE */
709*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
710*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
711*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	Action;
712*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	CSMode;
713*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_DS_SET_LINKADAPT_CS_MODE;
714*d8d81063Sfei feng - Sun Microsystems - Beijing China 
715*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
716*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
717*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	ActionType; /* ENCR_ACTION_TYPE */
718*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	DataLength; /* size of the data buffer attached */
719*d8d81063Sfei feng - Sun Microsystems - Beijing China #ifdef MWL_MBSS_SUPPORT
720*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t	macaddr[6];
721*d8d81063Sfei feng - Sun Microsystems - Beijing China #endif
722*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t	ActionData[1];
723*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_FW_UPDATE_ENCRYPTION;
724*d8d81063Sfei feng - Sun Microsystems - Beijing China 
725*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
726*d8d81063Sfei feng - Sun Microsystems - Beijing China  * @HWENCR@
727*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Hardware Encryption related data structures and constant definitions.
728*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Note that all related changes are marked with the @HWENCR@ tag.
729*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
730*d8d81063Sfei feng - Sun Microsystems - Beijing China 
731*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MAX_ENCR_KEY_LENGTH	16	/* max 128 bits - depends on type */
732*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	MIC_KEY_LENGTH		8	/* size of Tx/Rx MIC key - 8 bytes */
733*d8d81063Sfei feng - Sun Microsystems - Beijing China 
734*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	ENCR_KEY_TYPE_ID_WEP	0x00	/* Key type is WEP */
735*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	ENCR_KEY_TYPE_ID_TKIP	0x01	/* Key type is TKIP */
736*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	ENCR_KEY_TYPE_ID_AES	0x02	/* Key type is AES-CCMP	*/
737*d8d81063Sfei feng - Sun Microsystems - Beijing China 
738*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
739*d8d81063Sfei feng - Sun Microsystems - Beijing China  * flags used in structure - same as driver EKF_XXX flags
740*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
741*d8d81063Sfei feng - Sun Microsystems - Beijing China /* indicate key is in use */
742*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	ENCR_KEY_FLAG_INUSE		0x00000001
743*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Group key for RX only */
744*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	ENCR_KEY_FLAG_RXGROUPKEY	0x00000002
745*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Group key for TX */
746*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	ENCR_KEY_FLAG_TXGROUPKEY	0x00000004
747*d8d81063Sfei feng - Sun Microsystems - Beijing China /* pairwise */
748*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	ENCR_KEY_FLAG_PAIRWISE		0x00000008
749*d8d81063Sfei feng - Sun Microsystems - Beijing China /* only used for RX */
750*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	ENCR_KEY_FLAG_RXONLY		0x00000010
751*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
752*d8d81063Sfei feng - Sun Microsystems - Beijing China  * These flags are new additions - for hardware encryption commands only
753*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
754*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Key is for Authenticator */
755*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	ENCR_KEY_FLAG_AUTHENTICATOR	0x00000020
756*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Sequence counters valid */
757*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	ENCR_KEY_FLAG_TSC_VALID		0x00000040
758*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Tx key for WEP */
759*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	ENCR_KEY_FLAG_WEP_TXKEY		0x01000000
760*d8d81063Sfei feng - Sun Microsystems - Beijing China /* Tx/Rx MIC keys are valid */
761*d8d81063Sfei feng - Sun Microsystems - Beijing China #define	ENCR_KEY_FLAG_MICKEY_VALID	0x02000000
762*d8d81063Sfei feng - Sun Microsystems - Beijing China 
763*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
764*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Key material definitions (for WEP, TKIP, & AES-CCMP)
765*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
766*d8d81063Sfei feng - Sun Microsystems - Beijing China 
767*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
768*d8d81063Sfei feng - Sun Microsystems - Beijing China  * WEP Key material definition
769*d8d81063Sfei feng - Sun Microsystems - Beijing China  * ----------------------------
770*d8d81063Sfei feng - Sun Microsystems - Beijing China  * WEPKey	--> An array of 'MAX_ENCR_KEY_LENGTH' bytes.
771*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Note that we do not support 152bit WEP keys
772*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
773*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
774*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* WEP key material (max 128bit) */
775*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t	KeyMaterial[MAX_ENCR_KEY_LENGTH];
776*d8d81063Sfei feng - Sun Microsystems - Beijing China } WEP_TYPE_KEY;
777*d8d81063Sfei feng - Sun Microsystems - Beijing China 
778*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
779*d8d81063Sfei feng - Sun Microsystems - Beijing China  * TKIP Key material definition
780*d8d81063Sfei feng - Sun Microsystems - Beijing China  * ----------------------------
781*d8d81063Sfei feng - Sun Microsystems - Beijing China  * This structure defines TKIP key material. Note that
782*d8d81063Sfei feng - Sun Microsystems - Beijing China  * the TxMicKey and RxMicKey may or may not be valid.
783*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
784*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
785*d8d81063Sfei feng - Sun Microsystems - Beijing China  * TKIP Sequence counter - 24 bits
786*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Incremented on each fragment MPDU
787*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
788*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
789*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	low;
790*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	high;
791*d8d81063Sfei feng - Sun Microsystems - Beijing China } ENCR_TKIPSEQCNT;
792*d8d81063Sfei feng - Sun Microsystems - Beijing China 
793*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
794*d8d81063Sfei feng - Sun Microsystems - Beijing China  * TKIP Key material. Key type (group or pairwise key) is
795*d8d81063Sfei feng - Sun Microsystems - Beijing China  * determined by flags in KEY_PARAM_SET structure
796*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
797*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
798*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		KeyMaterial[MAX_ENCR_KEY_LENGTH];
799*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		TkipTxMicKey[MIC_KEY_LENGTH];
800*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		TkipRxMicKey[MIC_KEY_LENGTH];
801*d8d81063Sfei feng - Sun Microsystems - Beijing China 	ENCR_TKIPSEQCNT	TkipRsc;
802*d8d81063Sfei feng - Sun Microsystems - Beijing China 	ENCR_TKIPSEQCNT	TkipTsc;
803*d8d81063Sfei feng - Sun Microsystems - Beijing China } TKIP_TYPE_KEY;
804*d8d81063Sfei feng - Sun Microsystems - Beijing China 
805*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
806*d8d81063Sfei feng - Sun Microsystems - Beijing China  * AES-CCMP Key material definition
807*d8d81063Sfei feng - Sun Microsystems - Beijing China  * --------------------------------
808*d8d81063Sfei feng - Sun Microsystems - Beijing China  * This structure defines AES-CCMP key material.
809*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
810*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
811*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* AES Key material */
812*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t	KeyMaterial[MAX_ENCR_KEY_LENGTH];
813*d8d81063Sfei feng - Sun Microsystems - Beijing China } AES_TYPE_KEY;
814*d8d81063Sfei feng - Sun Microsystems - Beijing China 
815*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
816*d8d81063Sfei feng - Sun Microsystems - Beijing China  * UPDATE_ENCRYPTION command action type.
817*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
818*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef enum {
819*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* request to enable/disable HW encryption */
820*d8d81063Sfei feng - Sun Microsystems - Beijing China 	EncrActionEnableHWEncryption,
821*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* request to set encryption key */
822*d8d81063Sfei feng - Sun Microsystems - Beijing China 	EncrActionTypeSetKey,
823*d8d81063Sfei feng - Sun Microsystems - Beijing China 	/* request to remove one or more keys */
824*d8d81063Sfei feng - Sun Microsystems - Beijing China 	EncrActionTypeRemoveKey,
825*d8d81063Sfei feng - Sun Microsystems - Beijing China 	EncrActionTypeSetGroupKey
826*d8d81063Sfei feng - Sun Microsystems - Beijing China } ENCR_ACTION_TYPE;
827*d8d81063Sfei feng - Sun Microsystems - Beijing China 
828*d8d81063Sfei feng - Sun Microsystems - Beijing China /*
829*d8d81063Sfei feng - Sun Microsystems - Beijing China  * Encryption key definition.
830*d8d81063Sfei feng - Sun Microsystems - Beijing China  * --------------------------
831*d8d81063Sfei feng - Sun Microsystems - Beijing China  * This structure provides all required/essential
832*d8d81063Sfei feng - Sun Microsystems - Beijing China  * information about the key being set/removed.
833*d8d81063Sfei feng - Sun Microsystems - Beijing China  */
834*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
835*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	Length;		/* Total length of this structure */
836*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	KeyTypeId;	/* Key type - WEP, TKIP or AES-CCMP */
837*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	KeyInfo;	/* key flags */
838*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	KeyIndex; 	/* For WEP only - actual key index */
839*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint16_t	KeyLen;		/* Size of the key */
840*d8d81063Sfei feng - Sun Microsystems - Beijing China 	union {				/* Key material (variable size array) */
841*d8d81063Sfei feng - Sun Microsystems - Beijing China 		WEP_TYPE_KEY	WepKey;
842*d8d81063Sfei feng - Sun Microsystems - Beijing China 		TKIP_TYPE_KEY	TkipKey;
843*d8d81063Sfei feng - Sun Microsystems - Beijing China 		AES_TYPE_KEY	AesKey;
844*d8d81063Sfei feng - Sun Microsystems - Beijing China 	} Key;
845*d8d81063Sfei feng - Sun Microsystems - Beijing China #ifdef MWL_MBSS_SUPPORT
846*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t	Macaddr[6];
847*d8d81063Sfei feng - Sun Microsystems - Beijing China #endif
848*d8d81063Sfei feng - Sun Microsystems - Beijing China } KEY_PARAM_SET;
849*d8d81063Sfei feng - Sun Microsystems - Beijing China 
850*d8d81063Sfei feng - Sun Microsystems - Beijing China 
851*d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct {
852*d8d81063Sfei feng - Sun Microsystems - Beijing China 	FWCmdHdr	CmdHdr;
853*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	ActionType;	/* ENCR_ACTION_TYPE */
854*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint32_t	DataLength;	/* size of the data buffer attached */
855*d8d81063Sfei feng - Sun Microsystems - Beijing China 	KEY_PARAM_SET	KeyParam;
856*d8d81063Sfei feng - Sun Microsystems - Beijing China #ifndef MWL_MBSS_SUPPORT
857*d8d81063Sfei feng - Sun Microsystems - Beijing China 	uint8_t		Macaddr[8];
858*d8d81063Sfei feng - Sun Microsystems - Beijing China #endif
859*d8d81063Sfei feng - Sun Microsystems - Beijing China } HostCmd_FW_UPDATE_ENCRYPTION_SET_KEY;
860*d8d81063Sfei feng - Sun Microsystems - Beijing China #pragma pack()
861*d8d81063Sfei feng - Sun Microsystems - Beijing China 
862*d8d81063Sfei feng - Sun Microsystems - Beijing China #ifdef __cplusplus
863*d8d81063Sfei feng - Sun Microsystems - Beijing China }
864*d8d81063Sfei feng - Sun Microsystems - Beijing China #endif
865*d8d81063Sfei feng - Sun Microsystems - Beijing China 
866*d8d81063Sfei feng - Sun Microsystems - Beijing China #endif /* _MWL_REG_H */
867