3 * Defines the constants and data structures for the hfa384x
5 * Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6 * --------------------------------------------------------------------
10 * The contents of this file are subject to the Mozilla Public
11 * License Version 1.1 (the "License"); you may not use this file
12 * except in compliance with the License. You may obtain a copy of
13 * the License at http://www.mozilla.org/MPL/
15 * Software distributed under the License is distributed on an "AS
16 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17 * implied. See the License for the specific language governing
18 * rights and limitations under the License.
20 * Alternatively, the contents of this file may be used under the
21 * terms of the GNU Public License version 2 (the "GPL"), in which
22 * case the provisions of the GPL are applicable instead of the
23 * above. If you wish to allow the use of your version of this file
24 * only under the terms of the GPL and not to allow others to use
25 * your version of this file under the MPL, indicate your decision
26 * by deleting the provisions above and replace them with the notice
27 * and other provisions required by the GPL. If you do not delete
28 * the provisions above, a recipient may use your version of this
29 * file under either the MPL or the GPL.
31 * --------------------------------------------------------------------
33 * Inquiries regarding the linux-wlan Open Source project can be
36 * AbsoluteValue Systems Inc.
38 * http://www.linux-wlan.com
40 * --------------------------------------------------------------------
42 * Portions of the development of this software were funded by
43 * Intersil Corporation as part of PRISM(R) chipset product development.
45 * --------------------------------------------------------------------
47 * [Implementation and usage notes]
50 * CW10 Programmer's Manual v1.5
53 * --------------------------------------------------------------------
59 /*=============================================================*/
60 #define HFA384x_FIRMWARE_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
62 #define HFA384x_LEVEL_TO_dBm(v) (0x100 + (v) * 100 / 255 - 100)
64 /*------ Constants --------------------------------------------*/
65 /*--- Mins & Maxs -----------------------------------*/
66 #define HFA384x_CMD_ALLOC_LEN_MIN ((u16)4)
67 #define HFA384x_CMD_ALLOC_LEN_MAX ((u16)2400)
68 #define HFA384x_BAP_DATALEN_MAX ((u16)4096)
69 #define HFA384x_BAP_OFFSET_MAX ((u16)4096)
70 #define HFA384x_PORTID_MAX ((u16)7)
71 #define HFA384x_NUMPORTS_MAX ((u16)(HFA384x_PORTID_MAX+1))
72 #define HFA384x_PDR_LEN_MAX ((u16)512) /* in bytes, from EK */
73 #define HFA384x_PDA_RECS_MAX ((u16)200) /* a guess */
74 #define HFA384x_PDA_LEN_MAX ((u16)1024) /* in bytes, from EK */
75 #define HFA384x_SCANRESULT_MAX ((u16)31)
76 #define HFA384x_HSCANRESULT_MAX ((u16)31)
77 #define HFA384x_CHINFORESULT_MAX ((u16)16)
78 #define HFA384x_DRVR_FIDSTACKLEN_MAX (10)
79 #define HFA384x_DRVR_TXBUF_MAX (sizeof(hfa384x_tx_frame_t) + \
83 #define HFA384x_DRVR_MAGIC (0x4a2d)
84 #define HFA384x_INFODATA_MAXLEN (sizeof(hfa384x_infodata_t))
85 #define HFA384x_INFOFRM_MAXLEN (sizeof(hfa384x_InfFrame_t))
86 #define HFA384x_RID_GUESSING_MAXLEN 2048 /* I'm not really sure */
87 #define HFA384x_RIDDATA_MAXLEN HFA384x_RID_GUESSING_MAXLEN
88 #define HFA384x_USB_RWMEM_MAXLEN 2048
90 /*--- Support Constants -----------------------------*/
91 #define HFA384x_BAP_PROC ((u16)0)
92 #define HFA384x_BAP_int ((u16)1)
93 #define HFA384x_PORTTYPE_IBSS ((u16)0)
94 #define HFA384x_PORTTYPE_BSS ((u16)1)
95 #define HFA384x_PORTTYPE_WDS ((u16)2)
96 #define HFA384x_PORTTYPE_PSUEDOIBSS ((u16)3)
97 #define HFA384x_PORTTYPE_HOSTAP ((u16)6)
98 #define HFA384x_WEPFLAGS_PRIVINVOKED ((u16)BIT0)
99 #define HFA384x_WEPFLAGS_EXCLUDE ((u16)BIT1)
100 #define HFA384x_WEPFLAGS_DISABLE_TXCRYPT ((u16)BIT4)
101 #define HFA384x_WEPFLAGS_DISABLE_RXCRYPT ((u16)BIT7)
102 #define HFA384x_WEPFLAGS_DISALLOW_MIXED ((u16)BIT11)
103 #define HFA384x_WEPFLAGS_IV_intERVAL1 ((u16)0)
104 #define HFA384x_WEPFLAGS_IV_intERVAL10 ((u16)BIT5)
105 #define HFA384x_WEPFLAGS_IV_intERVAL50 ((u16)BIT6)
106 #define HFA384x_WEPFLAGS_IV_intERVAL100 ((u16)(BIT5 | BIT6))
107 #define HFA384x_WEPFLAGS_FIRMWARE_WPA ((u16)BIT8)
108 #define HFA384x_WEPFLAGS_HOST_MIC ((u16)BIT9)
109 #define HFA384x_ROAMMODE_FWSCAN_FWROAM ((u16)1)
110 #define HFA384x_ROAMMODE_FWSCAN_HOSTROAM ((u16)2)
111 #define HFA384x_ROAMMODE_HOSTSCAN_HOSTROAM ((u16)3)
112 #define HFA384x_PORTSTATUS_DISABLED ((u16)1)
113 #define HFA384x_PORTSTATUS_INITSRCH ((u16)2)
114 #define HFA384x_PORTSTATUS_CONN_IBSS ((u16)3)
115 #define HFA384x_PORTSTATUS_CONN_ESS ((u16)4)
116 #define HFA384x_PORTSTATUS_OOR_ESS ((u16)5)
117 #define HFA384x_PORTSTATUS_CONN_WDS ((u16)6)
118 #define HFA384x_PORTSTATUS_HOSTAP ((u16)8)
119 #define HFA384x_RATEBIT_1 ((u16)1)
120 #define HFA384x_RATEBIT_2 ((u16)2)
121 #define HFA384x_RATEBIT_5dot5 ((u16)4)
122 #define HFA384x_RATEBIT_11 ((u16)8)
124 /*--- Just some symbolic names for legibility -------*/
125 #define HFA384x_TXCMD_NORECL ((u16)0)
126 #define HFA384x_TXCMD_RECL ((u16)1)
128 /*--- MAC Internal memory constants and macros ------*/
129 /* masks and macros used to manipulate MAC internal memory addresses. */
130 /* MAC internal memory addresses are 23 bit quantities. The MAC uses
131 * a paged address space where the upper 16 bits are the page number
132 * and the lower 7 bits are the offset. There are various Host API
133 * elements that require two 16-bit quantities to specify a MAC
134 * internal memory address. Unfortunately, some of the API's use a
135 * page/offset format where the offset value is JUST the lower seven
136 * bits and the page is the remaining 16 bits. Some of the API's
137 * assume that the 23 bit address has been split at the 16th bit. We
138 * refer to these two formats as AUX format and CMD format. The
139 * macros below help handle some of this.
143 #define HFA384x_ADDR_AUX_OFF_MAX ((u16)0x007f)
145 /* Mask bits for discarding unwanted pieces in a flat address */
146 #define HFA384x_ADDR_FLAT_AUX_PAGE_MASK (0x007fff80)
147 #define HFA384x_ADDR_FLAT_AUX_OFF_MASK (0x0000007f)
148 #define HFA384x_ADDR_FLAT_CMD_PAGE_MASK (0xffff0000)
149 #define HFA384x_ADDR_FLAT_CMD_OFF_MASK (0x0000ffff)
151 /* Mask bits for discarding unwanted pieces in AUX format 16-bit address parts */
152 #define HFA384x_ADDR_AUX_PAGE_MASK (0xffff)
153 #define HFA384x_ADDR_AUX_OFF_MASK (0x007f)
155 /* Mask bits for discarding unwanted pieces in CMD format 16-bit address parts */
156 #define HFA384x_ADDR_CMD_PAGE_MASK (0x007f)
157 #define HFA384x_ADDR_CMD_OFF_MASK (0xffff)
159 /* Make a 32-bit flat address from AUX format 16-bit page and offset */
160 #define HFA384x_ADDR_AUX_MKFLAT(p,o) \
161 (((u32)(((u16)(p))&HFA384x_ADDR_AUX_PAGE_MASK)) <<7) | \
162 ((u32)(((u16)(o))&HFA384x_ADDR_AUX_OFF_MASK))
164 /* Make a 32-bit flat address from CMD format 16-bit page and offset */
165 #define HFA384x_ADDR_CMD_MKFLAT(p,o) \
166 (((u32)(((u16)(p))&HFA384x_ADDR_CMD_PAGE_MASK)) <<16) | \
167 ((u32)(((u16)(o))&HFA384x_ADDR_CMD_OFF_MASK))
169 /* Make AUX format offset and page from a 32-bit flat address */
170 #define HFA384x_ADDR_AUX_MKPAGE(f) \
171 ((u16)((((u32)(f))&HFA384x_ADDR_FLAT_AUX_PAGE_MASK)>>7))
172 #define HFA384x_ADDR_AUX_MKOFF(f) \
173 ((u16)(((u32)(f))&HFA384x_ADDR_FLAT_AUX_OFF_MASK))
175 /* Make CMD format offset and page from a 32-bit flat address */
176 #define HFA384x_ADDR_CMD_MKPAGE(f) \
177 ((u16)((((u32)(f))&HFA384x_ADDR_FLAT_CMD_PAGE_MASK)>>16))
178 #define HFA384x_ADDR_CMD_MKOFF(f) \
179 ((u16)(((u32)(f))&HFA384x_ADDR_FLAT_CMD_OFF_MASK))
181 /*--- Aux register masks/tests ----------------------*/
182 /* Some of the upper bits of the AUX offset register are used to */
183 /* select address space. */
184 #define HFA384x_AUX_CTL_EXTDS (0x00)
185 #define HFA384x_AUX_CTL_NV (0x01)
186 #define HFA384x_AUX_CTL_PHY (0x02)
187 #define HFA384x_AUX_CTL_ICSRAM (0x03)
189 /* Make AUX register offset and page values from a flat address */
190 #define HFA384x_AUX_MKOFF(f, c) \
191 (HFA384x_ADDR_AUX_MKOFF(f) | (((u16)(c))<<12))
192 #define HFA384x_AUX_MKPAGE(f) HFA384x_ADDR_AUX_MKPAGE(f)
195 /*--- Controller Memory addresses -------------------*/
196 #define HFA3842_PDA_BASE (0x007f0000UL)
197 #define HFA3841_PDA_BASE (0x003f0000UL)
198 #define HFA3841_PDA_BOGUS_BASE (0x00390000UL)
200 /*--- Driver Download states -----------------------*/
201 #define HFA384x_DLSTATE_DISABLED 0
202 #define HFA384x_DLSTATE_RAMENABLED 1
203 #define HFA384x_DLSTATE_FLASHENABLED 2
204 #define HFA384x_DLSTATE_FLASHWRITTEN 3
205 #define HFA384x_DLSTATE_FLASHWRITEPENDING 4
206 #define HFA384x_DLSTATE_GENESIS 5
208 #define HFA384x_CMD_OFF (0x00)
209 #define HFA384x_PARAM0_OFF (0x04)
210 #define HFA384x_PARAM1_OFF (0x08)
211 #define HFA384x_PARAM2_OFF (0x0c)
212 #define HFA384x_STATUS_OFF (0x10)
213 #define HFA384x_RESP0_OFF (0x14)
214 #define HFA384x_RESP1_OFF (0x18)
215 #define HFA384x_RESP2_OFF (0x1c)
216 #define HFA384x_INFOFID_OFF (0x20)
217 #define HFA384x_RXFID_OFF (0x40)
218 #define HFA384x_ALLOCFID_OFF (0x44)
219 #define HFA384x_TXCOMPLFID_OFF (0x48)
220 #define HFA384x_SELECT0_OFF (0x30)
221 #define HFA384x_OFFSET0_OFF (0x38)
222 #define HFA384x_DATA0_OFF (0x6c)
223 #define HFA384x_SELECT1_OFF (0x34)
224 #define HFA384x_OFFSET1_OFF (0x3c)
225 #define HFA384x_DATA1_OFF (0x70)
226 #define HFA384x_EVSTAT_OFF (0x60)
227 #define HFA384x_intEN_OFF (0x64)
228 #define HFA384x_EVACK_OFF (0x68)
229 #define HFA384x_CONTROL_OFF (0x28)
230 #define HFA384x_SWSUPPORT0_OFF (0x50)
231 #define HFA384x_SWSUPPORT1_OFF (0x54)
232 #define HFA384x_SWSUPPORT2_OFF (0x58)
233 #define HFA384x_AUXPAGE_OFF (0x74)
234 #define HFA384x_AUXOFFSET_OFF (0x78)
235 #define HFA384x_AUXDATA_OFF (0x7c)
236 #define HFA384x_PCICOR_OFF (0x4c)
237 #define HFA384x_PCIHCR_OFF (0x5c)
238 #define HFA384x_PCI_M0_ADDRH_OFF (0x80)
239 #define HFA384x_PCI_M0_ADDRL_OFF (0x84)
240 #define HFA384x_PCI_M0_LEN_OFF (0x88)
241 #define HFA384x_PCI_M0_CTL_OFF (0x8c)
242 #define HFA384x_PCI_STATUS_OFF (0x98)
243 #define HFA384x_PCI_M1_ADDRH_OFF (0xa0)
244 #define HFA384x_PCI_M1_ADDRL_OFF (0xa4)
245 #define HFA384x_PCI_M1_LEN_OFF (0xa8)
246 #define HFA384x_PCI_M1_CTL_OFF (0xac)
248 /*--- Register Field Masks --------------------------*/
249 #define HFA384x_CMD_BUSY ((u16)BIT15)
250 #define HFA384x_CMD_AINFO ((u16)(BIT14 | BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8))
251 #define HFA384x_CMD_MACPORT ((u16)(BIT10 | BIT9 | BIT8))
252 #define HFA384x_CMD_RECL ((u16)BIT8)
253 #define HFA384x_CMD_WRITE ((u16)BIT8)
254 #define HFA384x_CMD_PROGMODE ((u16)(BIT9 | BIT8))
255 #define HFA384x_CMD_CMDCODE ((u16)(BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0))
257 #define HFA384x_STATUS_RESULT ((u16)(BIT14 | BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8))
258 #define HFA384x_STATUS_CMDCODE ((u16)(BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0))
260 #define HFA384x_OFFSET_BUSY ((u16)BIT15)
261 #define HFA384x_OFFSET_ERR ((u16)BIT14)
262 #define HFA384x_OFFSET_DATAOFF ((u16)(BIT11 | BIT10 | BIT9 | BIT8 | BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1))
264 #define HFA384x_EVSTAT_TICK ((u16)BIT15)
265 #define HFA384x_EVSTAT_WTERR ((u16)BIT14)
266 #define HFA384x_EVSTAT_INFDROP ((u16)BIT13)
267 #define HFA384x_EVSTAT_INFO ((u16)BIT7)
268 #define HFA384x_EVSTAT_DTIM ((u16)BIT5)
269 #define HFA384x_EVSTAT_CMD ((u16)BIT4)
270 #define HFA384x_EVSTAT_ALLOC ((u16)BIT3)
271 #define HFA384x_EVSTAT_TXEXC ((u16)BIT2)
272 #define HFA384x_EVSTAT_TX ((u16)BIT1)
273 #define HFA384x_EVSTAT_RX ((u16)BIT0)
275 #define HFA384x_int_BAP_OP (HFA384x_EVSTAT_INFO|HFA384x_EVSTAT_RX|HFA384x_EVSTAT_TX|HFA384x_EVSTAT_TXEXC)
277 #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)
279 #define HFA384x_intEN_TICK ((u16)BIT15)
280 #define HFA384x_intEN_WTERR ((u16)BIT14)
281 #define HFA384x_intEN_INFDROP ((u16)BIT13)
282 #define HFA384x_intEN_INFO ((u16)BIT7)
283 #define HFA384x_intEN_DTIM ((u16)BIT5)
284 #define HFA384x_intEN_CMD ((u16)BIT4)
285 #define HFA384x_intEN_ALLOC ((u16)BIT3)
286 #define HFA384x_intEN_TXEXC ((u16)BIT2)
287 #define HFA384x_intEN_TX ((u16)BIT1)
288 #define HFA384x_intEN_RX ((u16)BIT0)
290 #define HFA384x_EVACK_TICK ((u16)BIT15)
291 #define HFA384x_EVACK_WTERR ((u16)BIT14)
292 #define HFA384x_EVACK_INFDROP ((u16)BIT13)
293 #define HFA384x_EVACK_INFO ((u16)BIT7)
294 #define HFA384x_EVACK_DTIM ((u16)BIT5)
295 #define HFA384x_EVACK_CMD ((u16)BIT4)
296 #define HFA384x_EVACK_ALLOC ((u16)BIT3)
297 #define HFA384x_EVACK_TXEXC ((u16)BIT2)
298 #define HFA384x_EVACK_TX ((u16)BIT1)
299 #define HFA384x_EVACK_RX ((u16)BIT0)
301 #define HFA384x_CONTROL_AUXEN ((u16)(BIT15 | BIT14))
304 /*--- Command Code Constants --------------------------*/
305 /*--- Controller Commands --------------------------*/
306 #define HFA384x_CMDCODE_INIT ((u16)0x00)
307 #define HFA384x_CMDCODE_ENABLE ((u16)0x01)
308 #define HFA384x_CMDCODE_DISABLE ((u16)0x02)
309 #define HFA384x_CMDCODE_DIAG ((u16)0x03)
311 /*--- Buffer Mgmt Commands --------------------------*/
312 #define HFA384x_CMDCODE_ALLOC ((u16)0x0A)
313 #define HFA384x_CMDCODE_TX ((u16)0x0B)
314 #define HFA384x_CMDCODE_CLRPRST ((u16)0x12)
316 /*--- Regulate Commands --------------------------*/
317 #define HFA384x_CMDCODE_NOTIFY ((u16)0x10)
318 #define HFA384x_CMDCODE_INQ ((u16)0x11)
320 /*--- Configure Commands --------------------------*/
321 #define HFA384x_CMDCODE_ACCESS ((u16)0x21)
322 #define HFA384x_CMDCODE_DOWNLD ((u16)0x22)
324 /*--- Debugging Commands -----------------------------*/
325 #define HFA384x_CMDCODE_MONITOR ((u16)(0x38))
326 #define HFA384x_MONITOR_ENABLE ((u16)(0x0b))
327 #define HFA384x_MONITOR_DISABLE ((u16)(0x0f))
329 /*--- Result Codes --------------------------*/
330 #define HFA384x_SUCCESS ((u16)(0x00))
331 #define HFA384x_CARD_FAIL ((u16)(0x01))
332 #define HFA384x_NO_BUFF ((u16)(0x05))
333 #define HFA384x_CMD_ERR ((u16)(0x7F))
335 /*--- Programming Modes --------------------------
336 MODE 0: Disable programming
337 MODE 1: Enable volatile memory programming
338 MODE 2: Enable non-volatile memory programming
339 MODE 3: Program non-volatile memory section
340 --------------------------------------------------*/
341 #define HFA384x_PROGMODE_DISABLE ((u16)0x00)
342 #define HFA384x_PROGMODE_RAM ((u16)0x01)
343 #define HFA384x_PROGMODE_NV ((u16)0x02)
344 #define HFA384x_PROGMODE_NVWRITE ((u16)0x03)
346 /*--- AUX register enable --------------------------*/
347 #define HFA384x_AUXPW0 ((u16)0xfe01)
348 #define HFA384x_AUXPW1 ((u16)0xdc23)
349 #define HFA384x_AUXPW2 ((u16)0xba45)
351 #define HFA384x_CONTROL_AUX_ISDISABLED ((u16)0x0000)
352 #define HFA384x_CONTROL_AUX_ISENABLED ((u16)0xc000)
353 #define HFA384x_CONTROL_AUX_DOENABLE ((u16)0x8000)
354 #define HFA384x_CONTROL_AUX_DODISABLE ((u16)0x4000)
356 /*--- Record ID Constants --------------------------*/
357 /*--------------------------------------------------------------------
358 Configuration RIDs: Network Parameters, Static Configuration Entities
359 --------------------------------------------------------------------*/
360 #define HFA384x_RID_CNFPORTTYPE ((u16)0xFC00)
361 #define HFA384x_RID_CNFOWNMACADDR ((u16)0xFC01)
362 #define HFA384x_RID_CNFDESIREDSSID ((u16)0xFC02)
363 #define HFA384x_RID_CNFOWNCHANNEL ((u16)0xFC03)
364 #define HFA384x_RID_CNFOWNSSID ((u16)0xFC04)
365 #define HFA384x_RID_CNFOWNATIMWIN ((u16)0xFC05)
366 #define HFA384x_RID_CNFSYSSCALE ((u16)0xFC06)
367 #define HFA384x_RID_CNFMAXDATALEN ((u16)0xFC07)
368 #define HFA384x_RID_CNFWDSADDR ((u16)0xFC08)
369 #define HFA384x_RID_CNFPMENABLED ((u16)0xFC09)
370 #define HFA384x_RID_CNFPMEPS ((u16)0xFC0A)
371 #define HFA384x_RID_CNFMULTICASTRX ((u16)0xFC0B)
372 #define HFA384x_RID_CNFMAXSLEEPDUR ((u16)0xFC0C)
373 #define HFA384x_RID_CNFPMHOLDDUR ((u16)0xFC0D)
374 #define HFA384x_RID_CNFOWNNAME ((u16)0xFC0E)
375 #define HFA384x_RID_CNFOWNDTIMPER ((u16)0xFC10)
376 #define HFA384x_RID_CNFWDSADDR1 ((u16)0xFC11)
377 #define HFA384x_RID_CNFWDSADDR2 ((u16)0xFC12)
378 #define HFA384x_RID_CNFWDSADDR3 ((u16)0xFC13)
379 #define HFA384x_RID_CNFWDSADDR4 ((u16)0xFC14)
380 #define HFA384x_RID_CNFWDSADDR5 ((u16)0xFC15)
381 #define HFA384x_RID_CNFWDSADDR6 ((u16)0xFC16)
382 #define HFA384x_RID_CNFMCASTPMBUFF ((u16)0xFC17)
384 /*--------------------------------------------------------------------
385 Configuration RID lengths: Network Params, Static Config Entities
386 This is the length of JUST the DATA part of the RID (does not
387 include the len or code fields)
388 --------------------------------------------------------------------*/
389 /* TODO: fill in the rest of these */
390 #define HFA384x_RID_CNFPORTTYPE_LEN ((u16)2)
391 #define HFA384x_RID_CNFOWNMACADDR_LEN ((u16)6)
392 #define HFA384x_RID_CNFDESIREDSSID_LEN ((u16)34)
393 #define HFA384x_RID_CNFOWNCHANNEL_LEN ((u16)2)
394 #define HFA384x_RID_CNFOWNSSID_LEN ((u16)34)
395 #define HFA384x_RID_CNFOWNATIMWIN_LEN ((u16)2)
396 #define HFA384x_RID_CNFSYSSCALE_LEN ((u16)0)
397 #define HFA384x_RID_CNFMAXDATALEN_LEN ((u16)0)
398 #define HFA384x_RID_CNFWDSADDR_LEN ((u16)6)
399 #define HFA384x_RID_CNFPMENABLED_LEN ((u16)0)
400 #define HFA384x_RID_CNFPMEPS_LEN ((u16)0)
401 #define HFA384x_RID_CNFMULTICASTRX_LEN ((u16)0)
402 #define HFA384x_RID_CNFMAXSLEEPDUR_LEN ((u16)0)
403 #define HFA384x_RID_CNFPMHOLDDUR_LEN ((u16)0)
404 #define HFA384x_RID_CNFOWNNAME_LEN ((u16)34)
405 #define HFA384x_RID_CNFOWNDTIMPER_LEN ((u16)0)
406 #define HFA384x_RID_CNFWDSADDR1_LEN ((u16)6)
407 #define HFA384x_RID_CNFWDSADDR2_LEN ((u16)6)
408 #define HFA384x_RID_CNFWDSADDR3_LEN ((u16)6)
409 #define HFA384x_RID_CNFWDSADDR4_LEN ((u16)6)
410 #define HFA384x_RID_CNFWDSADDR5_LEN ((u16)6)
411 #define HFA384x_RID_CNFWDSADDR6_LEN ((u16)6)
412 #define HFA384x_RID_CNFMCASTPMBUFF_LEN ((u16)0)
413 #define HFA384x_RID_CNFAUTHENTICATION_LEN ((u16)sizeof(u16))
414 #define HFA384x_RID_CNFMAXSLEEPDUR_LEN ((u16)0)
416 /*--------------------------------------------------------------------
417 Configuration RIDs: Network Parameters, Dynamic Configuration Entities
418 --------------------------------------------------------------------*/
419 #define HFA384x_RID_GROUPADDR ((u16)0xFC80)
420 #define HFA384x_RID_CREATEIBSS ((u16)0xFC81)
421 #define HFA384x_RID_FRAGTHRESH ((u16)0xFC82)
422 #define HFA384x_RID_RTSTHRESH ((u16)0xFC83)
423 #define HFA384x_RID_TXRATECNTL ((u16)0xFC84)
424 #define HFA384x_RID_PROMISCMODE ((u16)0xFC85)
425 #define HFA384x_RID_FRAGTHRESH0 ((u16)0xFC90)
426 #define HFA384x_RID_FRAGTHRESH1 ((u16)0xFC91)
427 #define HFA384x_RID_FRAGTHRESH2 ((u16)0xFC92)
428 #define HFA384x_RID_FRAGTHRESH3 ((u16)0xFC93)
429 #define HFA384x_RID_FRAGTHRESH4 ((u16)0xFC94)
430 #define HFA384x_RID_FRAGTHRESH5 ((u16)0xFC95)
431 #define HFA384x_RID_FRAGTHRESH6 ((u16)0xFC96)
432 #define HFA384x_RID_RTSTHRESH0 ((u16)0xFC97)
433 #define HFA384x_RID_RTSTHRESH1 ((u16)0xFC98)
434 #define HFA384x_RID_RTSTHRESH2 ((u16)0xFC99)
435 #define HFA384x_RID_RTSTHRESH3 ((u16)0xFC9A)
436 #define HFA384x_RID_RTSTHRESH4 ((u16)0xFC9B)
437 #define HFA384x_RID_RTSTHRESH5 ((u16)0xFC9C)
438 #define HFA384x_RID_RTSTHRESH6 ((u16)0xFC9D)
439 #define HFA384x_RID_TXRATECNTL0 ((u16)0xFC9E)
440 #define HFA384x_RID_TXRATECNTL1 ((u16)0xFC9F)
441 #define HFA384x_RID_TXRATECNTL2 ((u16)0xFCA0)
442 #define HFA384x_RID_TXRATECNTL3 ((u16)0xFCA1)
443 #define HFA384x_RID_TXRATECNTL4 ((u16)0xFCA2)
444 #define HFA384x_RID_TXRATECNTL5 ((u16)0xFCA3)
445 #define HFA384x_RID_TXRATECNTL6 ((u16)0xFCA4)
447 /*--------------------------------------------------------------------
448 Configuration RID Lengths: Network Param, Dynamic Config Entities
449 This is the length of JUST the DATA part of the RID (does not
450 include the len or code fields)
451 --------------------------------------------------------------------*/
452 /* TODO: fill in the rest of these */
453 #define HFA384x_RID_GROUPADDR_LEN ((u16)16 * WLAN_ADDR_LEN)
454 #define HFA384x_RID_CREATEIBSS_LEN ((u16)0)
455 #define HFA384x_RID_FRAGTHRESH_LEN ((u16)0)
456 #define HFA384x_RID_RTSTHRESH_LEN ((u16)0)
457 #define HFA384x_RID_TXRATECNTL_LEN ((u16)4)
458 #define HFA384x_RID_PROMISCMODE_LEN ((u16)2)
459 #define HFA384x_RID_FRAGTHRESH0_LEN ((u16)0)
460 #define HFA384x_RID_FRAGTHRESH1_LEN ((u16)0)
461 #define HFA384x_RID_FRAGTHRESH2_LEN ((u16)0)
462 #define HFA384x_RID_FRAGTHRESH3_LEN ((u16)0)
463 #define HFA384x_RID_FRAGTHRESH4_LEN ((u16)0)
464 #define HFA384x_RID_FRAGTHRESH5_LEN ((u16)0)
465 #define HFA384x_RID_FRAGTHRESH6_LEN ((u16)0)
466 #define HFA384x_RID_RTSTHRESH0_LEN ((u16)0)
467 #define HFA384x_RID_RTSTHRESH1_LEN ((u16)0)
468 #define HFA384x_RID_RTSTHRESH2_LEN ((u16)0)
469 #define HFA384x_RID_RTSTHRESH3_LEN ((u16)0)
470 #define HFA384x_RID_RTSTHRESH4_LEN ((u16)0)
471 #define HFA384x_RID_RTSTHRESH5_LEN ((u16)0)
472 #define HFA384x_RID_RTSTHRESH6_LEN ((u16)0)
473 #define HFA384x_RID_TXRATECNTL0_LEN ((u16)0)
474 #define HFA384x_RID_TXRATECNTL1_LEN ((u16)0)
475 #define HFA384x_RID_TXRATECNTL2_LEN ((u16)0)
476 #define HFA384x_RID_TXRATECNTL3_LEN ((u16)0)
477 #define HFA384x_RID_TXRATECNTL4_LEN ((u16)0)
478 #define HFA384x_RID_TXRATECNTL5_LEN ((u16)0)
479 #define HFA384x_RID_TXRATECNTL6_LEN ((u16)0)
481 /*--------------------------------------------------------------------
482 Configuration RIDs: Behavior Parameters
483 --------------------------------------------------------------------*/
484 #define HFA384x_RID_ITICKTIME ((u16)0xFCE0)
486 /*--------------------------------------------------------------------
487 Configuration RID Lengths: Behavior Parameters
488 This is the length of JUST the DATA part of the RID (does not
489 include the len or code fields)
490 --------------------------------------------------------------------*/
491 #define HFA384x_RID_ITICKTIME_LEN ((u16)2)
493 /*----------------------------------------------------------------------
494 Information RIDs: NIC Information
495 --------------------------------------------------------------------*/
496 #define HFA384x_RID_MAXLOADTIME ((u16)0xFD00)
497 #define HFA384x_RID_DOWNLOADBUFFER ((u16)0xFD01)
498 #define HFA384x_RID_PRIIDENTITY ((u16)0xFD02)
499 #define HFA384x_RID_PRISUPRANGE ((u16)0xFD03)
500 #define HFA384x_RID_PRI_CFIACTRANGES ((u16)0xFD04)
501 #define HFA384x_RID_NICSERIALNUMBER ((u16)0xFD0A)
502 #define HFA384x_RID_NICIDENTITY ((u16)0xFD0B)
503 #define HFA384x_RID_MFISUPRANGE ((u16)0xFD0C)
504 #define HFA384x_RID_CFISUPRANGE ((u16)0xFD0D)
505 #define HFA384x_RID_CHANNELLIST ((u16)0xFD10)
506 #define HFA384x_RID_REGULATORYDOMAINS ((u16)0xFD11)
507 #define HFA384x_RID_TEMPTYPE ((u16)0xFD12)
508 #define HFA384x_RID_CIS ((u16)0xFD13)
509 #define HFA384x_RID_STAIDENTITY ((u16)0xFD20)
510 #define HFA384x_RID_STASUPRANGE ((u16)0xFD21)
511 #define HFA384x_RID_STA_MFIACTRANGES ((u16)0xFD22)
512 #define HFA384x_RID_STA_CFIACTRANGES ((u16)0xFD23)
513 #define HFA384x_RID_BUILDSEQ ((u16)0xFFFE)
514 #define HFA384x_RID_FWID ((u16)0xFFFF)
516 /*----------------------------------------------------------------------
517 Information RID Lengths: NIC Information
518 This is the length of JUST the DATA part of the RID (does not
519 include the len or code fields)
520 --------------------------------------------------------------------*/
521 #define HFA384x_RID_MAXLOADTIME_LEN ((u16)0)
522 #define HFA384x_RID_DOWNLOADBUFFER_LEN ((u16)sizeof(hfa384x_downloadbuffer_t))
523 #define HFA384x_RID_PRIIDENTITY_LEN ((u16)8)
524 #define HFA384x_RID_PRISUPRANGE_LEN ((u16)10)
525 #define HFA384x_RID_CFIACTRANGES_LEN ((u16)10)
526 #define HFA384x_RID_NICSERIALNUMBER_LEN ((u16)12)
527 #define HFA384x_RID_NICIDENTITY_LEN ((u16)8)
528 #define HFA384x_RID_MFISUPRANGE_LEN ((u16)10)
529 #define HFA384x_RID_CFISUPRANGE_LEN ((u16)10)
530 #define HFA384x_RID_CHANNELLIST_LEN ((u16)0)
531 #define HFA384x_RID_REGULATORYDOMAINS_LEN ((u16)12)
532 #define HFA384x_RID_TEMPTYPE_LEN ((u16)0)
533 #define HFA384x_RID_CIS_LEN ((u16)480)
534 #define HFA384x_RID_STAIDENTITY_LEN ((u16)8)
535 #define HFA384x_RID_STASUPRANGE_LEN ((u16)10)
536 #define HFA384x_RID_MFIACTRANGES_LEN ((u16)10)
537 #define HFA384x_RID_CFIACTRANGES2_LEN ((u16)10)
538 #define HFA384x_RID_BUILDSEQ_LEN ((u16)sizeof(hfa384x_BuildSeq_t))
539 #define HFA384x_RID_FWID_LEN ((u16)sizeof(hfa384x_FWID_t))
541 /*--------------------------------------------------------------------
542 Information RIDs: MAC Information
543 --------------------------------------------------------------------*/
544 #define HFA384x_RID_PORTSTATUS ((u16)0xFD40)
545 #define HFA384x_RID_CURRENTSSID ((u16)0xFD41)
546 #define HFA384x_RID_CURRENTBSSID ((u16)0xFD42)
547 #define HFA384x_RID_COMMSQUALITY ((u16)0xFD43)
548 #define HFA384x_RID_CURRENTTXRATE ((u16)0xFD44)
549 #define HFA384x_RID_CURRENTBCNint ((u16)0xFD45)
550 #define HFA384x_RID_CURRENTSCALETHRESH ((u16)0xFD46)
551 #define HFA384x_RID_PROTOCOLRSPTIME ((u16)0xFD47)
552 #define HFA384x_RID_SHORTRETRYLIMIT ((u16)0xFD48)
553 #define HFA384x_RID_LONGRETRYLIMIT ((u16)0xFD49)
554 #define HFA384x_RID_MAXTXLIFETIME ((u16)0xFD4A)
555 #define HFA384x_RID_MAXRXLIFETIME ((u16)0xFD4B)
556 #define HFA384x_RID_CFPOLLABLE ((u16)0xFD4C)
557 #define HFA384x_RID_AUTHALGORITHMS ((u16)0xFD4D)
558 #define HFA384x_RID_PRIVACYOPTIMP ((u16)0xFD4F)
559 #define HFA384x_RID_DBMCOMMSQUALITY ((u16)0xFD51)
560 #define HFA384x_RID_CURRENTTXRATE1 ((u16)0xFD80)
561 #define HFA384x_RID_CURRENTTXRATE2 ((u16)0xFD81)
562 #define HFA384x_RID_CURRENTTXRATE3 ((u16)0xFD82)
563 #define HFA384x_RID_CURRENTTXRATE4 ((u16)0xFD83)
564 #define HFA384x_RID_CURRENTTXRATE5 ((u16)0xFD84)
565 #define HFA384x_RID_CURRENTTXRATE6 ((u16)0xFD85)
566 #define HFA384x_RID_OWNMACADDRESS ((u16)0xFD86)
567 // #define HFA384x_RID_PCFINFO ((u16)0xFD87)
568 #define HFA384x_RID_SCANRESULTS ((u16)0xFD88) // NEW
569 #define HFA384x_RID_HOSTSCANRESULTS ((u16)0xFD89) // NEW
570 #define HFA384x_RID_AUTHENTICATIONUSED ((u16)0xFD8A) // NEW
571 #define HFA384x_RID_ASSOCIATEFAILURE ((u16)0xFD8D) // 1.8.0
573 /*--------------------------------------------------------------------
574 Information RID Lengths: MAC Information
575 This is the length of JUST the DATA part of the RID (does not
576 include the len or code fields)
577 --------------------------------------------------------------------*/
578 #define HFA384x_RID_PORTSTATUS_LEN ((u16)0)
579 #define HFA384x_RID_CURRENTSSID_LEN ((u16)34)
580 #define HFA384x_RID_CURRENTBSSID_LEN ((u16)WLAN_BSSID_LEN)
581 #define HFA384x_RID_COMMSQUALITY_LEN ((u16)sizeof(hfa384x_commsquality_t))
582 #define HFA384x_RID_DBMCOMMSQUALITY_LEN ((u16)sizeof(hfa384x_dbmcommsquality_t))
583 #define HFA384x_RID_CURRENTTXRATE_LEN ((u16)0)
584 #define HFA384x_RID_CURRENTBCNint_LEN ((u16)0)
585 #define HFA384x_RID_STACURSCALETHRESH_LEN ((u16)12)
586 #define HFA384x_RID_APCURSCALETHRESH_LEN ((u16)6)
587 #define HFA384x_RID_PROTOCOLRSPTIME_LEN ((u16)0)
588 #define HFA384x_RID_SHORTRETRYLIMIT_LEN ((u16)0)
589 #define HFA384x_RID_LONGRETRYLIMIT_LEN ((u16)0)
590 #define HFA384x_RID_MAXTXLIFETIME_LEN ((u16)0)
591 #define HFA384x_RID_MAXRXLIFETIME_LEN ((u16)0)
592 #define HFA384x_RID_CFPOLLABLE_LEN ((u16)0)
593 #define HFA384x_RID_AUTHALGORITHMS_LEN ((u16)4)
594 #define HFA384x_RID_PRIVACYOPTIMP_LEN ((u16)0)
595 #define HFA384x_RID_CURRENTTXRATE1_LEN ((u16)0)
596 #define HFA384x_RID_CURRENTTXRATE2_LEN ((u16)0)
597 #define HFA384x_RID_CURRENTTXRATE3_LEN ((u16)0)
598 #define HFA384x_RID_CURRENTTXRATE4_LEN ((u16)0)
599 #define HFA384x_RID_CURRENTTXRATE5_LEN ((u16)0)
600 #define HFA384x_RID_CURRENTTXRATE6_LEN ((u16)0)
601 #define HFA384x_RID_OWNMACADDRESS_LEN ((u16)6)
602 #define HFA384x_RID_PCFINFO_LEN ((u16)6)
603 #define HFA384x_RID_CNFAPPCFINFO_LEN ((u16)sizeof(hfa384x_PCFInfo_data_t))
604 #define HFA384x_RID_SCANREQUEST_LEN ((u16)sizeof(hfa384x_ScanRequest_data_t))
605 #define HFA384x_RID_JOINREQUEST_LEN ((u16)sizeof(hfa384x_JoinRequest_data_t))
606 #define HFA384x_RID_AUTHENTICATESTA_LEN ((u16)sizeof(hfa384x_authenticateStation_data_t))
607 #define HFA384x_RID_CHANNELINFOREQUEST_LEN ((u16)sizeof(hfa384x_ChannelInfoRequest_data_t))
608 /*--------------------------------------------------------------------
609 Information RIDs: Modem Information
610 --------------------------------------------------------------------*/
611 #define HFA384x_RID_PHYTYPE ((u16)0xFDC0)
612 #define HFA384x_RID_CURRENTCHANNEL ((u16)0xFDC1)
613 #define HFA384x_RID_CURRENTPOWERSTATE ((u16)0xFDC2)
614 #define HFA384x_RID_CCAMODE ((u16)0xFDC3)
615 #define HFA384x_RID_SUPPORTEDDATARATES ((u16)0xFDC6)
616 #define HFA384x_RID_LFOSTATUS ((u16)0xFDC7) // 1.7.1
618 /*--------------------------------------------------------------------
619 Information RID Lengths: Modem Information
620 This is the length of JUST the DATA part of the RID (does not
621 include the len or code fields)
622 --------------------------------------------------------------------*/
623 #define HFA384x_RID_PHYTYPE_LEN ((u16)0)
624 #define HFA384x_RID_CURRENTCHANNEL_LEN ((u16)0)
625 #define HFA384x_RID_CURRENTPOWERSTATE_LEN ((u16)0)
626 #define HFA384x_RID_CCAMODE_LEN ((u16)0)
627 #define HFA384x_RID_SUPPORTEDDATARATES_LEN ((u16)10)
629 /*--------------------------------------------------------------------
630 API ENHANCEMENTS (NOT ALREADY IMPLEMENTED)
631 --------------------------------------------------------------------*/
632 #define HFA384x_RID_CNFWEPDEFAULTKEYID ((u16)0xFC23)
633 #define HFA384x_RID_CNFWEPDEFAULTKEY0 ((u16)0xFC24)
634 #define HFA384x_RID_CNFWEPDEFAULTKEY1 ((u16)0xFC25)
635 #define HFA384x_RID_CNFWEPDEFAULTKEY2 ((u16)0xFC26)
636 #define HFA384x_RID_CNFWEPDEFAULTKEY3 ((u16)0xFC27)
637 #define HFA384x_RID_CNFWEPFLAGS ((u16)0xFC28)
638 #define HFA384x_RID_CNFWEPKEYMAPTABLE ((u16)0xFC29)
639 #define HFA384x_RID_CNFAUTHENTICATION ((u16)0xFC2A)
640 #define HFA384x_RID_CNFMAXASSOCSTATIONS ((u16)0xFC2B)
641 #define HFA384x_RID_CNFTXCONTROL ((u16)0xFC2C)
642 #define HFA384x_RID_CNFROAMINGMODE ((u16)0xFC2D)
643 #define HFA384x_RID_CNFHOSTAUTHASSOC ((u16)0xFC2E)
644 #define HFA384x_RID_CNFRCVCRCERROR ((u16)0xFC30)
645 // #define HFA384x_RID_CNFMMLIFE ((u16)0xFC31)
646 #define HFA384x_RID_CNFALTRETRYCNT ((u16)0xFC32)
647 #define HFA384x_RID_CNFAPBCNint ((u16)0xFC33)
648 #define HFA384x_RID_CNFAPPCFINFO ((u16)0xFC34)
649 #define HFA384x_RID_CNFSTAPCFINFO ((u16)0xFC35)
650 #define HFA384x_RID_CNFPRIORITYQUSAGE ((u16)0xFC37)
651 #define HFA384x_RID_CNFTIMCTRL ((u16)0xFC40)
652 #define HFA384x_RID_CNFTHIRTY2TALLY ((u16)0xFC42)
653 #define HFA384x_RID_CNFENHSECURITY ((u16)0xFC43)
654 #define HFA384x_RID_CNFDBMADJUST ((u16)0xFC46) // NEW
655 #define HFA384x_RID_CNFWPADATA ((u16)0xFC48) // 1.7.0
656 #define HFA384x_RID_CNFPROPOGATIONDELAY ((u16)0xFC49) // 1.7.6
657 #define HFA384x_RID_CNFSHORTPREAMBLE ((u16)0xFCB0)
658 #define HFA384x_RID_CNFEXCLONGPREAMBLE ((u16)0xFCB1)
659 #define HFA384x_RID_CNFAUTHRSPTIMEOUT ((u16)0xFCB2)
660 #define HFA384x_RID_CNFBASICRATES ((u16)0xFCB3)
661 #define HFA384x_RID_CNFSUPPRATES ((u16)0xFCB4)
662 #define HFA384x_RID_CNFFALLBACKCTRL ((u16)0xFCB5) // NEW
663 #define HFA384x_RID_WEPKEYSTATUS ((u16)0xFCB6) // NEW
664 #define HFA384x_RID_WEPKEYMAPINDEX ((u16)0xFCB7) // NEW
665 #define HFA384x_RID_BROADCASTKEYID ((u16)0xFCB8) // NEW
666 #define HFA384x_RID_ENTSECFLAGEYID ((u16)0xFCB9) // NEW
667 #define HFA384x_RID_CNFPASSIVESCANCTRL ((u16)0xFCBA) // NEW STA
668 #define HFA384x_RID_CNFWPAHANDLING ((u16)0xFCBB) // 1.7.0
669 #define HFA384x_RID_MDCCONTROL ((u16)0xFCBC) // 1.7.0/1.4.0
670 #define HFA384x_RID_MDCCOUNTRY ((u16)0xFCBD) // 1.7.0/1.4.0
671 #define HFA384x_RID_TXPOWERMAX ((u16)0xFCBE) // 1.7.0/1.4.0
672 #define HFA384x_RID_CNFLFOENBLED ((u16)0xFCBF) // 1.6.3
673 #define HFA384x_RID_CAPINFO ((u16)0xFCC0) // 1.7.0/1.3.7
674 #define HFA384x_RID_LISTENintERVAL ((u16)0xFCC1) // 1.7.0/1.3.7
675 #define HFA384x_RID_DIVERSITYENABLED ((u16)0xFCC2) // 1.7.0/1.3.7
676 #define HFA384x_RID_LED_CONTROL ((u16)0xFCC4) // 1.7.6
677 #define HFA384x_RID_HFO_DELAY ((u16)0xFCC5) // 1.7.6
678 #define HFA384x_RID_DISSALOWEDBSSID ((u16)0xFCC6) // 1.8.0
679 #define HFA384x_RID_SCANREQUEST ((u16)0xFCE1)
680 #define HFA384x_RID_JOINREQUEST ((u16)0xFCE2)
681 #define HFA384x_RID_AUTHENTICATESTA ((u16)0xFCE3)
682 #define HFA384x_RID_CHANNELINFOREQUEST ((u16)0xFCE4)
683 #define HFA384x_RID_HOSTSCAN ((u16)0xFCE5) // NEW STA
684 #define HFA384x_RID_ASSOCIATESTA ((u16)0xFCE6)
686 #define HFA384x_RID_CNFWEPDEFAULTKEY_LEN ((u16)6)
687 #define HFA384x_RID_CNFWEP128DEFAULTKEY_LEN ((u16)14)
688 #define HFA384x_RID_CNFPRIOQUSAGE_LEN ((u16)4)
689 /*--------------------------------------------------------------------
691 --------------------------------------------------------------------*/
692 #define HFA384x_PDR_PCB_PARTNUM ((u16)0x0001)
693 #define HFA384x_PDR_PDAVER ((u16)0x0002)
694 #define HFA384x_PDR_NIC_SERIAL ((u16)0x0003)
695 #define HFA384x_PDR_MKK_MEASUREMENTS ((u16)0x0004)
696 #define HFA384x_PDR_NIC_RAMSIZE ((u16)0x0005)
697 #define HFA384x_PDR_MFISUPRANGE ((u16)0x0006)
698 #define HFA384x_PDR_CFISUPRANGE ((u16)0x0007)
699 #define HFA384x_PDR_NICID ((u16)0x0008)
700 //#define HFA384x_PDR_REFDAC_MEASUREMENTS ((u16)0x0010)
701 //#define HFA384x_PDR_VGDAC_MEASUREMENTS ((u16)0x0020)
702 //#define HFA384x_PDR_LEVEL_COMP_MEASUREMENTS ((u16)0x0030)
703 //#define HFA384x_PDR_MODEM_TRIMDAC_MEASUREMENTS ((u16)0x0040)
704 //#define HFA384x_PDR_COREGA_HACK ((u16)0x00ff)
705 #define HFA384x_PDR_MAC_ADDRESS ((u16)0x0101)
706 //#define HFA384x_PDR_MKK_CALLNAME ((u16)0x0102)
707 #define HFA384x_PDR_REGDOMAIN ((u16)0x0103)
708 #define HFA384x_PDR_ALLOWED_CHANNEL ((u16)0x0104)
709 #define HFA384x_PDR_DEFAULT_CHANNEL ((u16)0x0105)
710 //#define HFA384x_PDR_PRIVACY_OPTION ((u16)0x0106)
711 #define HFA384x_PDR_TEMPTYPE ((u16)0x0107)
712 //#define HFA384x_PDR_REFDAC_SETUP ((u16)0x0110)
713 //#define HFA384x_PDR_VGDAC_SETUP ((u16)0x0120)
714 //#define HFA384x_PDR_LEVEL_COMP_SETUP ((u16)0x0130)
715 //#define HFA384x_PDR_TRIMDAC_SETUP ((u16)0x0140)
716 #define HFA384x_PDR_IFR_SETTING ((u16)0x0200)
717 #define HFA384x_PDR_RFR_SETTING ((u16)0x0201)
718 #define HFA384x_PDR_HFA3861_BASELINE ((u16)0x0202)
719 #define HFA384x_PDR_HFA3861_SHADOW ((u16)0x0203)
720 #define HFA384x_PDR_HFA3861_IFRF ((u16)0x0204)
721 #define HFA384x_PDR_HFA3861_CHCALSP ((u16)0x0300)
722 #define HFA384x_PDR_HFA3861_CHCALI ((u16)0x0301)
723 #define HFA384x_PDR_MAX_TX_POWER ((u16)0x0302)
724 #define HFA384x_PDR_MASTER_CHAN_LIST ((u16)0x0303)
725 #define HFA384x_PDR_3842_NIC_CONFIG ((u16)0x0400)
726 #define HFA384x_PDR_USB_ID ((u16)0x0401)
727 #define HFA384x_PDR_PCI_ID ((u16)0x0402)
728 #define HFA384x_PDR_PCI_IFCONF ((u16)0x0403)
729 #define HFA384x_PDR_PCI_PMCONF ((u16)0x0404)
730 #define HFA384x_PDR_RFENRGY ((u16)0x0406)
731 #define HFA384x_PDR_USB_POWER_TYPE ((u16)0x0407)
732 //#define HFA384x_PDR_UNKNOWN408 ((u16)0x0408)
733 #define HFA384x_PDR_USB_MAX_POWER ((u16)0x0409)
734 #define HFA384x_PDR_USB_MANUFACTURER ((u16)0x0410)
735 #define HFA384x_PDR_USB_PRODUCT ((u16)0x0411)
736 #define HFA384x_PDR_ANT_DIVERSITY ((u16)0x0412)
737 #define HFA384x_PDR_HFO_DELAY ((u16)0x0413)
738 #define HFA384x_PDR_SCALE_THRESH ((u16)0x0414)
740 #define HFA384x_PDR_HFA3861_MANF_TESTSP ((u16)0x0900)
741 #define HFA384x_PDR_HFA3861_MANF_TESTI ((u16)0x0901)
742 #define HFA384x_PDR_END_OF_PDA ((u16)0x0000)
745 /*=============================================================*/
746 /*------ Macros -----------------------------------------------*/
748 /*--- Register ID macros ------------------------*/
750 #define HFA384x_CMD HFA384x_CMD_OFF
751 #define HFA384x_PARAM0 HFA384x_PARAM0_OFF
752 #define HFA384x_PARAM1 HFA384x_PARAM1_OFF
753 #define HFA384x_PARAM2 HFA384x_PARAM2_OFF
754 #define HFA384x_STATUS HFA384x_STATUS_OFF
755 #define HFA384x_RESP0 HFA384x_RESP0_OFF
756 #define HFA384x_RESP1 HFA384x_RESP1_OFF
757 #define HFA384x_RESP2 HFA384x_RESP2_OFF
758 #define HFA384x_INFOFID HFA384x_INFOFID_OFF
759 #define HFA384x_RXFID HFA384x_RXFID_OFF
760 #define HFA384x_ALLOCFID HFA384x_ALLOCFID_OFF
761 #define HFA384x_TXCOMPLFID HFA384x_TXCOMPLFID_OFF
762 #define HFA384x_SELECT0 HFA384x_SELECT0_OFF
763 #define HFA384x_OFFSET0 HFA384x_OFFSET0_OFF
764 #define HFA384x_DATA0 HFA384x_DATA0_OFF
765 #define HFA384x_SELECT1 HFA384x_SELECT1_OFF
766 #define HFA384x_OFFSET1 HFA384x_OFFSET1_OFF
767 #define HFA384x_DATA1 HFA384x_DATA1_OFF
768 #define HFA384x_EVSTAT HFA384x_EVSTAT_OFF
769 #define HFA384x_intEN HFA384x_INTEN_OFF
770 #define HFA384x_EVACK HFA384x_EVACK_OFF
771 #define HFA384x_CONTROL HFA384x_CONTROL_OFF
772 #define HFA384x_SWSUPPORT0 HFA384x_SWSUPPORT0_OFF
773 #define HFA384x_SWSUPPORT1 HFA384x_SWSUPPORT1_OFF
774 #define HFA384x_SWSUPPORT2 HFA384x_SWSUPPORT2_OFF
775 #define HFA384x_AUXPAGE HFA384x_AUXPAGE_OFF
776 #define HFA384x_AUXOFFSET HFA384x_AUXOFFSET_OFF
777 #define HFA384x_AUXDATA HFA384x_AUXDATA_OFF
778 #define HFA384x_PCICOR HFA384x_PCICOR_OFF
779 #define HFA384x_PCIHCR HFA384x_PCIHCR_OFF
782 /*--- Register Test/Get/Set Field macros ------------------------*/
784 #define HFA384x_CMD_ISBUSY(value) ((u16)(((u16)value) & HFA384x_CMD_BUSY))
785 #define HFA384x_CMD_AINFO_GET(value) ((u16)(((u16)(value) & HFA384x_CMD_AINFO) >> 8))
786 #define HFA384x_CMD_AINFO_SET(value) ((u16)((u16)(value) << 8))
787 #define HFA384x_CMD_MACPORT_GET(value) ((u16)(HFA384x_CMD_AINFO_GET((u16)(value) & HFA384x_CMD_MACPORT)))
788 #define HFA384x_CMD_MACPORT_SET(value) ((u16)HFA384x_CMD_AINFO_SET(value))
789 #define HFA384x_CMD_ISRECL(value) ((u16)(HFA384x_CMD_AINFO_GET((u16)(value) & HFA384x_CMD_RECL)))
790 #define HFA384x_CMD_RECL_SET(value) ((u16)HFA384x_CMD_AINFO_SET(value))
791 #define HFA384x_CMD_QOS_GET(value) ((u16)((((u16)(value))&((u16)0x3000)) >> 12))
792 #define HFA384x_CMD_QOS_SET(value) ((u16)((((u16)(value)) << 12) & 0x3000))
793 #define HFA384x_CMD_ISWRITE(value) ((u16)(HFA384x_CMD_AINFO_GET((u16)(value) & HFA384x_CMD_WRITE)))
794 #define HFA384x_CMD_WRITE_SET(value) ((u16)HFA384x_CMD_AINFO_SET((u16)value))
795 #define HFA384x_CMD_PROGMODE_GET(value) ((u16)(HFA384x_CMD_AINFO_GET((u16)(value) & HFA384x_CMD_PROGMODE)))
796 #define HFA384x_CMD_PROGMODE_SET(value) ((u16)HFA384x_CMD_AINFO_SET((u16)value))
797 #define HFA384x_CMD_CMDCODE_GET(value) ((u16)(((u16)(value)) & HFA384x_CMD_CMDCODE))
798 #define HFA384x_CMD_CMDCODE_SET(value) ((u16)(value))
800 #define HFA384x_STATUS_RESULT_GET(value) ((u16)((((u16)(value)) & HFA384x_STATUS_RESULT) >> 8))
801 #define HFA384x_STATUS_RESULT_SET(value) (((u16)(value)) << 8)
802 #define HFA384x_STATUS_CMDCODE_GET(value) (((u16)(value)) & HFA384x_STATUS_CMDCODE)
803 #define HFA384x_STATUS_CMDCODE_SET(value) ((u16)(value))
805 #define HFA384x_OFFSET_ISBUSY(value) ((u16)(((u16)(value)) & HFA384x_OFFSET_BUSY))
806 #define HFA384x_OFFSET_ISERR(value) ((u16)(((u16)(value)) & HFA384x_OFFSET_ERR))
807 #define HFA384x_OFFSET_DATAOFF_GET(value) ((u16)(((u16)(value)) & HFA384x_OFFSET_DATAOFF))
808 #define HFA384x_OFFSET_DATAOFF_SET(value) ((u16)(value))
810 #define HFA384x_EVSTAT_ISTICK(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_TICK))
811 #define HFA384x_EVSTAT_ISWTERR(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_WTERR))
812 #define HFA384x_EVSTAT_ISINFDROP(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_INFDROP))
813 #define HFA384x_EVSTAT_ISINFO(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_INFO))
814 #define HFA384x_EVSTAT_ISDTIM(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_DTIM))
815 #define HFA384x_EVSTAT_ISCMD(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_CMD))
816 #define HFA384x_EVSTAT_ISALLOC(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_ALLOC))
817 #define HFA384x_EVSTAT_ISTXEXC(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_TXEXC))
818 #define HFA384x_EVSTAT_ISTX(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_TX))
819 #define HFA384x_EVSTAT_ISRX(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_RX))
821 #define HFA384x_EVSTAT_ISBAP_OP(value) ((u16)(((u16)(value)) & HFA384x_int_BAP_OP))
823 #define HFA384x_intEN_ISTICK(value) ((u16)(((u16)(value)) & HFA384x_INTEN_TICK))
824 #define HFA384x_intEN_TICK_SET(value) ((u16)(((u16)(value)) << 15))
825 #define HFA384x_intEN_ISWTERR(value) ((u16)(((u16)(value)) & HFA384x_INTEN_WTERR))
826 #define HFA384x_intEN_WTERR_SET(value) ((u16)(((u16)(value)) << 14))
827 #define HFA384x_intEN_ISINFDROP(value) ((u16)(((u16)(value)) & HFA384x_INTEN_INFDROP))
828 #define HFA384x_intEN_INFDROP_SET(value) ((u16)(((u16)(value)) << 13))
829 #define HFA384x_intEN_ISINFO(value) ((u16)(((u16)(value)) & HFA384x_INTEN_INFO))
830 #define HFA384x_intEN_INFO_SET(value) ((u16)(((u16)(value)) << 7))
831 #define HFA384x_intEN_ISDTIM(value) ((u16)(((u16)(value)) & HFA384x_INTEN_DTIM))
832 #define HFA384x_intEN_DTIM_SET(value) ((u16)(((u16)(value)) << 5))
833 #define HFA384x_intEN_ISCMD(value) ((u16)(((u16)(value)) & HFA384x_INTEN_CMD))
834 #define HFA384x_intEN_CMD_SET(value) ((u16)(((u16)(value)) << 4))
835 #define HFA384x_intEN_ISALLOC(value) ((u16)(((u16)(value)) & HFA384x_INTEN_ALLOC))
836 #define HFA384x_intEN_ALLOC_SET(value) ((u16)(((u16)(value)) << 3))
837 #define HFA384x_intEN_ISTXEXC(value) ((u16)(((u16)(value)) & HFA384x_INTEN_TXEXC))
838 #define HFA384x_intEN_TXEXC_SET(value) ((u16)(((u16)(value)) << 2))
839 #define HFA384x_intEN_ISTX(value) ((u16)(((u16)(value)) & HFA384x_INTEN_TX))
840 #define HFA384x_intEN_TX_SET(value) ((u16)(((u16)(value)) << 1))
841 #define HFA384x_intEN_ISRX(value) ((u16)(((u16)(value)) & HFA384x_INTEN_RX))
842 #define HFA384x_intEN_RX_SET(value) ((u16)(((u16)(value)) << 0))
844 #define HFA384x_EVACK_ISTICK(value) ((u16)(((u16)(value)) & HFA384x_EVACK_TICK))
845 #define HFA384x_EVACK_TICK_SET(value) ((u16)(((u16)(value)) << 15))
846 #define HFA384x_EVACK_ISWTERR(value) ((u16)(((u16)(value)) & HFA384x_EVACK_WTERR))
847 #define HFA384x_EVACK_WTERR_SET(value) ((u16)(((u16)(value)) << 14))
848 #define HFA384x_EVACK_ISINFDROP(value) ((u16)(((u16)(value)) & HFA384x_EVACK_INFDROP))
849 #define HFA384x_EVACK_INFDROP_SET(value) ((u16)(((u16)(value)) << 13))
850 #define HFA384x_EVACK_ISINFO(value) ((u16)(((u16)(value)) & HFA384x_EVACK_INFO))
851 #define HFA384x_EVACK_INFO_SET(value) ((u16)(((u16)(value)) << 7))
852 #define HFA384x_EVACK_ISDTIM(value) ((u16)(((u16)(value)) & HFA384x_EVACK_DTIM))
853 #define HFA384x_EVACK_DTIM_SET(value) ((u16)(((u16)(value)) << 5))
854 #define HFA384x_EVACK_ISCMD(value) ((u16)(((u16)(value)) & HFA384x_EVACK_CMD))
855 #define HFA384x_EVACK_CMD_SET(value) ((u16)(((u16)(value)) << 4))
856 #define HFA384x_EVACK_ISALLOC(value) ((u16)(((u16)(value)) & HFA384x_EVACK_ALLOC))
857 #define HFA384x_EVACK_ALLOC_SET(value) ((u16)(((u16)(value)) << 3))
858 #define HFA384x_EVACK_ISTXEXC(value) ((u16)(((u16)(value)) & HFA384x_EVACK_TXEXC))
859 #define HFA384x_EVACK_TXEXC_SET(value) ((u16)(((u16)(value)) << 2))
860 #define HFA384x_EVACK_ISTX(value) ((u16)(((u16)(value)) & HFA384x_EVACK_TX))
861 #define HFA384x_EVACK_TX_SET(value) ((u16)(((u16)(value)) << 1))
862 #define HFA384x_EVACK_ISRX(value) ((u16)(((u16)(value)) & HFA384x_EVACK_RX))
863 #define HFA384x_EVACK_RX_SET(value) ((u16)(((u16)(value)) << 0))
865 #define HFA384x_CONTROL_AUXEN_SET(value) ((u16)(((u16)(value)) << 14))
866 #define HFA384x_CONTROL_AUXEN_GET(value) ((u16)(((u16)(value)) >> 14))
870 #define hfa384x2host_16(n) (__le16_to_cpu((u16)(n)))
871 #define hfa384x2host_32(n) (__le32_to_cpu((u32)(n)))
872 #define host2hfa384x_16(n) (__cpu_to_le16((u16)(n)))
873 #define host2hfa384x_32(n) (__cpu_to_le32((u32)(n)))
876 /* Host Maintained State Info */
877 #define HFA384x_STATE_PREINIT 0
878 #define HFA384x_STATE_INIT 1
879 #define HFA384x_STATE_RUNNING 2
881 /*=============================================================*/
882 /*------ Types and their related constants --------------------*/
884 #define HFA384x_HOSTAUTHASSOC_HOSTAUTH BIT0
885 #define HFA384x_HOSTAUTHASSOC_HOSTASSOC BIT1
887 #define HFA384x_WHAHANDLING_DISABLED 0
888 #define HFA384x_WHAHANDLING_PASSTHROUGH BIT1
890 /*-------------------------------------------------------------*/
891 /* Commonly used basic types */
892 typedef struct hfa384x_bytestr
896 } __WLAN_ATTRIB_PACK__ hfa384x_bytestr_t
;
898 typedef struct hfa384x_bytestr32
902 } __WLAN_ATTRIB_PACK__ hfa384x_bytestr32_t
;
904 /*--------------------------------------------------------------------
905 Configuration Record Structures:
906 Network Parameters, Static Configuration Entities
907 --------------------------------------------------------------------*/
908 /* Prototype structure: all configuration record structures start with
911 typedef struct hfa384x_record
915 } __WLAN_ATTRIB_PACK__ hfa384x_rec_t
;
917 typedef struct hfa384x_record16
922 } __WLAN_ATTRIB_PACK__ hfa384x_rec16_t
;
924 typedef struct hfa384x_record32
929 } __WLAN_ATTRIB_PACK__ hfa384x_rec32
;
931 /*-- Hardware/Firmware Component Information ----------*/
932 typedef struct hfa384x_compident
938 } __WLAN_ATTRIB_PACK__ hfa384x_compident_t
;
940 typedef struct hfa384x_caplevel
947 } __WLAN_ATTRIB_PACK__ hfa384x_caplevel_t
;
949 /*-- Configuration Record: cnfPortType --*/
950 typedef struct hfa384x_cnfPortType
953 } __WLAN_ATTRIB_PACK__ hfa384x_cnfPortType_t
;
955 /*-- Configuration Record: cnfOwnMACAddress --*/
956 typedef struct hfa384x_cnfOwnMACAddress
958 u8 cnfOwnMACAddress
[6];
959 } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnMACAddress_t
;
961 /*-- Configuration Record: cnfDesiredSSID --*/
962 typedef struct hfa384x_cnfDesiredSSID
964 u8 cnfDesiredSSID
[34];
965 } __WLAN_ATTRIB_PACK__ hfa384x_cnfDesiredSSID_t
;
967 /*-- Configuration Record: cnfOwnChannel --*/
968 typedef struct hfa384x_cnfOwnChannel
971 } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnChannel_t
;
973 /*-- Configuration Record: cnfOwnSSID --*/
974 typedef struct hfa384x_cnfOwnSSID
977 } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnSSID_t
;
979 /*-- Configuration Record: cnfOwnATIMWindow --*/
980 typedef struct hfa384x_cnfOwnATIMWindow
982 u16 cnfOwnATIMWindow
;
983 } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnATIMWindow_t
;
985 /*-- Configuration Record: cnfSystemScale --*/
986 typedef struct hfa384x_cnfSystemScale
989 } __WLAN_ATTRIB_PACK__ hfa384x_cnfSystemScale_t
;
991 /*-- Configuration Record: cnfMaxDataLength --*/
992 typedef struct hfa384x_cnfMaxDataLength
994 u16 cnfMaxDataLength
;
995 } __WLAN_ATTRIB_PACK__ hfa384x_cnfMaxDataLength_t
;
997 /*-- Configuration Record: cnfWDSAddress --*/
998 typedef struct hfa384x_cnfWDSAddress
1000 u8 cnfWDSAddress
[6];
1001 } __WLAN_ATTRIB_PACK__ hfa384x_cnfWDSAddress_t
;
1003 /*-- Configuration Record: cnfPMEnabled --*/
1004 typedef struct hfa384x_cnfPMEnabled
1007 } __WLAN_ATTRIB_PACK__ hfa384x_cnfPMEnabled_t
;
1009 /*-- Configuration Record: cnfPMEPS --*/
1010 typedef struct hfa384x_cnfPMEPS
1013 } __WLAN_ATTRIB_PACK__ hfa384x_cnfPMEPS_t
;
1015 /*-- Configuration Record: cnfMulticastReceive --*/
1016 typedef struct hfa384x_cnfMulticastReceive
1018 u16 cnfMulticastReceive
;
1019 } __WLAN_ATTRIB_PACK__ hfa384x_cnfMulticastReceive_t
;
1021 /*-- Configuration Record: cnfAuthentication --*/
1022 #define HFA384x_CNFAUTHENTICATION_OPENSYSTEM 0x0001
1023 #define HFA384x_CNFAUTHENTICATION_SHAREDKEY 0x0002
1024 #define HFA384x_CNFAUTHENTICATION_LEAP 0x0004
1026 /*-- Configuration Record: cnfMaxSleepDuration --*/
1027 typedef struct hfa384x_cnfMaxSleepDuration
1029 u16 cnfMaxSleepDuration
;
1030 } __WLAN_ATTRIB_PACK__ hfa384x_cnfMaxSleepDuration_t
;
1032 /*-- Configuration Record: cnfPMHoldoverDuration --*/
1033 typedef struct hfa384x_cnfPMHoldoverDuration
1035 u16 cnfPMHoldoverDuration
;
1036 } __WLAN_ATTRIB_PACK__ hfa384x_cnfPMHoldoverDuration_t
;
1038 /*-- Configuration Record: cnfOwnName --*/
1039 typedef struct hfa384x_cnfOwnName
1042 } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnName_t
;
1044 /*-- Configuration Record: cnfOwnDTIMPeriod --*/
1045 typedef struct hfa384x_cnfOwnDTIMPeriod
1047 u16 cnfOwnDTIMPeriod
;
1048 } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnDTIMPeriod_t
;
1050 /*-- Configuration Record: cnfWDSAddress --*/
1051 typedef struct hfa384x_cnfWDSAddressN
1053 u8 cnfWDSAddress
[6];
1054 } __WLAN_ATTRIB_PACK__ hfa384x_cnfWDSAddressN_t
;
1056 /*-- Configuration Record: cnfMulticastPMBuffering --*/
1057 typedef struct hfa384x_cnfMulticastPMBuffering
1059 u16 cnfMulticastPMBuffering
;
1060 } __WLAN_ATTRIB_PACK__ hfa384x_cnfMulticastPMBuffering_t
;
1062 /*--------------------------------------------------------------------
1063 Configuration Record Structures:
1064 Network Parameters, Dynamic Configuration Entities
1065 --------------------------------------------------------------------*/
1067 /*-- Configuration Record: GroupAddresses --*/
1068 typedef struct hfa384x_GroupAddresses
1070 u8 MACAddress
[16][6];
1071 } __WLAN_ATTRIB_PACK__ hfa384x_GroupAddresses_t
;
1073 /*-- Configuration Record: CreateIBSS --*/
1074 typedef struct hfa384x_CreateIBSS
1077 } __WLAN_ATTRIB_PACK__ hfa384x_CreateIBSS_t
;
1079 #define HFA384x_CREATEIBSS_JOINCREATEIBSS 0
1080 #define HFA384x_CREATEIBSS_JOINESS_JOINCREATEIBSS 1
1081 #define HFA384x_CREATEIBSS_JOINIBSS 2
1082 #define HFA384x_CREATEIBSS_JOINESS_JOINIBSS 3
1084 /*-- Configuration Record: FragmentationThreshold --*/
1085 typedef struct hfa384x_FragmentationThreshold
1087 u16 FragmentationThreshold
;
1088 } __WLAN_ATTRIB_PACK__ hfa384x_FragmentationThreshold_t
;
1090 /*-- Configuration Record: RTSThreshold --*/
1091 typedef struct hfa384x_RTSThreshold
1094 } __WLAN_ATTRIB_PACK__ hfa384x_RTSThreshold_t
;
1096 /*-- Configuration Record: TxRateControl --*/
1097 typedef struct hfa384x_TxRateControl
1100 } __WLAN_ATTRIB_PACK__ hfa384x_TxRateControl_t
;
1102 /*-- Configuration Record: PromiscuousMode --*/
1103 typedef struct hfa384x_PromiscuousMode
1105 u16 PromiscuousMode
;
1106 } __WLAN_ATTRIB_PACK__ hfa384x_PromiscuousMode_t
;
1108 /*-- Configuration Record: ScanRequest (data portion only) --*/
1109 typedef struct hfa384x_ScanRequest_data
1113 } __WLAN_ATTRIB_PACK__ hfa384x_ScanRequest_data_t
;
1115 /*-- Configuration Record: HostScanRequest (data portion only) --*/
1116 typedef struct hfa384x_HostScanRequest_data
1120 hfa384x_bytestr32_t ssid
;
1121 } __WLAN_ATTRIB_PACK__ hfa384x_HostScanRequest_data_t
;
1123 /*-- Configuration Record: JoinRequest (data portion only) --*/
1124 typedef struct hfa384x_JoinRequest_data
1126 u8 bssid
[WLAN_BSSID_LEN
];
1128 } __WLAN_ATTRIB_PACK__ hfa384x_JoinRequest_data_t
;
1130 /*-- Configuration Record: authenticateStation (data portion only) --*/
1131 typedef struct hfa384x_authenticateStation_data
1133 u8 address
[WLAN_ADDR_LEN
];
1136 } __WLAN_ATTRIB_PACK__ hfa384x_authenticateStation_data_t
;
1138 /*-- Configuration Record: associateStation (data portion only) --*/
1139 typedef struct hfa384x_associateStation_data
1141 u8 address
[WLAN_ADDR_LEN
];
1144 } __WLAN_ATTRIB_PACK__ hfa384x_associateStation_data_t
;
1146 /*-- Configuration Record: ChannelInfoRequest (data portion only) --*/
1147 typedef struct hfa384x_ChannelInfoRequest_data
1150 u16 channelDwellTime
;
1151 } __WLAN_ATTRIB_PACK__ hfa384x_ChannelInfoRequest_data_t
;
1153 /*-- Configuration Record: WEPKeyMapping (data portion only) --*/
1154 typedef struct hfa384x_WEPKeyMapping
1156 u8 address
[WLAN_ADDR_LEN
];
1159 u8 mic_transmit_key
[4];
1160 u8 mic_receive_key
[4];
1161 } __WLAN_ATTRIB_PACK__ hfa384x_WEPKeyMapping_t
;
1163 /*-- Configuration Record: WPAData (data portion only) --*/
1164 typedef struct hfa384x_WPAData
1167 u8 data
[0]; // max 80
1168 } __WLAN_ATTRIB_PACK__ hfa384x_WPAData_t
;
1170 /*--------------------------------------------------------------------
1171 Configuration Record Structures: Behavior Parameters
1172 --------------------------------------------------------------------*/
1174 /*-- Configuration Record: TickTime --*/
1175 typedef struct hfa384x_TickTime
1178 } __WLAN_ATTRIB_PACK__ hfa384x_TickTime_t
;
1180 /*--------------------------------------------------------------------
1181 Information Record Structures: NIC Information
1182 --------------------------------------------------------------------*/
1184 /*-- Information Record: MaxLoadTime --*/
1185 typedef struct hfa384x_MaxLoadTime
1188 } __WLAN_ATTRIB_PACK__ hfa384x_MaxLoadTime_t
;
1190 /*-- Information Record: DownLoadBuffer --*/
1191 /* NOTE: The page and offset are in AUX format */
1192 typedef struct hfa384x_downloadbuffer
1197 } __WLAN_ATTRIB_PACK__ hfa384x_downloadbuffer_t
;
1199 /*-- Information Record: PRIIdentity --*/
1200 typedef struct hfa384x_PRIIdentity
1204 u16 PRIMajorVersion
;
1205 u16 PRIMinorVersion
;
1206 } __WLAN_ATTRIB_PACK__ hfa384x_PRIIdentity_t
;
1208 /*-- Information Record: PRISupRange --*/
1209 typedef struct hfa384x_PRISupRange
1216 } __WLAN_ATTRIB_PACK__ hfa384x_PRISupRange_t
;
1218 /*-- Information Record: CFIActRanges --*/
1219 typedef struct hfa384x_CFIActRanges
1226 } __WLAN_ATTRIB_PACK__ hfa384x_CFIActRanges_t
;
1228 /*-- Information Record: NICSerialNumber --*/
1229 typedef struct hfa384x_NICSerialNumber
1231 u8 NICSerialNumber
[12];
1232 } __WLAN_ATTRIB_PACK__ hfa384x_NICSerialNumber_t
;
1234 /*-- Information Record: NICIdentity --*/
1235 typedef struct hfa384x_NICIdentity
1239 u16 NICMajorVersion
;
1240 u16 NICMinorVersion
;
1241 } __WLAN_ATTRIB_PACK__ hfa384x_NICIdentity_t
;
1243 /*-- Information Record: MFISupRange --*/
1244 typedef struct hfa384x_MFISupRange
1251 } __WLAN_ATTRIB_PACK__ hfa384x_MFISupRange_t
;
1253 /*-- Information Record: CFISupRange --*/
1254 typedef struct hfa384x_CFISupRange
1261 } __WLAN_ATTRIB_PACK__ hfa384x_CFISupRange_t
;
1263 /*-- Information Record: BUILDSEQ:BuildSeq --*/
1264 typedef struct hfa384x_BuildSeq
{
1267 } __WLAN_ATTRIB_PACK__ hfa384x_BuildSeq_t
;
1269 /*-- Information Record: FWID --*/
1270 #define HFA384x_FWID_LEN 14
1271 typedef struct hfa384x_FWID
{
1272 u8 primary
[HFA384x_FWID_LEN
];
1273 u8 secondary
[HFA384x_FWID_LEN
];
1274 } __WLAN_ATTRIB_PACK__ hfa384x_FWID_t
;
1276 /*-- Information Record: ChannelList --*/
1277 typedef struct hfa384x_ChannelList
1280 } __WLAN_ATTRIB_PACK__ hfa384x_ChannelList_t
;
1282 /*-- Information Record: RegulatoryDomains --*/
1283 typedef struct hfa384x_RegulatoryDomains
1285 u8 RegulatoryDomains
[12];
1286 } __WLAN_ATTRIB_PACK__ hfa384x_RegulatoryDomains_t
;
1288 /*-- Information Record: TempType --*/
1289 typedef struct hfa384x_TempType
1292 } __WLAN_ATTRIB_PACK__ hfa384x_TempType_t
;
1294 /*-- Information Record: CIS --*/
1295 typedef struct hfa384x_CIS
1298 } __WLAN_ATTRIB_PACK__ hfa384x_CIS_t
;
1300 /*-- Information Record: STAIdentity --*/
1301 typedef struct hfa384x_STAIdentity
1305 u16 STAMajorVersion
;
1306 u16 STAMinorVersion
;
1307 } __WLAN_ATTRIB_PACK__ hfa384x_STAIdentity_t
;
1309 /*-- Information Record: STASupRange --*/
1310 typedef struct hfa384x_STASupRange
1317 } __WLAN_ATTRIB_PACK__ hfa384x_STASupRange_t
;
1319 /*-- Information Record: MFIActRanges --*/
1320 typedef struct hfa384x_MFIActRanges
1327 } __WLAN_ATTRIB_PACK__ hfa384x_MFIActRanges_t
;
1329 /*--------------------------------------------------------------------
1330 Information Record Structures: NIC Information
1331 --------------------------------------------------------------------*/
1333 /*-- Information Record: PortStatus --*/
1334 typedef struct hfa384x_PortStatus
1337 } __WLAN_ATTRIB_PACK__ hfa384x_PortStatus_t
;
1339 #define HFA384x_PSTATUS_DISABLED ((u16)1)
1340 #define HFA384x_PSTATUS_SEARCHING ((u16)2)
1341 #define HFA384x_PSTATUS_CONN_IBSS ((u16)3)
1342 #define HFA384x_PSTATUS_CONN_ESS ((u16)4)
1343 #define HFA384x_PSTATUS_OUTOFRANGE ((u16)5)
1344 #define HFA384x_PSTATUS_CONN_WDS ((u16)6)
1346 /*-- Information Record: CurrentSSID --*/
1347 typedef struct hfa384x_CurrentSSID
1350 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentSSID_t
;
1352 /*-- Information Record: CurrentBSSID --*/
1353 typedef struct hfa384x_CurrentBSSID
1356 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentBSSID_t
;
1358 /*-- Information Record: commsquality --*/
1359 typedef struct hfa384x_commsquality
1364 } __WLAN_ATTRIB_PACK__ hfa384x_commsquality_t
;
1366 /*-- Information Record: dmbcommsquality --*/
1367 typedef struct hfa384x_dbmcommsquality
1372 } __WLAN_ATTRIB_PACK__ hfa384x_dbmcommsquality_t
;
1374 /*-- Information Record: CurrentTxRate --*/
1375 typedef struct hfa384x_CurrentTxRate
1378 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentTxRate_t
;
1380 /*-- Information Record: CurrentBeaconInterval --*/
1381 typedef struct hfa384x_CurrentBeaconInterval
1383 u16 CurrentBeaconInterval
;
1384 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentBeaconInterval_t
;
1386 /*-- Information Record: CurrentScaleThresholds --*/
1387 typedef struct hfa384x_CurrentScaleThresholds
1389 u16 EnergyDetectThreshold
;
1390 u16 CarrierDetectThreshold
;
1391 u16 DeferDetectThreshold
;
1392 u16 CellSearchThreshold
; /* Stations only */
1393 u16 DeadSpotThreshold
; /* Stations only */
1394 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentScaleThresholds_t
;
1396 /*-- Information Record: ProtocolRspTime --*/
1397 typedef struct hfa384x_ProtocolRspTime
1399 u16 ProtocolRspTime
;
1400 } __WLAN_ATTRIB_PACK__ hfa384x_ProtocolRspTime_t
;
1402 /*-- Information Record: ShortRetryLimit --*/
1403 typedef struct hfa384x_ShortRetryLimit
1405 u16 ShortRetryLimit
;
1406 } __WLAN_ATTRIB_PACK__ hfa384x_ShortRetryLimit_t
;
1408 /*-- Information Record: LongRetryLimit --*/
1409 typedef struct hfa384x_LongRetryLimit
1412 } __WLAN_ATTRIB_PACK__ hfa384x_LongRetryLimit_t
;
1414 /*-- Information Record: MaxTransmitLifetime --*/
1415 typedef struct hfa384x_MaxTransmitLifetime
1417 u16 MaxTransmitLifetime
;
1418 } __WLAN_ATTRIB_PACK__ hfa384x_MaxTransmitLifetime_t
;
1420 /*-- Information Record: MaxReceiveLifetime --*/
1421 typedef struct hfa384x_MaxReceiveLifetime
1423 u16 MaxReceiveLifetime
;
1424 } __WLAN_ATTRIB_PACK__ hfa384x_MaxReceiveLifetime_t
;
1426 /*-- Information Record: CFPollable --*/
1427 typedef struct hfa384x_CFPollable
1430 } __WLAN_ATTRIB_PACK__ hfa384x_CFPollable_t
;
1432 /*-- Information Record: AuthenticationAlgorithms --*/
1433 typedef struct hfa384x_AuthenticationAlgorithms
1435 u16 AuthenticationType
;
1437 } __WLAN_ATTRIB_PACK__ hfa384x_AuthenticationAlgorithms_t
;
1439 /*-- Information Record: AuthenticationAlgorithms
1441 typedef struct hfa384x_AuthenticationAlgorithms_data
1443 u16 AuthenticationType
;
1445 } __WLAN_ATTRIB_PACK__ hfa384x_AuthenticationAlgorithms_data_t
;
1447 /*-- Information Record: PrivacyOptionImplemented --*/
1448 typedef struct hfa384x_PrivacyOptionImplemented
1450 u16 PrivacyOptionImplemented
;
1451 } __WLAN_ATTRIB_PACK__ hfa384x_PrivacyOptionImplemented_t
;
1453 /*-- Information Record: OwnMACAddress --*/
1454 typedef struct hfa384x_OwnMACAddress
1456 u8 OwnMACAddress
[6];
1457 } __WLAN_ATTRIB_PACK__ hfa384x_OwnMACAddress_t
;
1459 /*-- Information Record: PCFInfo --*/
1460 typedef struct hfa384x_PCFInfo
1462 u16 MediumOccupancyLimit
;
1466 } __WLAN_ATTRIB_PACK__ hfa384x_PCFInfo_t
;
1468 /*-- Information Record: PCFInfo (data portion only) --*/
1469 typedef struct hfa384x_PCFInfo_data
1471 u16 MediumOccupancyLimit
;
1475 } __WLAN_ATTRIB_PACK__ hfa384x_PCFInfo_data_t
;
1477 /*--------------------------------------------------------------------
1478 Information Record Structures: Modem Information Records
1479 --------------------------------------------------------------------*/
1481 /*-- Information Record: PHYType --*/
1482 typedef struct hfa384x_PHYType
1485 } __WLAN_ATTRIB_PACK__ hfa384x_PHYType_t
;
1487 /*-- Information Record: CurrentChannel --*/
1488 typedef struct hfa384x_CurrentChannel
1491 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentChannel_t
;
1493 /*-- Information Record: CurrentPowerState --*/
1494 typedef struct hfa384x_CurrentPowerState
1496 u16 CurrentPowerState
;
1497 } __WLAN_ATTRIB_PACK__ hfa384x_CurrentPowerState_t
;
1499 /*-- Information Record: CCAMode --*/
1500 typedef struct hfa384x_CCAMode
1503 } __WLAN_ATTRIB_PACK__ hfa384x_CCAMode_t
;
1505 /*-- Information Record: SupportedDataRates --*/
1506 typedef struct hfa384x_SupportedDataRates
1508 u8 SupportedDataRates
[10];
1509 } __WLAN_ATTRIB_PACK__ hfa384x_SupportedDataRates_t
;
1511 /*-- Information Record: LFOStatus --*/
1512 typedef struct hfa384x_LFOStatus
1517 } __WLAN_ATTRIB_PACK__ hfa384x_LFOStatus_t
;
1519 #define HFA384x_TESTRESULT_ALLPASSED BIT0
1520 #define HFA384x_TESTRESULT_LFO_FAIL BIT1
1521 #define HFA384x_TESTRESULT_VR_HF0_FAIL BIT2
1522 #define HFA384x_HOST_FIRM_COORDINATE BIT7
1523 #define HFA384x_TESTRESULT_COORDINATE BIT15
1525 /*-- Information Record: LEDControl --*/
1526 typedef struct hfa384x_LEDControl
1533 } __WLAN_ATTRIB_PACK__ hfa384x_LEDControl_t
;
1535 /*--------------------------------------------------------------------
1536 FRAME DESCRIPTORS AND FRAME STRUCTURES
1538 FRAME DESCRIPTORS: Offsets
1540 ----------------------------------------------------------------------
1541 Control Info (offset 44-51)
1542 --------------------------------------------------------------------*/
1543 #define HFA384x_FD_STATUS_OFF ((u16)0x44)
1544 #define HFA384x_FD_TIME_OFF ((u16)0x46)
1545 #define HFA384x_FD_SWSUPPORT_OFF ((u16)0x4A)
1546 #define HFA384x_FD_SILENCE_OFF ((u16)0x4A)
1547 #define HFA384x_FD_SIGNAL_OFF ((u16)0x4B)
1548 #define HFA384x_FD_RATE_OFF ((u16)0x4C)
1549 #define HFA384x_FD_RXFLOW_OFF ((u16)0x4D)
1550 #define HFA384x_FD_RESERVED_OFF ((u16)0x4E)
1551 #define HFA384x_FD_TXCONTROL_OFF ((u16)0x50)
1552 /*--------------------------------------------------------------------
1553 802.11 Header (offset 52-6B)
1554 --------------------------------------------------------------------*/
1555 #define HFA384x_FD_FRAMECONTROL_OFF ((u16)0x52)
1556 #define HFA384x_FD_DURATIONID_OFF ((u16)0x54)
1557 #define HFA384x_FD_ADDRESS1_OFF ((u16)0x56)
1558 #define HFA384x_FD_ADDRESS2_OFF ((u16)0x5C)
1559 #define HFA384x_FD_ADDRESS3_OFF ((u16)0x62)
1560 #define HFA384x_FD_SEQCONTROL_OFF ((u16)0x68)
1561 #define HFA384x_FD_ADDRESS4_OFF ((u16)0x6A)
1562 #define HFA384x_FD_DATALEN_OFF ((u16)0x70)
1563 /*--------------------------------------------------------------------
1564 802.3 Header (offset 72-7F)
1565 --------------------------------------------------------------------*/
1566 #define HFA384x_FD_DESTADDRESS_OFF ((u16)0x72)
1567 #define HFA384x_FD_SRCADDRESS_OFF ((u16)0x78)
1568 #define HFA384x_FD_DATALENGTH_OFF ((u16)0x7E)
1570 /*--------------------------------------------------------------------
1571 FRAME STRUCTURES: Communication Frames
1572 ----------------------------------------------------------------------
1573 Communication Frames: Transmit Frames
1574 --------------------------------------------------------------------*/
1575 /*-- Communication Frame: Transmit Frame Structure --*/
1576 typedef struct hfa384x_tx_frame
1586 /*-- 802.11 Header Information --*/
1593 u16 sequence_control
;
1595 u16 data_len
; /* little endian format */
1597 /*-- 802.3 Header Information --*/
1601 u16 data_length
; /* big endian format */
1602 } __WLAN_ATTRIB_PACK__ hfa384x_tx_frame_t
;
1603 /*--------------------------------------------------------------------
1604 Communication Frames: Field Masks for Transmit Frames
1605 --------------------------------------------------------------------*/
1606 /*-- Status Field --*/
1607 #define HFA384x_TXSTATUS_ACKERR ((u16)BIT5)
1608 #define HFA384x_TXSTATUS_FORMERR ((u16)BIT3)
1609 #define HFA384x_TXSTATUS_DISCON ((u16)BIT2)
1610 #define HFA384x_TXSTATUS_AGEDERR ((u16)BIT1)
1611 #define HFA384x_TXSTATUS_RETRYERR ((u16)BIT0)
1612 /*-- Transmit Control Field --*/
1613 #define HFA384x_TX_CFPOLL ((u16)BIT12)
1614 #define HFA384x_TX_PRST ((u16)BIT11)
1615 #define HFA384x_TX_MACPORT ((u16)(BIT10 | BIT9 | BIT8))
1616 #define HFA384x_TX_NOENCRYPT ((u16)BIT7)
1617 #define HFA384x_TX_RETRYSTRAT ((u16)(BIT6 | BIT5))
1618 #define HFA384x_TX_STRUCTYPE ((u16)(BIT4 | BIT3))
1619 #define HFA384x_TX_TXEX ((u16)BIT2)
1620 #define HFA384x_TX_TXOK ((u16)BIT1)
1621 /*--------------------------------------------------------------------
1622 Communication Frames: Test/Get/Set Field Values for Transmit Frames
1623 --------------------------------------------------------------------*/
1624 /*-- Status Field --*/
1625 #define HFA384x_TXSTATUS_ISERROR(v) \
1627 (HFA384x_TXSTATUS_ACKERR|HFA384x_TXSTATUS_FORMERR|\
1628 HFA384x_TXSTATUS_DISCON|HFA384x_TXSTATUS_AGEDERR|\
1629 HFA384x_TXSTATUS_RETRYERR))
1631 #define HFA384x_TXSTATUS_ISACKERR(v) ((u16)(((u16)(v)) & HFA384x_TXSTATUS_ACKERR))
1632 #define HFA384x_TXSTATUS_ISFORMERR(v) ((u16)(((u16)(v)) & HFA384x_TXSTATUS_FORMERR))
1633 #define HFA384x_TXSTATUS_ISDISCON(v) ((u16)(((u16)(v)) & HFA384x_TXSTATUS_DISCON))
1634 #define HFA384x_TXSTATUS_ISAGEDERR(v) ((u16)(((u16)(v)) & HFA384x_TXSTATUS_AGEDERR))
1635 #define HFA384x_TXSTATUS_ISRETRYERR(v) ((u16)(((u16)(v)) & HFA384x_TXSTATUS_RETRYERR))
1637 #define HFA384x_TX_GET(v,m,s) ((((u16)(v))&((u16)(m)))>>((u16)(s)))
1638 #define HFA384x_TX_SET(v,m,s) ((((u16)(v))<<((u16)(s)))&((u16)(m)))
1640 #define HFA384x_TX_CFPOLL_GET(v) HFA384x_TX_GET(v, HFA384x_TX_CFPOLL,12)
1641 #define HFA384x_TX_CFPOLL_SET(v) HFA384x_TX_SET(v, HFA384x_TX_CFPOLL,12)
1642 #define HFA384x_TX_PRST_GET(v) HFA384x_TX_GET(v, HFA384x_TX_PRST,11)
1643 #define HFA384x_TX_PRST_SET(v) HFA384x_TX_SET(v, HFA384x_TX_PRST,11)
1644 #define HFA384x_TX_MACPORT_GET(v) HFA384x_TX_GET(v, HFA384x_TX_MACPORT, 8)
1645 #define HFA384x_TX_MACPORT_SET(v) HFA384x_TX_SET(v, HFA384x_TX_MACPORT, 8)
1646 #define HFA384x_TX_NOENCRYPT_GET(v) HFA384x_TX_GET(v, HFA384x_TX_NOENCRYPT, 7)
1647 #define HFA384x_TX_NOENCRYPT_SET(v) HFA384x_TX_SET(v, HFA384x_TX_NOENCRYPT, 7)
1648 #define HFA384x_TX_RETRYSTRAT_GET(v) HFA384x_TX_GET(v, HFA384x_TX_RETRYSTRAT, 5)
1649 #define HFA384x_TX_RETRYSTRAT_SET(v) HFA384x_TX_SET(v, HFA384x_TX_RETRYSTRAT, 5)
1650 #define HFA384x_TX_STRUCTYPE_GET(v) HFA384x_TX_GET(v, HFA384x_TX_STRUCTYPE, 3)
1651 #define HFA384x_TX_STRUCTYPE_SET(v) HFA384x_TX_SET(v, HFA384x_TX_STRUCTYPE, 3)
1652 #define HFA384x_TX_TXEX_GET(v) HFA384x_TX_GET(v, HFA384x_TX_TXEX, 2)
1653 #define HFA384x_TX_TXEX_SET(v) HFA384x_TX_SET(v, HFA384x_TX_TXEX, 2)
1654 #define HFA384x_TX_TXOK_GET(v) HFA384x_TX_GET(v, HFA384x_TX_TXOK, 1)
1655 #define HFA384x_TX_TXOK_SET(v) HFA384x_TX_SET(v, HFA384x_TX_TXOK, 1)
1656 /*--------------------------------------------------------------------
1657 Communication Frames: Receive Frames
1658 --------------------------------------------------------------------*/
1659 /*-- Communication Frame: Receive Frame Structure --*/
1660 typedef struct hfa384x_rx_frame
1662 /*-- MAC rx descriptor (hfa384x byte order) --*/
1672 /*-- 802.11 Header Information (802.11 byte order) --*/
1678 u16 sequence_control
;
1680 u16 data_len
; /* hfa384x (little endian) format */
1682 /*-- 802.3 Header Information --*/
1685 u16 data_length
; /* IEEE? (big endian) format */
1686 } __WLAN_ATTRIB_PACK__ hfa384x_rx_frame_t
;
1687 /*--------------------------------------------------------------------
1688 Communication Frames: Field Masks for Receive Frames
1689 --------------------------------------------------------------------*/
1690 /*-- Offsets --------*/
1691 #define HFA384x_RX_DATA_LEN_OFF ((u16)44)
1692 #define HFA384x_RX_80211HDR_OFF ((u16)14)
1693 #define HFA384x_RX_DATA_OFF ((u16)60)
1695 /*-- Status Fields --*/
1696 #define HFA384x_RXSTATUS_MSGTYPE ((u16)(BIT15 | BIT14 | BIT13))
1697 #define HFA384x_RXSTATUS_MACPORT ((u16)(BIT10 | BIT9 | BIT8))
1698 #define HFA384x_RXSTATUS_UNDECR ((u16)BIT1)
1699 #define HFA384x_RXSTATUS_FCSERR ((u16)BIT0)
1700 /*--------------------------------------------------------------------
1701 Communication Frames: Test/Get/Set Field Values for Receive Frames
1702 --------------------------------------------------------------------*/
1703 #define HFA384x_RXSTATUS_MSGTYPE_GET(value) ((u16)((((u16)(value)) & HFA384x_RXSTATUS_MSGTYPE) >> 13))
1704 #define HFA384x_RXSTATUS_MSGTYPE_SET(value) ((u16)(((u16)(value)) << 13))
1705 #define HFA384x_RXSTATUS_MACPORT_GET(value) ((u16)((((u16)(value)) & HFA384x_RXSTATUS_MACPORT) >> 8))
1706 #define HFA384x_RXSTATUS_MACPORT_SET(value) ((u16)(((u16)(value)) << 8))
1707 #define HFA384x_RXSTATUS_ISUNDECR(value) ((u16)(((u16)(value)) & HFA384x_RXSTATUS_UNDECR))
1708 #define HFA384x_RXSTATUS_ISFCSERR(value) ((u16)(((u16)(value)) & HFA384x_RXSTATUS_FCSERR))
1709 /*--------------------------------------------------------------------
1710 FRAME STRUCTURES: Information Types and Information Frame Structures
1711 ----------------------------------------------------------------------
1713 --------------------------------------------------------------------*/
1714 #define HFA384x_IT_HANDOVERADDR ((u16)0xF000UL)
1715 #define HFA384x_IT_HANDOVERDEAUTHADDRESS ((u16)0xF001UL)//AP 1.3.7
1716 #define HFA384x_IT_COMMTALLIES ((u16)0xF100UL)
1717 #define HFA384x_IT_SCANRESULTS ((u16)0xF101UL)
1718 #define HFA384x_IT_CHINFORESULTS ((u16)0xF102UL)
1719 #define HFA384x_IT_HOSTSCANRESULTS ((u16)0xF103UL)
1720 #define HFA384x_IT_LINKSTATUS ((u16)0xF200UL)
1721 #define HFA384x_IT_ASSOCSTATUS ((u16)0xF201UL)
1722 #define HFA384x_IT_AUTHREQ ((u16)0xF202UL)
1723 #define HFA384x_IT_PSUSERCNT ((u16)0xF203UL)
1724 #define HFA384x_IT_KEYIDCHANGED ((u16)0xF204UL)
1725 #define HFA384x_IT_ASSOCREQ ((u16)0xF205UL)
1726 #define HFA384x_IT_MICFAILURE ((u16)0xF206UL)
1728 /*--------------------------------------------------------------------
1729 Information Frames Structures
1730 ----------------------------------------------------------------------
1731 Information Frames: Notification Frame Structures
1732 --------------------------------------------------------------------*/
1733 /*-- Notification Frame,MAC Mgmt: Handover Address --*/
1734 typedef struct hfa384x_HandoverAddr
1738 u8 handover_addr
[WLAN_BSSID_LEN
];
1739 } __WLAN_ATTRIB_PACK__ hfa384x_HandoverAddr_t
;
1741 /*-- Inquiry Frame, Diagnose: Communication Tallies --*/
1742 typedef struct hfa384x_CommTallies16
1744 u16 txunicastframes
;
1745 u16 txmulticastframes
;
1747 u16 txunicastoctets
;
1748 u16 txmulticastoctets
;
1749 u16 txdeferredtrans
;
1750 u16 txsingleretryframes
;
1751 u16 txmultipleretryframes
;
1752 u16 txretrylimitexceeded
;
1754 u16 rxunicastframes
;
1755 u16 rxmulticastframes
;
1757 u16 rxunicastoctets
;
1758 u16 rxmulticastoctets
;
1760 u16 rxdiscardsnobuffer
;
1761 u16 txdiscardswrongsa
;
1762 u16 rxdiscardswepundecr
;
1764 u16 rxmsginbadmsgfrag
;
1765 } __WLAN_ATTRIB_PACK__ hfa384x_CommTallies16_t
;
1767 typedef struct hfa384x_CommTallies32
1769 u32 txunicastframes
;
1770 u32 txmulticastframes
;
1772 u32 txunicastoctets
;
1773 u32 txmulticastoctets
;
1774 u32 txdeferredtrans
;
1775 u32 txsingleretryframes
;
1776 u32 txmultipleretryframes
;
1777 u32 txretrylimitexceeded
;
1779 u32 rxunicastframes
;
1780 u32 rxmulticastframes
;
1782 u32 rxunicastoctets
;
1783 u32 rxmulticastoctets
;
1785 u32 rxdiscardsnobuffer
;
1786 u32 txdiscardswrongsa
;
1787 u32 rxdiscardswepundecr
;
1789 u32 rxmsginbadmsgfrag
;
1790 } __WLAN_ATTRIB_PACK__ hfa384x_CommTallies32_t
;
1792 /*-- Inquiry Frame, Diagnose: Scan Results & Subfields--*/
1793 typedef struct hfa384x_ScanResultSub
1798 u8 bssid
[WLAN_BSSID_LEN
];
1801 hfa384x_bytestr32_t ssid
;
1802 u8 supprates
[10]; /* 802.11 info element */
1804 } __WLAN_ATTRIB_PACK__ hfa384x_ScanResultSub_t
;
1806 typedef struct hfa384x_ScanResult
1810 hfa384x_ScanResultSub_t
1811 result
[HFA384x_SCANRESULT_MAX
];
1812 } __WLAN_ATTRIB_PACK__ hfa384x_ScanResult_t
;
1814 /*-- Inquiry Frame, Diagnose: ChInfo Results & Subfields--*/
1815 typedef struct hfa384x_ChInfoResultSub
1821 } __WLAN_ATTRIB_PACK__ hfa384x_ChInfoResultSub_t
;
1823 #define HFA384x_CHINFORESULT_BSSACTIVE BIT0
1824 #define HFA384x_CHINFORESULT_PCFACTIVE BIT1
1826 typedef struct hfa384x_ChInfoResult
1829 hfa384x_ChInfoResultSub_t
1830 result
[HFA384x_CHINFORESULT_MAX
];
1831 } __WLAN_ATTRIB_PACK__ hfa384x_ChInfoResult_t
;
1833 /*-- Inquiry Frame, Diagnose: Host Scan Results & Subfields--*/
1834 typedef struct hfa384x_HScanResultSub
1839 u8 bssid
[WLAN_BSSID_LEN
];
1842 hfa384x_bytestr32_t ssid
;
1843 u8 supprates
[10]; /* 802.11 info element */
1846 } __WLAN_ATTRIB_PACK__ hfa384x_HScanResultSub_t
;
1848 typedef struct hfa384x_HScanResult
1852 hfa384x_HScanResultSub_t
1853 result
[HFA384x_HSCANRESULT_MAX
];
1854 } __WLAN_ATTRIB_PACK__ hfa384x_HScanResult_t
;
1856 /*-- Unsolicited Frame, MAC Mgmt: LinkStatus --*/
1858 #define HFA384x_LINK_NOTCONNECTED ((u16)0)
1859 #define HFA384x_LINK_CONNECTED ((u16)1)
1860 #define HFA384x_LINK_DISCONNECTED ((u16)2)
1861 #define HFA384x_LINK_AP_CHANGE ((u16)3)
1862 #define HFA384x_LINK_AP_OUTOFRANGE ((u16)4)
1863 #define HFA384x_LINK_AP_INRANGE ((u16)5)
1864 #define HFA384x_LINK_ASSOCFAIL ((u16)6)
1866 typedef struct hfa384x_LinkStatus
1869 } __WLAN_ATTRIB_PACK__ hfa384x_LinkStatus_t
;
1872 /*-- Unsolicited Frame, MAC Mgmt: AssociationStatus (--*/
1874 #define HFA384x_ASSOCSTATUS_STAASSOC ((u16)1)
1875 #define HFA384x_ASSOCSTATUS_REASSOC ((u16)2)
1876 #define HFA384x_ASSOCSTATUS_DISASSOC ((u16)3)
1877 #define HFA384x_ASSOCSTATUS_ASSOCFAIL ((u16)4)
1878 #define HFA384x_ASSOCSTATUS_AUTHFAIL ((u16)5)
1880 typedef struct hfa384x_AssocStatus
1883 u8 sta_addr
[WLAN_ADDR_LEN
];
1884 /* old_ap_addr is only valid if assocstatus == 2 */
1885 u8 old_ap_addr
[WLAN_ADDR_LEN
];
1888 } __WLAN_ATTRIB_PACK__ hfa384x_AssocStatus_t
;
1890 /*-- Unsolicited Frame, MAC Mgmt: AuthRequest (AP Only) --*/
1892 typedef struct hfa384x_AuthRequest
1894 u8 sta_addr
[WLAN_ADDR_LEN
];
1896 } __WLAN_ATTRIB_PACK__ hfa384x_AuthReq_t
;
1898 /*-- Unsolicited Frame, MAC Mgmt: AssocRequest (AP Only) --*/
1900 typedef struct hfa384x_AssocRequest
1902 u8 sta_addr
[WLAN_ADDR_LEN
];
1905 } __WLAN_ATTRIB_PACK__ hfa384x_AssocReq_t
;
1908 #define HFA384x_ASSOCREQ_TYPE_ASSOC 0
1909 #define HFA384x_ASSOCREQ_TYPE_REASSOC 1
1911 /*-- Unsolicited Frame, MAC Mgmt: MIC Failure (AP Only) --*/
1913 typedef struct hfa384x_MicFailure
1915 u8 sender
[WLAN_ADDR_LEN
];
1916 u8 dest
[WLAN_ADDR_LEN
];
1917 } __WLAN_ATTRIB_PACK__ hfa384x_MicFailure_t
;
1919 /*-- Unsolicited Frame, MAC Mgmt: PSUserCount (AP Only) --*/
1921 typedef struct hfa384x_PSUserCount
1924 } __WLAN_ATTRIB_PACK__ hfa384x_PSUserCount_t
;
1926 typedef struct hfa384x_KeyIDChanged
1928 u8 sta_addr
[WLAN_ADDR_LEN
];
1930 } __WLAN_ATTRIB_PACK__ hfa384x_KeyIDChanged_t
;
1932 /*-- Collection of all Inf frames ---------------*/
1933 typedef union hfa384x_infodata
{
1934 hfa384x_CommTallies16_t commtallies16
;
1935 hfa384x_CommTallies32_t commtallies32
;
1936 hfa384x_ScanResult_t scanresult
;
1937 hfa384x_ChInfoResult_t chinforesult
;
1938 hfa384x_HScanResult_t hscanresult
;
1939 hfa384x_LinkStatus_t linkstatus
;
1940 hfa384x_AssocStatus_t assocstatus
;
1941 hfa384x_AuthReq_t authreq
;
1942 hfa384x_PSUserCount_t psusercnt
;
1943 hfa384x_KeyIDChanged_t keyidchanged
;
1944 } __WLAN_ATTRIB_PACK__ hfa384x_infodata_t
;
1946 typedef struct hfa384x_InfFrame
1950 hfa384x_infodata_t info
;
1951 } __WLAN_ATTRIB_PACK__ hfa384x_InfFrame_t
;
1953 /*--------------------------------------------------------------------
1954 USB Packet structures and constants.
1955 --------------------------------------------------------------------*/
1957 /* Should be sent to the ctrlout endpoint */
1958 #define HFA384x_USB_ENBULKIN 6
1960 /* Should be sent to the bulkout endpoint */
1961 #define HFA384x_USB_TXFRM 0
1962 #define HFA384x_USB_CMDREQ 1
1963 #define HFA384x_USB_WRIDREQ 2
1964 #define HFA384x_USB_RRIDREQ 3
1965 #define HFA384x_USB_WMEMREQ 4
1966 #define HFA384x_USB_RMEMREQ 5
1968 /* Received from the bulkin endpoint */
1969 #define HFA384x_USB_ISFRM(a) (!((a) & 0x8000))
1970 #define HFA384x_USB_ISTXFRM(a) (((a) & 0x9000) == 0x1000)
1971 #define HFA384x_USB_ISRXFRM(a) (!((a) & 0x9000))
1972 #define HFA384x_USB_INFOFRM 0x8000
1973 #define HFA384x_USB_CMDRESP 0x8001
1974 #define HFA384x_USB_WRIDRESP 0x8002
1975 #define HFA384x_USB_RRIDRESP 0x8003
1976 #define HFA384x_USB_WMEMRESP 0x8004
1977 #define HFA384x_USB_RMEMRESP 0x8005
1978 #define HFA384x_USB_BUFAVAIL 0x8006
1979 #define HFA384x_USB_ERROR 0x8007
1981 /*------------------------------------*/
1982 /* Request (bulk OUT) packet contents */
1984 typedef struct hfa384x_usb_txfrm
{
1985 hfa384x_tx_frame_t desc
;
1986 u8 data
[WLAN_DATA_MAXLEN
];
1987 } __WLAN_ATTRIB_PACK__ hfa384x_usb_txfrm_t
;
1989 typedef struct hfa384x_usb_cmdreq
{
1996 } __WLAN_ATTRIB_PACK__ hfa384x_usb_cmdreq_t
;
1998 typedef struct hfa384x_usb_wridreq
{
2002 u8 data
[HFA384x_RIDDATA_MAXLEN
];
2003 } __WLAN_ATTRIB_PACK__ hfa384x_usb_wridreq_t
;
2005 typedef struct hfa384x_usb_rridreq
{
2010 } __WLAN_ATTRIB_PACK__ hfa384x_usb_rridreq_t
;
2012 typedef struct hfa384x_usb_wmemreq
{
2017 u8 data
[HFA384x_USB_RWMEM_MAXLEN
];
2018 } __WLAN_ATTRIB_PACK__ hfa384x_usb_wmemreq_t
;
2020 typedef struct hfa384x_usb_rmemreq
{
2026 } __WLAN_ATTRIB_PACK__ hfa384x_usb_rmemreq_t
;
2028 /*------------------------------------*/
2029 /* Response (bulk IN) packet contents */
2031 typedef struct hfa384x_usb_rxfrm
{
2032 hfa384x_rx_frame_t desc
;
2033 u8 data
[WLAN_DATA_MAXLEN
];
2034 } __WLAN_ATTRIB_PACK__ hfa384x_usb_rxfrm_t
;
2036 typedef struct hfa384x_usb_infofrm
{
2038 hfa384x_InfFrame_t info
;
2039 } __WLAN_ATTRIB_PACK__ hfa384x_usb_infofrm_t
;
2041 typedef struct hfa384x_usb_statusresp
{
2047 } __WLAN_ATTRIB_PACK__ hfa384x_usb_cmdresp_t
;
2049 typedef hfa384x_usb_cmdresp_t hfa384x_usb_wridresp_t
;
2051 typedef struct hfa384x_usb_rridresp
{
2055 u8 data
[HFA384x_RIDDATA_MAXLEN
];
2056 } __WLAN_ATTRIB_PACK__ hfa384x_usb_rridresp_t
;
2058 typedef hfa384x_usb_cmdresp_t hfa384x_usb_wmemresp_t
;
2060 typedef struct hfa384x_usb_rmemresp
{
2063 u8 data
[HFA384x_USB_RWMEM_MAXLEN
];
2064 } __WLAN_ATTRIB_PACK__ hfa384x_usb_rmemresp_t
;
2066 typedef struct hfa384x_usb_bufavail
{
2069 } __WLAN_ATTRIB_PACK__ hfa384x_usb_bufavail_t
;
2071 typedef struct hfa384x_usb_error
{
2074 } __WLAN_ATTRIB_PACK__ hfa384x_usb_error_t
;
2076 /*----------------------------------------------------------*/
2077 /* Unions for packaging all the known packet types together */
2079 typedef union hfa384x_usbout
{
2081 hfa384x_usb_txfrm_t txfrm
;
2082 hfa384x_usb_cmdreq_t cmdreq
;
2083 hfa384x_usb_wridreq_t wridreq
;
2084 hfa384x_usb_rridreq_t rridreq
;
2085 hfa384x_usb_wmemreq_t wmemreq
;
2086 hfa384x_usb_rmemreq_t rmemreq
;
2087 } __WLAN_ATTRIB_PACK__ hfa384x_usbout_t
;
2089 typedef union hfa384x_usbin
{
2091 hfa384x_usb_rxfrm_t rxfrm
;
2092 hfa384x_usb_txfrm_t txfrm
;
2093 hfa384x_usb_infofrm_t infofrm
;
2094 hfa384x_usb_cmdresp_t cmdresp
;
2095 hfa384x_usb_wridresp_t wridresp
;
2096 hfa384x_usb_rridresp_t rridresp
;
2097 hfa384x_usb_wmemresp_t wmemresp
;
2098 hfa384x_usb_rmemresp_t rmemresp
;
2099 hfa384x_usb_bufavail_t bufavail
;
2100 hfa384x_usb_error_t usberror
;
2102 } __WLAN_ATTRIB_PACK__ hfa384x_usbin_t
;
2104 /*--------------------------------------------------------------------
2105 PD record structures.
2106 --------------------------------------------------------------------*/
2108 typedef struct hfa384x_pdr_pcb_partnum
2111 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_pcb_partnum_t
;
2113 typedef struct hfa384x_pdr_pcb_tracenum
2116 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_pcb_tracenum_t
;
2118 typedef struct hfa384x_pdr_nic_serial
2121 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_serial_t
;
2123 typedef struct hfa384x_pdr_mkk_measurements
2125 double carrier_freq
;
2126 double occupied_band
;
2127 double power_density
;
2140 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mkk_measurements_t
;
2142 typedef struct hfa384x_pdr_nic_ramsize
2144 u8 size
[12]; /* units of KB */
2145 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_ramsize_t
;
2147 typedef struct hfa384x_pdr_mfisuprange
2153 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mfisuprange_t
;
2155 typedef struct hfa384x_pdr_cfisuprange
2161 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_cfisuprange_t
;
2163 typedef struct hfa384x_pdr_nicid
2169 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nicid_t
;
2172 typedef struct hfa384x_pdr_refdac_measurements
2175 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_refdac_measurements_t
;
2177 typedef struct hfa384x_pdr_vgdac_measurements
2180 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_vgdac_measurements_t
;
2182 typedef struct hfa384x_pdr_level_comp_measurements
2185 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_level_compc_measurements_t
;
2187 typedef struct hfa384x_pdr_mac_address
2190 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mac_address_t
;
2192 typedef struct hfa384x_pdr_mkk_callname
2195 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mkk_callname_t
;
2197 typedef struct hfa384x_pdr_regdomain
2201 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_regdomain_t
;
2203 typedef struct hfa384x_pdr_allowed_channel
2206 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_allowed_channel_t
;
2208 typedef struct hfa384x_pdr_default_channel
2211 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_default_channel_t
;
2213 typedef struct hfa384x_pdr_privacy_option
2216 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_privacy_option_t
;
2218 typedef struct hfa384x_pdr_temptype
2221 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_temptype_t
;
2223 typedef struct hfa384x_pdr_refdac_setup
2226 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_refdac_setup_t
;
2228 typedef struct hfa384x_pdr_vgdac_setup
2231 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_vgdac_setup_t
;
2233 typedef struct hfa384x_pdr_level_comp_setup
2236 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_level_comp_setup_t
;
2238 typedef struct hfa384x_pdr_trimdac_setup
2242 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_trimdac_setup_t
;
2244 typedef struct hfa384x_pdr_ifr_setting
2247 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_ifr_setting_t
;
2249 typedef struct hfa384x_pdr_rfr_setting
2252 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_rfr_setting_t
;
2254 typedef struct hfa384x_pdr_hfa3861_baseline
2257 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_baseline_t
;
2259 typedef struct hfa384x_pdr_hfa3861_shadow
2262 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_shadow_t
;
2264 typedef struct hfa384x_pdr_hfa3861_ifrf
2267 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_ifrf_t
;
2269 typedef struct hfa384x_pdr_hfa3861_chcalsp
2272 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_chcalsp_t
;
2274 typedef struct hfa384x_pdr_hfa3861_chcali
2277 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_chcali_t
;
2279 typedef struct hfa384x_pdr_hfa3861_nic_config
2282 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_config_t
;
2284 typedef struct hfa384x_pdr_hfo_delay
2287 } __WLAN_ATTRIB_PACK__ hfa384x_hfo_delay_t
;
2289 typedef struct hfa384x_pdr_hfa3861_manf_testsp
2292 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_manf_testsp_t
;
2294 typedef struct hfa384x_pdr_hfa3861_manf_testi
2297 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_manf_testi_t
;
2299 typedef struct hfa384x_end_of_pda
2302 } __WLAN_ATTRIB_PACK__ hfa384x_pdr_end_of_pda_t
;
2304 typedef struct hfa384x_pdrec
2306 u16 len
; /* in words */
2309 hfa384x_pdr_pcb_partnum_t pcb_partnum
;
2310 hfa384x_pdr_pcb_tracenum_t pcb_tracenum
;
2311 hfa384x_pdr_nic_serial_t nic_serial
;
2312 hfa384x_pdr_mkk_measurements_t mkk_measurements
;
2313 hfa384x_pdr_nic_ramsize_t nic_ramsize
;
2314 hfa384x_pdr_mfisuprange_t mfisuprange
;
2315 hfa384x_pdr_cfisuprange_t cfisuprange
;
2316 hfa384x_pdr_nicid_t nicid
;
2317 hfa384x_pdr_refdac_measurements_t refdac_measurements
;
2318 hfa384x_pdr_vgdac_measurements_t vgdac_measurements
;
2319 hfa384x_pdr_level_compc_measurements_t level_compc_measurements
;
2320 hfa384x_pdr_mac_address_t mac_address
;
2321 hfa384x_pdr_mkk_callname_t mkk_callname
;
2322 hfa384x_pdr_regdomain_t regdomain
;
2323 hfa384x_pdr_allowed_channel_t allowed_channel
;
2324 hfa384x_pdr_default_channel_t default_channel
;
2325 hfa384x_pdr_privacy_option_t privacy_option
;
2326 hfa384x_pdr_temptype_t temptype
;
2327 hfa384x_pdr_refdac_setup_t refdac_setup
;
2328 hfa384x_pdr_vgdac_setup_t vgdac_setup
;
2329 hfa384x_pdr_level_comp_setup_t level_comp_setup
;
2330 hfa384x_pdr_trimdac_setup_t trimdac_setup
;
2331 hfa384x_pdr_ifr_setting_t ifr_setting
;
2332 hfa384x_pdr_rfr_setting_t rfr_setting
;
2333 hfa384x_pdr_hfa3861_baseline_t hfa3861_baseline
;
2334 hfa384x_pdr_hfa3861_shadow_t hfa3861_shadow
;
2335 hfa384x_pdr_hfa3861_ifrf_t hfa3861_ifrf
;
2336 hfa384x_pdr_hfa3861_chcalsp_t hfa3861_chcalsp
;
2337 hfa384x_pdr_hfa3861_chcali_t hfa3861_chcali
;
2338 hfa384x_pdr_nic_config_t nic_config
;
2339 hfa384x_hfo_delay_t hfo_delay
;
2340 hfa384x_pdr_hfa3861_manf_testsp_t hfa3861_manf_testsp
;
2341 hfa384x_pdr_hfa3861_manf_testi_t hfa3861_manf_testi
;
2342 hfa384x_pdr_end_of_pda_t end_of_pda
;
2345 } __WLAN_ATTRIB_PACK__ hfa384x_pdrec_t
;
2349 /*--------------------------------------------------------------------
2350 --- MAC state structure, argument to all functions --
2351 --- Also, a collection of support types --
2352 --------------------------------------------------------------------*/
2353 typedef struct hfa384x_statusresult
2359 } hfa384x_cmdresult_t
;
2361 /* USB Control Exchange (CTLX):
2362 * A queue of the structure below is maintained for all of the
2363 * Request/Response type USB packets supported by Prism2.
2365 /* The following hfa384x_* structures are arguments to
2366 * the usercb() for the different CTLX types.
2368 typedef hfa384x_cmdresult_t hfa384x_wridresult_t
;
2369 typedef hfa384x_cmdresult_t hfa384x_wmemresult_t
;
2371 typedef struct hfa384x_rridresult
2374 const void *riddata
;
2375 unsigned int riddata_len
;
2376 } hfa384x_rridresult_t
;
2379 CTLX_START
= 0, /* Start state, not queued */
2381 CTLX_COMPLETE
, /* CTLX successfully completed */
2382 CTLX_REQ_FAILED
, /* OUT URB completed w/ error */
2384 CTLX_PENDING
, /* Queued, data valid */
2385 CTLX_REQ_SUBMITTED
, /* OUT URB submitted */
2386 CTLX_REQ_COMPLETE
, /* OUT URB complete */
2387 CTLX_RESP_COMPLETE
/* IN URB received */
2389 typedef enum ctlx_state CTLX_STATE
;
2391 struct hfa384x_usbctlx
;
2394 typedef void (*ctlx_cmdcb_t
)( struct hfa384x
*, const struct hfa384x_usbctlx
* );
2396 typedef void (*ctlx_usercb_t
)(
2401 typedef struct hfa384x_usbctlx
2403 struct list_head list
;
2406 hfa384x_usbout_t outbuf
; /* pkt buf for OUT */
2407 hfa384x_usbin_t inbuf
; /* pkt buf for IN(a copy) */
2409 CTLX_STATE state
; /* Tracks running state */
2411 struct completion done
;
2412 volatile int reapable
; /* Food for the reaper task */
2414 ctlx_cmdcb_t cmdcb
; /* Async command callback */
2415 ctlx_usercb_t usercb
; /* Async user callback, */
2416 void *usercb_data
; /* at CTLX completion */
2418 int variant
; /* Identifies cmd variant */
2419 } hfa384x_usbctlx_t
;
2421 typedef struct hfa384x_usbctlxq
2424 struct list_head pending
;
2425 struct list_head active
;
2426 struct list_head completing
;
2427 struct list_head reapable
;
2428 } hfa384x_usbctlxq_t
;
2430 typedef struct hfa484x_metacmd
2438 hfa384x_cmdresult_t result
;
2439 } hfa384x_metacmd_t
;
2441 #define MAX_PRISM2_GRP_ADDR 16
2442 #define MAX_GRP_ADDR 32
2443 #define WLAN_COMMENT_MAX 80 /* Max. length of user comment string. */
2445 #define MM_SAT_PCF (BIT14)
2446 #define MM_GCSD_PCF (BIT15)
2447 #define MM_GCSD_PCF_EB (BIT14 | BIT15)
2449 #define WLAN_STATE_STOPPED 0 /* Network is not active. */
2450 #define WLAN_STATE_STARTED 1 /* Network has been started. */
2452 #define WLAN_AUTH_MAX 60 /* Max. # of authenticated stations. */
2453 #define WLAN_ACCESS_MAX 60 /* Max. # of stations in an access list. */
2454 #define WLAN_ACCESS_NONE 0 /* No stations may be authenticated. */
2455 #define WLAN_ACCESS_ALL 1 /* All stations may be authenticated. */
2456 #define WLAN_ACCESS_ALLOW 2 /* Authenticate only "allowed" stations. */
2457 #define WLAN_ACCESS_DENY 3 /* Do not authenticate "denied" stations. */
2459 /* XXX These are going away ASAP */
2460 typedef struct prism2sta_authlist
2463 u8 addr
[WLAN_AUTH_MAX
][WLAN_ADDR_LEN
];
2464 u8 assoc
[WLAN_AUTH_MAX
];
2465 } prism2sta_authlist_t
;
2467 typedef struct prism2sta_accesslist
2469 unsigned int modify
;
2471 u8 addr
[WLAN_ACCESS_MAX
][WLAN_ADDR_LEN
];
2473 u8 addr1
[WLAN_ACCESS_MAX
][WLAN_ADDR_LEN
];
2474 } prism2sta_accesslist_t
;
2476 typedef struct hfa384x
2478 /* USB support data */
2479 struct usb_device
*usb
;
2481 struct sk_buff
*rx_urb_skb
;
2483 struct urb ctlx_urb
;
2484 hfa384x_usbout_t txbuff
;
2485 hfa384x_usbctlxq_t ctlxq
;
2486 struct timer_list reqtimer
;
2487 struct timer_list resptimer
;
2489 struct timer_list throttle
;
2491 struct tasklet_struct reaper_bh
;
2492 struct tasklet_struct completion_bh
;
2494 struct work_struct usb_work
;
2496 unsigned long usb_flags
;
2497 #define THROTTLE_RX 0
2498 #define THROTTLE_TX 1
2499 #define WORK_RX_HALT 2
2500 #define WORK_TX_HALT 3
2501 #define WORK_RX_RESUME 4
2502 #define WORK_TX_RESUME 5
2504 unsigned short req_timer_done
:1;
2505 unsigned short resp_timer_done
:1;
2515 wait_queue_head_t cmdq
; /* wait queue itself */
2517 /* Controller state */
2520 u8 port_enabled
[HFA384x_NUMPORTS_MAX
];
2522 /* Download support */
2523 unsigned int dlstate
;
2524 hfa384x_downloadbuffer_t bufinfo
;
2527 int scanflag
; /* to signal scan comlete */
2528 int join_ap
; /* are we joined to a specific ap */
2529 int join_retries
; /* number of join retries till we fail */
2530 hfa384x_JoinRequest_data_t joinreq
; /* join request saved data */
2532 wlandevice_t
*wlandev
;
2533 /* Timer to allow for the deferred processing of linkstatus messages */
2534 struct work_struct link_bh
;
2536 struct work_struct commsqual_bh
;
2537 hfa384x_commsquality_t qual
;
2538 struct timer_list commsqual_timer
;
2541 u16 link_status_new
;
2542 struct sk_buff_head authq
;
2544 /* And here we have stuff that used to be in priv */
2546 /* State variables */
2547 unsigned int presniff_port_type
;
2548 u16 presniff_wepflags
;
2549 u32 dot11_desired_bss_type
;
2553 /* Group Addresses - right now, there are up to a total
2554 of MAX_GRP_ADDR group addresses */
2555 u8 dot11_grp_addr
[MAX_GRP_ADDR
][WLAN_ADDR_LEN
];
2556 unsigned int dot11_grpcnt
;
2558 /* Component Identities */
2559 hfa384x_compident_t ident_nic
;
2560 hfa384x_compident_t ident_pri_fw
;
2561 hfa384x_compident_t ident_sta_fw
;
2562 hfa384x_compident_t ident_ap_fw
;
2565 /* Supplier compatibility ranges */
2566 hfa384x_caplevel_t cap_sup_mfi
;
2567 hfa384x_caplevel_t cap_sup_cfi
;
2568 hfa384x_caplevel_t cap_sup_pri
;
2569 hfa384x_caplevel_t cap_sup_sta
;
2570 hfa384x_caplevel_t cap_sup_ap
;
2572 /* Actor compatibility ranges */
2573 hfa384x_caplevel_t cap_act_pri_cfi
; /* pri f/w to controller interface */
2574 hfa384x_caplevel_t cap_act_sta_cfi
; /* sta f/w to controller interface */
2575 hfa384x_caplevel_t cap_act_sta_mfi
; /* sta f/w to modem interface */
2576 hfa384x_caplevel_t cap_act_ap_cfi
; /* ap f/w to controller interface */
2577 hfa384x_caplevel_t cap_act_ap_mfi
; /* ap f/w to modem interface */
2579 u32 psusercount
; /* Power save user count. */
2580 hfa384x_CommTallies32_t tallies
; /* Communication tallies. */
2581 u8 comment
[WLAN_COMMENT_MAX
+1]; /* User comment */
2583 /* Channel Info request results (AP only) */
2587 hfa384x_ChInfoResult_t results
;
2590 hfa384x_InfFrame_t
*scanresults
;
2593 prism2sta_authlist_t authlist
; /* Authenticated station list. */
2594 unsigned int accessmode
; /* Access mode. */
2595 prism2sta_accesslist_t allow
; /* Allowed station list. */
2596 prism2sta_accesslist_t deny
; /* Denied station list. */
2600 /*=============================================================*/
2601 /*--- Function Declarations -----------------------------------*/
2602 /*=============================================================*/
2606 struct usb_device
*usb
);
2608 void hfa384x_destroy(hfa384x_t
*hw
);
2611 hfa384x_corereset( hfa384x_t
*hw
, int holdtime
, int settletime
, int genesis
);
2613 hfa384x_drvr_chinforesults( hfa384x_t
*hw
);
2615 hfa384x_drvr_commtallies( hfa384x_t
*hw
);
2617 hfa384x_drvr_disable(hfa384x_t
*hw
, u16 macport
);
2619 hfa384x_drvr_enable(hfa384x_t
*hw
, u16 macport
);
2621 hfa384x_drvr_flashdl_enable(hfa384x_t
*hw
);
2623 hfa384x_drvr_flashdl_disable(hfa384x_t
*hw
);
2625 hfa384x_drvr_flashdl_write(hfa384x_t
*hw
, u32 daddr
, void* buf
, u32 len
);
2627 hfa384x_drvr_getconfig(hfa384x_t
*hw
, u16 rid
, void *buf
, u16 len
);
2629 hfa384x_drvr_handover( hfa384x_t
*hw
, u8
*addr
);
2631 hfa384x_drvr_hostscanresults( hfa384x_t
*hw
);
2633 hfa384x_drvr_low_level(hfa384x_t
*hw
, hfa384x_metacmd_t
*cmd
);
2635 hfa384x_drvr_mmi_read(hfa384x_t
*hw
, u32 address
, u32
*result
);
2637 hfa384x_drvr_mmi_write(hfa384x_t
*hw
, u32 address
, u32 data
);
2639 hfa384x_drvr_ramdl_enable(hfa384x_t
*hw
, u32 exeaddr
);
2641 hfa384x_drvr_ramdl_disable(hfa384x_t
*hw
);
2643 hfa384x_drvr_ramdl_write(hfa384x_t
*hw
, u32 daddr
, void* buf
, u32 len
);
2645 hfa384x_drvr_readpda(hfa384x_t
*hw
, void *buf
, unsigned int len
);
2647 hfa384x_drvr_scanresults( hfa384x_t
*hw
);
2650 hfa384x_drvr_setconfig(hfa384x_t
*hw
, u16 rid
, void *buf
, u16 len
);
2653 hfa384x_drvr_getconfig16(hfa384x_t
*hw
, u16 rid
, void *val
)
2656 result
= hfa384x_drvr_getconfig(hw
, rid
, val
, sizeof(u16
));
2657 if ( result
== 0 ) {
2658 *((u16
*)val
) = hfa384x2host_16(*((u16
*)val
));
2664 hfa384x_drvr_getconfig32(hfa384x_t
*hw
, u16 rid
, void *val
)
2668 result
= hfa384x_drvr_getconfig(hw
, rid
, val
, sizeof(u32
));
2669 if ( result
== 0 ) {
2670 *((u32
*)val
) = hfa384x2host_32(*((u32
*)val
));
2677 hfa384x_drvr_setconfig16(hfa384x_t
*hw
, u16 rid
, u16 val
)
2679 u16 value
= host2hfa384x_16(val
);
2680 return hfa384x_drvr_setconfig(hw
, rid
, &value
, sizeof(value
));
2684 hfa384x_drvr_setconfig32(hfa384x_t
*hw
, u16 rid
, u32 val
)
2686 u32 value
= host2hfa384x_32(val
);
2687 return hfa384x_drvr_setconfig(hw
, rid
, &value
, sizeof(value
));
2691 hfa384x_drvr_getconfig_async(hfa384x_t
*hw
,
2693 ctlx_usercb_t usercb
,
2697 hfa384x_drvr_setconfig_async(hfa384x_t
*hw
,
2701 ctlx_usercb_t usercb
,
2705 hfa384x_drvr_setconfig16_async(hfa384x_t
*hw
, u16 rid
, u16 val
)
2707 u16 value
= host2hfa384x_16(val
);
2708 return hfa384x_drvr_setconfig_async(hw
, rid
, &value
, sizeof(value
),
2713 hfa384x_drvr_setconfig32_async(hfa384x_t
*hw
, u16 rid
, u32 val
)
2715 u32 value
= host2hfa384x_32(val
);
2716 return hfa384x_drvr_setconfig_async(hw
, rid
, &value
, sizeof(value
),
2722 hfa384x_drvr_start(hfa384x_t
*hw
);
2724 hfa384x_drvr_stop(hfa384x_t
*hw
);
2726 hfa384x_drvr_txframe(hfa384x_t
*hw
, struct sk_buff
*skb
, p80211_hdr_t
*p80211_hdr
, p80211_metawep_t
*p80211_wep
);
2728 hfa384x_tx_timeout(wlandevice_t
*wlandev
);
2731 hfa384x_cmd_initialize(hfa384x_t
*hw
);
2733 hfa384x_cmd_enable(hfa384x_t
*hw
, u16 macport
);
2735 hfa384x_cmd_disable(hfa384x_t
*hw
, u16 macport
);
2737 hfa384x_cmd_diagnose(hfa384x_t
*hw
);
2739 hfa384x_cmd_allocate(hfa384x_t
*hw
, u16 len
);
2741 hfa384x_cmd_transmit(hfa384x_t
*hw
, u16 reclaim
, u16 qos
, u16 fid
);
2743 hfa384x_cmd_clearpersist(hfa384x_t
*hw
, u16 fid
);
2745 hfa384x_cmd_access(hfa384x_t
*hw
, u16 write
, u16 rid
, void *buf
, u16 len
);
2747 hfa384x_cmd_monitor(hfa384x_t
*hw
, u16 enable
);
2749 hfa384x_cmd_download(
2756 hfa384x_cmd_aux_enable(hfa384x_t
*hw
, int force
);
2758 hfa384x_cmd_aux_disable(hfa384x_t
*hw
);
2760 hfa384x_copy_from_bap(
2768 hfa384x_copy_to_bap(
2776 hfa384x_copy_from_aux(
2783 hfa384x_copy_to_aux(
2790 #endif /* __KERNEL__ */
2792 #endif /* _HFA384x_H */