|
|
1.1 root 1: /* src/prism2/include/prism2/hfa384x.h
2: *
3: * Defines the constants and data structures for the hfa384x
4: *
5: * Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6: * --------------------------------------------------------------------
7: *
8: * linux-wlan
9: *
10: * The contents of this file are subject to the Mozilla Public
11: * License Version 1.1 (the "License"); you may not use this file
12: * except in compliance with the License. You may obtain a copy of
13: * the License at http://www.mozilla.org/MPL/
14: *
15: * Software distributed under the License is distributed on an "AS
16: * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17: * implied. See the License for the specific language governing
18: * rights and limitations under the License.
19: *
20: * Alternatively, the contents of this file may be used under the
21: * terms of the GNU Public License version 2 (the "GPL"), in which
22: * case the provisions of the GPL are applicable instead of the
23: * above. If you wish to allow the use of your version of this file
24: * only under the terms of the GPL and not to allow others to use
25: * your version of this file under the MPL, indicate your decision
26: * by deleting the provisions above and replace them with the notice
27: * and other provisions required by the GPL. If you do not delete
28: * the provisions above, a recipient may use your version of this
29: * file under either the MPL or the GPL.
30: *
31: * --------------------------------------------------------------------
32: *
33: * Inquiries regarding the linux-wlan Open Source project can be
34: * made directly to:
35: *
36: * AbsoluteValue Systems Inc.
37: * [email protected]
38: * http://www.linux-wlan.com
39: *
40: * --------------------------------------------------------------------
41: *
42: * Portions of the development of this software were funded by
43: * Intersil Corporation as part of PRISM(R) chipset product development.
44: *
45: * --------------------------------------------------------------------
46: *
47: * [Implementation and usage notes]
48: *
49: * [References]
50: * CW10 Programmer's Manual v1.5
51: * IEEE 802.11 D10.0
52: *
53: * --------------------------------------------------------------------
54: */
55:
56: FILE_LICENCE ( GPL2_ONLY );
57:
58: #ifndef _HFA384x_H
59: #define _HFA384x_H
60:
61: /*=============================================================*/
62: #define HFA384x_FIRMWARE_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
63:
64: #define HFA384x_LEVEL_TO_dBm(v) (0x100 + (v) * 100 / 255 - 100)
65:
66: /*------ Constants --------------------------------------------*/
67: /*--- Mins & Maxs -----------------------------------*/
68: #define HFA384x_CMD_ALLOC_LEN_MIN ((UINT16)4)
69: #define HFA384x_CMD_ALLOC_LEN_MAX ((UINT16)2400)
70: #define HFA384x_BAP_DATALEN_MAX ((UINT16)4096)
71: #define HFA384x_BAP_OFFSET_MAX ((UINT16)4096)
72: #define HFA384x_PORTID_MAX ((UINT16)7)
73: #define HFA384x_NUMPORTS_MAX ((UINT16)(HFA384x_PORTID_MAX+1))
74: #define HFA384x_PDR_LEN_MAX ((UINT16)512) /* in bytes, from EK */
75: #define HFA384x_PDA_RECS_MAX ((UINT16)200) /* a guess */
76: #define HFA384x_PDA_LEN_MAX ((UINT16)1024) /* in bytes, from EK */
77: #define HFA384x_SCANRESULT_MAX ((UINT16)31)
78: #define HFA384x_HSCANRESULT_MAX ((UINT16)31)
79: #define HFA384x_CHINFORESULT_MAX ((UINT16)16)
80: #define HFA384x_DRVR_FIDSTACKLEN_MAX (10)
81: #define HFA384x_DRVR_TXBUF_MAX (sizeof(hfa384x_tx_frame_t) + \
82: WLAN_DATA_MAXLEN - \
83: WLAN_WEP_IV_LEN - \
84: WLAN_WEP_ICV_LEN + 2)
85: #define HFA384x_DRVR_MAGIC (0x4a2d)
86: #define HFA384x_INFODATA_MAXLEN (sizeof(hfa384x_infodata_t))
87: #define HFA384x_INFOFRM_MAXLEN (sizeof(hfa384x_InfFrame_t))
88: #define HFA384x_RID_GUESSING_MAXLEN 2048 /* I'm not really sure */
89: #define HFA384x_RIDDATA_MAXLEN HFA384x_RID_GUESSING_MAXLEN
90: #define HFA384x_USB_RWMEM_MAXLEN 2048
91:
92: /*--- Support Constants -----------------------------*/
93: #define HFA384x_BAP_PROC ((UINT16)0)
94: #define HFA384x_BAP_INT ((UINT16)1)
95: #define HFA384x_PORTTYPE_IBSS ((UINT16)0)
96: #define HFA384x_PORTTYPE_BSS ((UINT16)1)
97: #define HFA384x_PORTTYPE_WDS ((UINT16)2)
98: #define HFA384x_PORTTYPE_PSUEDOIBSS ((UINT16)3)
99: #define HFA384x_PORTTYPE_HOSTAP ((UINT16)6)
100: #define HFA384x_WEPFLAGS_PRIVINVOKED ((UINT16)BIT0)
101: #define HFA384x_WEPFLAGS_EXCLUDE ((UINT16)BIT1)
102: #define HFA384x_WEPFLAGS_DISABLE_TXCRYPT ((UINT16)BIT4)
103: #define HFA384x_WEPFLAGS_DISABLE_RXCRYPT ((UINT16)BIT7)
104: #define HFA384x_WEPFLAGS_DISALLOW_MIXED ((UINT16)BIT11)
105: #define HFA384x_WEPFLAGS_IV_INTERVAL1 ((UINT16)0)
106: #define HFA384x_WEPFLAGS_IV_INTERVAL10 ((UINT16)BIT5)
107: #define HFA384x_WEPFLAGS_IV_INTERVAL50 ((UINT16)BIT6)
108: #define HFA384x_WEPFLAGS_IV_INTERVAL100 ((UINT16)(BIT5 | BIT6))
109: #define HFA384x_WEPFLAGS_FIRMWARE_WPA ((UINT16)BIT8)
110: #define HFA384x_WEPFLAGS_HOST_MIC ((UINT16)BIT9)
111: #define HFA384x_ROAMMODE_FWSCAN_FWROAM ((UINT16)1)
112: #define HFA384x_ROAMMODE_FWSCAN_HOSTROAM ((UINT16)2)
113: #define HFA384x_ROAMMODE_HOSTSCAN_HOSTROAM ((UINT16)3)
114: #define HFA384x_PORTSTATUS_DISABLED ((UINT16)1)
115: #define HFA384x_PORTSTATUS_INITSRCH ((UINT16)2)
116: #define HFA384x_PORTSTATUS_CONN_IBSS ((UINT16)3)
117: #define HFA384x_PORTSTATUS_CONN_ESS ((UINT16)4)
118: #define HFA384x_PORTSTATUS_OOR_ESS ((UINT16)5)
119: #define HFA384x_PORTSTATUS_CONN_WDS ((UINT16)6)
120: #define HFA384x_PORTSTATUS_HOSTAP ((UINT16)8)
121: #define HFA384x_RATEBIT_1 ((UINT16)1)
122: #define HFA384x_RATEBIT_2 ((UINT16)2)
123: #define HFA384x_RATEBIT_5dot5 ((UINT16)4)
124: #define HFA384x_RATEBIT_11 ((UINT16)8)
125:
126: /*--- Just some symbolic names for legibility -------*/
127: #define HFA384x_TXCMD_NORECL ((UINT16)0)
128: #define HFA384x_TXCMD_RECL ((UINT16)1)
129:
130: /*--- MAC Internal memory constants and macros ------*/
131: /* masks and macros used to manipulate MAC internal memory addresses. */
132: /* MAC internal memory addresses are 23 bit quantities. The MAC uses
133: * a paged address space where the upper 16 bits are the page number
134: * and the lower 7 bits are the offset. There are various Host API
135: * elements that require two 16-bit quantities to specify a MAC
136: * internal memory address. Unfortunately, some of the API's use a
137: * page/offset format where the offset value is JUST the lower seven
138: * bits and the page is the remaining 16 bits. Some of the API's
139: * assume that the 23 bit address has been split at the 16th bit. We
140: * refer to these two formats as AUX format and CMD format. The
141: * macros below help handle some of this.
142: */
143:
144: /* Handy constant */
145: #define HFA384x_ADDR_AUX_OFF_MAX ((UINT16)0x007f)
146:
147: /* Mask bits for discarding unwanted pieces in a flat address */
148: #define HFA384x_ADDR_FLAT_AUX_PAGE_MASK (0x007fff80)
149: #define HFA384x_ADDR_FLAT_AUX_OFF_MASK (0x0000007f)
150: #define HFA384x_ADDR_FLAT_CMD_PAGE_MASK (0xffff0000)
151: #define HFA384x_ADDR_FLAT_CMD_OFF_MASK (0x0000ffff)
152:
153: /* Mask bits for discarding unwanted pieces in AUX format 16-bit address parts */
154: #define HFA384x_ADDR_AUX_PAGE_MASK (0xffff)
155: #define HFA384x_ADDR_AUX_OFF_MASK (0x007f)
156:
157: /* Mask bits for discarding unwanted pieces in CMD format 16-bit address parts */
158: #define HFA384x_ADDR_CMD_PAGE_MASK (0x007f)
159: #define HFA384x_ADDR_CMD_OFF_MASK (0xffff)
160:
161: /* Make a 32-bit flat address from AUX format 16-bit page and offset */
162: #define HFA384x_ADDR_AUX_MKFLAT(p,o) \
163: (((UINT32)(((UINT16)(p))&HFA384x_ADDR_AUX_PAGE_MASK)) <<7) | \
164: ((UINT32)(((UINT16)(o))&HFA384x_ADDR_AUX_OFF_MASK))
165:
166: /* Make a 32-bit flat address from CMD format 16-bit page and offset */
167: #define HFA384x_ADDR_CMD_MKFLAT(p,o) \
168: (((UINT32)(((UINT16)(p))&HFA384x_ADDR_CMD_PAGE_MASK)) <<16) | \
169: ((UINT32)(((UINT16)(o))&HFA384x_ADDR_CMD_OFF_MASK))
170:
171: /* Make AUX format offset and page from a 32-bit flat address */
172: #define HFA384x_ADDR_AUX_MKPAGE(f) \
173: ((UINT16)((((UINT32)(f))&HFA384x_ADDR_FLAT_AUX_PAGE_MASK)>>7))
174: #define HFA384x_ADDR_AUX_MKOFF(f) \
175: ((UINT16)(((UINT32)(f))&HFA384x_ADDR_FLAT_AUX_OFF_MASK))
176:
177: /* Make CMD format offset and page from a 32-bit flat address */
178: #define HFA384x_ADDR_CMD_MKPAGE(f) \
179: ((UINT16)((((UINT32)(f))&HFA384x_ADDR_FLAT_CMD_PAGE_MASK)>>16))
180: #define HFA384x_ADDR_CMD_MKOFF(f) \
181: ((UINT16)(((UINT32)(f))&HFA384x_ADDR_FLAT_CMD_OFF_MASK))
182:
183: /*--- Aux register masks/tests ----------------------*/
184: /* Some of the upper bits of the AUX offset register are used to */
185: /* select address space. */
186: #define HFA384x_AUX_CTL_EXTDS (0x00)
187: #define HFA384x_AUX_CTL_NV (0x01)
188: #define HFA384x_AUX_CTL_PHY (0x02)
189: #define HFA384x_AUX_CTL_ICSRAM (0x03)
190:
191: /* Make AUX register offset and page values from a flat address */
192: #define HFA384x_AUX_MKOFF(f, c) \
193: (HFA384x_ADDR_AUX_MKOFF(f) | (((UINT16)(c))<<12))
194: #define HFA384x_AUX_MKPAGE(f) HFA384x_ADDR_AUX_MKPAGE(f)
195:
196:
197: /*--- Controller Memory addresses -------------------*/
198: #define HFA3842_PDA_BASE (0x007f0000UL)
199: #define HFA3841_PDA_BASE (0x003f0000UL)
200: #define HFA3841_PDA_BOGUS_BASE (0x00390000UL)
201:
202: /*--- Driver Download states -----------------------*/
203: #define HFA384x_DLSTATE_DISABLED 0
204: #define HFA384x_DLSTATE_RAMENABLED 1
205: #define HFA384x_DLSTATE_FLASHENABLED 2
206: #define HFA384x_DLSTATE_FLASHWRITTEN 3
207: #define HFA384x_DLSTATE_FLASHWRITEPENDING 4
208: #define HFA384x_DLSTATE_GENESIS 5
209:
210: /*--- Register I/O offsets --------------------------*/
211: #if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX))
212:
213: #define HFA384x_CMD_OFF (0x00)
214: #define HFA384x_PARAM0_OFF (0x02)
215: #define HFA384x_PARAM1_OFF (0x04)
216: #define HFA384x_PARAM2_OFF (0x06)
217: #define HFA384x_STATUS_OFF (0x08)
218: #define HFA384x_RESP0_OFF (0x0A)
219: #define HFA384x_RESP1_OFF (0x0C)
220: #define HFA384x_RESP2_OFF (0x0E)
221: #define HFA384x_INFOFID_OFF (0x10)
222: #define HFA384x_RXFID_OFF (0x20)
223: #define HFA384x_ALLOCFID_OFF (0x22)
224: #define HFA384x_TXCOMPLFID_OFF (0x24)
225: #define HFA384x_SELECT0_OFF (0x18)
226: #define HFA384x_OFFSET0_OFF (0x1C)
227: #define HFA384x_DATA0_OFF (0x36)
228: #define HFA384x_SELECT1_OFF (0x1A)
229: #define HFA384x_OFFSET1_OFF (0x1E)
230: #define HFA384x_DATA1_OFF (0x38)
231: #define HFA384x_EVSTAT_OFF (0x30)
232: #define HFA384x_INTEN_OFF (0x32)
233: #define HFA384x_EVACK_OFF (0x34)
234: #define HFA384x_CONTROL_OFF (0x14)
235: #define HFA384x_SWSUPPORT0_OFF (0x28)
236: #define HFA384x_SWSUPPORT1_OFF (0x2A)
237: #define HFA384x_SWSUPPORT2_OFF (0x2C)
238: #define HFA384x_AUXPAGE_OFF (0x3A)
239: #define HFA384x_AUXOFFSET_OFF (0x3C)
240: #define HFA384x_AUXDATA_OFF (0x3E)
241:
242: #elif (WLAN_HOSTIF == WLAN_PCI || WLAN_HOSTIF == WLAN_USB)
243:
244: #define HFA384x_CMD_OFF (0x00)
245: #define HFA384x_PARAM0_OFF (0x04)
246: #define HFA384x_PARAM1_OFF (0x08)
247: #define HFA384x_PARAM2_OFF (0x0c)
248: #define HFA384x_STATUS_OFF (0x10)
249: #define HFA384x_RESP0_OFF (0x14)
250: #define HFA384x_RESP1_OFF (0x18)
251: #define HFA384x_RESP2_OFF (0x1c)
252: #define HFA384x_INFOFID_OFF (0x20)
253: #define HFA384x_RXFID_OFF (0x40)
254: #define HFA384x_ALLOCFID_OFF (0x44)
255: #define HFA384x_TXCOMPLFID_OFF (0x48)
256: #define HFA384x_SELECT0_OFF (0x30)
257: #define HFA384x_OFFSET0_OFF (0x38)
258: #define HFA384x_DATA0_OFF (0x6c)
259: #define HFA384x_SELECT1_OFF (0x34)
260: #define HFA384x_OFFSET1_OFF (0x3c)
261: #define HFA384x_DATA1_OFF (0x70)
262: #define HFA384x_EVSTAT_OFF (0x60)
263: #define HFA384x_INTEN_OFF (0x64)
264: #define HFA384x_EVACK_OFF (0x68)
265: #define HFA384x_CONTROL_OFF (0x28)
266: #define HFA384x_SWSUPPORT0_OFF (0x50)
267: #define HFA384x_SWSUPPORT1_OFF (0x54)
268: #define HFA384x_SWSUPPORT2_OFF (0x58)
269: #define HFA384x_AUXPAGE_OFF (0x74)
270: #define HFA384x_AUXOFFSET_OFF (0x78)
271: #define HFA384x_AUXDATA_OFF (0x7c)
272: #define HFA384x_PCICOR_OFF (0x4c)
273: #define HFA384x_PCIHCR_OFF (0x5c)
274: #define HFA384x_PCI_M0_ADDRH_OFF (0x80)
275: #define HFA384x_PCI_M0_ADDRL_OFF (0x84)
276: #define HFA384x_PCI_M0_LEN_OFF (0x88)
277: #define HFA384x_PCI_M0_CTL_OFF (0x8c)
278: #define HFA384x_PCI_STATUS_OFF (0x98)
279: #define HFA384x_PCI_M1_ADDRH_OFF (0xa0)
280: #define HFA384x_PCI_M1_ADDRL_OFF (0xa4)
281: #define HFA384x_PCI_M1_LEN_OFF (0xa8)
282: #define HFA384x_PCI_M1_CTL_OFF (0xac)
283:
284: #endif
285:
286: /*--- Register Field Masks --------------------------*/
287: #define HFA384x_CMD_BUSY ((UINT16)BIT15)
288: #define HFA384x_CMD_AINFO ((UINT16)(BIT14 | BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8))
289: #define HFA384x_CMD_MACPORT ((UINT16)(BIT10 | BIT9 | BIT8))
290: #define HFA384x_CMD_RECL ((UINT16)BIT8)
291: #define HFA384x_CMD_WRITE ((UINT16)BIT8)
292: #define HFA384x_CMD_PROGMODE ((UINT16)(BIT9 | BIT8))
293: #define HFA384x_CMD_CMDCODE ((UINT16)(BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0))
294:
295: #define HFA384x_STATUS_RESULT ((UINT16)(BIT14 | BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8))
296: #define HFA384x_STATUS_CMDCODE ((UINT16)(BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0))
297:
298: #define HFA384x_OFFSET_BUSY ((UINT16)BIT15)
299: #define HFA384x_OFFSET_ERR ((UINT16)BIT14)
300: #define HFA384x_OFFSET_DATAOFF ((UINT16)(BIT11 | BIT10 | BIT9 | BIT8 | BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1))
301:
302: #define HFA384x_EVSTAT_TICK ((UINT16)BIT15)
303: #define HFA384x_EVSTAT_WTERR ((UINT16)BIT14)
304: #define HFA384x_EVSTAT_INFDROP ((UINT16)BIT13)
305: #define HFA384x_EVSTAT_INFO ((UINT16)BIT7)
306: #define HFA384x_EVSTAT_DTIM ((UINT16)BIT5)
307: #define HFA384x_EVSTAT_CMD ((UINT16)BIT4)
308: #define HFA384x_EVSTAT_ALLOC ((UINT16)BIT3)
309: #define HFA384x_EVSTAT_TXEXC ((UINT16)BIT2)
310: #define HFA384x_EVSTAT_TX ((UINT16)BIT1)
311: #define HFA384x_EVSTAT_RX ((UINT16)BIT0)
312:
313: #define HFA384x_INT_BAP_OP (HFA384x_EVSTAT_INFO|HFA384x_EVSTAT_RX|HFA384x_EVSTAT_TX|HFA384x_EVSTAT_TXEXC)
314:
315: #define HFA384x_INT_NORMAL (HFA384x_EVSTAT_INFO|HFA384x_EVSTAT_RX|HFA384x_EVSTAT_TX|HFA384x_EVSTAT_TXEXC|HFA384x_EVSTAT_INFDROP|HFA384x_EVSTAT_ALLOC|HFA384x_EVSTAT_DTIM)
316:
317: #define HFA384x_INTEN_TICK ((UINT16)BIT15)
318: #define HFA384x_INTEN_WTERR ((UINT16)BIT14)
319: #define HFA384x_INTEN_INFDROP ((UINT16)BIT13)
320: #define HFA384x_INTEN_INFO ((UINT16)BIT7)
321: #define HFA384x_INTEN_DTIM ((UINT16)BIT5)
322: #define HFA384x_INTEN_CMD ((UINT16)BIT4)
323: #define HFA384x_INTEN_ALLOC ((UINT16)BIT3)
324: #define HFA384x_INTEN_TXEXC ((UINT16)BIT2)
325: #define HFA384x_INTEN_TX ((UINT16)BIT1)
326: #define HFA384x_INTEN_RX ((UINT16)BIT0)
327:
328: #define HFA384x_EVACK_TICK ((UINT16)BIT15)
329: #define HFA384x_EVACK_WTERR ((UINT16)BIT14)
330: #define HFA384x_EVACK_INFDROP ((UINT16)BIT13)
331: #define HFA384x_EVACK_INFO ((UINT16)BIT7)
332: #define HFA384x_EVACK_DTIM ((UINT16)BIT5)
333: #define HFA384x_EVACK_CMD ((UINT16)BIT4)
334: #define HFA384x_EVACK_ALLOC ((UINT16)BIT3)
335: #define HFA384x_EVACK_TXEXC ((UINT16)BIT2)
336: #define HFA384x_EVACK_TX ((UINT16)BIT1)
337: #define HFA384x_EVACK_RX ((UINT16)BIT0)
338:
339: #define HFA384x_CONTROL_AUXEN ((UINT16)(BIT15 | BIT14))
340:
341:
342: /*--- Command Code Constants --------------------------*/
343: /*--- Controller Commands --------------------------*/
344: #define HFA384x_CMDCODE_INIT ((UINT16)0x00)
345: #define HFA384x_CMDCODE_ENABLE ((UINT16)0x01)
346: #define HFA384x_CMDCODE_DISABLE ((UINT16)0x02)
347: #define HFA384x_CMDCODE_DIAG ((UINT16)0x03)
348:
349: /*--- Buffer Mgmt Commands --------------------------*/
350: #define HFA384x_CMDCODE_ALLOC ((UINT16)0x0A)
351: #define HFA384x_CMDCODE_TX ((UINT16)0x0B)
352: #define HFA384x_CMDCODE_CLRPRST ((UINT16)0x12)
353:
354: /*--- Regulate Commands --------------------------*/
355: #define HFA384x_CMDCODE_NOTIFY ((UINT16)0x10)
356: #define HFA384x_CMDCODE_INQ ((UINT16)0x11)
357:
358: /*--- Configure Commands --------------------------*/
359: #define HFA384x_CMDCODE_ACCESS ((UINT16)0x21)
360: #define HFA384x_CMDCODE_DOWNLD ((UINT16)0x22)
361:
362: /*--- Debugging Commands -----------------------------*/
363: #define HFA384x_CMDCODE_MONITOR ((UINT16)(0x38))
364: #define HFA384x_MONITOR_ENABLE ((UINT16)(0x0b))
365: #define HFA384x_MONITOR_DISABLE ((UINT16)(0x0f))
366:
367: /*--- Result Codes --------------------------*/
368: #define HFA384x_SUCCESS ((UINT16)(0x00))
369: #define HFA384x_CARD_FAIL ((UINT16)(0x01))
370: #define HFA384x_NO_BUFF ((UINT16)(0x05))
371: #define HFA384x_CMD_ERR ((UINT16)(0x7F))
372:
373: /*--- Programming Modes --------------------------
374: MODE 0: Disable programming
375: MODE 1: Enable volatile memory programming
376: MODE 2: Enable non-volatile memory programming
377: MODE 3: Program non-volatile memory section
378: --------------------------------------------------*/
379: #define HFA384x_PROGMODE_DISABLE ((UINT16)0x00)
380: #define HFA384x_PROGMODE_RAM ((UINT16)0x01)
381: #define HFA384x_PROGMODE_NV ((UINT16)0x02)
382: #define HFA384x_PROGMODE_NVWRITE ((UINT16)0x03)
383:
384: /*--- AUX register enable --------------------------*/
385: #define HFA384x_AUXPW0 ((UINT16)0xfe01)
386: #define HFA384x_AUXPW1 ((UINT16)0xdc23)
387: #define HFA384x_AUXPW2 ((UINT16)0xba45)
388:
389: #define HFA384x_CONTROL_AUX_ISDISABLED ((UINT16)0x0000)
390: #define HFA384x_CONTROL_AUX_ISENABLED ((UINT16)0xc000)
391: #define HFA384x_CONTROL_AUX_DOENABLE ((UINT16)0x8000)
392: #define HFA384x_CONTROL_AUX_DODISABLE ((UINT16)0x4000)
393:
394: /*--- Record ID Constants --------------------------*/
395: /*--------------------------------------------------------------------
396: Configuration RIDs: Network Parameters, Static Configuration Entities
397: --------------------------------------------------------------------*/
398: #define HFA384x_RID_CNFPORTTYPE ((UINT16)0xFC00)
399: #define HFA384x_RID_CNFOWNMACADDR ((UINT16)0xFC01)
400: #define HFA384x_RID_CNFDESIREDSSID ((UINT16)0xFC02)
401: #define HFA384x_RID_CNFOWNCHANNEL ((UINT16)0xFC03)
402: #define HFA384x_RID_CNFOWNSSID ((UINT16)0xFC04)
403: #define HFA384x_RID_CNFOWNATIMWIN ((UINT16)0xFC05)
404: #define HFA384x_RID_CNFSYSSCALE ((UINT16)0xFC06)
405: #define HFA384x_RID_CNFMAXDATALEN ((UINT16)0xFC07)
406: #define HFA384x_RID_CNFWDSADDR ((UINT16)0xFC08)
407: #define HFA384x_RID_CNFPMENABLED ((UINT16)0xFC09)
408: #define HFA384x_RID_CNFPMEPS ((UINT16)0xFC0A)
409: #define HFA384x_RID_CNFMULTICASTRX ((UINT16)0xFC0B)
410: #define HFA384x_RID_CNFMAXSLEEPDUR ((UINT16)0xFC0C)
411: #define HFA384x_RID_CNFPMHOLDDUR ((UINT16)0xFC0D)
412: #define HFA384x_RID_CNFOWNNAME ((UINT16)0xFC0E)
413: #define HFA384x_RID_CNFOWNDTIMPER ((UINT16)0xFC10)
414: #define HFA384x_RID_CNFWDSADDR1 ((UINT16)0xFC11)
415: #define HFA384x_RID_CNFWDSADDR2 ((UINT16)0xFC12)
416: #define HFA384x_RID_CNFWDSADDR3 ((UINT16)0xFC13)
417: #define HFA384x_RID_CNFWDSADDR4 ((UINT16)0xFC14)
418: #define HFA384x_RID_CNFWDSADDR5 ((UINT16)0xFC15)
419: #define HFA384x_RID_CNFWDSADDR6 ((UINT16)0xFC16)
420: #define HFA384x_RID_CNFMCASTPMBUFF ((UINT16)0xFC17)
421:
422: /*--------------------------------------------------------------------
423: Configuration RID lengths: Network Params, Static Config Entities
424: This is the length of JUST the DATA part of the RID (does not
425: include the len or code fields)
426: --------------------------------------------------------------------*/
427: /* TODO: fill in the rest of these */
428: #define HFA384x_RID_CNFPORTTYPE_LEN ((UINT16)2)
429: #define HFA384x_RID_CNFOWNMACADDR_LEN ((UINT16)6)
430: #define HFA384x_RID_CNFDESIREDSSID_LEN ((UINT16)34)
431: #define HFA384x_RID_CNFOWNCHANNEL_LEN ((UINT16)2)
432: #define HFA384x_RID_CNFOWNSSID_LEN ((UINT16)34)
433: #define HFA384x_RID_CNFOWNATIMWIN_LEN ((UINT16)2)
434: #define HFA384x_RID_CNFSYSSCALE_LEN ((UINT16)0)
435: #define HFA384x_RID_CNFMAXDATALEN_LEN ((UINT16)0)
436: #define HFA384x_RID_CNFWDSADDR_LEN ((UINT16)6)
437: #define HFA384x_RID_CNFPMENABLED_LEN ((UINT16)0)
438: #define HFA384x_RID_CNFPMEPS_LEN ((UINT16)0)
439: #define HFA384x_RID_CNFMULTICASTRX_LEN ((UINT16)0)
440: #define HFA384x_RID_CNFMAXSLEEPDUR_LEN ((UINT16)0)
441: #define HFA384x_RID_CNFPMHOLDDUR_LEN ((UINT16)0)
442: #define HFA384x_RID_CNFOWNNAME_LEN ((UINT16)34)
443: #define HFA384x_RID_CNFOWNDTIMPER_LEN ((UINT16)0)
444: #define HFA384x_RID_CNFWDSADDR1_LEN ((UINT16)6)
445: #define HFA384x_RID_CNFWDSADDR2_LEN ((UINT16)6)
446: #define HFA384x_RID_CNFWDSADDR3_LEN ((UINT16)6)
447: #define HFA384x_RID_CNFWDSADDR4_LEN ((UINT16)6)
448: #define HFA384x_RID_CNFWDSADDR5_LEN ((UINT16)6)
449: #define HFA384x_RID_CNFWDSADDR6_LEN ((UINT16)6)
450: #define HFA384x_RID_CNFMCASTPMBUFF_LEN ((UINT16)0)
451: #define HFA384x_RID_CNFAUTHENTICATION_LEN ((UINT16)sizeof(UINT16))
452: #define HFA384x_RID_CNFMAXSLEEPDUR_LEN ((UINT16)0)
453:
454: /*--------------------------------------------------------------------
455: Configuration RIDs: Network Parameters, Dynamic Configuration Entities
456: --------------------------------------------------------------------*/
457: #define HFA384x_RID_GROUPADDR ((UINT16)0xFC80)
458: #define HFA384x_RID_CREATEIBSS ((UINT16)0xFC81)
459: #define HFA384x_RID_FRAGTHRESH ((UINT16)0xFC82)
460: #define HFA384x_RID_RTSTHRESH ((UINT16)0xFC83)
461: #define HFA384x_RID_TXRATECNTL ((UINT16)0xFC84)
462: #define HFA384x_RID_PROMISCMODE ((UINT16)0xFC85)
463: #define HFA384x_RID_FRAGTHRESH0 ((UINT16)0xFC90)
464: #define HFA384x_RID_FRAGTHRESH1 ((UINT16)0xFC91)
465: #define HFA384x_RID_FRAGTHRESH2 ((UINT16)0xFC92)
466: #define HFA384x_RID_FRAGTHRESH3 ((UINT16)0xFC93)
467: #define HFA384x_RID_FRAGTHRESH4 ((UINT16)0xFC94)
468: #define HFA384x_RID_FRAGTHRESH5 ((UINT16)0xFC95)
469: #define HFA384x_RID_FRAGTHRESH6 ((UINT16)0xFC96)
470: #define HFA384x_RID_RTSTHRESH0 ((UINT16)0xFC97)
471: #define HFA384x_RID_RTSTHRESH1 ((UINT16)0xFC98)
472: #define HFA384x_RID_RTSTHRESH2 ((UINT16)0xFC99)
473: #define HFA384x_RID_RTSTHRESH3 ((UINT16)0xFC9A)
474: #define HFA384x_RID_RTSTHRESH4 ((UINT16)0xFC9B)
475: #define HFA384x_RID_RTSTHRESH5 ((UINT16)0xFC9C)
476: #define HFA384x_RID_RTSTHRESH6 ((UINT16)0xFC9D)
477: #define HFA384x_RID_TXRATECNTL0 ((UINT16)0xFC9E)
478: #define HFA384x_RID_TXRATECNTL1 ((UINT16)0xFC9F)
479: #define HFA384x_RID_TXRATECNTL2 ((UINT16)0xFCA0)
480: #define HFA384x_RID_TXRATECNTL3 ((UINT16)0xFCA1)
481: #define HFA384x_RID_TXRATECNTL4 ((UINT16)0xFCA2)
482: #define HFA384x_RID_TXRATECNTL5 ((UINT16)0xFCA3)
483: #define HFA384x_RID_TXRATECNTL6 ((UINT16)0xFCA4)
484:
485: /*--------------------------------------------------------------------
486: Configuration RID Lengths: Network Param, Dynamic Config Entities
487: This is the length of JUST the DATA part of the RID (does not
488: include the len or code fields)
489: --------------------------------------------------------------------*/
490: /* TODO: fill in the rest of these */
491: #define HFA384x_RID_GROUPADDR_LEN ((UINT16)16 * WLAN_ADDR_LEN)
492: #define HFA384x_RID_CREATEIBSS_LEN ((UINT16)0)
493: #define HFA384x_RID_FRAGTHRESH_LEN ((UINT16)0)
494: #define HFA384x_RID_RTSTHRESH_LEN ((UINT16)0)
495: #define HFA384x_RID_TXRATECNTL_LEN ((UINT16)4)
496: #define HFA384x_RID_PROMISCMODE_LEN ((UINT16)2)
497: #define HFA384x_RID_FRAGTHRESH0_LEN ((UINT16)0)
498: #define HFA384x_RID_FRAGTHRESH1_LEN ((UINT16)0)
499: #define HFA384x_RID_FRAGTHRESH2_LEN ((UINT16)0)
500: #define HFA384x_RID_FRAGTHRESH3_LEN ((UINT16)0)
501: #define HFA384x_RID_FRAGTHRESH4_LEN ((UINT16)0)
502: #define HFA384x_RID_FRAGTHRESH5_LEN ((UINT16)0)
503: #define HFA384x_RID_FRAGTHRESH6_LEN ((UINT16)0)
504: #define HFA384x_RID_RTSTHRESH0_LEN ((UINT16)0)
505: #define HFA384x_RID_RTSTHRESH1_LEN ((UINT16)0)
506: #define HFA384x_RID_RTSTHRESH2_LEN ((UINT16)0)
507: #define HFA384x_RID_RTSTHRESH3_LEN ((UINT16)0)
508: #define HFA384x_RID_RTSTHRESH4_LEN ((UINT16)0)
509: #define HFA384x_RID_RTSTHRESH5_LEN ((UINT16)0)
510: #define HFA384x_RID_RTSTHRESH6_LEN ((UINT16)0)
511: #define HFA384x_RID_TXRATECNTL0_LEN ((UINT16)0)
512: #define HFA384x_RID_TXRATECNTL1_LEN ((UINT16)0)
513: #define HFA384x_RID_TXRATECNTL2_LEN ((UINT16)0)
514: #define HFA384x_RID_TXRATECNTL3_LEN ((UINT16)0)
515: #define HFA384x_RID_TXRATECNTL4_LEN ((UINT16)0)
516: #define HFA384x_RID_TXRATECNTL5_LEN ((UINT16)0)
517: #define HFA384x_RID_TXRATECNTL6_LEN ((UINT16)0)
518:
519: /*--------------------------------------------------------------------
520: Configuration RIDs: Behavior Parameters
521: --------------------------------------------------------------------*/
522: #define HFA384x_RID_ITICKTIME ((UINT16)0xFCE0)
523:
524: /*--------------------------------------------------------------------
525: Configuration RID Lengths: Behavior Parameters
526: This is the length of JUST the DATA part of the RID (does not
527: include the len or code fields)
528: --------------------------------------------------------------------*/
529: #define HFA384x_RID_ITICKTIME_LEN ((UINT16)2)
530:
531: /*----------------------------------------------------------------------
532: Information RIDs: NIC Information
533: --------------------------------------------------------------------*/
534: #define HFA384x_RID_MAXLOADTIME ((UINT16)0xFD00)
535: #define HFA384x_RID_DOWNLOADBUFFER ((UINT16)0xFD01)
536: #define HFA384x_RID_PRIIDENTITY ((UINT16)0xFD02)
537: #define HFA384x_RID_PRISUPRANGE ((UINT16)0xFD03)
538: #define HFA384x_RID_PRI_CFIACTRANGES ((UINT16)0xFD04)
539: #define HFA384x_RID_NICSERIALNUMBER ((UINT16)0xFD0A)
540: #define HFA384x_RID_NICIDENTITY ((UINT16)0xFD0B)
541: #define HFA384x_RID_MFISUPRANGE ((UINT16)0xFD0C)
542: #define HFA384x_RID_CFISUPRANGE ((UINT16)0xFD0D)
543: #define HFA384x_RID_CHANNELLIST ((UINT16)0xFD10)
544: #define HFA384x_RID_REGULATORYDOMAINS ((UINT16)0xFD11)
545: #define HFA384x_RID_TEMPTYPE ((UINT16)0xFD12)
546: #define HFA384x_RID_CIS ((UINT16)0xFD13)
547: #define HFA384x_RID_STAIDENTITY ((UINT16)0xFD20)
548: #define HFA384x_RID_STASUPRANGE ((UINT16)0xFD21)
549: #define HFA384x_RID_STA_MFIACTRANGES ((UINT16)0xFD22)
550: #define HFA384x_RID_STA_CFIACTRANGES ((UINT16)0xFD23)
551: #define HFA384x_RID_BUILDSEQ ((UINT16)0xFFFE)
552: #define HFA384x_RID_FWID ((UINT16)0xFFFF)
553:
554: /*----------------------------------------------------------------------
555: Information RID Lengths: NIC Information
556: This is the length of JUST the DATA part of the RID (does not
557: include the len or code fields)
558: --------------------------------------------------------------------*/
559: #define HFA384x_RID_MAXLOADTIME_LEN ((UINT16)0)
560: #define HFA384x_RID_DOWNLOADBUFFER_LEN ((UINT16)sizeof(hfa384x_downloadbuffer_t))
561: #define HFA384x_RID_PRIIDENTITY_LEN ((UINT16)8)
562: #define HFA384x_RID_PRISUPRANGE_LEN ((UINT16)10)
563: #define HFA384x_RID_CFIACTRANGES_LEN ((UINT16)10)
564: #define HFA384x_RID_NICSERIALNUMBER_LEN ((UINT16)12)
565: #define HFA384x_RID_NICIDENTITY_LEN ((UINT16)8)
566: #define HFA384x_RID_MFISUPRANGE_LEN ((UINT16)10)
567: #define HFA384x_RID_CFISUPRANGE_LEN ((UINT16)10)
568: #define HFA384x_RID_CHANNELLIST_LEN ((UINT16)0)
569: #define HFA384x_RID_REGULATORYDOMAINS_LEN ((UINT16)12)
570: #define HFA384x_RID_TEMPTYPE_LEN ((UINT16)0)
571: #define HFA384x_RID_CIS_LEN ((UINT16)480)
572: #define HFA384x_RID_STAIDENTITY_LEN ((UINT16)8)
573: #define HFA384x_RID_STASUPRANGE_LEN ((UINT16)10)
574: #define HFA384x_RID_MFIACTRANGES_LEN ((UINT16)10)
575: #define HFA384x_RID_CFIACTRANGES2_LEN ((UINT16)10)
576: #define HFA384x_RID_BUILDSEQ_LEN ((UINT16)sizeof(hfa384x_BuildSeq_t))
577: #define HFA384x_RID_FWID_LEN ((UINT16)sizeof(hfa384x_FWID_t))
578:
579: /*--------------------------------------------------------------------
580: Information RIDs: MAC Information
581: --------------------------------------------------------------------*/
582: #define HFA384x_RID_PORTSTATUS ((UINT16)0xFD40)
583: #define HFA384x_RID_CURRENTSSID ((UINT16)0xFD41)
584: #define HFA384x_RID_CURRENTBSSID ((UINT16)0xFD42)
585: #define HFA384x_RID_COMMSQUALITY ((UINT16)0xFD43)
586: #define HFA384x_RID_CURRENTTXRATE ((UINT16)0xFD44)
587: #define HFA384x_RID_CURRENTBCNINT ((UINT16)0xFD45)
588: #define HFA384x_RID_CURRENTSCALETHRESH ((UINT16)0xFD46)
589: #define HFA384x_RID_PROTOCOLRSPTIME ((UINT16)0xFD47)
590: #define HFA384x_RID_SHORTRETRYLIMIT ((UINT16)0xFD48)
591: #define HFA384x_RID_LONGRETRYLIMIT ((UINT16)0xFD49)
592: #define HFA384x_RID_MAXTXLIFETIME ((UINT16)0xFD4A)
593: #define HFA384x_RID_MAXRXLIFETIME ((UINT16)0xFD4B)
594: #define HFA384x_RID_CFPOLLABLE ((UINT16)0xFD4C)
595: #define HFA384x_RID_AUTHALGORITHMS ((UINT16)0xFD4D)
596: #define HFA384x_RID_PRIVACYOPTIMP ((UINT16)0xFD4F)
597: #define HFA384x_RID_DBMCOMMSQUALITY ((UINT16)0xFD51)
598: #define HFA384x_RID_CURRENTTXRATE1 ((UINT16)0xFD80)
599: #define HFA384x_RID_CURRENTTXRATE2 ((UINT16)0xFD81)
600: #define HFA384x_RID_CURRENTTXRATE3 ((UINT16)0xFD82)
601: #define HFA384x_RID_CURRENTTXRATE4 ((UINT16)0xFD83)
602: #define HFA384x_RID_CURRENTTXRATE5 ((UINT16)0xFD84)
603: #define HFA384x_RID_CURRENTTXRATE6 ((UINT16)0xFD85)
604: #define HFA384x_RID_OWNMACADDRESS ((UINT16)0xFD86)
605: // #define HFA384x_RID_PCFINFO ((UINT16)0xFD87)
606: #define HFA384x_RID_SCANRESULTS ((UINT16)0xFD88) // NEW
607: #define HFA384x_RID_HOSTSCANRESULTS ((UINT16)0xFD89) // NEW
608: #define HFA384x_RID_AUTHENTICATIONUSED ((UINT16)0xFD8A) // NEW
609: #define HFA384x_RID_ASSOCIATEFAILURE ((UINT16)0xFD8D) // 1.8.0
610:
611: /*--------------------------------------------------------------------
612: Information RID Lengths: MAC Information
613: This is the length of JUST the DATA part of the RID (does not
614: include the len or code fields)
615: --------------------------------------------------------------------*/
616: #define HFA384x_RID_PORTSTATUS_LEN ((UINT16)0)
617: #define HFA384x_RID_CURRENTSSID_LEN ((UINT16)34)
618: #define HFA384x_RID_CURRENTBSSID_LEN ((UINT16)WLAN_BSSID_LEN)
619: #define HFA384x_RID_COMMSQUALITY_LEN ((UINT16)sizeof(hfa384x_commsquality_t))
620: #define HFA384x_RID_DBMCOMMSQUALITY_LEN ((UINT16)sizeof(hfa384x_dbmcommsquality_t))
621: #define HFA384x_RID_CURRENTTXRATE_LEN ((UINT16)0)
622: #define HFA384x_RID_CURRENTBCNINT_LEN ((UINT16)0)
623: #define HFA384x_RID_STACURSCALETHRESH_LEN ((UINT16)12)
624: #define HFA384x_RID_APCURSCALETHRESH_LEN ((UINT16)6)
625: #define HFA384x_RID_PROTOCOLRSPTIME_LEN ((UINT16)0)
626: #define HFA384x_RID_SHORTRETRYLIMIT_LEN ((UINT16)0)
627: #define HFA384x_RID_LONGRETRYLIMIT_LEN ((UINT16)0)
628: #define HFA384x_RID_MAXTXLIFETIME_LEN ((UINT16)0)
629: #define HFA384x_RID_MAXRXLIFETIME_LEN ((UINT16)0)
630: #define HFA384x_RID_CFPOLLABLE_LEN ((UINT16)0)
631: #define HFA384x_RID_AUTHALGORITHMS_LEN ((UINT16)4)
632: #define HFA384x_RID_PRIVACYOPTIMP_LEN ((UINT16)0)
633: #define HFA384x_RID_CURRENTTXRATE1_LEN ((UINT16)0)
634: #define HFA384x_RID_CURRENTTXRATE2_LEN ((UINT16)0)
635: #define HFA384x_RID_CURRENTTXRATE3_LEN ((UINT16)0)
636: #define HFA384x_RID_CURRENTTXRATE4_LEN ((UINT16)0)
637: #define HFA384x_RID_CURRENTTXRATE5_LEN ((UINT16)0)
638: #define HFA384x_RID_CURRENTTXRATE6_LEN ((UINT16)0)
639: #define HFA384x_RID_OWNMACADDRESS_LEN ((UINT16)6)
640: #define HFA384x_RID_PCFINFO_LEN ((UINT16)6)
641: #define HFA384x_RID_CNFAPPCFINFO_LEN ((UINT16)sizeof(hfa384x_PCFInfo_data_t))
642: #define HFA384x_RID_SCANREQUEST_LEN ((UINT16)sizeof(hfa384x_ScanRequest_data_t))
643: #define HFA384x_RID_JOINREQUEST_LEN ((UINT16)sizeof(hfa384x_JoinRequest_data_t))
644: #define HFA384x_RID_AUTHENTICATESTA_LEN ((UINT16)sizeof(hfa384x_authenticateStation_data_t))
645: #define HFA384x_RID_CHANNELINFOREQUEST_LEN ((UINT16)sizeof(hfa384x_ChannelInfoRequest_data_t))
646: /*--------------------------------------------------------------------
647: Information RIDs: Modem Information
648: --------------------------------------------------------------------*/
649: #define HFA384x_RID_PHYTYPE ((UINT16)0xFDC0)
650: #define HFA384x_RID_CURRENTCHANNEL ((UINT16)0xFDC1)
651: #define HFA384x_RID_CURRENTPOWERSTATE ((UINT16)0xFDC2)
652: #define HFA384x_RID_CCAMODE ((UINT16)0xFDC3)
653: #define HFA384x_RID_SUPPORTEDDATARATES ((UINT16)0xFDC6)
654: #define HFA384x_RID_LFOSTATUS ((UINT16)0xFDC7) // 1.7.1
655:
656: /*--------------------------------------------------------------------
657: Information RID Lengths: Modem Information
658: This is the length of JUST the DATA part of the RID (does not
659: include the len or code fields)
660: --------------------------------------------------------------------*/
661: #define HFA384x_RID_PHYTYPE_LEN ((UINT16)0)
662: #define HFA384x_RID_CURRENTCHANNEL_LEN ((UINT16)0)
663: #define HFA384x_RID_CURRENTPOWERSTATE_LEN ((UINT16)0)
664: #define HFA384x_RID_CCAMODE_LEN ((UINT16)0)
665: #define HFA384x_RID_SUPPORTEDDATARATES_LEN ((UINT16)10)
666:
667: /*--------------------------------------------------------------------
668: API ENHANCEMENTS (NOT ALREADY IMPLEMENTED)
669: --------------------------------------------------------------------*/
670: #define HFA384x_RID_CNFWEPDEFAULTKEYID ((UINT16)0xFC23)
671: #define HFA384x_RID_CNFWEPDEFAULTKEY0 ((UINT16)0xFC24)
672: #define HFA384x_RID_CNFWEPDEFAULTKEY1 ((UINT16)0xFC25)
673: #define HFA384x_RID_CNFWEPDEFAULTKEY2 ((UINT16)0xFC26)
674: #define HFA384x_RID_CNFWEPDEFAULTKEY3 ((UINT16)0xFC27)
675: #define HFA384x_RID_CNFWEPFLAGS ((UINT16)0xFC28)
676: #define HFA384x_RID_CNFWEPKEYMAPTABLE ((UINT16)0xFC29)
677: #define HFA384x_RID_CNFAUTHENTICATION ((UINT16)0xFC2A)
678: #define HFA384x_RID_CNFMAXASSOCSTATIONS ((UINT16)0xFC2B)
679: #define HFA384x_RID_CNFTXCONTROL ((UINT16)0xFC2C)
680: #define HFA384x_RID_CNFROAMINGMODE ((UINT16)0xFC2D)
681: #define HFA384x_RID_CNFHOSTAUTHASSOC ((UINT16)0xFC2E)
682: #define HFA384x_RID_CNFRCVCRCERROR ((UINT16)0xFC30)
683: // #define HFA384x_RID_CNFMMLIFE ((UINT16)0xFC31)
684: #define HFA384x_RID_CNFALTRETRYCNT ((UINT16)0xFC32)
685: #define HFA384x_RID_CNFAPBCNINT ((UINT16)0xFC33)
686: #define HFA384x_RID_CNFAPPCFINFO ((UINT16)0xFC34)
687: #define HFA384x_RID_CNFSTAPCFINFO ((UINT16)0xFC35)
688: #define HFA384x_RID_CNFPRIORITYQUSAGE ((UINT16)0xFC37)
689: #define HFA384x_RID_CNFTIMCTRL ((UINT16)0xFC40)
690: #define HFA384x_RID_CNFTHIRTY2TALLY ((UINT16)0xFC42)
691: #define HFA384x_RID_CNFENHSECURITY ((UINT16)0xFC43)
692: #define HFA384x_RID_CNFDBMADJUST ((UINT16)0xFC46) // NEW
693: #define HFA384x_RID_CNFWPADATA ((UINT16)0xFC48) // 1.7.0
694: #define HFA384x_RID_CNFPROPOGATIONDELAY ((UINT16)0xFC49) // 1.7.6
695: #define HFA384x_RID_CNFSHORTPREAMBLE ((UINT16)0xFCB0)
696: #define HFA384x_RID_CNFEXCLONGPREAMBLE ((UINT16)0xFCB1)
697: #define HFA384x_RID_CNFAUTHRSPTIMEOUT ((UINT16)0xFCB2)
698: #define HFA384x_RID_CNFBASICRATES ((UINT16)0xFCB3)
699: #define HFA384x_RID_CNFSUPPRATES ((UINT16)0xFCB4)
700: #define HFA384x_RID_CNFFALLBACKCTRL ((UINT16)0xFCB5) // NEW
701: #define HFA384x_RID_WEPKEYSTATUS ((UINT16)0xFCB6) // NEW
702: #define HFA384x_RID_WEPKEYMAPINDEX ((UINT16)0xFCB7) // NEW
703: #define HFA384x_RID_BROADCASTKEYID ((UINT16)0xFCB8) // NEW
704: #define HFA384x_RID_ENTSECFLAGEYID ((UINT16)0xFCB9) // NEW
705: #define HFA384x_RID_CNFPASSIVESCANCTRL ((UINT16)0xFCBA) // NEW STA
706: #define HFA384x_RID_CNFWPAHANDLING ((UINT16)0xFCBB) // 1.7.0
707: #define HFA384x_RID_MDCCONTROL ((UINT16)0xFCBC) // 1.7.0/1.4.0
708: #define HFA384x_RID_MDCCOUNTRY ((UINT16)0xFCBD) // 1.7.0/1.4.0
709: #define HFA384x_RID_TXPOWERMAX ((UINT16)0xFCBE) // 1.7.0/1.4.0
710: #define HFA384x_RID_CNFLFOENBLED ((UINT16)0xFCBF) // 1.6.3
711: #define HFA384x_RID_CAPINFO ((UINT16)0xFCC0) // 1.7.0/1.3.7
712: #define HFA384x_RID_LISTENINTERVAL ((UINT16)0xFCC1) // 1.7.0/1.3.7
713: #define HFA384x_RID_DIVERSITYENABLED ((UINT16)0xFCC2) // 1.7.0/1.3.7
714: #define HFA384x_RID_LED_CONTROL ((UINT16)0xFCC4) // 1.7.6
715: #define HFA384x_RID_HFO_DELAY ((UINT16)0xFCC5) // 1.7.6
716: #define HFA384x_RID_DISSALOWEDBSSID ((UINT16)0xFCC6) // 1.8.0
717: #define HFA384x_RID_SCANREQUEST ((UINT16)0xFCE1)
718: #define HFA384x_RID_JOINREQUEST ((UINT16)0xFCE2)
719: #define HFA384x_RID_AUTHENTICATESTA ((UINT16)0xFCE3)
720: #define HFA384x_RID_CHANNELINFOREQUEST ((UINT16)0xFCE4)
721: #define HFA384x_RID_HOSTSCAN ((UINT16)0xFCE5) // NEW STA
722: #define HFA384x_RID_ASSOCIATESTA ((UINT16)0xFCE6)
723:
724: #define HFA384x_RID_CNFWEPDEFAULTKEY_LEN ((UINT16)6)
725: #define HFA384x_RID_CNFWEP128DEFAULTKEY_LEN ((UINT16)14)
726: #define HFA384x_RID_CNFPRIOQUSAGE_LEN ((UINT16)4)
727: /*--------------------------------------------------------------------
728: PD Record codes
729: --------------------------------------------------------------------*/
730: #define HFA384x_PDR_PCB_PARTNUM ((UINT16)0x0001)
731: #define HFA384x_PDR_PDAVER ((UINT16)0x0002)
732: #define HFA384x_PDR_NIC_SERIAL ((UINT16)0x0003)
733: #define HFA384x_PDR_MKK_MEASUREMENTS ((UINT16)0x0004)
734: #define HFA384x_PDR_NIC_RAMSIZE ((UINT16)0x0005)
735: #define HFA384x_PDR_MFISUPRANGE ((UINT16)0x0006)
736: #define HFA384x_PDR_CFISUPRANGE ((UINT16)0x0007)
737: #define HFA384x_PDR_NICID ((UINT16)0x0008)
738: //#define HFA384x_PDR_REFDAC_MEASUREMENTS ((UINT16)0x0010)
739: //#define HFA384x_PDR_VGDAC_MEASUREMENTS ((UINT16)0x0020)
740: //#define HFA384x_PDR_LEVEL_COMP_MEASUREMENTS ((UINT16)0x0030)
741: //#define HFA384x_PDR_MODEM_TRIMDAC_MEASUREMENTS ((UINT16)0x0040)
742: //#define HFA384x_PDR_COREGA_HACK ((UINT16)0x00ff)
743: #define HFA384x_PDR_MAC_ADDRESS ((UINT16)0x0101)
744: //#define HFA384x_PDR_MKK_CALLNAME ((UINT16)0x0102)
745: #define HFA384x_PDR_REGDOMAIN ((UINT16)0x0103)
746: #define HFA384x_PDR_ALLOWED_CHANNEL ((UINT16)0x0104)
747: #define HFA384x_PDR_DEFAULT_CHANNEL ((UINT16)0x0105)
748: //#define HFA384x_PDR_PRIVACY_OPTION ((UINT16)0x0106)
749: #define HFA384x_PDR_TEMPTYPE ((UINT16)0x0107)
750: //#define HFA384x_PDR_REFDAC_SETUP ((UINT16)0x0110)
751: //#define HFA384x_PDR_VGDAC_SETUP ((UINT16)0x0120)
752: //#define HFA384x_PDR_LEVEL_COMP_SETUP ((UINT16)0x0130)
753: //#define HFA384x_PDR_TRIMDAC_SETUP ((UINT16)0x0140)
754: #define HFA384x_PDR_IFR_SETTING ((UINT16)0x0200)
755: #define HFA384x_PDR_RFR_SETTING ((UINT16)0x0201)
756: #define HFA384x_PDR_HFA3861_BASELINE ((UINT16)0x0202)
757: #define HFA384x_PDR_HFA3861_SHADOW ((UINT16)0x0203)
758: #define HFA384x_PDR_HFA3861_IFRF ((UINT16)0x0204)
759: #define HFA384x_PDR_HFA3861_CHCALSP ((UINT16)0x0300)
760: #define HFA384x_PDR_HFA3861_CHCALI ((UINT16)0x0301)
761: #define HFA384x_PDR_MAX_TX_POWER ((UINT16)0x0302)
762: #define HFA384x_PDR_MASTER_CHAN_LIST ((UINT16)0x0303)
763: #define HFA384x_PDR_3842_NIC_CONFIG ((UINT16)0x0400)
764: #define HFA384x_PDR_USB_ID ((UINT16)0x0401)
765: #define HFA384x_PDR_PCI_ID ((UINT16)0x0402)
766: #define HFA384x_PDR_PCI_IFCONF ((UINT16)0x0403)
767: #define HFA384x_PDR_PCI_PMCONF ((UINT16)0x0404)
768: #define HFA384x_PDR_RFENRGY ((UINT16)0x0406)
769: #define HFA384x_PDR_USB_POWER_TYPE ((UINT16)0x0407)
770: //#define HFA384x_PDR_UNKNOWN408 ((UINT16)0x0408)
771: #define HFA384x_PDR_USB_MAX_POWER ((UINT16)0x0409)
772: #define HFA384x_PDR_USB_MANUFACTURER ((UINT16)0x0410)
773: #define HFA384x_PDR_USB_PRODUCT ((UINT16)0x0411)
774: #define HFA384x_PDR_ANT_DIVERSITY ((UINT16)0x0412)
775: #define HFA384x_PDR_HFO_DELAY ((UINT16)0x0413)
776: #define HFA384x_PDR_SCALE_THRESH ((UINT16)0x0414)
777:
778: #define HFA384x_PDR_HFA3861_MANF_TESTSP ((UINT16)0x0900)
779: #define HFA384x_PDR_HFA3861_MANF_TESTI ((UINT16)0x0901)
780: #define HFA384x_PDR_END_OF_PDA ((UINT16)0x0000)
781:
782:
783: /*=============================================================*/
784: /*------ Macros -----------------------------------------------*/
785:
786: /*--- Register ID macros ------------------------*/
787:
788: #define HFA384x_CMD HFA384x_CMD_OFF
789: #define HFA384x_PARAM0 HFA384x_PARAM0_OFF
790: #define HFA384x_PARAM1 HFA384x_PARAM1_OFF
791: #define HFA384x_PARAM2 HFA384x_PARAM2_OFF
792: #define HFA384x_STATUS HFA384x_STATUS_OFF
793: #define HFA384x_RESP0 HFA384x_RESP0_OFF
794: #define HFA384x_RESP1 HFA384x_RESP1_OFF
795: #define HFA384x_RESP2 HFA384x_RESP2_OFF
796: #define HFA384x_INFOFID HFA384x_INFOFID_OFF
797: #define HFA384x_RXFID HFA384x_RXFID_OFF
798: #define HFA384x_ALLOCFID HFA384x_ALLOCFID_OFF
799: #define HFA384x_TXCOMPLFID HFA384x_TXCOMPLFID_OFF
800: #define HFA384x_SELECT0 HFA384x_SELECT0_OFF
801: #define HFA384x_OFFSET0 HFA384x_OFFSET0_OFF
802: #define HFA384x_DATA0 HFA384x_DATA0_OFF
803: #define HFA384x_SELECT1 HFA384x_SELECT1_OFF
804: #define HFA384x_OFFSET1 HFA384x_OFFSET1_OFF
805: #define HFA384x_DATA1 HFA384x_DATA1_OFF
806: #define HFA384x_EVSTAT HFA384x_EVSTAT_OFF
807: #define HFA384x_INTEN HFA384x_INTEN_OFF
808: #define HFA384x_EVACK HFA384x_EVACK_OFF
809: #define HFA384x_CONTROL HFA384x_CONTROL_OFF
810: #define HFA384x_SWSUPPORT0 HFA384x_SWSUPPORT0_OFF
811: #define HFA384x_SWSUPPORT1 HFA384x_SWSUPPORT1_OFF
812: #define HFA384x_SWSUPPORT2 HFA384x_SWSUPPORT2_OFF
813: #define HFA384x_AUXPAGE HFA384x_AUXPAGE_OFF
814: #define HFA384x_AUXOFFSET HFA384x_AUXOFFSET_OFF
815: #define HFA384x_AUXDATA HFA384x_AUXDATA_OFF
816: #define HFA384x_PCICOR HFA384x_PCICOR_OFF
817: #define HFA384x_PCIHCR HFA384x_PCIHCR_OFF
818:
819:
820: /*--- Register Test/Get/Set Field macros ------------------------*/
821:
822: #define HFA384x_CMD_ISBUSY(value) ((UINT16)(((UINT16)value) & HFA384x_CMD_BUSY))
823: #define HFA384x_CMD_AINFO_GET(value) ((UINT16)(((UINT16)(value) & HFA384x_CMD_AINFO) >> 8))
824: #define HFA384x_CMD_AINFO_SET(value) ((UINT16)((UINT16)(value) << 8))
825: #define HFA384x_CMD_MACPORT_GET(value) ((UINT16)(HFA384x_CMD_AINFO_GET((UINT16)(value) & HFA384x_CMD_MACPORT)))
826: #define HFA384x_CMD_MACPORT_SET(value) ((UINT16)HFA384x_CMD_AINFO_SET(value))
827: #define HFA384x_CMD_ISRECL(value) ((UINT16)(HFA384x_CMD_AINFO_GET((UINT16)(value) & HFA384x_CMD_RECL)))
828: #define HFA384x_CMD_RECL_SET(value) ((UINT16)HFA384x_CMD_AINFO_SET(value))
829: #define HFA384x_CMD_QOS_GET(value) ((UINT16((((UINT16)(value))&((UINT16)0x3000)) >> 12))
830: #define HFA384x_CMD_QOS_SET(value) ((UINT16)((((UINT16)(value)) << 12) & 0x3000))
831: #define HFA384x_CMD_ISWRITE(value) ((UINT16)(HFA384x_CMD_AINFO_GET((UINT16)(value) & HFA384x_CMD_WRITE)))
832: #define HFA384x_CMD_WRITE_SET(value) ((UINT16)HFA384x_CMD_AINFO_SET((UINT16)value))
833: #define HFA384x_CMD_PROGMODE_GET(value) ((UINT16)(HFA384x_CMD_AINFO_GET((UINT16)(value) & HFA384x_CMD_PROGMODE)))
834: #define HFA384x_CMD_PROGMODE_SET(value) ((UINT16)HFA384x_CMD_AINFO_SET((UINT16)value))
835: #define HFA384x_CMD_CMDCODE_GET(value) ((UINT16)(((UINT16)(value)) & HFA384x_CMD_CMDCODE))
836: #define HFA384x_CMD_CMDCODE_SET(value) ((UINT16)(value))
837:
838: #define HFA384x_STATUS_RESULT_GET(value) ((UINT16)((((UINT16)(value)) & HFA384x_STATUS_RESULT) >> 8))
839: #define HFA384x_STATUS_RESULT_SET(value) (((UINT16)(value)) << 8)
840: #define HFA384x_STATUS_CMDCODE_GET(value) (((UINT16)(value)) & HFA384x_STATUS_CMDCODE)
841: #define HFA384x_STATUS_CMDCODE_SET(value) ((UINT16)(value))
842:
843: #define HFA384x_OFFSET_ISBUSY(value) ((UINT16)(((UINT16)(value)) & HFA384x_OFFSET_BUSY))
844: #define HFA384x_OFFSET_ISERR(value) ((UINT16)(((UINT16)(value)) & HFA384x_OFFSET_ERR))
845: #define HFA384x_OFFSET_DATAOFF_GET(value) ((UINT16)(((UINT16)(value)) & HFA384x_OFFSET_DATAOFF))
846: #define HFA384x_OFFSET_DATAOFF_SET(value) ((UINT16)(value))
847:
848: #define HFA384x_EVSTAT_ISTICK(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_TICK))
849: #define HFA384x_EVSTAT_ISWTERR(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_WTERR))
850: #define HFA384x_EVSTAT_ISINFDROP(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_INFDROP))
851: #define HFA384x_EVSTAT_ISINFO(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_INFO))
852: #define HFA384x_EVSTAT_ISDTIM(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_DTIM))
853: #define HFA384x_EVSTAT_ISCMD(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_CMD))
854: #define HFA384x_EVSTAT_ISALLOC(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_ALLOC))
855: #define HFA384x_EVSTAT_ISTXEXC(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_TXEXC))
856: #define HFA384x_EVSTAT_ISTX(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_TX))
857: #define HFA384x_EVSTAT_ISRX(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_RX))
858:
859: #define HFA384x_EVSTAT_ISBAP_OP(value) ((UINT16)(((UINT16)(value)) & HFA384x_INT_BAP_OP))
860:
861: #define HFA384x_INTEN_ISTICK(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_TICK))
862: #define HFA384x_INTEN_TICK_SET(value) ((UINT16)(((UINT16)(value)) << 15))
863: #define HFA384x_INTEN_ISWTERR(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_WTERR))
864: #define HFA384x_INTEN_WTERR_SET(value) ((UINT16)(((UINT16)(value)) << 14))
865: #define HFA384x_INTEN_ISINFDROP(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_INFDROP))
866: #define HFA384x_INTEN_INFDROP_SET(value) ((UINT16)(((UINT16)(value)) << 13))
867: #define HFA384x_INTEN_ISINFO(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_INFO))
868: #define HFA384x_INTEN_INFO_SET(value) ((UINT16)(((UINT16)(value)) << 7))
869: #define HFA384x_INTEN_ISDTIM(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_DTIM))
870: #define HFA384x_INTEN_DTIM_SET(value) ((UINT16)(((UINT16)(value)) << 5))
871: #define HFA384x_INTEN_ISCMD(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_CMD))
872: #define HFA384x_INTEN_CMD_SET(value) ((UINT16)(((UINT16)(value)) << 4))
873: #define HFA384x_INTEN_ISALLOC(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_ALLOC))
874: #define HFA384x_INTEN_ALLOC_SET(value) ((UINT16)(((UINT16)(value)) << 3))
875: #define HFA384x_INTEN_ISTXEXC(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_TXEXC))
876: #define HFA384x_INTEN_TXEXC_SET(value) ((UINT16)(((UINT16)(value)) << 2))
877: #define HFA384x_INTEN_ISTX(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_TX))
878: #define HFA384x_INTEN_TX_SET(value) ((UINT16)(((UINT16)(value)) << 1))
879: #define HFA384x_INTEN_ISRX(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_RX))
880: #define HFA384x_INTEN_RX_SET(value) ((UINT16)(((UINT16)(value)) << 0))
881:
882: #define HFA384x_EVACK_ISTICK(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_TICK))
883: #define HFA384x_EVACK_TICK_SET(value) ((UINT16)(((UINT16)(value)) << 15))
884: #define HFA384x_EVACK_ISWTERR(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_WTERR))
885: #define HFA384x_EVACK_WTERR_SET(value) ((UINT16)(((UINT16)(value)) << 14))
886: #define HFA384x_EVACK_ISINFDROP(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_INFDROP))
887: #define HFA384x_EVACK_INFDROP_SET(value) ((UINT16)(((UINT16)(value)) << 13))
888: #define HFA384x_EVACK_ISINFO(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_INFO))
889: #define HFA384x_EVACK_INFO_SET(value) ((UINT16)(((UINT16)(value)) << 7))
890: #define HFA384x_EVACK_ISDTIM(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_DTIM))
891: #define HFA384x_EVACK_DTIM_SET(value) ((UINT16)(((UINT16)(value)) << 5))
892: #define HFA384x_EVACK_ISCMD(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_CMD))
893: #define HFA384x_EVACK_CMD_SET(value) ((UINT16)(((UINT16)(value)) << 4))
894: #define HFA384x_EVACK_ISALLOC(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_ALLOC))
895: #define HFA384x_EVACK_ALLOC_SET(value) ((UINT16)(((UINT16)(value)) << 3))
896: #define HFA384x_EVACK_ISTXEXC(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_TXEXC))
897: #define HFA384x_EVACK_TXEXC_SET(value) ((UINT16)(((UINT16)(value)) << 2))
898: #define HFA384x_EVACK_ISTX(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_TX))
899: #define HFA384x_EVACK_TX_SET(value) ((UINT16)(((UINT16)(value)) << 1))
900: #define HFA384x_EVACK_ISRX(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_RX))
901: #define HFA384x_EVACK_RX_SET(value) ((UINT16)(((UINT16)(value)) << 0))
902:
903: #define HFA384x_CONTROL_AUXEN_SET(value) ((UINT16)(((UINT16)(value)) << 14))
904: #define HFA384x_CONTROL_AUXEN_GET(value) ((UINT16)(((UINT16)(value)) >> 14))
905:
906: /* Byte Order */
907: #ifdef __KERNEL__
908: #define hfa384x2host_16(n) (__le16_to_cpu((UINT16)(n)))
909: #define hfa384x2host_32(n) (__le32_to_cpu((UINT32)(n)))
910: #define host2hfa384x_16(n) (__cpu_to_le16((UINT16)(n)))
911: #define host2hfa384x_32(n) (__cpu_to_le32((UINT32)(n)))
912: #endif
913:
914: /* Host Maintained State Info */
915: #define HFA384x_STATE_PREINIT 0
916: #define HFA384x_STATE_INIT 1
917: #define HFA384x_STATE_RUNNING 2
918:
919: /*=============================================================*/
920: /*------ Types and their related constants --------------------*/
921:
922: #define HFA384x_HOSTAUTHASSOC_HOSTAUTH BIT0
923: #define HFA384x_HOSTAUTHASSOC_HOSTASSOC BIT1
924:
925: #define HFA384x_WHAHANDLING_DISABLED 0
926: #define HFA384x_WHAHANDLING_PASSTHROUGH BIT1
927:
928: /*-------------------------------------------------------------*/
929: /* Commonly used basic types */
930: typedef struct hfa384x_bytestr
931: {
932: UINT16 len;
933: UINT8 data[0];
934: } __WLAN_ATTRIB_PACK__ hfa384x_bytestr_t;
935:
936: typedef struct hfa384x_bytestr32
937: {
938: UINT16 len;
939: UINT8 data[32];
940: } __WLAN_ATTRIB_PACK__ hfa384x_bytestr32_t;
941:
942: /*--------------------------------------------------------------------
943: Configuration Record Structures:
944: Network Parameters, Static Configuration Entities
945: --------------------------------------------------------------------*/
946: /* Prototype structure: all configuration record structures start with
947: these members */
948:
949: typedef struct hfa384x_record
950: {
951: UINT16 reclen;
952: UINT16 rid;
953: } __WLAN_ATTRIB_PACK__ hfa384x_rec_t;
954:
955: typedef struct hfa384x_record16
956: {
957: UINT16 reclen;
958: UINT16 rid;
959: UINT16 val;
960: } __WLAN_ATTRIB_PACK__ hfa384x_rec16_t;
961:
962: typedef struct hfa384x_record32
963: {
964: UINT16 reclen;
965: UINT16 rid;
966: UINT32 val;
967: } __WLAN_ATTRIB_PACK__ hfa384x_rec32;
968:
969: /*-- Hardware/Firmware Component Information ----------*/
970: typedef struct hfa384x_compident
971: {
972: UINT16 id;
973: UINT16 variant;
974: UINT16 major;
975: UINT16 minor;
976: } __WLAN_ATTRIB_PACK__ hfa384x_compident_t;
977:
978: typedef struct hfa384x_caplevel
979: {
980: UINT16 role;
981: UINT16 id;
982: UINT16 variant;
983: UINT16 bottom;
984: UINT16 top;
985: } __WLAN_ATTRIB_PACK__ hfa384x_caplevel_t;
986:
987: /*-- Configuration Record: cnfPortType --*/
988: typedef struct hfa384x_cnfPortType
989: {
990: UINT16 cnfPortType;
991: } __WLAN_ATTRIB_PACK__ hfa384x_cnfPortType_t;
992:
993: /*-- Configuration Record: cnfOwnMACAddress --*/
994: typedef struct hfa384x_cnfOwnMACAddress
995: {
996: UINT8 cnfOwnMACAddress[6];
997: } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnMACAddress_t;
998:
999: /*-- Configuration Record: cnfDesiredSSID --*/
1000: typedef struct hfa384x_cnfDesiredSSID
1001: {
1002: UINT8 cnfDesiredSSID[34];
1003: } __WLAN_ATTRIB_PACK__ hfa384x_cnfDesiredSSID_t;
1004:
1005: /*-- Configuration Record: cnfOwnChannel --*/
1006: typedef struct hfa384x_cnfOwnChannel
1007: {
1008: UINT16 cnfOwnChannel;
1009: } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnChannel_t;
1010:
1011: /*-- Configuration Record: cnfOwnSSID --*/
1012: typedef struct hfa384x_cnfOwnSSID
1013: {
1014: UINT8 cnfOwnSSID[34];
1015: } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnSSID_t;
1016:
1017: /*-- Configuration Record: cnfOwnATIMWindow --*/
1018: typedef struct hfa384x_cnfOwnATIMWindow
1019: {
1020: UINT16 cnfOwnATIMWindow;
1021: } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnATIMWindow_t;
1022:
1023: /*-- Configuration Record: cnfSystemScale --*/
1024: typedef struct hfa384x_cnfSystemScale
1025: {
1026: UINT16 cnfSystemScale;
1027: } __WLAN_ATTRIB_PACK__ hfa384x_cnfSystemScale_t;
1028:
1029: /*-- Configuration Record: cnfMaxDataLength --*/
1030: typedef struct hfa384x_cnfMaxDataLength
1031: {
1032: UINT16 cnfMaxDataLength;
1033: } __WLAN_ATTRIB_PACK__ hfa384x_cnfMaxDataLength_t;
1034:
1035: /*-- Configuration Record: cnfWDSAddress --*/
1036: typedef struct hfa384x_cnfWDSAddress
1037: {
1038: UINT8 cnfWDSAddress[6];
1039: } __WLAN_ATTRIB_PACK__ hfa384x_cnfWDSAddress_t;
1040:
1041: /*-- Configuration Record: cnfPMEnabled --*/
1042: typedef struct hfa384x_cnfPMEnabled
1043: {
1044: UINT16 cnfPMEnabled;
1045: } __WLAN_ATTRIB_PACK__ hfa384x_cnfPMEnabled_t;
1046:
1047: /*-- Configuration Record: cnfPMEPS --*/
1048: typedef struct hfa384x_cnfPMEPS
1049: {
1050: UINT16 cnfPMEPS;
1051: } __WLAN_ATTRIB_PACK__ hfa384x_cnfPMEPS_t;
1052:
1053: /*-- Configuration Record: cnfMulticastReceive --*/
1054: typedef struct hfa384x_cnfMulticastReceive
1055: {
1056: UINT16 cnfMulticastReceive;
1057: } __WLAN_ATTRIB_PACK__ hfa384x_cnfMulticastReceive_t;
1058:
1059: /*-- Configuration Record: cnfAuthentication --*/
1060: #define HFA384x_CNFAUTHENTICATION_OPENSYSTEM 0x0001
1061: #define HFA384x_CNFAUTHENTICATION_SHAREDKEY 0x0002
1062: #define HFA384x_CNFAUTHENTICATION_LEAP 0x0004
1063:
1064: /*-- Configuration Record: cnfMaxSleepDuration --*/
1065: typedef struct hfa384x_cnfMaxSleepDuration
1066: {
1067: UINT16 cnfMaxSleepDuration;
1068: } __WLAN_ATTRIB_PACK__ hfa384x_cnfMaxSleepDuration_t;
1069:
1070: /*-- Configuration Record: cnfPMHoldoverDuration --*/
1071: typedef struct hfa384x_cnfPMHoldoverDuration
1072: {
1073: UINT16 cnfPMHoldoverDuration;
1074: } __WLAN_ATTRIB_PACK__ hfa384x_cnfPMHoldoverDuration_t;
1075:
1076: /*-- Configuration Record: cnfOwnName --*/
1077: typedef struct hfa384x_cnfOwnName
1078: {
1079: UINT8 cnfOwnName[34];
1080: } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnName_t;
1081:
1082: /*-- Configuration Record: cnfOwnDTIMPeriod --*/
1083: typedef struct hfa384x_cnfOwnDTIMPeriod
1084: {
1085: UINT16 cnfOwnDTIMPeriod;
1086: } __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnDTIMPeriod_t;
1087:
1088: /*-- Configuration Record: cnfWDSAddress --*/
1089: typedef struct hfa384x_cnfWDSAddressN
1090: {
1091: UINT8 cnfWDSAddress[6];
1092: } __WLAN_ATTRIB_PACK__ hfa384x_cnfWDSAddressN_t;
1093:
1094: /*-- Configuration Record: cnfMulticastPMBuffering --*/
1095: typedef struct hfa384x_cnfMulticastPMBuffering
1096: {
1097: UINT16 cnfMulticastPMBuffering;
1098: } __WLAN_ATTRIB_PACK__ hfa384x_cnfMulticastPMBuffering_t;
1099:
1100: /*--------------------------------------------------------------------
1101: Configuration Record Structures:
1102: Network Parameters, Dynamic Configuration Entities
1103: --------------------------------------------------------------------*/
1104:
1105: /*-- Configuration Record: GroupAddresses --*/
1106: typedef struct hfa384x_GroupAddresses
1107: {
1108: UINT8 MACAddress[16][6];
1109: } __WLAN_ATTRIB_PACK__ hfa384x_GroupAddresses_t;
1110:
1111: /*-- Configuration Record: CreateIBSS --*/
1112: typedef struct hfa384x_CreateIBSS
1113: {
1114: UINT16 CreateIBSS;
1115: } __WLAN_ATTRIB_PACK__ hfa384x_CreateIBSS_t;
1116:
1117: #define HFA384x_CREATEIBSS_JOINCREATEIBSS 0
1118: #define HFA384x_CREATEIBSS_JOINESS_JOINCREATEIBSS 1
1119: #define HFA384x_CREATEIBSS_JOINIBSS 2
1120: #define HFA384x_CREATEIBSS_JOINESS_JOINIBSS 3
1121:
1122: /*-- Configuration Record: FragmentationThreshold --*/
1123: typedef struct hfa384x_FragmentationThreshold
1124: {
1125: UINT16 FragmentationThreshold;
1126: } __WLAN_ATTRIB_PACK__ hfa384x_FragmentationThreshold_t;
1127:
1128: /*-- Configuration Record: RTSThreshold --*/
1129: typedef struct hfa384x_RTSThreshold
1130: {
1131: UINT16 RTSThreshold;
1132: } __WLAN_ATTRIB_PACK__ hfa384x_RTSThreshold_t;
1133:
1134: /*-- Configuration Record: TxRateControl --*/
1135: typedef struct hfa384x_TxRateControl
1136: {
1137: UINT16 TxRateControl;
1138: } __WLAN_ATTRIB_PACK__ hfa384x_TxRateControl_t;
1139:
1140: /*-- Configuration Record: PromiscuousMode --*/
1141: typedef struct hfa384x_PromiscuousMode
1142: {
1143: UINT16 PromiscuousMode;
1144: } __WLAN_ATTRIB_PACK__ hfa384x_PromiscuousMode_t;
1145:
1146: /*-- Configuration Record: ScanRequest (data portion only) --*/
1147: typedef struct hfa384x_ScanRequest_data
1148: {
1149: UINT16 channelList;
1150: UINT16 txRate;
1151: } __WLAN_ATTRIB_PACK__ hfa384x_ScanRequest_data_t;
1152:
1153: /*-- Configuration Record: HostScanRequest (data portion only) --*/
1154: typedef struct hfa384x_HostScanRequest_data
1155: {
1156: UINT16 channelList;
1157: UINT16 txRate;
1158: hfa384x_bytestr32_t ssid;
1159: } __WLAN_ATTRIB_PACK__ hfa384x_HostScanRequest_data_t;
1160:
1161: /*-- Configuration Record: JoinRequest (data portion only) --*/
1162: typedef struct hfa384x_JoinRequest_data
1163: {
1164: UINT8 bssid[WLAN_BSSID_LEN];
1165: UINT16 channel;
1166: } __WLAN_ATTRIB_PACK__ hfa384x_JoinRequest_data_t;
1167:
1168: /*-- Configuration Record: authenticateStation (data portion only) --*/
1169: typedef struct hfa384x_authenticateStation_data
1170: {
1171: UINT8 address[WLAN_ADDR_LEN];
1172: UINT16 status;
1173: UINT16 algorithm;
1174: } __WLAN_ATTRIB_PACK__ hfa384x_authenticateStation_data_t;
1175:
1176: /*-- Configuration Record: associateStation (data portion only) --*/
1177: typedef struct hfa384x_associateStation_data
1178: {
1179: UINT8 address[WLAN_ADDR_LEN];
1180: UINT16 status;
1181: UINT16 type;
1182: } __WLAN_ATTRIB_PACK__ hfa384x_associateStation_data_t;
1183:
1184: /*-- Configuration Record: ChannelInfoRequest (data portion only) --*/
1185: typedef struct hfa384x_ChannelInfoRequest_data
1186: {
1187: UINT16 channelList;
1188: UINT16 channelDwellTime;
1189: } __WLAN_ATTRIB_PACK__ hfa384x_ChannelInfoRequest_data_t;
1190:
1191: /*-- Configuration Record: WEPKeyMapping (data portion only) --*/
1192: typedef struct hfa384x_WEPKeyMapping
1193: {
1194: UINT8 address[WLAN_ADDR_LEN];
1195: UINT16 key_index;
1196: UINT8 key[16];
1197: UINT8 mic_transmit_key[4];
1198: UINT8 mic_receive_key[4];
1199: } __WLAN_ATTRIB_PACK__ hfa384x_WEPKeyMapping_t;
1200:
1201: /*-- Configuration Record: WPAData (data portion only) --*/
1202: typedef struct hfa384x_WPAData
1203: {
1204: UINT16 datalen;
1205: UINT8 data[0]; // max 80
1206: } __WLAN_ATTRIB_PACK__ hfa384x_WPAData_t;
1207:
1208: /*--------------------------------------------------------------------
1209: Configuration Record Structures: Behavior Parameters
1210: --------------------------------------------------------------------*/
1211:
1212: /*-- Configuration Record: TickTime --*/
1213: typedef struct hfa384x_TickTime
1214: {
1215: UINT16 TickTime;
1216: } __WLAN_ATTRIB_PACK__ hfa384x_TickTime_t;
1217:
1218: /*--------------------------------------------------------------------
1219: Information Record Structures: NIC Information
1220: --------------------------------------------------------------------*/
1221:
1222: /*-- Information Record: MaxLoadTime --*/
1223: typedef struct hfa384x_MaxLoadTime
1224: {
1225: UINT16 MaxLoadTime;
1226: } __WLAN_ATTRIB_PACK__ hfa384x_MaxLoadTime_t;
1227:
1228: /*-- Information Record: DownLoadBuffer --*/
1229: /* NOTE: The page and offset are in AUX format */
1230: typedef struct hfa384x_downloadbuffer
1231: {
1232: UINT16 page;
1233: UINT16 offset;
1234: UINT16 len;
1235: } __WLAN_ATTRIB_PACK__ hfa384x_downloadbuffer_t;
1236:
1237: /*-- Information Record: PRIIdentity --*/
1238: typedef struct hfa384x_PRIIdentity
1239: {
1240: UINT16 PRICompID;
1241: UINT16 PRIVariant;
1242: UINT16 PRIMajorVersion;
1243: UINT16 PRIMinorVersion;
1244: } __WLAN_ATTRIB_PACK__ hfa384x_PRIIdentity_t;
1245:
1246: /*-- Information Record: PRISupRange --*/
1247: typedef struct hfa384x_PRISupRange
1248: {
1249: UINT16 PRIRole;
1250: UINT16 PRIID;
1251: UINT16 PRIVariant;
1252: UINT16 PRIBottom;
1253: UINT16 PRITop;
1254: } __WLAN_ATTRIB_PACK__ hfa384x_PRISupRange_t;
1255:
1256: /*-- Information Record: CFIActRanges --*/
1257: typedef struct hfa384x_CFIActRanges
1258: {
1259: UINT16 CFIRole;
1260: UINT16 CFIID;
1261: UINT16 CFIVariant;
1262: UINT16 CFIBottom;
1263: UINT16 CFITop;
1264: } __WLAN_ATTRIB_PACK__ hfa384x_CFIActRanges_t;
1265:
1266: /*-- Information Record: NICSerialNumber --*/
1267: typedef struct hfa384x_NICSerialNumber
1268: {
1269: UINT8 NICSerialNumber[12];
1270: } __WLAN_ATTRIB_PACK__ hfa384x_NICSerialNumber_t;
1271:
1272: /*-- Information Record: NICIdentity --*/
1273: typedef struct hfa384x_NICIdentity
1274: {
1275: UINT16 NICCompID;
1276: UINT16 NICVariant;
1277: UINT16 NICMajorVersion;
1278: UINT16 NICMinorVersion;
1279: } __WLAN_ATTRIB_PACK__ hfa384x_NICIdentity_t;
1280:
1281: /*-- Information Record: MFISupRange --*/
1282: typedef struct hfa384x_MFISupRange
1283: {
1284: UINT16 MFIRole;
1285: UINT16 MFIID;
1286: UINT16 MFIVariant;
1287: UINT16 MFIBottom;
1288: UINT16 MFITop;
1289: } __WLAN_ATTRIB_PACK__ hfa384x_MFISupRange_t;
1290:
1291: /*-- Information Record: CFISupRange --*/
1292: typedef struct hfa384x_CFISupRange
1293: {
1294: UINT16 CFIRole;
1295: UINT16 CFIID;
1296: UINT16 CFIVariant;
1297: UINT16 CFIBottom;
1298: UINT16 CFITop;
1299: } __WLAN_ATTRIB_PACK__ hfa384x_CFISupRange_t;
1300:
1301: /*-- Information Record: BUILDSEQ:BuildSeq --*/
1302: typedef struct hfa384x_BuildSeq {
1303: UINT16 primary;
1304: UINT16 secondary;
1305: } __WLAN_ATTRIB_PACK__ hfa384x_BuildSeq_t;
1306:
1307: /*-- Information Record: FWID --*/
1308: #define HFA384x_FWID_LEN 14
1309: typedef struct hfa384x_FWID {
1310: UINT8 primary[HFA384x_FWID_LEN];
1311: UINT8 secondary[HFA384x_FWID_LEN];
1312: } __WLAN_ATTRIB_PACK__ hfa384x_FWID_t;
1313:
1314: /*-- Information Record: ChannelList --*/
1315: typedef struct hfa384x_ChannelList
1316: {
1317: UINT16 ChannelList;
1318: } __WLAN_ATTRIB_PACK__ hfa384x_ChannelList_t;
1319:
1320: /*-- Information Record: RegulatoryDomains --*/
1321: typedef struct hfa384x_RegulatoryDomains
1322: {
1323: UINT8 RegulatoryDomains[12];
1324: } __WLAN_ATTRIB_PACK__ hfa384x_RegulatoryDomains_t;
1325:
1326: /*-- Information Record: TempType --*/
1327: typedef struct hfa384x_TempType
1328: {
1329: UINT16 TempType;
1330: } __WLAN_ATTRIB_PACK__ hfa384x_TempType_t;
1331:
1332: /*-- Information Record: CIS --*/
1333: typedef struct hfa384x_CIS
1334: {
1335: UINT8 CIS[480];
1336: } __WLAN_ATTRIB_PACK__ hfa384x_CIS_t;
1337:
1338: /*-- Information Record: STAIdentity --*/
1339: typedef struct hfa384x_STAIdentity
1340: {
1341: UINT16 STACompID;
1342: UINT16 STAVariant;
1343: UINT16 STAMajorVersion;
1344: UINT16 STAMinorVersion;
1345: } __WLAN_ATTRIB_PACK__ hfa384x_STAIdentity_t;
1346:
1347: /*-- Information Record: STASupRange --*/
1348: typedef struct hfa384x_STASupRange
1349: {
1350: UINT16 STARole;
1351: UINT16 STAID;
1352: UINT16 STAVariant;
1353: UINT16 STABottom;
1354: UINT16 STATop;
1355: } __WLAN_ATTRIB_PACK__ hfa384x_STASupRange_t;
1356:
1357: /*-- Information Record: MFIActRanges --*/
1358: typedef struct hfa384x_MFIActRanges
1359: {
1360: UINT16 MFIRole;
1361: UINT16 MFIID;
1362: UINT16 MFIVariant;
1363: UINT16 MFIBottom;
1364: UINT16 MFITop;
1365: } __WLAN_ATTRIB_PACK__ hfa384x_MFIActRanges_t;
1366:
1367: /*--------------------------------------------------------------------
1368: Information Record Structures: NIC Information
1369: --------------------------------------------------------------------*/
1370:
1371: /*-- Information Record: PortStatus --*/
1372: typedef struct hfa384x_PortStatus
1373: {
1374: UINT16 PortStatus;
1375: } __WLAN_ATTRIB_PACK__ hfa384x_PortStatus_t;
1376:
1377: #define HFA384x_PSTATUS_DISABLED ((UINT16)1)
1378: #define HFA384x_PSTATUS_SEARCHING ((UINT16)2)
1379: #define HFA384x_PSTATUS_CONN_IBSS ((UINT16)3)
1380: #define HFA384x_PSTATUS_CONN_ESS ((UINT16)4)
1381: #define HFA384x_PSTATUS_OUTOFRANGE ((UINT16)5)
1382: #define HFA384x_PSTATUS_CONN_WDS ((UINT16)6)
1383:
1384: /*-- Information Record: CurrentSSID --*/
1385: typedef struct hfa384x_CurrentSSID
1386: {
1387: UINT8 CurrentSSID[34];
1388: } __WLAN_ATTRIB_PACK__ hfa384x_CurrentSSID_t;
1389:
1390: /*-- Information Record: CurrentBSSID --*/
1391: typedef struct hfa384x_CurrentBSSID
1392: {
1393: UINT8 CurrentBSSID[6];
1394: } __WLAN_ATTRIB_PACK__ hfa384x_CurrentBSSID_t;
1395:
1396: /*-- Information Record: commsquality --*/
1397: typedef struct hfa384x_commsquality
1398: {
1399: UINT16 CQ_currBSS;
1400: UINT16 ASL_currBSS;
1401: UINT16 ANL_currFC;
1402: } __WLAN_ATTRIB_PACK__ hfa384x_commsquality_t;
1403:
1404: /*-- Information Record: dmbcommsquality --*/
1405: typedef struct hfa384x_dbmcommsquality
1406: {
1407: UINT16 CQdbm_currBSS;
1408: UINT16 ASLdbm_currBSS;
1409: UINT16 ANLdbm_currFC;
1410: } __WLAN_ATTRIB_PACK__ hfa384x_dbmcommsquality_t;
1411:
1412: /*-- Information Record: CurrentTxRate --*/
1413: typedef struct hfa384x_CurrentTxRate
1414: {
1415: UINT16 CurrentTxRate;
1416: } __WLAN_ATTRIB_PACK__ hfa384x_CurrentTxRate_t;
1417:
1418: /*-- Information Record: CurrentBeaconInterval --*/
1419: typedef struct hfa384x_CurrentBeaconInterval
1420: {
1421: UINT16 CurrentBeaconInterval;
1422: } __WLAN_ATTRIB_PACK__ hfa384x_CurrentBeaconInterval_t;
1423:
1424: /*-- Information Record: CurrentScaleThresholds --*/
1425: typedef struct hfa384x_CurrentScaleThresholds
1426: {
1427: UINT16 EnergyDetectThreshold;
1428: UINT16 CarrierDetectThreshold;
1429: UINT16 DeferDetectThreshold;
1430: UINT16 CellSearchThreshold; /* Stations only */
1431: UINT16 DeadSpotThreshold; /* Stations only */
1432: } __WLAN_ATTRIB_PACK__ hfa384x_CurrentScaleThresholds_t;
1433:
1434: /*-- Information Record: ProtocolRspTime --*/
1435: typedef struct hfa384x_ProtocolRspTime
1436: {
1437: UINT16 ProtocolRspTime;
1438: } __WLAN_ATTRIB_PACK__ hfa384x_ProtocolRspTime_t;
1439:
1440: /*-- Information Record: ShortRetryLimit --*/
1441: typedef struct hfa384x_ShortRetryLimit
1442: {
1443: UINT16 ShortRetryLimit;
1444: } __WLAN_ATTRIB_PACK__ hfa384x_ShortRetryLimit_t;
1445:
1446: /*-- Information Record: LongRetryLimit --*/
1447: typedef struct hfa384x_LongRetryLimit
1448: {
1449: UINT16 LongRetryLimit;
1450: } __WLAN_ATTRIB_PACK__ hfa384x_LongRetryLimit_t;
1451:
1452: /*-- Information Record: MaxTransmitLifetime --*/
1453: typedef struct hfa384x_MaxTransmitLifetime
1454: {
1455: UINT16 MaxTransmitLifetime;
1456: } __WLAN_ATTRIB_PACK__ hfa384x_MaxTransmitLifetime_t;
1457:
1458: /*-- Information Record: MaxReceiveLifetime --*/
1459: typedef struct hfa384x_MaxReceiveLifetime
1460: {
1461: UINT16 MaxReceiveLifetime;
1462: } __WLAN_ATTRIB_PACK__ hfa384x_MaxReceiveLifetime_t;
1463:
1464: /*-- Information Record: CFPollable --*/
1465: typedef struct hfa384x_CFPollable
1466: {
1467: UINT16 CFPollable;
1468: } __WLAN_ATTRIB_PACK__ hfa384x_CFPollable_t;
1469:
1470: /*-- Information Record: AuthenticationAlgorithms --*/
1471: typedef struct hfa384x_AuthenticationAlgorithms
1472: {
1473: UINT16 AuthenticationType;
1474: UINT16 TypeEnabled;
1475: } __WLAN_ATTRIB_PACK__ hfa384x_AuthenticationAlgorithms_t;
1476:
1477: /*-- Information Record: AuthenticationAlgorithms
1478: (data only --*/
1479: typedef struct hfa384x_AuthenticationAlgorithms_data
1480: {
1481: UINT16 AuthenticationType;
1482: UINT16 TypeEnabled;
1483: } __WLAN_ATTRIB_PACK__ hfa384x_AuthenticationAlgorithms_data_t;
1484:
1485: /*-- Information Record: PrivacyOptionImplemented --*/
1486: typedef struct hfa384x_PrivacyOptionImplemented
1487: {
1488: UINT16 PrivacyOptionImplemented;
1489: } __WLAN_ATTRIB_PACK__ hfa384x_PrivacyOptionImplemented_t;
1490:
1491: /*-- Information Record: OwnMACAddress --*/
1492: typedef struct hfa384x_OwnMACAddress
1493: {
1494: UINT8 OwnMACAddress[6];
1495: } __WLAN_ATTRIB_PACK__ hfa384x_OwnMACAddress_t;
1496:
1497: /*-- Information Record: PCFInfo --*/
1498: typedef struct hfa384x_PCFInfo
1499: {
1500: UINT16 MediumOccupancyLimit;
1501: UINT16 CFPPeriod;
1502: UINT16 CFPMaxDuration;
1503: UINT16 CFPFlags;
1504: } __WLAN_ATTRIB_PACK__ hfa384x_PCFInfo_t;
1505:
1506: /*-- Information Record: PCFInfo (data portion only) --*/
1507: typedef struct hfa384x_PCFInfo_data
1508: {
1509: UINT16 MediumOccupancyLimit;
1510: UINT16 CFPPeriod;
1511: UINT16 CFPMaxDuration;
1512: UINT16 CFPFlags;
1513: } __WLAN_ATTRIB_PACK__ hfa384x_PCFInfo_data_t;
1514:
1515: /*--------------------------------------------------------------------
1516: Information Record Structures: Modem Information Records
1517: --------------------------------------------------------------------*/
1518:
1519: /*-- Information Record: PHYType --*/
1520: typedef struct hfa384x_PHYType
1521: {
1522: UINT16 PHYType;
1523: } __WLAN_ATTRIB_PACK__ hfa384x_PHYType_t;
1524:
1525: /*-- Information Record: CurrentChannel --*/
1526: typedef struct hfa384x_CurrentChannel
1527: {
1528: UINT16 CurrentChannel;
1529: } __WLAN_ATTRIB_PACK__ hfa384x_CurrentChannel_t;
1530:
1531: /*-- Information Record: CurrentPowerState --*/
1532: typedef struct hfa384x_CurrentPowerState
1533: {
1534: UINT16 CurrentPowerState;
1535: } __WLAN_ATTRIB_PACK__ hfa384x_CurrentPowerState_t;
1536:
1537: /*-- Information Record: CCAMode --*/
1538: typedef struct hfa384x_CCAMode
1539: {
1540: UINT16 CCAMode;
1541: } __WLAN_ATTRIB_PACK__ hfa384x_CCAMode_t;
1542:
1543: /*-- Information Record: SupportedDataRates --*/
1544: typedef struct hfa384x_SupportedDataRates
1545: {
1546: UINT8 SupportedDataRates[10];
1547: } __WLAN_ATTRIB_PACK__ hfa384x_SupportedDataRates_t;
1548:
1549: /*-- Information Record: LFOStatus --*/
1550: typedef struct hfa384x_LFOStatus
1551: {
1552: UINT16 TestResults;
1553: UINT16 LFOResult;
1554: UINT16 VRHFOResult;
1555: } __WLAN_ATTRIB_PACK__ hfa384x_LFOStatus_t;
1556:
1557: #define HFA384x_TESTRESULT_ALLPASSED BIT0
1558: #define HFA384x_TESTRESULT_LFO_FAIL BIT1
1559: #define HFA384x_TESTRESULT_VR_HF0_FAIL BIT2
1560: #define HFA384x_HOST_FIRM_COORDINATE BIT7
1561: #define HFA384x_TESTRESULT_COORDINATE BIT15
1562:
1563: /*-- Information Record: LEDControl --*/
1564: typedef struct hfa384x_LEDControl
1565: {
1566: UINT16 searching_on;
1567: UINT16 searching_off;
1568: UINT16 assoc_on;
1569: UINT16 assoc_off;
1570: UINT16 activity;
1571: } __WLAN_ATTRIB_PACK__ hfa384x_LEDControl_t;
1572:
1573: /*--------------------------------------------------------------------
1574: FRAME DESCRIPTORS AND FRAME STRUCTURES
1575:
1576: FRAME DESCRIPTORS: Offsets
1577:
1578: ----------------------------------------------------------------------
1579: Control Info (offset 44-51)
1580: --------------------------------------------------------------------*/
1581: #define HFA384x_FD_STATUS_OFF ((UINT16)0x44)
1582: #define HFA384x_FD_TIME_OFF ((UINT16)0x46)
1583: #define HFA384x_FD_SWSUPPORT_OFF ((UINT16)0x4A)
1584: #define HFA384x_FD_SILENCE_OFF ((UINT16)0x4A)
1585: #define HFA384x_FD_SIGNAL_OFF ((UINT16)0x4B)
1586: #define HFA384x_FD_RATE_OFF ((UINT16)0x4C)
1587: #define HFA384x_FD_RXFLOW_OFF ((UINT16)0x4D)
1588: #define HFA384x_FD_RESERVED_OFF ((UINT16)0x4E)
1589: #define HFA384x_FD_TXCONTROL_OFF ((UINT16)0x50)
1590: /*--------------------------------------------------------------------
1591: 802.11 Header (offset 52-6B)
1592: --------------------------------------------------------------------*/
1593: #define HFA384x_FD_FRAMECONTROL_OFF ((UINT16)0x52)
1594: #define HFA384x_FD_DURATIONID_OFF ((UINT16)0x54)
1595: #define HFA384x_FD_ADDRESS1_OFF ((UINT16)0x56)
1596: #define HFA384x_FD_ADDRESS2_OFF ((UINT16)0x5C)
1597: #define HFA384x_FD_ADDRESS3_OFF ((UINT16)0x62)
1598: #define HFA384x_FD_SEQCONTROL_OFF ((UINT16)0x68)
1599: #define HFA384x_FD_ADDRESS4_OFF ((UINT16)0x6A)
1600: #define HFA384x_FD_DATALEN_OFF ((UINT16)0x70)
1601: /*--------------------------------------------------------------------
1602: 802.3 Header (offset 72-7F)
1603: --------------------------------------------------------------------*/
1604: #define HFA384x_FD_DESTADDRESS_OFF ((UINT16)0x72)
1605: #define HFA384x_FD_SRCADDRESS_OFF ((UINT16)0x78)
1606: #define HFA384x_FD_DATALENGTH_OFF ((UINT16)0x7E)
1607:
1608: /*--------------------------------------------------------------------
1609: FRAME STRUCTURES: Communication Frames
1610: ----------------------------------------------------------------------
1611: Communication Frames: Transmit Frames
1612: --------------------------------------------------------------------*/
1613: /*-- Communication Frame: Transmit Frame Structure --*/
1614: typedef struct hfa384x_tx_frame
1615: {
1616: UINT16 status;
1617: UINT16 reserved1;
1618: UINT16 reserved2;
1619: UINT32 sw_support;
1620: UINT8 tx_retrycount;
1621: UINT8 tx_rate;
1622: UINT16 tx_control;
1623:
1624: /*-- 802.11 Header Information --*/
1625:
1626: UINT16 frame_control;
1627: UINT16 duration_id;
1628: UINT8 address1[6];
1629: UINT8 address2[6];
1630: UINT8 address3[6];
1631: UINT16 sequence_control;
1632: UINT8 address4[6];
1633: UINT16 data_len; /* little endian format */
1634:
1635: /*-- 802.3 Header Information --*/
1636:
1637: UINT8 dest_addr[6];
1638: UINT8 src_addr[6];
1639: UINT16 data_length; /* big endian format */
1640: } __WLAN_ATTRIB_PACK__ hfa384x_tx_frame_t;
1641: /*--------------------------------------------------------------------
1642: Communication Frames: Field Masks for Transmit Frames
1643: --------------------------------------------------------------------*/
1644: /*-- Status Field --*/
1645: #define HFA384x_TXSTATUS_ACKERR ((UINT16)BIT5)
1646: #define HFA384x_TXSTATUS_FORMERR ((UINT16)BIT3)
1647: #define HFA384x_TXSTATUS_DISCON ((UINT16)BIT2)
1648: #define HFA384x_TXSTATUS_AGEDERR ((UINT16)BIT1)
1649: #define HFA384x_TXSTATUS_RETRYERR ((UINT16)BIT0)
1650: /*-- Transmit Control Field --*/
1651: #define HFA384x_TX_CFPOLL ((UINT16)BIT12)
1652: #define HFA384x_TX_PRST ((UINT16)BIT11)
1653: #define HFA384x_TX_MACPORT ((UINT16)(BIT10 | BIT9 | BIT8))
1654: #define HFA384x_TX_NOENCRYPT ((UINT16)BIT7)
1655: #define HFA384x_TX_RETRYSTRAT ((UINT16)(BIT6 | BIT5))
1656: #define HFA384x_TX_STRUCTYPE ((UINT16)(BIT4 | BIT3))
1657: #define HFA384x_TX_TXEX ((UINT16)BIT2)
1658: #define HFA384x_TX_TXOK ((UINT16)BIT1)
1659: /*--------------------------------------------------------------------
1660: Communication Frames: Test/Get/Set Field Values for Transmit Frames
1661: --------------------------------------------------------------------*/
1662: /*-- Status Field --*/
1663: #define HFA384x_TXSTATUS_ISERROR(v) \
1664: (((UINT16)(v))&\
1665: (HFA384x_TXSTATUS_ACKERR|HFA384x_TXSTATUS_FORMERR|\
1666: HFA384x_TXSTATUS_DISCON|HFA384x_TXSTATUS_AGEDERR|\
1667: HFA384x_TXSTATUS_RETRYERR))
1668:
1669: #define HFA384x_TXSTATUS_ISACKERR(v) ((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_ACKERR))
1670: #define HFA384x_TXSTATUS_ISFORMERR(v) ((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_FORMERR))
1671: #define HFA384x_TXSTATUS_ISDISCON(v) ((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_DISCON))
1672: #define HFA384x_TXSTATUS_ISAGEDERR(v) ((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_AGEDERR))
1673: #define HFA384x_TXSTATUS_ISRETRYERR(v) ((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_RETRYERR))
1674:
1675: #define HFA384x_TX_GET(v,m,s) ((((UINT16)(v))&((UINT16)(m)))>>((UINT16)(s)))
1676: #define HFA384x_TX_SET(v,m,s) ((((UINT16)(v))<<((UINT16)(s)))&((UINT16)(m)))
1677:
1678: #define HFA384x_TX_CFPOLL_GET(v) HFA384x_TX_GET(v, HFA384x_TX_CFPOLL,12)
1679: #define HFA384x_TX_CFPOLL_SET(v) HFA384x_TX_SET(v, HFA384x_TX_CFPOLL,12)
1680: #define HFA384x_TX_PRST_GET(v) HFA384x_TX_GET(v, HFA384x_TX_PRST,11)
1681: #define HFA384x_TX_PRST_SET(v) HFA384x_TX_SET(v, HFA384x_TX_PRST,11)
1682: #define HFA384x_TX_MACPORT_GET(v) HFA384x_TX_GET(v, HFA384x_TX_MACPORT, 8)
1683: #define HFA384x_TX_MACPORT_SET(v) HFA384x_TX_SET(v, HFA384x_TX_MACPORT, 8)
1684: #define HFA384x_TX_NOENCRYPT_GET(v) HFA384x_TX_GET(v, HFA384x_TX_NOENCRYPT, 7)
1685: #define HFA384x_TX_NOENCRYPT_SET(v) HFA384x_TX_SET(v, HFA384x_TX_NOENCRYPT, 7)
1686: #define HFA384x_TX_RETRYSTRAT_GET(v) HFA384x_TX_GET(v, HFA384x_TX_RETRYSTRAT, 5)
1687: #define HFA384x_TX_RETRYSTRAT_SET(v) HFA384x_TX_SET(v, HFA384x_TX_RETRYSTRAT, 5)
1688: #define HFA384x_TX_STRUCTYPE_GET(v) HFA384x_TX_GET(v, HFA384x_TX_STRUCTYPE, 3)
1689: #define HFA384x_TX_STRUCTYPE_SET(v) HFA384x_TX_SET(v, HFA384x_TX_STRUCTYPE, 3)
1690: #define HFA384x_TX_TXEX_GET(v) HFA384x_TX_GET(v, HFA384x_TX_TXEX, 2)
1691: #define HFA384x_TX_TXEX_SET(v) HFA384x_TX_SET(v, HFA384x_TX_TXEX, 2)
1692: #define HFA384x_TX_TXOK_GET(v) HFA384x_TX_GET(v, HFA384x_TX_TXOK, 1)
1693: #define HFA384x_TX_TXOK_SET(v) HFA384x_TX_SET(v, HFA384x_TX_TXOK, 1)
1694: /*--------------------------------------------------------------------
1695: Communication Frames: Receive Frames
1696: --------------------------------------------------------------------*/
1697: /*-- Communication Frame: Receive Frame Structure --*/
1698: typedef struct hfa384x_rx_frame
1699: {
1700: /*-- MAC rx descriptor (hfa384x byte order) --*/
1701: UINT16 status;
1702: UINT32 time;
1703: UINT8 silence;
1704: UINT8 signal;
1705: UINT8 rate;
1706: UINT8 rx_flow;
1707: UINT16 reserved1;
1708: UINT16 reserved2;
1709:
1710: /*-- 802.11 Header Information (802.11 byte order) --*/
1711: UINT16 frame_control;
1712: UINT16 duration_id;
1713: UINT8 address1[6];
1714: UINT8 address2[6];
1715: UINT8 address3[6];
1716: UINT16 sequence_control;
1717: UINT8 address4[6];
1718: UINT16 data_len; /* hfa384x (little endian) format */
1719:
1720: /*-- 802.3 Header Information --*/
1721: UINT8 dest_addr[6];
1722: UINT8 src_addr[6];
1723: UINT16 data_length; /* IEEE? (big endian) format */
1724: } __WLAN_ATTRIB_PACK__ hfa384x_rx_frame_t;
1725: /*--------------------------------------------------------------------
1726: Communication Frames: Field Masks for Receive Frames
1727: --------------------------------------------------------------------*/
1728: /*-- Offsets --------*/
1729: #define HFA384x_RX_DATA_LEN_OFF ((UINT16)44)
1730: #define HFA384x_RX_80211HDR_OFF ((UINT16)14)
1731: #define HFA384x_RX_DATA_OFF ((UINT16)60)
1732:
1733: /*-- Status Fields --*/
1734: #define HFA384x_RXSTATUS_MSGTYPE ((UINT16)(BIT15 | BIT14 | BIT13))
1735: #define HFA384x_RXSTATUS_MACPORT ((UINT16)(BIT10 | BIT9 | BIT8))
1736: #define HFA384x_RXSTATUS_UNDECR ((UINT16)BIT1)
1737: #define HFA384x_RXSTATUS_FCSERR ((UINT16)BIT0)
1738: /*--------------------------------------------------------------------
1739: Communication Frames: Test/Get/Set Field Values for Receive Frames
1740: --------------------------------------------------------------------*/
1741: #define HFA384x_RXSTATUS_MSGTYPE_GET(value) ((UINT16)((((UINT16)(value)) & HFA384x_RXSTATUS_MSGTYPE) >> 13))
1742: #define HFA384x_RXSTATUS_MSGTYPE_SET(value) ((UINT16)(((UINT16)(value)) << 13))
1743: #define HFA384x_RXSTATUS_MACPORT_GET(value) ((UINT16)((((UINT16)(value)) & HFA384x_RXSTATUS_MACPORT) >> 8))
1744: #define HFA384x_RXSTATUS_MACPORT_SET(value) ((UINT16)(((UINT16)(value)) << 8))
1745: #define HFA384x_RXSTATUS_ISUNDECR(value) ((UINT16)(((UINT16)(value)) & HFA384x_RXSTATUS_UNDECR))
1746: #define HFA384x_RXSTATUS_ISFCSERR(value) ((UINT16)(((UINT16)(value)) & HFA384x_RXSTATUS_FCSERR))
1747: /*--------------------------------------------------------------------
1748: FRAME STRUCTURES: Information Types and Information Frame Structures
1749: ----------------------------------------------------------------------
1750: Information Types
1751: --------------------------------------------------------------------*/
1752: #define HFA384x_IT_HANDOVERADDR ((UINT16)0xF000UL)
1753: #define HFA384x_IT_HANDOVERDEAUTHADDRESS ((UINT16)0xF001UL)//AP 1.3.7
1754: #define HFA384x_IT_COMMTALLIES ((UINT16)0xF100UL)
1755: #define HFA384x_IT_SCANRESULTS ((UINT16)0xF101UL)
1756: #define HFA384x_IT_CHINFORESULTS ((UINT16)0xF102UL)
1757: #define HFA384x_IT_HOSTSCANRESULTS ((UINT16)0xF103UL)
1758: #define HFA384x_IT_LINKSTATUS ((UINT16)0xF200UL)
1759: #define HFA384x_IT_ASSOCSTATUS ((UINT16)0xF201UL)
1760: #define HFA384x_IT_AUTHREQ ((UINT16)0xF202UL)
1761: #define HFA384x_IT_PSUSERCNT ((UINT16)0xF203UL)
1762: #define HFA384x_IT_KEYIDCHANGED ((UINT16)0xF204UL)
1763: #define HFA384x_IT_ASSOCREQ ((UINT16)0xF205UL)
1764: #define HFA384x_IT_MICFAILURE ((UINT16)0xF206UL)
1765:
1766: /*--------------------------------------------------------------------
1767: Information Frames Structures
1768: ----------------------------------------------------------------------
1769: Information Frames: Notification Frame Structures
1770: --------------------------------------------------------------------*/
1771: /*-- Notification Frame,MAC Mgmt: Handover Address --*/
1772: typedef struct hfa384x_HandoverAddr
1773: {
1774: UINT16 framelen;
1775: UINT16 infotype;
1776: UINT8 handover_addr[WLAN_BSSID_LEN];
1777: } __WLAN_ATTRIB_PACK__ hfa384x_HandoverAddr_t;
1778:
1779: /*-- Inquiry Frame, Diagnose: Communication Tallies --*/
1780: typedef struct hfa384x_CommTallies16
1781: {
1782: UINT16 txunicastframes;
1783: UINT16 txmulticastframes;
1784: UINT16 txfragments;
1785: UINT16 txunicastoctets;
1786: UINT16 txmulticastoctets;
1787: UINT16 txdeferredtrans;
1788: UINT16 txsingleretryframes;
1789: UINT16 txmultipleretryframes;
1790: UINT16 txretrylimitexceeded;
1791: UINT16 txdiscards;
1792: UINT16 rxunicastframes;
1793: UINT16 rxmulticastframes;
1794: UINT16 rxfragments;
1795: UINT16 rxunicastoctets;
1796: UINT16 rxmulticastoctets;
1797: UINT16 rxfcserrors;
1798: UINT16 rxdiscardsnobuffer;
1799: UINT16 txdiscardswrongsa;
1800: UINT16 rxdiscardswepundecr;
1801: UINT16 rxmsginmsgfrag;
1802: UINT16 rxmsginbadmsgfrag;
1803: } __WLAN_ATTRIB_PACK__ hfa384x_CommTallies16_t;
1804:
1805: typedef struct hfa384x_CommTallies32
1806: {
1807: UINT32 txunicastframes;
1808: UINT32 txmulticastframes;
1809: UINT32 txfragments;
1810: UINT32 txunicastoctets;
1811: UINT32 txmulticastoctets;
1812: UINT32 txdeferredtrans;
1813: UINT32 txsingleretryframes;
1814: UINT32 txmultipleretryframes;
1815: UINT32 txretrylimitexceeded;
1816: UINT32 txdiscards;
1817: UINT32 rxunicastframes;
1818: UINT32 rxmulticastframes;
1819: UINT32 rxfragments;
1820: UINT32 rxunicastoctets;
1821: UINT32 rxmulticastoctets;
1822: UINT32 rxfcserrors;
1823: UINT32 rxdiscardsnobuffer;
1824: UINT32 txdiscardswrongsa;
1825: UINT32 rxdiscardswepundecr;
1826: UINT32 rxmsginmsgfrag;
1827: UINT32 rxmsginbadmsgfrag;
1828: } __WLAN_ATTRIB_PACK__ hfa384x_CommTallies32_t;
1829:
1830: /*-- Inquiry Frame, Diagnose: Scan Results & Subfields--*/
1831: typedef struct hfa384x_ScanResultSub
1832: {
1833: UINT16 chid;
1834: UINT16 anl;
1835: UINT16 sl;
1836: UINT8 bssid[WLAN_BSSID_LEN];
1837: UINT16 bcnint;
1838: UINT16 capinfo;
1839: hfa384x_bytestr32_t ssid;
1840: UINT8 supprates[10]; /* 802.11 info element */
1841: UINT16 proberesp_rate;
1842: } __WLAN_ATTRIB_PACK__ hfa384x_ScanResultSub_t;
1843:
1844: typedef struct hfa384x_ScanResult
1845: {
1846: UINT16 rsvd;
1847: UINT16 scanreason;
1848: hfa384x_ScanResultSub_t
1849: result[HFA384x_SCANRESULT_MAX];
1850: } __WLAN_ATTRIB_PACK__ hfa384x_ScanResult_t;
1851:
1852: /*-- Inquiry Frame, Diagnose: ChInfo Results & Subfields--*/
1853: typedef struct hfa384x_ChInfoResultSub
1854: {
1855: UINT16 chid;
1856: UINT16 anl;
1857: UINT16 pnl;
1858: UINT16 active;
1859: } __WLAN_ATTRIB_PACK__ hfa384x_ChInfoResultSub_t;
1860:
1861: #define HFA384x_CHINFORESULT_BSSACTIVE BIT0
1862: #define HFA384x_CHINFORESULT_PCFACTIVE BIT1
1863:
1864: typedef struct hfa384x_ChInfoResult
1865: {
1866: UINT16 scanchannels;
1867: hfa384x_ChInfoResultSub_t
1868: result[HFA384x_CHINFORESULT_MAX];
1869: } __WLAN_ATTRIB_PACK__ hfa384x_ChInfoResult_t;
1870:
1871: /*-- Inquiry Frame, Diagnose: Host Scan Results & Subfields--*/
1872: typedef struct hfa384x_HScanResultSub
1873: {
1874: UINT16 chid;
1875: UINT16 anl;
1876: UINT16 sl;
1877: UINT8 bssid[WLAN_BSSID_LEN];
1878: UINT16 bcnint;
1879: UINT16 capinfo;
1880: hfa384x_bytestr32_t ssid;
1881: UINT8 supprates[10]; /* 802.11 info element */
1882: UINT16 proberesp_rate;
1883: UINT16 atim;
1884: } __WLAN_ATTRIB_PACK__ hfa384x_HScanResultSub_t;
1885:
1886: typedef struct hfa384x_HScanResult
1887: {
1888: UINT16 nresult;
1889: UINT16 rsvd;
1890: hfa384x_HScanResultSub_t
1891: result[HFA384x_HSCANRESULT_MAX];
1892: } __WLAN_ATTRIB_PACK__ hfa384x_HScanResult_t;
1893:
1894: /*-- Unsolicited Frame, MAC Mgmt: LinkStatus --*/
1895:
1896: #define HFA384x_LINK_NOTCONNECTED ((UINT16)0)
1897: #define HFA384x_LINK_CONNECTED ((UINT16)1)
1898: #define HFA384x_LINK_DISCONNECTED ((UINT16)2)
1899: #define HFA384x_LINK_AP_CHANGE ((UINT16)3)
1900: #define HFA384x_LINK_AP_OUTOFRANGE ((UINT16)4)
1901: #define HFA384x_LINK_AP_INRANGE ((UINT16)5)
1902: #define HFA384x_LINK_ASSOCFAIL ((UINT16)6)
1903:
1904: typedef struct hfa384x_LinkStatus
1905: {
1906: UINT16 linkstatus;
1907: } __WLAN_ATTRIB_PACK__ hfa384x_LinkStatus_t;
1908:
1909:
1910: /*-- Unsolicited Frame, MAC Mgmt: AssociationStatus (--*/
1911:
1912: #define HFA384x_ASSOCSTATUS_STAASSOC ((UINT16)1)
1913: #define HFA384x_ASSOCSTATUS_REASSOC ((UINT16)2)
1914: #define HFA384x_ASSOCSTATUS_DISASSOC ((UINT16)3)
1915: #define HFA384x_ASSOCSTATUS_ASSOCFAIL ((UINT16)4)
1916: #define HFA384x_ASSOCSTATUS_AUTHFAIL ((UINT16)5)
1917:
1918: typedef struct hfa384x_AssocStatus
1919: {
1920: UINT16 assocstatus;
1921: UINT8 sta_addr[WLAN_ADDR_LEN];
1922: /* old_ap_addr is only valid if assocstatus == 2 */
1923: UINT8 old_ap_addr[WLAN_ADDR_LEN];
1924: UINT16 reason;
1925: UINT16 reserved;
1926: } __WLAN_ATTRIB_PACK__ hfa384x_AssocStatus_t;
1927:
1928: /*-- Unsolicited Frame, MAC Mgmt: AuthRequest (AP Only) --*/
1929:
1930: typedef struct hfa384x_AuthRequest
1931: {
1932: UINT8 sta_addr[WLAN_ADDR_LEN];
1933: UINT16 algorithm;
1934: } __WLAN_ATTRIB_PACK__ hfa384x_AuthReq_t;
1935:
1936: /*-- Unsolicited Frame, MAC Mgmt: AssocRequest (AP Only) --*/
1937:
1938: typedef struct hfa384x_AssocRequest
1939: {
1940: UINT8 sta_addr[WLAN_ADDR_LEN];
1941: UINT16 type;
1942: UINT8 wpa_data[80];
1943: } __WLAN_ATTRIB_PACK__ hfa384x_AssocReq_t;
1944:
1945:
1946: #define HFA384x_ASSOCREQ_TYPE_ASSOC 0
1947: #define HFA384x_ASSOCREQ_TYPE_REASSOC 1
1948:
1949: /*-- Unsolicited Frame, MAC Mgmt: MIC Failure (AP Only) --*/
1950:
1951: typedef struct hfa384x_MicFailure
1952: {
1953: UINT8 sender[WLAN_ADDR_LEN];
1954: UINT8 dest[WLAN_ADDR_LEN];
1955: } __WLAN_ATTRIB_PACK__ hfa384x_MicFailure_t;
1956:
1957: /*-- Unsolicited Frame, MAC Mgmt: PSUserCount (AP Only) --*/
1958:
1959: typedef struct hfa384x_PSUserCount
1960: {
1961: UINT16 usercnt;
1962: } __WLAN_ATTRIB_PACK__ hfa384x_PSUserCount_t;
1963:
1964: typedef struct hfa384x_KeyIDChanged
1965: {
1966: UINT8 sta_addr[WLAN_ADDR_LEN];
1967: UINT16 keyid;
1968: } __WLAN_ATTRIB_PACK__ hfa384x_KeyIDChanged_t;
1969:
1970: /*-- Collection of all Inf frames ---------------*/
1971: typedef union hfa384x_infodata {
1972: hfa384x_CommTallies16_t commtallies16;
1973: hfa384x_CommTallies32_t commtallies32;
1974: hfa384x_ScanResult_t scanresult;
1975: hfa384x_ChInfoResult_t chinforesult;
1976: hfa384x_HScanResult_t hscanresult;
1977: hfa384x_LinkStatus_t linkstatus;
1978: hfa384x_AssocStatus_t assocstatus;
1979: hfa384x_AuthReq_t authreq;
1980: hfa384x_PSUserCount_t psusercnt;
1981: hfa384x_KeyIDChanged_t keyidchanged;
1982: } __WLAN_ATTRIB_PACK__ hfa384x_infodata_t;
1983:
1984: typedef struct hfa384x_InfFrame
1985: {
1986: UINT16 framelen;
1987: UINT16 infotype;
1988: hfa384x_infodata_t info;
1989: } __WLAN_ATTRIB_PACK__ hfa384x_InfFrame_t;
1990:
1991: #if (WLAN_HOSTIF == WLAN_USB)
1992: /*--------------------------------------------------------------------
1993: USB Packet structures and constants.
1994: --------------------------------------------------------------------*/
1995:
1996: /* Should be sent to the ctrlout endpoint */
1997: #define HFA384x_USB_ENBULKIN 6
1998:
1999: /* Should be sent to the bulkout endpoint */
2000: #define HFA384x_USB_TXFRM 0
2001: #define HFA384x_USB_CMDREQ 1
2002: #define HFA384x_USB_WRIDREQ 2
2003: #define HFA384x_USB_RRIDREQ 3
2004: #define HFA384x_USB_WMEMREQ 4
2005: #define HFA384x_USB_RMEMREQ 5
2006:
2007: /* Received from the bulkin endpoint */
2008: #define HFA384x_USB_ISFRM(a) (!((a) & 0x8000))
2009: #define HFA384x_USB_ISTXFRM(a) (((a) & 0x9000) == 0x1000)
2010: #define HFA384x_USB_ISRXFRM(a) (!((a) & 0x9000))
2011: #define HFA384x_USB_INFOFRM 0x8000
2012: #define HFA384x_USB_CMDRESP 0x8001
2013: #define HFA384x_USB_WRIDRESP 0x8002
2014: #define HFA384x_USB_RRIDRESP 0x8003
2015: #define HFA384x_USB_WMEMRESP 0x8004
2016: #define HFA384x_USB_RMEMRESP 0x8005
2017: #define HFA384x_USB_BUFAVAIL 0x8006
2018: #define HFA384x_USB_ERROR 0x8007
2019:
2020: /*------------------------------------*/
2021: /* Request (bulk OUT) packet contents */
2022:
2023: typedef struct hfa384x_usb_txfrm {
2024: hfa384x_tx_frame_t desc;
2025: UINT8 data[WLAN_DATA_MAXLEN];
2026: } __WLAN_ATTRIB_PACK__ hfa384x_usb_txfrm_t;
2027:
2028: typedef struct hfa384x_usb_cmdreq {
2029: UINT16 type;
2030: UINT16 cmd;
2031: UINT16 parm0;
2032: UINT16 parm1;
2033: UINT16 parm2;
2034: UINT8 pad[54];
2035: } __WLAN_ATTRIB_PACK__ hfa384x_usb_cmdreq_t;
2036:
2037: typedef struct hfa384x_usb_wridreq {
2038: UINT16 type;
2039: UINT16 frmlen;
2040: UINT16 rid;
2041: UINT8 data[HFA384x_RIDDATA_MAXLEN];
2042: } __WLAN_ATTRIB_PACK__ hfa384x_usb_wridreq_t;
2043:
2044: typedef struct hfa384x_usb_rridreq {
2045: UINT16 type;
2046: UINT16 frmlen;
2047: UINT16 rid;
2048: UINT8 pad[58];
2049: } __WLAN_ATTRIB_PACK__ hfa384x_usb_rridreq_t;
2050:
2051: typedef struct hfa384x_usb_wmemreq {
2052: UINT16 type;
2053: UINT16 frmlen;
2054: UINT16 offset;
2055: UINT16 page;
2056: UINT8 data[HFA384x_USB_RWMEM_MAXLEN];
2057: } __WLAN_ATTRIB_PACK__ hfa384x_usb_wmemreq_t;
2058:
2059: typedef struct hfa384x_usb_rmemreq {
2060: UINT16 type;
2061: UINT16 frmlen;
2062: UINT16 offset;
2063: UINT16 page;
2064: UINT8 pad[56];
2065: } __WLAN_ATTRIB_PACK__ hfa384x_usb_rmemreq_t;
2066:
2067: /*------------------------------------*/
2068: /* Response (bulk IN) packet contents */
2069:
2070: typedef struct hfa384x_usb_rxfrm {
2071: hfa384x_rx_frame_t desc;
2072: UINT8 data[WLAN_DATA_MAXLEN];
2073: } __WLAN_ATTRIB_PACK__ hfa384x_usb_rxfrm_t;
2074:
2075: typedef struct hfa384x_usb_infofrm {
2076: UINT16 type;
2077: hfa384x_InfFrame_t info;
2078: } __WLAN_ATTRIB_PACK__ hfa384x_usb_infofrm_t;
2079:
2080: typedef struct hfa384x_usb_statusresp {
2081: UINT16 type;
2082: UINT16 status;
2083: UINT16 resp0;
2084: UINT16 resp1;
2085: UINT16 resp2;
2086: } __WLAN_ATTRIB_PACK__ hfa384x_usb_cmdresp_t;
2087:
2088: typedef hfa384x_usb_cmdresp_t hfa384x_usb_wridresp_t;
2089:
2090: typedef struct hfa384x_usb_rridresp {
2091: UINT16 type;
2092: UINT16 frmlen;
2093: UINT16 rid;
2094: UINT8 data[HFA384x_RIDDATA_MAXLEN];
2095: } __WLAN_ATTRIB_PACK__ hfa384x_usb_rridresp_t;
2096:
2097: typedef hfa384x_usb_cmdresp_t hfa384x_usb_wmemresp_t;
2098:
2099: typedef struct hfa384x_usb_rmemresp {
2100: UINT16 type;
2101: UINT16 frmlen;
2102: UINT8 data[HFA384x_USB_RWMEM_MAXLEN];
2103: } __WLAN_ATTRIB_PACK__ hfa384x_usb_rmemresp_t;
2104:
2105: typedef struct hfa384x_usb_bufavail {
2106: UINT16 type;
2107: UINT16 frmlen;
2108: } __WLAN_ATTRIB_PACK__ hfa384x_usb_bufavail_t;
2109:
2110: typedef struct hfa384x_usb_error {
2111: UINT16 type;
2112: UINT16 errortype;
2113: } __WLAN_ATTRIB_PACK__ hfa384x_usb_error_t;
2114:
2115: /*----------------------------------------------------------*/
2116: /* Unions for packaging all the known packet types together */
2117:
2118: typedef union hfa384x_usbout {
2119: UINT16 type;
2120: hfa384x_usb_txfrm_t txfrm;
2121: hfa384x_usb_cmdreq_t cmdreq;
2122: hfa384x_usb_wridreq_t wridreq;
2123: hfa384x_usb_rridreq_t rridreq;
2124: hfa384x_usb_wmemreq_t wmemreq;
2125: hfa384x_usb_rmemreq_t rmemreq;
2126: } __WLAN_ATTRIB_PACK__ hfa384x_usbout_t;
2127:
2128: typedef union hfa384x_usbin {
2129: UINT16 type;
2130: hfa384x_usb_rxfrm_t rxfrm;
2131: hfa384x_usb_txfrm_t txfrm;
2132: hfa384x_usb_infofrm_t infofrm;
2133: hfa384x_usb_cmdresp_t cmdresp;
2134: hfa384x_usb_wridresp_t wridresp;
2135: hfa384x_usb_rridresp_t rridresp;
2136: hfa384x_usb_wmemresp_t wmemresp;
2137: hfa384x_usb_rmemresp_t rmemresp;
2138: hfa384x_usb_bufavail_t bufavail;
2139: hfa384x_usb_error_t usberror;
2140: UINT8 boguspad[3000];
2141: } __WLAN_ATTRIB_PACK__ hfa384x_usbin_t;
2142:
2143: #endif /* WLAN_USB */
2144:
2145: /*--------------------------------------------------------------------
2146: PD record structures.
2147: --------------------------------------------------------------------*/
2148:
2149: typedef struct hfa384x_pdr_pcb_partnum
2150: {
2151: UINT8 num[8];
2152: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_pcb_partnum_t;
2153:
2154: typedef struct hfa384x_pdr_pcb_tracenum
2155: {
2156: UINT8 num[8];
2157: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_pcb_tracenum_t;
2158:
2159: typedef struct hfa384x_pdr_nic_serial
2160: {
2161: UINT8 num[12];
2162: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_serial_t;
2163:
2164: typedef struct hfa384x_pdr_mkk_measurements
2165: {
2166: double carrier_freq;
2167: double occupied_band;
2168: double power_density;
2169: double tx_spur_f1;
2170: double tx_spur_f2;
2171: double tx_spur_f3;
2172: double tx_spur_f4;
2173: double tx_spur_l1;
2174: double tx_spur_l2;
2175: double tx_spur_l3;
2176: double tx_spur_l4;
2177: double rx_spur_f1;
2178: double rx_spur_f2;
2179: double rx_spur_l1;
2180: double rx_spur_l2;
2181: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mkk_measurements_t;
2182:
2183: typedef struct hfa384x_pdr_nic_ramsize
2184: {
2185: UINT8 size[12]; /* units of KB */
2186: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_ramsize_t;
2187:
2188: typedef struct hfa384x_pdr_mfisuprange
2189: {
2190: UINT16 id;
2191: UINT16 variant;
2192: UINT16 bottom;
2193: UINT16 top;
2194: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mfisuprange_t;
2195:
2196: typedef struct hfa384x_pdr_cfisuprange
2197: {
2198: UINT16 id;
2199: UINT16 variant;
2200: UINT16 bottom;
2201: UINT16 top;
2202: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_cfisuprange_t;
2203:
2204: typedef struct hfa384x_pdr_nicid
2205: {
2206: UINT16 id;
2207: UINT16 variant;
2208: UINT16 major;
2209: UINT16 minor;
2210: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nicid_t;
2211:
2212:
2213: typedef struct hfa384x_pdr_refdac_measurements
2214: {
2215: UINT16 value[0];
2216: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_refdac_measurements_t;
2217:
2218: typedef struct hfa384x_pdr_vgdac_measurements
2219: {
2220: UINT16 value[0];
2221: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_vgdac_measurements_t;
2222:
2223: typedef struct hfa384x_pdr_level_comp_measurements
2224: {
2225: UINT16 value[0];
2226: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_level_compc_measurements_t;
2227:
2228: typedef struct hfa384x_pdr_mac_address
2229: {
2230: UINT8 addr[6];
2231: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mac_address_t;
2232:
2233: typedef struct hfa384x_pdr_mkk_callname
2234: {
2235: UINT8 callname[8];
2236: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_mkk_callname_t;
2237:
2238: typedef struct hfa384x_pdr_regdomain
2239: {
2240: UINT16 numdomains;
2241: UINT16 domain[5];
2242: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_regdomain_t;
2243:
2244: typedef struct hfa384x_pdr_allowed_channel
2245: {
2246: UINT16 ch_bitmap;
2247: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_allowed_channel_t;
2248:
2249: typedef struct hfa384x_pdr_default_channel
2250: {
2251: UINT16 channel;
2252: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_default_channel_t;
2253:
2254: typedef struct hfa384x_pdr_privacy_option
2255: {
2256: UINT16 available;
2257: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_privacy_option_t;
2258:
2259: typedef struct hfa384x_pdr_temptype
2260: {
2261: UINT16 type;
2262: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_temptype_t;
2263:
2264: typedef struct hfa384x_pdr_refdac_setup
2265: {
2266: UINT16 ch_value[14];
2267: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_refdac_setup_t;
2268:
2269: typedef struct hfa384x_pdr_vgdac_setup
2270: {
2271: UINT16 ch_value[14];
2272: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_vgdac_setup_t;
2273:
2274: typedef struct hfa384x_pdr_level_comp_setup
2275: {
2276: UINT16 ch_value[14];
2277: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_level_comp_setup_t;
2278:
2279: typedef struct hfa384x_pdr_trimdac_setup
2280: {
2281: UINT16 trimidac;
2282: UINT16 trimqdac;
2283: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_trimdac_setup_t;
2284:
2285: typedef struct hfa384x_pdr_ifr_setting
2286: {
2287: UINT16 value[3];
2288: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_ifr_setting_t;
2289:
2290: typedef struct hfa384x_pdr_rfr_setting
2291: {
2292: UINT16 value[3];
2293: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_rfr_setting_t;
2294:
2295: typedef struct hfa384x_pdr_hfa3861_baseline
2296: {
2297: UINT16 value[50];
2298: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_baseline_t;
2299:
2300: typedef struct hfa384x_pdr_hfa3861_shadow
2301: {
2302: UINT32 value[32];
2303: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_shadow_t;
2304:
2305: typedef struct hfa384x_pdr_hfa3861_ifrf
2306: {
2307: UINT32 value[20];
2308: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_ifrf_t;
2309:
2310: typedef struct hfa384x_pdr_hfa3861_chcalsp
2311: {
2312: UINT16 value[14];
2313: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_chcalsp_t;
2314:
2315: typedef struct hfa384x_pdr_hfa3861_chcali
2316: {
2317: UINT16 value[17];
2318: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_chcali_t;
2319:
2320: typedef struct hfa384x_pdr_hfa3861_nic_config
2321: {
2322: UINT16 config_bitmap;
2323: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_config_t;
2324:
2325: typedef struct hfa384x_pdr_hfo_delay
2326: {
2327: UINT8 hfo_delay;
2328: } __WLAN_ATTRIB_PACK__ hfa384x_hfo_delay_t;
2329:
2330: typedef struct hfa384x_pdr_hfa3861_manf_testsp
2331: {
2332: UINT16 value[30];
2333: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_manf_testsp_t;
2334:
2335: typedef struct hfa384x_pdr_hfa3861_manf_testi
2336: {
2337: UINT16 value[30];
2338: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_manf_testi_t;
2339:
2340: typedef struct hfa384x_end_of_pda
2341: {
2342: UINT16 crc;
2343: } __WLAN_ATTRIB_PACK__ hfa384x_pdr_end_of_pda_t;
2344:
2345: typedef struct hfa384x_pdrec
2346: {
2347: UINT16 len; /* in words */
2348: UINT16 code;
2349: union pdr {
2350: hfa384x_pdr_pcb_partnum_t pcb_partnum;
2351: hfa384x_pdr_pcb_tracenum_t pcb_tracenum;
2352: hfa384x_pdr_nic_serial_t nic_serial;
2353: hfa384x_pdr_mkk_measurements_t mkk_measurements;
2354: hfa384x_pdr_nic_ramsize_t nic_ramsize;
2355: hfa384x_pdr_mfisuprange_t mfisuprange;
2356: hfa384x_pdr_cfisuprange_t cfisuprange;
2357: hfa384x_pdr_nicid_t nicid;
2358: hfa384x_pdr_refdac_measurements_t refdac_measurements;
2359: hfa384x_pdr_vgdac_measurements_t vgdac_measurements;
2360: hfa384x_pdr_level_compc_measurements_t level_compc_measurements;
2361: hfa384x_pdr_mac_address_t mac_address;
2362: hfa384x_pdr_mkk_callname_t mkk_callname;
2363: hfa384x_pdr_regdomain_t regdomain;
2364: hfa384x_pdr_allowed_channel_t allowed_channel;
2365: hfa384x_pdr_default_channel_t default_channel;
2366: hfa384x_pdr_privacy_option_t privacy_option;
2367: hfa384x_pdr_temptype_t temptype;
2368: hfa384x_pdr_refdac_setup_t refdac_setup;
2369: hfa384x_pdr_vgdac_setup_t vgdac_setup;
2370: hfa384x_pdr_level_comp_setup_t level_comp_setup;
2371: hfa384x_pdr_trimdac_setup_t trimdac_setup;
2372: hfa384x_pdr_ifr_setting_t ifr_setting;
2373: hfa384x_pdr_rfr_setting_t rfr_setting;
2374: hfa384x_pdr_hfa3861_baseline_t hfa3861_baseline;
2375: hfa384x_pdr_hfa3861_shadow_t hfa3861_shadow;
2376: hfa384x_pdr_hfa3861_ifrf_t hfa3861_ifrf;
2377: hfa384x_pdr_hfa3861_chcalsp_t hfa3861_chcalsp;
2378: hfa384x_pdr_hfa3861_chcali_t hfa3861_chcali;
2379: hfa384x_pdr_nic_config_t nic_config;
2380: hfa384x_hfo_delay_t hfo_delay;
2381: hfa384x_pdr_hfa3861_manf_testsp_t hfa3861_manf_testsp;
2382: hfa384x_pdr_hfa3861_manf_testi_t hfa3861_manf_testi;
2383: hfa384x_pdr_end_of_pda_t end_of_pda;
2384:
2385: } data;
2386: } __WLAN_ATTRIB_PACK__ hfa384x_pdrec_t;
2387:
2388:
2389: #ifdef __KERNEL__
2390: /*--------------------------------------------------------------------
2391: --- MAC state structure, argument to all functions --
2392: --- Also, a collection of support types --
2393: --------------------------------------------------------------------*/
2394: typedef struct hfa384x_statusresult
2395: {
2396: UINT16 status;
2397: UINT16 resp0;
2398: UINT16 resp1;
2399: UINT16 resp2;
2400: } hfa384x_cmdresult_t;
2401:
2402: #if (WLAN_HOSTIF == WLAN_USB)
2403:
2404: /* USB Control Exchange (CTLX):
2405: * A queue of the structure below is maintained for all of the
2406: * Request/Response type USB packets supported by Prism2.
2407: */
2408: /* The following hfa384x_* structures are arguments to
2409: * the usercb() for the different CTLX types.
2410: */
2411: typedef hfa384x_cmdresult_t hfa384x_wridresult_t;
2412: typedef hfa384x_cmdresult_t hfa384x_wmemresult_t;
2413:
2414: typedef struct hfa384x_rridresult
2415: {
2416: UINT16 rid;
2417: const void *riddata;
2418: UINT riddata_len;
2419: } hfa384x_rridresult_t;
2420:
2421: enum ctlx_state {
2422: CTLX_START = 0, /* Start state, not queued */
2423:
2424: CTLX_COMPLETE, /* CTLX successfully completed */
2425: CTLX_REQ_FAILED, /* OUT URB completed w/ error */
2426:
2427: CTLX_PENDING, /* Queued, data valid */
2428: CTLX_REQ_SUBMITTED, /* OUT URB submitted */
2429: CTLX_REQ_COMPLETE, /* OUT URB complete */
2430: CTLX_RESP_COMPLETE /* IN URB received */
2431: };
2432: typedef enum ctlx_state CTLX_STATE;
2433:
2434: struct hfa384x_usbctlx;
2435: struct hfa384x;
2436:
2437: typedef void (*ctlx_cmdcb_t)( struct hfa384x*, const struct hfa384x_usbctlx* );
2438:
2439: typedef void (*ctlx_usercb_t)(
2440: struct hfa384x *hw,
2441: void *ctlxresult,
2442: void *usercb_data);
2443:
2444: typedef struct hfa384x_usbctlx
2445: {
2446: struct list_head list;
2447:
2448: size_t outbufsize;
2449: hfa384x_usbout_t outbuf; /* pkt buf for OUT */
2450: hfa384x_usbin_t inbuf; /* pkt buf for IN(a copy) */
2451:
2452: CTLX_STATE state; /* Tracks running state */
2453:
2454: struct completion done;
2455: volatile int reapable; /* Food for the reaper task */
2456:
2457: ctlx_cmdcb_t cmdcb; /* Async command callback */
2458: ctlx_usercb_t usercb; /* Async user callback, */
2459: void *usercb_data; /* at CTLX completion */
2460:
2461: int variant; /* Identifies cmd variant */
2462: } hfa384x_usbctlx_t;
2463:
2464: typedef struct hfa384x_usbctlxq
2465: {
2466: spinlock_t lock;
2467: struct list_head pending;
2468: struct list_head active;
2469: struct list_head completing;
2470: struct list_head reapable;
2471: } hfa384x_usbctlxq_t;
2472: #endif
2473:
2474: typedef struct hfa484x_metacmd
2475: {
2476: UINT16 cmd;
2477:
2478: UINT16 parm0;
2479: UINT16 parm1;
2480: UINT16 parm2;
2481:
2482: #if 0 //XXX cmd irq stuff
2483: UINT16 bulkid; /* what RID/FID to copy down. */
2484: int bulklen; /* how much to copy from BAP */
2485: char *bulkdata; /* And to where? */
2486: #endif
2487:
2488: hfa384x_cmdresult_t result;
2489: } hfa384x_metacmd_t;
2490:
2491: #define MAX_PRISM2_GRP_ADDR 16
2492: #define MAX_GRP_ADDR 32
2493: #define WLAN_COMMENT_MAX 80 /* Max. length of user comment string. */
2494:
2495: #define MM_SAT_PCF (BIT14)
2496: #define MM_GCSD_PCF (BIT15)
2497: #define MM_GCSD_PCF_EB (BIT14 | BIT15)
2498:
2499: #define WLAN_STATE_STOPPED 0 /* Network is not active. */
2500: #define WLAN_STATE_STARTED 1 /* Network has been started. */
2501:
2502: #define WLAN_AUTH_MAX 60 /* Max. # of authenticated stations. */
2503: #define WLAN_ACCESS_MAX 60 /* Max. # of stations in an access list. */
2504: #define WLAN_ACCESS_NONE 0 /* No stations may be authenticated. */
2505: #define WLAN_ACCESS_ALL 1 /* All stations may be authenticated. */
2506: #define WLAN_ACCESS_ALLOW 2 /* Authenticate only "allowed" stations. */
2507: #define WLAN_ACCESS_DENY 3 /* Do not authenticate "denied" stations. */
2508:
2509: /* XXX These are going away ASAP */
2510: typedef struct prism2sta_authlist
2511: {
2512: UINT cnt;
2513: UINT8 addr[WLAN_AUTH_MAX][WLAN_ADDR_LEN];
2514: UINT8 assoc[WLAN_AUTH_MAX];
2515: } prism2sta_authlist_t;
2516:
2517: typedef struct prism2sta_accesslist
2518: {
2519: UINT modify;
2520: UINT cnt;
2521: UINT8 addr[WLAN_ACCESS_MAX][WLAN_ADDR_LEN];
2522: UINT cnt1;
2523: UINT8 addr1[WLAN_ACCESS_MAX][WLAN_ADDR_LEN];
2524: } prism2sta_accesslist_t;
2525:
2526: typedef struct hfa384x
2527: {
2528: #if (WLAN_HOSTIF != WLAN_USB)
2529: /* Resource config */
2530: UINT32 iobase;
2531: char __iomem *membase;
2532: UINT32 irq;
2533: #else
2534: /* USB support data */
2535: struct usb_device *usb;
2536: struct urb rx_urb;
2537: struct sk_buff *rx_urb_skb;
2538: struct urb tx_urb;
2539: struct urb ctlx_urb;
2540: hfa384x_usbout_t txbuff;
2541: hfa384x_usbctlxq_t ctlxq;
2542: struct timer_list reqtimer;
2543: struct timer_list resptimer;
2544:
2545: struct timer_list throttle;
2546:
2547: struct tasklet_struct reaper_bh;
2548: struct tasklet_struct completion_bh;
2549:
2550: struct work_struct usb_work;
2551:
2552: unsigned long usb_flags;
2553: #define THROTTLE_RX 0
2554: #define THROTTLE_TX 1
2555: #define WORK_RX_HALT 2
2556: #define WORK_TX_HALT 3
2557: #define WORK_RX_RESUME 4
2558: #define WORK_TX_RESUME 5
2559:
2560: unsigned short req_timer_done:1;
2561: unsigned short resp_timer_done:1;
2562:
2563: int endp_in;
2564: int endp_out;
2565: #endif /* !USB */
2566:
2567: #if (WLAN_HOSTIF == WLAN_PCMCIA)
2568: #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
2569: struct pcmcia_device *pdev;
2570: #else
2571: dev_link_t *link;
2572: #endif
2573: dev_node_t node;
2574: #endif
2575:
2576: int sniff_fcs;
2577: int sniff_channel;
2578: int sniff_truncate;
2579: int sniffhdr;
2580:
2581: wait_queue_head_t cmdq; /* wait queue itself */
2582:
2583: /* Controller state */
2584: UINT32 state;
2585: UINT32 isap;
2586: UINT8 port_enabled[HFA384x_NUMPORTS_MAX];
2587: #if (WLAN_HOSTIF != WLAN_USB)
2588: UINT auxen;
2589: UINT isram16;
2590: #endif /* !USB */
2591:
2592: /* Download support */
2593: UINT dlstate;
2594: hfa384x_downloadbuffer_t bufinfo;
2595: UINT16 dltimeout;
2596:
2597: #if (WLAN_HOSTIF != WLAN_USB)
2598: spinlock_t cmdlock;
2599: volatile int cmdflag; /* wait queue flag */
2600: hfa384x_metacmd_t *cmddata; /* for our async callback */
2601:
2602: /* BAP support */
2603: spinlock_t baplock;
2604: struct tasklet_struct bap_tasklet;
2605:
2606: /* MAC buffer ids */
2607: UINT16 txfid_head;
2608: UINT16 txfid_tail;
2609: UINT txfid_N;
2610: UINT16 txfid_queue[HFA384x_DRVR_FIDSTACKLEN_MAX];
2611: UINT16 infofid;
2612: struct semaphore infofid_sem;
2613: #endif /* !USB */
2614:
2615: int scanflag; /* to signal scan comlete */
2616: int join_ap; /* are we joined to a specific ap */
2617: int join_retries; /* number of join retries till we fail */
2618: hfa384x_JoinRequest_data_t joinreq; /* join request saved data */
2619:
2620: wlandevice_t *wlandev;
2621: /* Timer to allow for the deferred processing of linkstatus messages */
2622: struct work_struct link_bh;
2623:
2624: struct work_struct commsqual_bh;
2625: hfa384x_commsquality_t qual;
2626: struct timer_list commsqual_timer;
2627:
2628: UINT16 link_status;
2629: UINT16 link_status_new;
2630: struct sk_buff_head authq;
2631:
2632: /* And here we have stuff that used to be in priv */
2633:
2634: /* State variables */
2635: UINT presniff_port_type;
2636: UINT16 presniff_wepflags;
2637: UINT32 dot11_desired_bss_type;
2638: int ap; /* AP flag: 0 - Station, 1 - Access Point. */
2639:
2640: int dbmadjust;
2641:
2642: /* Group Addresses - right now, there are up to a total
2643: of MAX_GRP_ADDR group addresses */
2644: UINT8 dot11_grp_addr[MAX_GRP_ADDR][WLAN_ADDR_LEN];
2645: UINT dot11_grpcnt;
2646:
2647: /* Component Identities */
2648: hfa384x_compident_t ident_nic;
2649: hfa384x_compident_t ident_pri_fw;
2650: hfa384x_compident_t ident_sta_fw;
2651: hfa384x_compident_t ident_ap_fw;
2652: UINT16 mm_mods;
2653:
2654: /* Supplier compatibility ranges */
2655: hfa384x_caplevel_t cap_sup_mfi;
2656: hfa384x_caplevel_t cap_sup_cfi;
2657: hfa384x_caplevel_t cap_sup_pri;
2658: hfa384x_caplevel_t cap_sup_sta;
2659: hfa384x_caplevel_t cap_sup_ap;
2660:
2661: /* Actor compatibility ranges */
2662: hfa384x_caplevel_t cap_act_pri_cfi; /* pri f/w to controller interface */
2663: hfa384x_caplevel_t cap_act_sta_cfi; /* sta f/w to controller interface */
2664: hfa384x_caplevel_t cap_act_sta_mfi; /* sta f/w to modem interface */
2665: hfa384x_caplevel_t cap_act_ap_cfi; /* ap f/w to controller interface */
2666: hfa384x_caplevel_t cap_act_ap_mfi; /* ap f/w to modem interface */
2667:
2668: UINT32 psusercount; /* Power save user count. */
2669: hfa384x_CommTallies32_t tallies; /* Communication tallies. */
2670: UINT8 comment[WLAN_COMMENT_MAX+1]; /* User comment */
2671:
2672: /* Channel Info request results (AP only) */
2673: struct {
2674: atomic_t done;
2675: UINT8 count;
2676: hfa384x_ChInfoResult_t results;
2677: } channel_info;
2678:
2679: hfa384x_InfFrame_t *scanresults;
2680:
2681:
2682: prism2sta_authlist_t authlist; /* Authenticated station list. */
2683: UINT accessmode; /* Access mode. */
2684: prism2sta_accesslist_t allow; /* Allowed station list. */
2685: prism2sta_accesslist_t deny; /* Denied station list. */
2686:
2687: } hfa384x_t;
2688:
2689: /*=============================================================*/
2690: /*--- Function Declarations -----------------------------------*/
2691: /*=============================================================*/
2692: #if (WLAN_HOSTIF == WLAN_USB)
2693: void
2694: hfa384x_create(
2695: hfa384x_t *hw,
2696: struct usb_device *usb);
2697: #else
2698: void
2699: hfa384x_create(
2700: hfa384x_t *hw,
2701: UINT irq,
2702: UINT32 iobase,
2703: UINT8 __iomem *membase);
2704: #endif
2705:
2706: void hfa384x_destroy(hfa384x_t *hw);
2707:
2708: irqreturn_t
2709: hfa384x_interrupt(int irq, void *dev_id PT_REGS);
2710: int
2711: hfa384x_corereset( hfa384x_t *hw, int holdtime, int settletime, int genesis);
2712: int
2713: hfa384x_drvr_chinforesults( hfa384x_t *hw);
2714: int
2715: hfa384x_drvr_commtallies( hfa384x_t *hw);
2716: int
2717: hfa384x_drvr_disable(hfa384x_t *hw, UINT16 macport);
2718: int
2719: hfa384x_drvr_enable(hfa384x_t *hw, UINT16 macport);
2720: int
2721: hfa384x_drvr_flashdl_enable(hfa384x_t *hw);
2722: int
2723: hfa384x_drvr_flashdl_disable(hfa384x_t *hw);
2724: int
2725: hfa384x_drvr_flashdl_write(hfa384x_t *hw, UINT32 daddr, void* buf, UINT32 len);
2726: int
2727: hfa384x_drvr_getconfig(hfa384x_t *hw, UINT16 rid, void *buf, UINT16 len);
2728: int
2729: hfa384x_drvr_handover( hfa384x_t *hw, UINT8 *addr);
2730: int
2731: hfa384x_drvr_hostscanresults( hfa384x_t *hw);
2732: int
2733: hfa384x_drvr_low_level(hfa384x_t *hw, hfa384x_metacmd_t *cmd);
2734: int
2735: hfa384x_drvr_mmi_read(hfa384x_t *hw, UINT32 address, UINT32 *result);
2736: int
2737: hfa384x_drvr_mmi_write(hfa384x_t *hw, UINT32 address, UINT32 data);
2738: int
2739: hfa384x_drvr_ramdl_enable(hfa384x_t *hw, UINT32 exeaddr);
2740: int
2741: hfa384x_drvr_ramdl_disable(hfa384x_t *hw);
2742: int
2743: hfa384x_drvr_ramdl_write(hfa384x_t *hw, UINT32 daddr, void* buf, UINT32 len);
2744: int
2745: hfa384x_drvr_readpda(hfa384x_t *hw, void *buf, UINT len);
2746: int
2747: hfa384x_drvr_scanresults( hfa384x_t *hw);
2748:
2749: int
2750: hfa384x_drvr_setconfig(hfa384x_t *hw, UINT16 rid, void *buf, UINT16 len);
2751:
2752: static inline int
2753: hfa384x_drvr_getconfig16(hfa384x_t *hw, UINT16 rid, void *val)
2754: {
2755: int result = 0;
2756: result = hfa384x_drvr_getconfig(hw, rid, val, sizeof(UINT16));
2757: if ( result == 0 ) {
2758: *((UINT16*)val) = hfa384x2host_16(*((UINT16*)val));
2759: }
2760: return result;
2761: }
2762:
2763: static inline int
2764: hfa384x_drvr_getconfig32(hfa384x_t *hw, UINT16 rid, void *val)
2765: {
2766: int result = 0;
2767:
2768: result = hfa384x_drvr_getconfig(hw, rid, val, sizeof(UINT32));
2769: if ( result == 0 ) {
2770: *((UINT32*)val) = hfa384x2host_32(*((UINT32*)val));
2771: }
2772:
2773: return result;
2774: }
2775:
2776: static inline int
2777: hfa384x_drvr_setconfig16(hfa384x_t *hw, UINT16 rid, UINT16 val)
2778: {
2779: UINT16 value = host2hfa384x_16(val);
2780: return hfa384x_drvr_setconfig(hw, rid, &value, sizeof(value));
2781: }
2782:
2783: static inline int
2784: hfa384x_drvr_setconfig32(hfa384x_t *hw, UINT16 rid, UINT32 val)
2785: {
2786: UINT32 value = host2hfa384x_32(val);
2787: return hfa384x_drvr_setconfig(hw, rid, &value, sizeof(value));
2788: }
2789:
2790: #if (WLAN_HOSTIF == WLAN_USB)
2791: int
2792: hfa384x_drvr_getconfig_async(hfa384x_t *hw,
2793: UINT16 rid,
2794: ctlx_usercb_t usercb,
2795: void *usercb_data);
2796:
2797: int
2798: hfa384x_drvr_setconfig_async(hfa384x_t *hw,
2799: UINT16 rid,
2800: void *buf,
2801: UINT16 len,
2802: ctlx_usercb_t usercb,
2803: void *usercb_data);
2804: #else
2805: static inline int
2806: hfa384x_drvr_setconfig_async(hfa384x_t *hw, UINT16 rid, void *buf, UINT16 len,
2807: void *ptr1, void *ptr2)
2808: {
2809: (void)ptr1;
2810: (void)ptr2;
2811: return hfa384x_drvr_setconfig(hw, rid, buf, len);
2812: }
2813: #endif
2814:
2815: static inline int
2816: hfa384x_drvr_setconfig16_async(hfa384x_t *hw, UINT16 rid, UINT16 val)
2817: {
2818: UINT16 value = host2hfa384x_16(val);
2819: return hfa384x_drvr_setconfig_async(hw, rid, &value, sizeof(value),
2820: NULL , NULL);
2821: }
2822:
2823: static inline int
2824: hfa384x_drvr_setconfig32_async(hfa384x_t *hw, UINT16 rid, UINT32 val)
2825: {
2826: UINT32 value = host2hfa384x_32(val);
2827: return hfa384x_drvr_setconfig_async(hw, rid, &value, sizeof(value),
2828: NULL , NULL);
2829: }
2830:
2831:
2832: int
2833: hfa384x_drvr_start(hfa384x_t *hw);
2834: int
2835: hfa384x_drvr_stop(hfa384x_t *hw);
2836: int
2837: hfa384x_drvr_txframe(hfa384x_t *hw, struct sk_buff *skb, p80211_hdr_t *p80211_hdr, p80211_metawep_t *p80211_wep);
2838: void
2839: hfa384x_tx_timeout(wlandevice_t *wlandev);
2840:
2841: int
2842: hfa384x_cmd_initialize(hfa384x_t *hw);
2843: int
2844: hfa384x_cmd_enable(hfa384x_t *hw, UINT16 macport);
2845: int
2846: hfa384x_cmd_disable(hfa384x_t *hw, UINT16 macport);
2847: int
2848: hfa384x_cmd_diagnose(hfa384x_t *hw);
2849: int
2850: hfa384x_cmd_allocate(hfa384x_t *hw, UINT16 len);
2851: int
2852: hfa384x_cmd_transmit(hfa384x_t *hw, UINT16 reclaim, UINT16 qos, UINT16 fid);
2853: int
2854: hfa384x_cmd_clearpersist(hfa384x_t *hw, UINT16 fid);
2855: int
2856: hfa384x_cmd_notify(hfa384x_t *hw, UINT16 reclaim, UINT16 fid, void *buf, UINT16 len);
2857: int
2858: hfa384x_cmd_inquire(hfa384x_t *hw, UINT16 fid);
2859: int
2860: hfa384x_cmd_access(hfa384x_t *hw, UINT16 write, UINT16 rid, void *buf, UINT16 len);
2861: int
2862: hfa384x_cmd_monitor(hfa384x_t *hw, UINT16 enable);
2863: int
2864: hfa384x_cmd_download(
2865: hfa384x_t *hw,
2866: UINT16 mode,
2867: UINT16 lowaddr,
2868: UINT16 highaddr,
2869: UINT16 codelen);
2870: int
2871: hfa384x_cmd_aux_enable(hfa384x_t *hw, int force);
2872: int
2873: hfa384x_cmd_aux_disable(hfa384x_t *hw);
2874: int
2875: hfa384x_copy_from_bap(
2876: hfa384x_t *hw,
2877: UINT16 bap,
2878: UINT16 id,
2879: UINT16 offset,
2880: void *buf,
2881: UINT len);
2882: int
2883: hfa384x_copy_to_bap(
2884: hfa384x_t *hw,
2885: UINT16 bap,
2886: UINT16 id,
2887: UINT16 offset,
2888: void *buf,
2889: UINT len);
2890: void
2891: hfa384x_copy_from_aux(
2892: hfa384x_t *hw,
2893: UINT32 cardaddr,
2894: UINT32 auxctl,
2895: void *buf,
2896: UINT len);
2897: void
2898: hfa384x_copy_to_aux(
2899: hfa384x_t *hw,
2900: UINT32 cardaddr,
2901: UINT32 auxctl,
2902: void *buf,
2903: UINT len);
2904:
2905: #if (WLAN_HOSTIF != WLAN_USB)
2906:
2907: /*
2908: HFA384x is a LITTLE ENDIAN part.
2909:
2910: the get/setreg functions implicitly byte-swap the data to LE.
2911: the _noswap variants do not perform a byte-swap on the data.
2912: */
2913:
2914: static inline UINT16
2915: __hfa384x_getreg(hfa384x_t *hw, UINT reg);
2916:
2917: static inline void
2918: __hfa384x_setreg(hfa384x_t *hw, UINT16 val, UINT reg);
2919:
2920: static inline UINT16
2921: __hfa384x_getreg_noswap(hfa384x_t *hw, UINT reg);
2922:
2923: static inline void
2924: __hfa384x_setreg_noswap(hfa384x_t *hw, UINT16 val, UINT reg);
2925:
2926: #ifdef REVERSE_ENDIAN
2927: #define hfa384x_getreg __hfa384x_getreg_noswap
2928: #define hfa384x_setreg __hfa384x_setreg_noswap
2929: #define hfa384x_getreg_noswap __hfa384x_getreg
2930: #define hfa384x_setreg_noswap __hfa384x_setreg
2931: #else
2932: #define hfa384x_getreg __hfa384x_getreg
2933: #define hfa384x_setreg __hfa384x_setreg
2934: #define hfa384x_getreg_noswap __hfa384x_getreg_noswap
2935: #define hfa384x_setreg_noswap __hfa384x_setreg_noswap
2936: #endif
2937:
2938: /*----------------------------------------------------------------
2939: * hfa384x_getreg
2940: *
2941: * Retrieve the value of one of the MAC registers. Done here
2942: * because different PRISM2 MAC parts use different buses and such.
2943: * NOTE: This function returns the value in HOST ORDER!!!!!!
2944: *
2945: * Arguments:
2946: * hw MAC part structure
2947: * reg Register identifier (offset for I/O based i/f)
2948: *
2949: * Returns:
2950: * Value from the register in HOST ORDER!!!!
2951: ----------------------------------------------------------------*/
2952: static inline UINT16
2953: __hfa384x_getreg(hfa384x_t *hw, UINT reg)
2954: {
2955: /* printk(KERN_DEBUG "Reading from 0x%0x\n", hw->membase + reg); */
2956: #if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX))
2957: return wlan_inw_le16_to_cpu(hw->iobase+reg);
2958: #elif (WLAN_HOSTIF == WLAN_PCI)
2959: return __le16_to_cpu(readw(hw->membase + reg));
2960: #endif
2961: }
2962:
2963: /*----------------------------------------------------------------
2964: * hfa384x_setreg
2965: *
2966: * Set the value of one of the MAC registers. Done here
2967: * because different PRISM2 MAC parts use different buses and such.
2968: * NOTE: This function assumes the value is in HOST ORDER!!!!!!
2969: *
2970: * Arguments:
2971: * hw MAC part structure
2972: * val Value, in HOST ORDER!!, to put in the register
2973: * reg Register identifier (offset for I/O based i/f)
2974: *
2975: * Returns:
2976: * Nothing
2977: ----------------------------------------------------------------*/
2978: static inline void
2979: __hfa384x_setreg(hfa384x_t *hw, UINT16 val, UINT reg)
2980: {
2981: #if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX))
2982: wlan_outw_cpu_to_le16( val, hw->iobase + reg);
2983: return;
2984: #elif (WLAN_HOSTIF == WLAN_PCI)
2985: writew(__cpu_to_le16(val), hw->membase + reg);
2986: return;
2987: #endif
2988: }
2989:
2990:
2991: /*----------------------------------------------------------------
2992: * hfa384x_getreg_noswap
2993: *
2994: * Retrieve the value of one of the MAC registers. Done here
2995: * because different PRISM2 MAC parts use different buses and such.
2996: *
2997: * Arguments:
2998: * hw MAC part structure
2999: * reg Register identifier (offset for I/O based i/f)
3000: *
3001: * Returns:
3002: * Value from the register.
3003: ----------------------------------------------------------------*/
3004: static inline UINT16
3005: __hfa384x_getreg_noswap(hfa384x_t *hw, UINT reg)
3006: {
3007: #if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX))
3008: return wlan_inw(hw->iobase+reg);
3009: #elif (WLAN_HOSTIF == WLAN_PCI)
3010: return readw(hw->membase + reg);
3011: #endif
3012: }
3013:
3014:
3015: /*----------------------------------------------------------------
3016: * hfa384x_setreg_noswap
3017: *
3018: * Set the value of one of the MAC registers. Done here
3019: * because different PRISM2 MAC parts use different buses and such.
3020: *
3021: * Arguments:
3022: * hw MAC part structure
3023: * val Value to put in the register
3024: * reg Register identifier (offset for I/O based i/f)
3025: *
3026: * Returns:
3027: * Nothing
3028: ----------------------------------------------------------------*/
3029: static inline void
3030: __hfa384x_setreg_noswap(hfa384x_t *hw, UINT16 val, UINT reg)
3031: {
3032: #if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX))
3033: wlan_outw( val, hw->iobase + reg);
3034: return;
3035: #elif (WLAN_HOSTIF == WLAN_PCI)
3036: writew(val, hw->membase + reg);
3037: return;
3038: #endif
3039: }
3040:
3041:
3042: static inline void hfa384x_events_all(hfa384x_t *hw)
3043: {
3044: hfa384x_setreg(hw,
3045: HFA384x_INT_NORMAL
3046: #ifdef CMD_IRQ
3047: | HFA384x_INTEN_CMD_SET(1)
3048: #endif
3049: ,
3050: HFA384x_INTEN);
3051:
3052: }
3053:
3054: static inline void hfa384x_events_nobap(hfa384x_t *hw)
3055: {
3056: hfa384x_setreg(hw,
3057: (HFA384x_INT_NORMAL & ~HFA384x_INT_BAP_OP)
3058: #ifdef CMD_IRQ
3059: | HFA384x_INTEN_CMD_SET(1)
3060: #endif
3061: ,
3062: HFA384x_INTEN);
3063:
3064: }
3065:
3066: #endif /* WLAN_HOSTIF != WLAN_USB */
3067: #endif /* __KERNEL__ */
3068:
3069: #endif /* _HFA384x_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.