Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
mdd.h
Go to the documentation of this file.
1 
2 #ifndef MDD_H
3 #define MDD_H 1
4 
5 /*************************************************************************************************************
6 *
7 * FILE : mdd.h
8 *
9 * DATE : $Date: 2004/08/05 11:47:10 $ $Revision: 1.6 $
10 * Original : 2004/05/25 05:59:37 Revision: 1.57 Tag: hcf7_t20040602_01
11 * Original : 2004/05/13 15:31:45 Revision: 1.54 Tag: hcf7_t7_20040513_01
12 * Original : 2004/04/15 09:24:41 Revision: 1.47 Tag: hcf7_t7_20040415_01
13 * Original : 2004/04/13 14:22:45 Revision: 1.46 Tag: t7_20040413_01
14 * Original : 2004/04/01 15:32:55 Revision: 1.42 Tag: t7_20040401_01
15 * Original : 2004/03/10 15:39:28 Revision: 1.38 Tag: t20040310_01
16 * Original : 2004/03/04 11:03:37 Revision: 1.36 Tag: t20040304_01
17 * Original : 2004/03/02 09:27:11 Revision: 1.34 Tag: t20040302_03
18 * Original : 2004/02/24 13:00:27 Revision: 1.29 Tag: t20040224_01
19 * Original : 2004/02/18 17:13:57 Revision: 1.26 Tag: t20040219_01
20 *
21 * AUTHOR : Nico Valster
22 *
23 * DESC : Definitions and Prototypes for HCF, DHF, MMD and MSF
24 *
25 ***************************************************************************************************************
26 *
27 *
28 * SOFTWARE LICENSE
29 *
30 * This software is provided subject to the following terms and conditions,
31 * which you should read carefully before using the software. Using this
32 * software indicates your acceptance of these terms and conditions. If you do
33 * not agree with these terms and conditions, do not use the software.
34 *
35 * COPYRIGHT © 1994 - 1995 by AT&T. All Rights Reserved
36 * COPYRIGHT © 1996 - 2000 by Lucent Technologies. All Rights Reserved
37 * COPYRIGHT © 2001 - 2004 by Agere Systems Inc. All Rights Reserved
38 * All rights reserved.
39 *
40 * Redistribution and use in source or binary forms, with or without
41 * modifications, are permitted provided that the following conditions are met:
42 *
43 * . Redistributions of source code must retain the above copyright notice, this
44 * list of conditions and the following Disclaimer as comments in the code as
45 * well as in the documentation and/or other materials provided with the
46 * distribution.
47 *
48 * . Redistributions in binary form must reproduce the above copyright notice,
49 * this list of conditions and the following Disclaimer in the documentation
50 * and/or other materials provided with the distribution.
51 *
52 * . Neither the name of Agere Systems Inc. nor the names of the contributors
53 * may be used to endorse or promote products derived from this software
54 * without specific prior written permission.
55 *
56 * Disclaimer
57 *
58 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
59 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
60 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
61 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
62 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
63 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
64 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
65 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
66 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
67 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
68 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
69 * DAMAGE.
70 *
71 *
72 ************************************************************************************************************/
73 
74 
75 /************************************************************************************************************
76 *
77 * The macros Xn(...) and XXn(...) are used to define the LTV's (short for Length Type Value[ ]) ,
78 * aka RIDs, processed by the Hermes.
79 * The n in Xn and XXn reflects the number of "Value" fields in these RIDs.
80 *
81 * Xn(...) : Macros used for RIDs which use only type hcf_16 for the "V" fields of the LTV.
82 * Xn takes as parameters a RID name and "n" name(s), one for each of the "V" fields of the LTV.
83 *
84 * XXn(...) : Macros used for RIDs which use at least one other type then hcf_16 for a "V" field
85 * of the LTV.
86 * XXn(..) takes as parameters a RID name and "n" pair(s) of type and name, one for each "V" field
87 * of the LTV
88 
89  ****************************************** e x a m p l e s ***********************************************
90 
91 * X1(RID_NAME, parameters...) : expands to :
92 * typedef struct RID_NAME_STRCT {
93 * hcf_16 len;
94 * hcf_16 typ;
95 * hcf_16 par1;
96 * } RID_NAME_STRCT;
97 
98 * X2(RID_NAME, parameters...) : expands to :
99 * typedef struct RID_NAME_STRCT {
100 * hcf_16 len;
101 * hcf_16 typ;
102 * hcf_16 par1;
103 * hcf_16 par2;
104 * } RID_NAME_STRCT;
105 
106 
107 * XX1(RID_NAME, par1type, par1name, ...) : expands to :
108 * typedef struct RID_NAME_STRCT {
109 * hcf_16 len;
110 * hcf_16 typ;
111 * par1type par1name;
112 * } RID_NAME_STRCT;
113 
114 ************************************************************************************************************/
115 
116 /******************************* XX Sub-macro definitions **************************************************/
117 
118 #define XX1( name, type1, par1 ) \
119 typedef struct { \
120  hcf_16 len; \
121  hcf_16 typ; \
122  type1 par1; \
123 } name##_STRCT;
124 
125 #define XX2( name, type1, par1, type2, par2 ) \
126 typedef struct { \
127  hcf_16 len; \
128  hcf_16 typ; \
129  type1 par1; \
130  type2 par2; \
131 } name##_STRCT;
132 
133 #define XX3( name, type1, par1, type2, par2, type3, par3 ) \
134 typedef struct name##_STRCT { \
135  hcf_16 len; \
136  hcf_16 typ; \
137  type1 par1; \
138  type2 par2; \
139  type3 par3; \
140 } name##_STRCT;
141 
142 #define XX4( name, type1, par1, type2, par2, type3, par3, type4, par4 ) \
143 typedef struct { \
144  hcf_16 len; \
145  hcf_16 typ; \
146  type1 par1; \
147  type2 par2; \
148  type3 par3; \
149  type4 par4; \
150 } name##_STRCT;
151 
152 #define X1( name, par1 ) \
153 typedef struct name##_STRCT { \
154  hcf_16 len; \
155  hcf_16 typ; \
156  hcf_16 par1; \
157 } name##_STRCT;
158 
159 #define X2( name, par1, par2 ) \
160 typedef struct { \
161  hcf_16 len; \
162  hcf_16 typ; \
163  hcf_16 par1; \
164  hcf_16 par2; \
165 } name##_STRCT;
166 
167 #define X3( name, par1, par2, par3 ) \
168 typedef struct { \
169  hcf_16 len; \
170  hcf_16 typ; \
171  hcf_16 par1; \
172  hcf_16 par2; \
173  hcf_16 par3; \
174 } name##_STRCT;
175 
176 #define X4( name, par1, par2, par3, par4 ) \
177 typedef struct { \
178  hcf_16 len; \
179  hcf_16 typ; \
180  hcf_16 par1; \
181  hcf_16 par2; \
182  hcf_16 par3; \
183  hcf_16 par4; \
184 } name##_STRCT;
185 
186 #define X5( name, par1, par2, par3, par4, par5 ) \
187 typedef struct { \
188  hcf_16 len; \
189  hcf_16 typ; \
190  hcf_16 par1; \
191  hcf_16 par2; \
192  hcf_16 par3; \
193  hcf_16 par4; \
194  hcf_16 par5; \
195 } name##_STRCT;
196 
197 #define X6( name, par1, par2, par3, par4, par5, par6 ) \
198 typedef struct { \
199  hcf_16 len; \
200  hcf_16 typ; \
201  hcf_16 par1; \
202  hcf_16 par2; \
203  hcf_16 par3; \
204  hcf_16 par4; \
205  hcf_16 par5; \
206  hcf_16 par6; \
207 } name##_STRCT;
208 
209 #define X8( name, par1, par2, par3, par4, par5, par6, par7, par8 ) \
210 typedef struct { \
211  hcf_16 len; \
212  hcf_16 typ; \
213  hcf_16 par1; \
214  hcf_16 par2; \
215  hcf_16 par3; \
216  hcf_16 par4; \
217  hcf_16 par5; \
218  hcf_16 par6; \
219  hcf_16 par7; \
220  hcf_16 par8; \
221 } name##_STRCT;
222 
223 #define X11( name, par1, par2, par3, par4, par5, par6, par7, par8, par9, par10, par11 ) \
224 typedef struct { \
225  hcf_16 len; \
226  hcf_16 typ; \
227  hcf_16 par1; \
228  hcf_16 par2; \
229  hcf_16 par3; \
230  hcf_16 par4; \
231  hcf_16 par5; \
232  hcf_16 par6; \
233  hcf_16 par7; \
234  hcf_16 par8; \
235  hcf_16 par9; \
236  hcf_16 par10; \
237  hcf_16 par11; \
238 } name##_STRCT;
239 
240 /******************************* Substructure definitions **************************************************/
241 
242 //apparently not needed (CFG_CNF_COUNTRY)
243 typedef struct CHANNEL_SET { //channel set structure used in the CFG_CNF_COUNTRY LTV
247 } CHANNEL_SET;
248 
249 typedef struct KEY_STRCT { // key structure used in the CFG_DEFAULT_KEYS LTV
250  hcf_16 len; //length of key
251  hcf_8 key[14]; //encryption key
252 } KEY_STRCT;
253 
254 typedef struct SCAN_RS_STRCT { // Scan Result structure used in the CFG_SCAN LTV
263 } SCAN_RS_STRCT;
264 
265 typedef struct CFG_RANGE_SPEC_STRCT { // range specification structure used in CFG_RANGES, CFG_RANGE1 etc
270 
271 typedef struct CFG_RANGE_SPEC_BYTE_STRCT { // byte oriented range specification structure used in CFG_RANGE_B LTV
274  hcf_8 top[2];
276 
277 //used to set up "T" functionality for Info frames, i.e. log info frames in MSF supplied buffer and MailBox
278 XX1( RID_LOG, unsigned short FAR*, bufp )
279 typedef RID_LOG_STRCT FAR *RID_LOGP;
280 XX1( CFG_RID_LOG, RID_LOGP, recordp )
281 
282  X1( LTV, val[1] ) /*minimum LTV proto typ */
283  X1( LTV_MAX, val[HCF_MAX_LTV] ) /*maximum LTV proto typ */
284 XX2( CFG_REG_MB, hcf_16* , mb_addr, hcf_16, mb_size )
285 
286 typedef struct CFG_MB_INFO_FRAG { // specification of buffer fragment
287  unsigned short FAR* frag_addr;
288  hcf_16 frag_len;
290 
291 /* Mail Box Info Block structures,
292  * the base form: CFG_MB_INFO_STRCT
293  * and the derived forms: CFG_MB_INFO_RANGE<n>_STRCT with n is 1, 2, 3 or 20
294  * predefined for a payload of 1, and up to 2, 3 and 20 CFG_MB_INFO_FRAG elements */
295 XX3( CFG_MB_INFO, hcf_16, base_typ, hcf_16, frag_cnt, CFG_MB_INFO_FRAG, frag_buf[ 1] )
296 XX3( CFG_MB_INFO_RANGE1, hcf_16, base_typ, hcf_16, frag_cnt, CFG_MB_INFO_FRAG, frag_buf[ 1] )
297 XX3( CFG_MB_INFO_RANGE2, hcf_16, base_typ, hcf_16, frag_cnt, CFG_MB_INFO_FRAG, frag_buf[ 2] )
298 XX3( CFG_MB_INFO_RANGE3, hcf_16, base_typ, hcf_16, frag_cnt, CFG_MB_INFO_FRAG, frag_buf[ 3] )
299 XX3( CFG_MB_INFO_RANGE20, hcf_16, base_typ, hcf_16, frag_cnt, CFG_MB_INFO_FRAG, frag_buf[20] )
300 
301 XX3( CFG_MB_ASSERT, hcf_16, line, hcf_16, trace, hcf_32, qualifier ) /*MBInfoBlock for asserts */
302 #if (HCF_ASSERT) & ( HCF_ASSERT_LNK_MSF_RTN | HCF_ASSERT_RT_MSF_RTN )
303 typedef void (MSF_ASSERT_RTN)( unsigned int , hcf_16, hcf_32 );
304 typedef MSF_ASSERT_RTN /*can't link FAR*/ * MSF_ASSERT_RTNP;
305 /* CFG_REG_ASSERT_RTNP (0x0832) (de-)register MSF Callback routines
306  * lvl: Assert level filtering (not yet implemented)
307  * rtnp: address of MSF_ASSERT_RTN (native Endian format) */
308 XX2( CFG_REG_ASSERT_RTNP, hcf_16, lvl, MSF_ASSERT_RTNP, rtnp )
309 #endif // HCF_ASSERT_LNK_MSF_RTN / HCF_ASSERT_RT_MSF_RTN
310 
311  X1( CFG_HCF_OPT, val[20] ) /*(Compile time) options */
312  X3( CFG_CMD_HCF, cmd, mode, add_info ) /*HCF Engineering command */
313 
314 typedef struct {
315  hcf_16 len;
316  hcf_16 typ;
317  hcf_16 mode; // PROG_STOP/VOLATILE [FLASH/SEEPROM/SEEPROM_READBACK]
318  hcf_16 segment_size; // size of the segment in bytes
319  hcf_32 nic_addr; // destination address (in NIC memory)
320  hcf_16 flags; // 0x0001 : CRC Yes/No
321 // hcf_32 flags; // 0x0001 : CRC Yes/No
322  /* ;? still not the whole story
323  * flags is extended from 16 to 32 bits to force that compiling FW.C produces the same structures
324  * in memory as FUPU4 BIN files.
325  * Note that the problem arises from the violation of the constraint to use packing at byte boundaries
326  * as was stipulated in the WCI-specification
327  * The Pack pragma can't resolve this issue, because that impacts all members of the structure with
328  * disregard of their actual size, so aligning host_addr under MSVC 1.5 at 4 bytes, also aligns
329  * len, typ etc on 4 bytes
330  * */
331 // hcf_16 pad; //!! be careful alignment problems for Bin download versus C download
332  hcf_8 FAR *host_addr; // source address (in Host memory)
333 } CFG_PROG_STRCT; // segment_descp;
334 
335 // a structure used for transporting debug-related information from firmware
336 // via the HCF, into the MSF
337 typedef struct {
338  hcf_16 len;
339  hcf_16 typ;
340  hcf_16 msg_id, msg_par, msg_tstamp;
342 
343 // a structure used to define the location and size of a certain debug-related
344 // buffer in nic-ram.
345 typedef struct {
346  hcf_16 len;
347  hcf_16 typ;
348  hcf_32 DbMsgCount, // ds (nicram) address of a counter
349  DbMsgBuffer, // ds (nicram) address of the buffer
350  DbMsgSize, // number of entries (each 3 word in size) in this buffer
351  DbMsgIntrvl; // ds (nicram) address of interval for generating InfDrop event
353 
354 XX3( CFG_RANGES, hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 1] ) /*Actor/Supplier range (1 variant)*/
355 XX3( CFG_RANGE1, hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 1] ) /*Actor/Supplier range (1 variant)*/
356 XX3( CFG_RANGE2, hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 2] ) /*Actor range ( 2 variants) */
357 XX3( CFG_RANGE3, hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 3] ) /*Actor range ( 3 variants) */
358 XX3( CFG_RANGE4, hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 4] ) /*Actor range ( 4 variants) */
359 XX3( CFG_RANGE5, hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 5] ) /*Actor range ( 5 variants) */
360 XX3( CFG_RANGE6, hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 6] ) /*Actor range ( 6 variants) */
361 XX3( CFG_RANGE7, hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 7] ) /*Actor range ( 7 variants) */
362 XX3( CFG_RANGE20, hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[20] ) /*Actor range (20 variants) */
363 
364 /*Frames */
365  X3( CFG_ASSOC_STAT, assoc_stat, station_addr[3], val[46] ) /*Association status, basic */
366  X2( CFG_ASSOC_STAT3, assoc_stat, station_addr[3] ) /*assoc_stat:3 */
367  X3( CFG_ASSOC_STAT1, assoc_stat, station_addr[3], frame_body[43] ) /*assoc_stat:1 */
368  X4( CFG_ASSOC_STAT2, assoc_stat, station_addr[3], old_ap_addr[3], frame_body[43] ) /*assoc_stat:2 */
369 
370 /*Static Configurations */
371  X1( CFG_CNF_PORT_TYPE, port_type ) /*[STA] Connection control characteristics */
372  X1( CFG_MAC_ADDR, mac_addr[3] ) /*general: FC01,FC08,FC11,FC12,FC13,FC14,FC15,FC16 */
373  X1( CFG_CNF_OWN_MAC_ADDR, mac_addr[3] )
374  X1( CFG_ID, ssid[17] ) /*0xFC02, 0xFC04, 0xFC0E */
375 /* X1( CFG_DESIRED_SSID, ssid[17] ) see Dynamic Configurations */
376  X1( CFG_CNF_OWN_CHANNEL, channel ) /*Communication channel for BSS creation */
377  X1( CFG_CNF_OWN_SSID, ssid[17] )
378  X1( CFG_CNF_OWN_ATIM_WINDOW, atim_window )
379  X1( CFG_CNF_SYSTEM_SCALE, system_scale )
380  X1( CFG_CNF_MAX_DATA_LEN, max_data_len )
381  X1( CFG_CNF_WDS_ADDR, mac_addr[3] ) /*[STA] MAC Address of corresponding WDS Link node */
382  X1( CFG_CNF_PM_ENABLED, pm_enabled ) /*[STA] Switch for ESS Power Management (PM) On/Off */
383  X1( CFG_CNF_PM_EPS, pm_eps ) /*[STA] Switch for ESS PM EPS/PS Mode */
384  X1( CFG_CNF_MCAST_RX, mcast_rx ) /*[STA] Switch for ESS PM Multicast reception On/Off */
385  X1( CFG_CNF_MAX_SLEEP_DURATION, duration ) /*[STA] Maximum sleep time for ESS PM */
386  X1( CFG_CNF_PM_HOLDOVER_DURATION, duration ) /*[STA] Holdover time for ESS PM */
387  X1( CFG_CNF_OWN_NAME, ssid[17] ) /*Identification text for diagnostic purposes */
388  X1( CFG_CNF_OWN_DTIM_PERIOD, period ) /*[AP] Beacon intervals between successive DTIMs */
389  X1( CFG_CNF_WDS_ADDR1, mac_addr[3] ) /*[AP] Port 1 MAC Adrs of corresponding WDS Link node */
390  X1( CFG_CNF_WDS_ADDR2, mac_addr[3] ) /*[AP] Port 2 MAC Adrs of corresponding WDS Link node */
391  X1( CFG_CNF_WDS_ADDR3, mac_addr[3] ) /*[AP] Port 3 MAC Adrs of corresponding WDS Link node */
392  X1( CFG_CNF_WDS_ADDR4, mac_addr[3] ) /*[AP] Port 4 MAC Adrs of corresponding WDS Link node */
393  X1( CFG_CNF_WDS_ADDR5, mac_addr[3] ) /*[AP] Port 5 MAC Adrs of corresponding WDS Link node */
394  X1( CFG_CNF_WDS_ADDR6, mac_addr[3] ) /*[AP] Port 6 MAC Adrs of corresponding WDS Link node */
395  X1( CFG_CNF_MCAST_PM_BUF, mcast_pm_buf ) /*[AP] Switch for PM buffering of Multicast Messages */
396  X1( CFG_CNF_REJECT_ANY, reject_any ) /*[AP] Switch for PM buffering of Multicast Messages */
397 //X1( CFG_CNF_ENCRYPTION_ENABLED, encryption ) /*specify encryption type of Tx/Rx messages */
398  X1( CFG_CNF_ENCRYPTION, encryption ) /*specify encryption type of Tx/Rx messages */
399  X1( CFG_CNF_AUTHENTICATION, authentication ) /*selects Authentication algorithm */
400  X1( CFG_CNF_EXCL_UNENCRYPTED, exclude_unencrypted ) /*[AP] Switch for 'clear-text' rx message acceptance */
401  X1( CFG_CNF_MCAST_RATE, mcast_rate ) /*Transmit Data rate for Multicast frames */
402  X1( CFG_CNF_INTRA_BSS_RELAY, intra_bss_relay ) /*[AP] Switch for IntraBBS relay */
403  X1( CFG_CNF_MICRO_WAVE, micro_wave ) /*MicroWave (Robustness) */
404  X1( CFG_CNF_LOAD_BALANCING, load_balancing ) /*Load Balancing (Boolean, 0=OFF, 1=ON, default=1) */
405  X1( CFG_CNF_MEDIUM_DISTRIBUTION, medium_distribution ) /*Medium Distribution (Boolean, 0=OFF, 1=ON, default=1) */
406  X1( CFG_CNF_GROUP_ADDR_FILTER, group_addr_filter ) /*Group Address Filter */
407  X1( CFG_CNF_TX_POW_LVL, tx_pow_lvl ) /*Tx Power Level */
408 XX4( CFG_CNF_COUNTRY_INFO, \
409  hcf_16, n_channel_sets, hcf_16, country_code[2], \
410  hcf_16, environment, CHANNEL_SET, channel_set[1] ) /*Current Country Info */
411 XX4( CFG_CNF_COUNTRY_INFO_MAX, \
412  hcf_16, n_channel_sets, hcf_16, country_code[2], \
413  hcf_16, environment, CHANNEL_SET, channel_set[14]) /*Current Country Info */
414 
415 /*Dynamic Configurations */
416  X1( CFG_DESIRED_SSID, ssid[17] ) /*[STA] Service Set identification for connection */
417 #define GROUP_ADDR_SIZE (32 * 6) //32 6-byte MAC-addresses
418  X1( CFG_GROUP_ADDR, mac_addr[GROUP_ADDR_SIZE/2] ) /*[STA] Multicast MAC Addresses for Rx-message */
419  X1( CFG_CREATE_IBSS, create_ibss ) /*[STA] Switch for IBSS creation On/Off */
420  X1( CFG_RTS_THRH, rts_thrh ) /*[STA] Frame length used for RTS/CTS handshake */
421  X1( CFG_TX_RATE_CNTL, tx_rate_cntl ) /*[STA] Data rate control for message transmission */
422  X1( CFG_PROMISCUOUS_MODE, promiscuous_mode ) /*[STA] Switch for Promiscuous mode reception On/Of */
423  X1( CFG_WOL, wake_on_lan ) /*[STA] Switch for Wake-On-LAN mode */
424  X1( CFG_RTS_THRH0, rts_thrh ) /*[AP] Port 0 frame length for RTS/CTS handshake */
425  X1( CFG_RTS_THRH1, rts_thrh ) /*[AP] Port 1 frame length for RTS/CTS handshake */
426  X1( CFG_RTS_THRH2, rts_thrh ) /*[AP] Port 2 frame length for RTS/CTS handshake */
427  X1( CFG_RTS_THRH3, rts_thrh ) /*[AP] Port 3 frame length for RTS/CTS handshake */
428  X1( CFG_RTS_THRH4, rts_thrh ) /*[AP] Port 4 frame length for RTS/CTS handshake */
429  X1( CFG_RTS_THRH5, rts_thrh ) /*[AP] Port 5 frame length for RTS/CTS handshake */
430  X1( CFG_RTS_THRH6, rts_thrh ) /*[AP] Port 6 frame length for RTS/CTS handshake */
431  X1( CFG_TX_RATE_CNTL0, rate_cntl ) /*[AP] Port 0 data rate control for transmission */
432  X1( CFG_TX_RATE_CNTL1, rate_cntl ) /*[AP] Port 1 data rate control for transmission */
433  X1( CFG_TX_RATE_CNTL2, rate_cntl ) /*[AP] Port 2 data rate control for transmission */
434  X1( CFG_TX_RATE_CNTL3, rate_cntl ) /*[AP] Port 3 data rate control for transmission */
435  X1( CFG_TX_RATE_CNTL4, rate_cntl ) /*[AP] Port 4 data rate control for transmission */
436  X1( CFG_TX_RATE_CNTL5, rate_cntl ) /*[AP] Port 5 data rate control for transmission */
437  X1( CFG_TX_RATE_CNTL6, rate_cntl ) /*[AP] Port 6 data rate control for transmission */
438 XX1( CFG_DEFAULT_KEYS, KEY_STRCT, key[4] ) /*defines set of encryption keys */
439  X1( CFG_TX_KEY_ID, tx_key_id ) /*select key for encryption of Tx messages */
440  X1( CFG_SCAN_SSID, ssid[17] ) /*identification for connection */
441  X5( CFG_ADD_TKIP_DEFAULT_KEY, \
443  tx_mic_key[4], rx_mic_key[4] ) /* */
444  X6( CFG_ADD_TKIP_MAPPED_KEY, bssid[3], tkip_key[8], \
445  tsc[4], rsc[4], tx_mic_key[4], rx_mic_key[4] ) /* */
446  X1( CFG_SET_WPA_AUTHENTICATION_SUITE, \
447  ssn_authentication_suite ) /* */
448  X1( CFG_REMOVE_TKIP_DEFAULT_KEY,tkip_key_id ) /* */
449  X1( CFG_TICK_TIME, tick_time ) /*Auxiliary Timer tick interval */
450  X1( CFG_DDS_TICK_TIME, tick_time ) /*Disconnected DeepSleep Timer tick interval */
451 
452 /**********************************************************************
453 * Added for Pattern-matching WakeOnLan. (See firmware design note WMDN281C)
454 **********************************************************************/
455 #define WOL_PATTERNS 5 // maximum of 5 patterns in firmware
456 #define WOL_PATTERN_LEN 124 // maximum 124 bytes pattern length per pattern in firmware
457 #define WOL_MASK_LEN 30 // maximum 30 bytes mask length per pattern in firmware
458 #define WOL_BUF_SIZE (WOL_PATTERNS * (WOL_PATTERN_LEN + WOL_MASK_LEN + 6) / 2)
459 X2( CFG_WOL_PATTERNS, nPatterns, buffer[WOL_BUF_SIZE] ) /*[STA] WakeOnLan pattern match, room for 5 patterns*/
460 
461  X5( CFG_SUP_RANGE, role, id, variant, bottom, top ) /*[PRI] Primary Supplier compatibility range */
462 /* NIC Information */
463  X4( CFG_IDENTITY, comp_id, variant, version_major, version_minor ) /*identification Prototype */
464 #define CFG_DRV_IDENTITY_STRCT CFG_IDENTITY_STRCT
465 #define CFG_PRI_IDENTITY_STRCT CFG_IDENTITY_STRCT
466 #define CFG_NIC_IDENTITY_STRCT CFG_IDENTITY_STRCT
467 #define CFG_FW_IDENTITY_STRCT CFG_IDENTITY_STRCT
468  X1( CFG_RID_INF_MIN, y ) /*lowest value representing an Information RID */
469  X1( CFG_MAX_LOAD_TIME, max_load_time ) /*[PRI] Max response time of the Download command */
470  X3( CFG_DL_BUF, buf_page, buf_offset, buf_len ) /*[PRI] Download buffer location and size */
471 // X5( CFG_PRI_SUP_RANGE, role, id, variant, bottom, top ) /*[PRI] Primary Supplier compatibility range */
472  X5( CFG_CFI_ACT_RANGES_PRI,role, id, variant, bottom, top ) /*[PRI] Controller Actor compatibility ranges */
473 // X5( CFG_NIC_HSI_SUP_RANGE, role, id, variant, bottom, top ) /*H/W - S/W I/F supplier range */
474  X1( CFG_NIC_SERIAL_NUMBER, serial_number[17] ) /*[PRI] Network I/F Card serial number */
475  X5( CFG_NIC_MFI_SUP_RANGE, role, id, variant, bottom, top ) /*[PRI] Modem I/F Supplier compatibility range */
476  X5( CFG_NIC_CFI_SUP_RANGE, role, id, variant, bottom, top ) /*[PRI] Controller I/F Supplier compatibility range*/
477 //H-I X1( CFG_CHANNEL_LIST, channel_list ) /*Allowed communication channels */
478 //H-I XX2( CFG_REG_DOMAINS, hcf_16, num_domain, hcf_8, reg_domains[10] ) /*List of intended regulatory domains */
479  X1( CFG_NIC_TEMP_TYPE, temp_type ) /*Hardware temperature range code */
480 //H-I X1( CFG_CIS, cis[240] ) /*PC Card Standard Card Information Structure */
481  X5( CFG_NIC_PROFILE, \
482  profile_code, capability_options, allowed_data_rates, val4, val5 ) /*Card Profile */
483 // X5( CFG_FW_SUP_RANGE, role, id, variant, bottom, top ) /*[STA] Station I/F Supplier compatibility range */
484  X5( CFG_MFI_ACT_RANGES, role, id, variant, bottom, top ) /*[STA] Modem I/F Actor compatibility ranges */
485  X5( CFG_CFI_ACT_RANGES_STA,role, id, variant, bottom, top ) /*[STA] Controller I/F Actor compatibility ranges */
486  X5( CFG_MFI_ACT_RANGES_STA,role, id, variant, bottom, top ) /*[STA] Controller I/F Actor compatibility ranges */
487  X1( CFG_NIC_BUS_TYPE, nic_bus_type ) /*NIC bustype derived from BUSSEL host I/F signals */
488 
489 /* MAC INFORMATION */
490  X1( CFG_PORT_STAT, port_stat ) /*[STA] Actual MAC Port connection control status */
491  X1( CFG_CUR_SSID, ssid[17] ) /*[STA] Identification of the actually connected SS */
492  X1( CFG_CUR_BSSID, mac_addr[3] ) /*[STA] Identification of the actually connected BSS */
493  X3( CFG_COMMS_QUALITY, coms_qual, signal_lvl, noise_lvl ) /*[STA] Quality of the Basic Service Set connection */
494  X1( CFG_CUR_TX_RATE, rate ) /*[STA] Actual transmit data rate */
495  X1( CFG_CUR_BEACON_INTERVAL, interval ) /*Beacon transmit interval time for BSS creation */
496 #if (HCF_TYPE) & HCF_TYPE_WARP
497  X11( CFG_CUR_SCALE_THRH, \
498  carrier_detect_thrh_cck, carrier_detect_thrh_ofdm, defer_thrh, \
499  energy_detect_thrh, rssi_on_thrh_deviation, \
500  rssi_off_thrh_deviation, cck_drop_thrh, ofdm_drop_thrh, \
501  cell_search_thrh, out_of_range_thrh, delta_snr )
502 #else
503  X6( CFG_CUR_SCALE_THRH, \
505  cell_search_thrh, out_of_range_thrh, delta_snr ) /*Actual System Scale thresholds settings */
506 #endif // HCF_TYPE_WARP
507  X1( CFG_PROTOCOL_RSP_TIME, time ) /*Max time to await a response to a request message */
508  X1( CFG_CUR_SHORT_RETRY_LIMIT, limit ) /*Max number of transmit attempts for short frames */
509  X1( CFG_CUR_LONG_RETRY_LIMIT, limit ) /*Max number of transmit attempts for long frames */
510  X1( CFG_MAX_TX_LIFETIME, time ) /*Max transmit frame handling duration */
511  X1( CFG_MAX_RX_LIFETIME, time ) /*Max received frame handling duration */
512  X1( CFG_CF_POLLABLE, cf_pollable ) /*[STA] Contention Free pollable capability indication */
513  X2( CFG_AUTHENTICATION_ALGORITHMS,authentication_type, type_enabled ) /*Authentication Algorithm */
514  X1( CFG_PRIVACY_OPT_IMPLEMENTED,privacy_opt_implemented ) /*WEP Option availability indication */
515  X1( CFG_CUR_REMOTE_RATES, rates ) /*CurrentRemoteRates */
516  X1( CFG_CUR_USED_RATES, rates ) /*CurrentUsedRates */
517  X1( CFG_CUR_SYSTEM_SCALE, current_system_scale ) /*CurrentUsedRates */
518  X1( CFG_CUR_TX_RATE1, rate ) /*[AP] Actual Port 1 transmit data rate */
519  X1( CFG_CUR_TX_RATE2, rate ) /*[AP] Actual Port 2 transmit data rate */
520  X1( CFG_CUR_TX_RATE3, rate ) /*[AP] Actual Port 3 transmit data rate */
521  X1( CFG_CUR_TX_RATE4, rate ) /*[AP] Actual Port 4 transmit data rate */
522  X1( CFG_CUR_TX_RATE5, rate ) /*[AP] Actual Port 5 transmit data rate */
523  X1( CFG_CUR_TX_RATE6, rate ) /*[AP] Actual Port 6 transmit data rate */
524  X1( CFG_OWN_MAC_ADDR, mac_addr[3] ) /*[AP] Unique local node MAC Address */
525  X3( CFG_PCF_INFO, medium_occupancy_limit, \
526  cfp_period, cfp_max_duration ) /*[AP] Point Coordination Function capability info */
527  X1( CFG_CUR_WPA_INFO_ELEMENT, ssn_info_element[1] ) /* */
528  X4( CFG_CUR_TKIP_IV_INFO, \
529  tkip_seq_cnt0[4], tkip_seq_cnt1[4], \
530  tkip_seq_cnt2[4], tkip_seq_cnt3[4] ) /* */
531  X2( CFG_CUR_ASSOC_REQ_INFO, frame_type, frame_body[1] ) /* 0xFD8C */
532  X2( CFG_CUR_ASSOC_RESP_INFO, frame_type, frame_body[1] ) /* 0xFD8D */
533 
534 
535 /* Modem INFORMATION */
536  X1( CFG_PHY_TYPE, phy_type ) /*Physical layer type indication */
537  X1( CFG_CUR_CHANNEL, current_channel ) /*Actual frequency channel used for transmission */
538  X1( CFG_CUR_POWER_STATE, current_power_state ) /*Actual power consumption status */
539  X1( CFG_CCAMODE, cca_mode ) /*Clear channel assessment mode indication */
540  X1( CFG_SUPPORTED_DATA_RATES, rates[5] ) /*Data rates capability information */
541 
542 
543 /* FRAMES */
544 XX1( CFG_SCAN, SCAN_RS_STRCT, scan_result[32] ) /*Scan results */
545 
546 
547 
548 //--------------------------------------------------------------------------------------
549 // UIL management function to be passed to WaveLAN/IEEE Drivers in DUI_STRCT field fun
550 //--------------------------------------------------------------------------------------
551 
552 // HCF and UIL Common
553 #define MDD_ACT_SCAN 0x06 // Hermes Inquire Scan (F101) command
554 #define MDD_ACT_PRS_SCAN 0x07 // Hermes Probe Response Scan (F102) command
555 
556 // UIL Specific
557 #define UIL_FUN_CONNECT 0x00 // Perform connect command
558 #define UIL_FUN_DISCONNECT 0x01 // Perform disconnect command
559 #define UIL_FUN_ACTION 0x02 // Perform UIL Action command.
560 #define UIL_FUN_SEND_DIAG_MSG 0x03 // Send a diagnostic message.
561 #define UIL_FUN_GET_INFO 0x04 // Retrieve information from NIC.
562 #define UIL_FUN_PUT_INFO 0x05 // Put information on NIC.
563 
564 /* UIL_ACT_TALLIES 0x05 * this should not be exported to the USF
565  * it is solely intended as a strategic choice for the MSF to either
566  * - use HCF_ACT_TALLIES and direct IFB access
567  * - use CFG_TALLIES
568  */
569 #define UIL_ACT_SCAN MDD_ACT_SCAN
570 #define UIL_ACT_PRS_SCAN MDD_ACT_PRS_SCAN
571 #define UIL_ACT_BLOCK 0x0B
572 #define UIL_ACT_UNBLOCK 0x0C
573 #define UIL_ACT_RESET 0x80
574 #define UIL_ACT_REBIND 0x81
575 #define UIL_ACT_APPLY 0x82
576 #define UIL_ACT_DISCONNECT 0x83 //;?040108 possibly obsolete //Special for WINCE
577 
578 // HCF Specific
579 /* Note that UIL_ACT-codes must match HCF_ACT-codes across a run-time bound I/F
580  * The initial matching is achieved by "#define HCF_ACT_xxx HCF_UIL_ACT_xxx" where appropriate
581  * In other words, these codes should never, ever change to minimize migration problems between
582  * combinations of old drivers and new utilities and vice versa
583  */
584 #define HCF_DISCONNECT 0x01 //disconnect request for hcf_connect (invalid as IO Address)
585 #define HCF_ACT_TALLIES 0x05 // ! UIL_ACT_TALLIES does not exist ! Hermes Inquire Tallies (F100) cmd
586 #if ( (HCF_TYPE) & HCF_TYPE_WARP ) == 0
587 #define HCF_ACT_SCAN MDD_ACT_SCAN
588 #endif // HCF_TYPE_WARP
589 #define HCF_ACT_PRS_SCAN MDD_ACT_PRS_SCAN
590 #if HCF_INT_ON
591 #define HCF_ACT_INT_OFF 0x0D // Disable Interrupt generation
592 #define HCF_ACT_INT_ON 0x0E // Enable Interrupt generation
593 #define HCF_ACT_INT_FORCE_ON 0x0F // Enforce Enable Interrupt generation
594 #endif // HCF_INT_ON
595 #define HCF_ACT_RX_ACK 0x15 // Receiever ACK (optimization)
596 #if (HCF_TYPE) & HCF_TYPE_CCX
597 #define HCF_ACT_CCX_ON 0x1A // enable CKIP
598 #define HCF_ACT_CCX_OFF 0x1B // disable CKIP
599 #endif // HCF_TYPE_CCX
600 #if (HCF_SLEEP) & HCF_DDS
601 #define HCF_ACT_SLEEP 0x1C // DDS Sleep request
602 //#define HCF_ACT_WAKEUP 0x1D // DDS Wakeup request
603 #endif // HCF_DDS
604 
605 /* HCF_ACT_MAX // xxxx: start value for UIL-range, NOT to be passed to HCF
606  * Too bad, there was originally no spare room created to use
607  * HCF_ACT_MAX as an equivalent of HCF_ERR_MAX. Since creating
608  * this room in retrospect would create a backward incompatibility
609  * we will just have to live with the haphazard sequence of
610  * UIL- and HCF specific codes. Theoretically this could be
611  * corrected when and if there will ever be an overall
612  * incompatibility introduced for another reason
613  */
614 
615 /*============================================================= HERMES RECORDS ============================*/
616 #define CFG_RID_FW_MIN 0xFA00 //lowest value representing a Hermes-II based RID
617 // #define CFG_PDA_BEGIN 0xFA //
618 // #define CFG_PDA_END 0xFA //
619 // #define CFG_PDA_NIC_TOP_LVL_ASSEMBLY_NUMBER 0xFA //
620 // #define CFG_PDA_PCB_TRACER_NUMBER 0xFA //
621 // #define CFG_PDA_RMM_TRACER_NUMBER 0xFA //
622 // #define CFG_PDA_RMM_COMP_ID 0xFA //
623 // #define CFG_PDA_ 0xFA //
624 
625 /*============================================================= CONFIGURATION RECORDS =====================*/
626 /*============================================================= mask 0xFCxx =====================*/
627 #define CFG_RID_CFG_MIN 0xFC00 //lowest value representing a Hermes configuration RID
628 
629 // NETWORK PARAMETERS, STATIC CONFIGURATION ENTITIES
630 //FC05, FC0B, FC0C, FC0D: SEE W2DN149
631 
632 #define CFG_CNF_PORT_TYPE 0xFC00 //[STA] Connection control characteristics
633 #define CFG_CNF_OWN_MAC_ADDR 0xFC01 //[STA] MAC Address of this node
634 // 0xFC02 see DYNAMIC CONFIGURATION ENTITIES
635 #define CFG_CNF_OWN_CHANNEL 0xFC03 //Communication channel for BSS creation
636 #define CFG_CNF_OWN_SSID 0xFC04 //IBSS creation (STA) or ESS (AP) Service Set Ident
637 #define CFG_CNF_OWN_ATIM_WINDOW 0xFC05 //[STA] ATIM Window time for IBSS creation
638 #define CFG_CNF_SYSTEM_SCALE 0xFC06 //System Scale that specifies the AP density
639 #define CFG_CNF_MAX_DATA_LEN 0xFC07 //Maximum length of MAC Frame Body data
640 #define CFG_CNF_PM_ENABLED 0xFC09 //[STA] Switch for ESS Power Management (PM)
641 #define CFG_CNF_MCAST_RX 0xFC0B //[STA] Switch for ESS PM Multicast reception On/Off
642 #define CFG_CNF_MAX_SLEEP_DURATION 0xFC0C //[STA] Maximum sleep time for ESS PM
643 #define CFG_CNF_HOLDOVER_DURATION 0xFC0D //[STA] Holdover time for ESS PM
644 #define CFG_CNF_OWN_NAME 0xFC0E //Identification text for diagnostic purposes
645 
646 #define CFG_CNF_OWN_DTIM_PERIOD 0xFC10 //[AP] Beacon intervals between successive DTIMs
647 #define CFG_CNF_WDS_ADDR1 0xFC11 //[AP] Port 1 MAC Adrs of corresponding WDS Link node
648 #define CFG_CNF_WDS_ADDR2 0xFC12 //[AP] Port 2 MAC Adrs of corresponding WDS Link node
649 #define CFG_CNF_WDS_ADDR3 0xFC13 //[AP] Port 3 MAC Adrs of corresponding WDS Link node
650 #define CFG_CNF_WDS_ADDR4 0xFC14 //[AP] Port 4 MAC Adrs of corresponding WDS Link node
651 #define CFG_CNF_WDS_ADDR5 0xFC15 //[AP] Port 5 MAC Adrs of corresponding WDS Link node
652 #define CFG_CNF_WDS_ADDR6 0xFC16 //[AP] Port 6 MAC Adrs of corresponding WDS Link node
653 #define CFG_CNF_PM_MCAST_BUF 0xFC17 //[AP] Switch for PM buffereing of Multicast Messages
654 #define CFG_CNF_MCAST_PM_BUF CFG_CNF_PM_MCAST_BUF //name does not match H-II spec
655 #define CFG_CNF_REJECT_ANY 0xFC18 //[AP] Switch for PM buffering of Multicast Messages
656 
657 #define CFG_CNF_ENCRYPTION 0xFC20 //select en/de-cryption of Tx/Rx messages
658 #define CFG_CNF_AUTHENTICATION 0xFC21 //[STA] selects Authentication algorithm
659 #define CFG_CNF_EXCL_UNENCRYPTED 0xFC22 //[AP] Switch for 'clear-text' rx message acceptance
660 #define CFG_CNF_MCAST_RATE 0xFC23 //Transmit Data rate for Multicast frames
661 #define CFG_CNF_INTRA_BSS_RELAY 0xFC24 //[AP] Switch for IntraBBS relay
662 #define CFG_CNF_MICRO_WAVE 0xFC25 //MicroWave (Robustness)
663 #define CFG_CNF_LOAD_BALANCING 0xFC26 //Load Balancing (Boolean, 0=OFF, 1=ON, default=1)
664 #define CFG_CNF_MEDIUM_DISTRIBUTION 0xFC27 //Medium Distribution (Boolean, 0=OFF, 1=ON, default=1)
665 #define CFG_CNF_RX_ALL_GROUP_ADDR 0xFC28 //[STA] Group Address Filter
666 #define CFG_CNF_COUNTRY_INFO 0xFC29 //Country Info
667 #if (HCF_TYPE) & HCF_TYPE_WARP
668 #define CFG_CNF_TX_POW_LVL 0xFC2A //TxPower Level
669 #define CFG_CNF_CONNECTION_CNTL 0xFC30 //[STA] Connection Control
670 #define CFG_CNF_OWN_BEACON_INTERVAL 0xFC31 //[AP]
671 #define CFG_CNF_SHORT_RETRY_LIMIT 0xFC32 //
672 #define CFG_CNF_LONG_RETRY_LIMIT 0xFC33 //
673 #define CFG_CNF_TX_EVENT_MODE 0xFC34 //
674 #define CFG_CNF_WIFI_COMPATIBLE 0xFC35 //[STA] Wifi compatible
675 #endif // HCF_TYPE_WARP
676 #if (HCF_TYPE) & HCF_TYPE_BEAGLE_HII5
677 #define CFG_VOICE_RETRY_LIMIT 0xFC36 /* Voice frame retry limit. Range: 1-15, default: 4 */
678 #define CFG_VOICE_CONTENTION_WINDOW 0xFC37 /* Contention window for voice frames. */
679 #endif // BEAGLE_HII5
680 
681 // NETWORK PARAMETERS, DYNAMIC CONFIGURATION ENTITIES
682 #define CFG_DESIRED_SSID 0xFC02 //[STA] Service Set identification for connection and scan
683 
684 #define CFG_GROUP_ADDR 0xFC80 //[STA] Multicast MAC Addresses for Rx-message
685 #define CFG_CREATE_IBSS 0xFC81 //[STA] Switch for IBSS creation On/Off
686 #define CFG_RTS_THRH 0xFC83 //Frame length used for RTS/CTS handshake
687 #define CFG_TX_RATE_CNTL 0xFC84 //[STA] Data rate control for message transmission
688 #define CFG_PROMISCUOUS_MODE 0xFC85 //[STA] Switch for Promiscuous mode reception On/Off
689 #define CFG_WOL 0xFC86 //[STA] Switch for Wake-On-LAN mode
690 #define CFG_WOL_PATTERNS 0xFC87 //[STA] Patterns for Wake-On-LAN
691 #define CFG_SUPPORTED_RATE_SET_CNTL 0xFC88 //
692 #define CFG_BASIC_RATE_SET_CNTL 0xFC89 //
693 
694 #define CFG_SOFTWARE_ACK_MODE 0xFC90 //
695 #define CFG_RTS_THRH0 0xFC97 //[AP] Port 0 frame length for RTS/CTS handshake
696 #define CFG_RTS_THRH1 0xFC98 //[AP] Port 1 frame length for RTS/CTS handshake
697 #define CFG_RTS_THRH2 0xFC99 //[AP] Port 2 frame length for RTS/CTS handshake
698 #define CFG_RTS_THRH3 0xFC9A //[AP] Port 3 frame length for RTS/CTS handshake
699 #define CFG_RTS_THRH4 0xFC9B //[AP] Port 4 frame length for RTS/CTS handshake
700 #define CFG_RTS_THRH5 0xFC9C //[AP] Port 5 frame length for RTS/CTS handshake
701 #define CFG_RTS_THRH6 0xFC9D //[AP] Port 6 frame length for RTS/CTS handshake
702 
703 #define CFG_TX_RATE_CNTL0 0xFC9E //[AP] Port 0 data rate control for transmission
704 #define CFG_TX_RATE_CNTL1 0xFC9F //[AP] Port 1 data rate control for transmission
705 #define CFG_TX_RATE_CNTL2 0xFCA0 //[AP] Port 2 data rate control for transmission
706 #define CFG_TX_RATE_CNTL3 0xFCA1 //[AP] Port 3 data rate control for transmission
707 #define CFG_TX_RATE_CNTL4 0xFCA2 //[AP] Port 4 data rate control for transmission
708 #define CFG_TX_RATE_CNTL5 0xFCA3 //[AP] Port 5 data rate control for transmission
709 #define CFG_TX_RATE_CNTL6 0xFCA4 //[AP] Port 6 data rate control for transmission
710 
711 #define CFG_DEFAULT_KEYS 0xFCB0 //defines set of encryption keys
712 #define CFG_TX_KEY_ID 0xFCB1 //select key for encryption of Tx messages
713 #define CFG_SCAN_SSID 0xFCB2 //Scan SSID
714 #define CFG_ADD_TKIP_DEFAULT_KEY 0xFCB4 //set KeyID and TxKey indication
715 #define KEY_ID 0x0003 //KeyID mask for tkip_key_id_info field
716 #define TX_KEY 0x8000 //Default Tx Key flag of tkip_key_id_info field
717 #define CFG_SET_WPA_AUTH_KEY_MGMT_SUITE 0xFCB5 //Authenticated Key Management Suite
718 #define CFG_REMOVE_TKIP_DEFAULT_KEY 0xFCB6 //invalidate KeyID and TxKey indication
719 #define CFG_ADD_TKIP_MAPPED_KEY 0xFCB7 //set MAC address pairwise station
720 #define CFG_REMOVE_TKIP_MAPPED_KEY 0xFCB8 //invalidate MAC address pairwise station
721 #define CFG_SET_WPA_CAPABILITIES_INFO 0xFCB9 //WPA Capabilities
722 #define CFG_CACHED_PMK_ADDR 0xFCBA //set MAC address of pre-authenticated AP
723 #define CFG_REMOVE_CACHED_PMK_ADDR 0xFCBB //invalidate MAC address of pre-authenticated AP
724 #define CFG_FCBC 0xFCBC //FW codes ahead of available documentation, so ???????
725 #define CFG_FCBD 0xFCBD //FW codes ahead of available documentation, so ???????
726 #define CFG_FCBE 0xFCBE //FW codes ahead of available documentation, so ???????
727 #define CFG_FCBF 0xFCBF //FW codes ahead of available documentation, so ???????
728 
729 #define CFG_HANDOVER_ADDR 0xFCC0 //[AP] Station MAC Address re-associated with other AP
730 #define CFG_SCAN_CHANNEL 0xFCC2 //Channel set for host requested scan
731 //;?#define CFG_SCAN_CHANNEL_MASK 0xFCC2 // contains
732 #define CFG_DISASSOCIATE_ADDR 0xFCC4 //[AP] Station MAC Address to be disassociated
733 #define CFG_PROBE_DATA_RATE 0xFCC5 //WARP connection control
734 #define CFG_FRAME_BURST_LIMIT 0xFCC6 //
735 #define CFG_COEXISTENSE_BEHAVIOUR 0xFCC7 //[AP]
736 #define CFG_DEAUTHENTICATE_ADDR 0xFCC8 //MAC address of Station to be deauthenticated
737 
738 // BEHAVIOR PARAMETERS
739 #define CFG_TICK_TIME 0xFCE0 //Auxiliary Timer tick interval
740 #define CFG_DDS_TICK_TIME 0xFCE1 //Disconnected DeepSleep Timer tick interval
741 //#define CFG_CNF_COUNTRY 0xFCFE apparently not needed ;?
742 #define CFG_RID_CFG_MAX 0xFCFF //highest value representing an Configuration RID
743 
744 
745 /*============================================================= INFORMATION RECORDS =====================*/
746 /*============================================================= mask 0xFDxx =====================*/
747 // NIC INFORMATION
748 #define CFG_RID_INF_MIN 0xFD00 //lowest value representing an Information RID
749 #define CFG_MAX_LOAD_TIME 0xFD00 //[INT] Maximum response time of the Download command.
750 #define CFG_DL_BUF 0xFD01 //[INT] Download buffer location and size.
751 #define CFG_PRI_IDENTITY 0xFD02 //[PRI] Primary Functions firmware identification.
752 #define CFG_PRI_SUP_RANGE 0xFD03 //[PRI] Primary Functions I/F Supplier compatibility range.
753 #define CFG_NIC_HSI_SUP_RANGE 0xFD09 //H/W - S/W I/F supplier range
754 #define CFG_NIC_SERIAL_NUMBER 0xFD0A //[PRI] Network Interface Card serial number.
755 #define CFG_NIC_IDENTITY 0xFD0B //[PRI] Network Interface Card identification.
756 #define CFG_NIC_MFI_SUP_RANGE 0xFD0C //[PRI] Modem I/F Supplier compatibility range.
757 #define CFG_NIC_CFI_SUP_RANGE 0xFD0D //[PRI] Controller I/F Supplier compatibility range.
758 #define CFG_CHANNEL_LIST 0xFD10 //Allowed communication channels.
759 #define CFG_NIC_TEMP_TYPE 0xFD12 //Hardware temperature range code.
760 #define CFG_CIS 0xFD13 //PC Card Standard Card Information Structure
761 #define CFG_NIC_PROFILE 0xFD14 //Card Profile
762 #define CFG_FW_IDENTITY 0xFD20 //firmware identification.
763 #define CFG_FW_SUP_RANGE 0xFD21 //firmware Supplier compatibility range.
764 #define CFG_MFI_ACT_RANGES_STA 0xFD22 //[STA] Modem I/F Actor compatibility ranges.
765 #define CFG_CFI_ACT_RANGES_STA 0xFD23 //[STA] Controller I/F Actor compatibility ranges.
766 #define CFG_NIC_BUS_TYPE 0xFD24 //Card Bustype
767 #define CFG_NIC_BUS_TYPE_PCCARD_CF 0x0000 //16 bit PC Card or Compact Flash
768 #define CFG_NIC_BUS_TYPE_USB 0x0001 //USB
769 #define CFG_NIC_BUS_TYPE_CARDBUS 0x0002 //CardBus
770 #define CFG_NIC_BUS_TYPE_PCI 0x0003 //(mini)PCI
771 #define CFG_DOMAIN_CODE 0xFD25
772 
773 // MAC INFORMATION
774 #define CFG_PORT_STAT 0xFD40 //Actual MAC Port connection control status
775 #define CFG_CUR_SSID 0xFD41 //[STA] Identification of the actually connected SS
776 #define CFG_CUR_BSSID 0xFD42 //[STA] Identification of the actually connected BSS
777 #define CFG_COMMS_QUALITY 0xFD43 //[STA] Quality of the Basic Service Set connection
778 #define CFG_CUR_TX_RATE 0xFD44 //[STA] Actual transmit data rate
779 #define CFG_CUR_BEACON_INTERVAL 0xFD45 //Beacon transmit interval time for BSS creation
780 #define CFG_CUR_SCALE_THRH 0xFD46 //Actual System Scale thresholds settings
781 #define CFG_PROTOCOL_RSP_TIME 0xFD47 //Max time to await a response to a request message
782 #define CFG_CUR_SHORT_RETRY_LIMIT 0xFD48 //Max number of transmit attempts for short frames
783 #define CFG_CUR_LONG_RETRY_LIMIT 0xFD49 //Max number of transmit attempts for long frames
784 #define CFG_MAX_TX_LIFETIME 0xFD4A //Max transmit frame handling duration
785 #define CFG_MAX_RX_LIFETIME 0xFD4B //Max received frame handling duration
786 #define CFG_CF_POLLABLE 0xFD4C //[STA] Contention Free pollable capability indication
787 #define CFG_AUTHENTICATION_ALGORITHMS 0xFD4D //Available Authentication Algorithms indication
788 #define CFG_PRIVACY_OPT_IMPLEMENTED 0xFD4F //WEP Option availability indication
789 
790 #define CFG_CUR_REMOTE_RATES 0xFD50 //[STA] CurrentRemoteRates
791 #define CFG_CUR_USED_RATES 0xFD51 //[STA] CurrentUsedRates
792 #define CFG_CUR_SYSTEM_SCALE 0xFD52 //[STA] CurrentSystemScale
793 
794 #define CFG_CUR_TX_RATE1 0xFD80 //[AP] Actual Port 1 transmit data rate
795 #define CFG_CUR_TX_RATE2 0xFD81 //[AP] Actual Port 2 transmit data rate
796 #define CFG_CUR_TX_RATE3 0xFD82 //[AP] Actual Port 3 transmit data rate
797 #define CFG_CUR_TX_RATE4 0xFD83 //[AP] Actual Port 4 transmit data rate
798 #define CFG_CUR_TX_RATE5 0xFD84 //[AP] Actual Port 5 transmit data rate
799 #define CFG_CUR_TX_RATE6 0xFD85 //[AP] Actual Port 6 transmit data rate
800 #define CFG_NIC_MAC_ADDR 0xFD86 //Unique local node MAC Address
801 #define CFG_PCF_INFO 0xFD87 //[AP] Point Coordination Function capability info
802 //*RESERVED* #define CFG_HIGHEST_BASIC_RATE 0xFD88 //
803 #define CFG_CUR_COUNTRY_INFO 0xFD89 //
804 #define CFG_CUR_WPA_INFO_ELEMENT 0xFD8A //
805 #define CFG_CUR_TKIP_IV_INFO 0xFD8B //
806 #define CFG_CUR_ASSOC_REQ_INFO 0xFD8C //
807 #define CFG_CUR_ASSOC_RESP_INFO 0xFD8D //
808 #define CFG_CUR_LOAD 0xFD8E //[AP] current load on AP's channel
809 
810 #define CFG_SECURITY_CAPABILITIES 0xFD90 //Combined capabilities information
811 
812 // MODEM INFORMATION
813 #define CFG_PHY_TYPE 0xFDC0 //Physical layer type indication
814 #define CFG_CUR_CHANNEL 0xFDC1 //Actual frequency channel used for transmission
815 #define CFG_CUR_POWER_STATE 0xFDC2 //Actual power consumption status
816 #define CFG_CCA_MODE 0xFDC3 //Clear channel assessment mode indication
817 #define CFG_SUPPORTED_DATA_RATES 0xFDC6 //Data rates capability information
818 
819 #define CFG_RID_INF_MAX 0xFDFF //highest value representing an Information RID
820 
821 // ENGINEERING INFORMATION
822 #define CFG_RID_ENG_MIN 0xFFE0 //lowest value representing a Hermes engineering RID
823 
824 
825 /****************************** General define *************************************************************/
826 
827 
828 //IFB field related
829 // IFB_CardStat
830 #define CARD_STAT_INCOMP_PRI 0x2000U // no compatible HSI / primary F/W
831 #define CARD_STAT_INCOMP_FW 0x1000U // no compatible station / tertiary F/W
832 #define CARD_STAT_DEFUNCT 0x0100U // HCF is in Defunct mode
833 // IFB_RxStat
834 #define RX_STAT_PRIO 0x00E0U //Priority subfield
835 #define RX_STAT_ERR 0x000FU //Error mask
836 #define RX_STAT_UNDECR 0x0002U //Non-decryptable encrypted message
837 #define RX_STAT_FCS_ERR 0x0001U //FCS error
838 
839 // SNAP header for E-II Encapsulation
840 #define ENC_NONE 0xFF
841 #define ENC_1042 0x00
842 #define ENC_TUNNEL 0xF8
843 /****************************** Xxxxxxxx *******************************************************************/
844 
845 
846 #define HCF_SUCCESS 0x00 // OK
847 #define HCF_ERR_TIME_OUT 0x04 // Expected Hermes event did not occur in expected time
848 #define HCF_ERR_NO_NIC 0x05 /* card not found (usually yanked away during hcfio_in_string
849  * Also: card is either absent or disabled while it should be neither */
850 #define HCF_ERR_LEN 0x08 /* buffer size insufficient
851  * - IFB_ConfigTable too small
852  * - hcf_get_info buffer has a size of 0 or 1 or less than needed
853  * to accommodate all data
854  * - hcf_put_info: CFG_DLNV_DATA exceeds intermediate
855  * buffer size */
856 #define HCF_ERR_INCOMP_PRI 0x09 // primary functions are not compatible
857 #define HCF_ERR_INCOMP_FW 0x0A // station functions are compatible
858 #define HCF_ERR_MIC 0x0D // MIC check fails
859 #define HCF_ERR_SLEEP 0x0E // NIC in sleep mode
860 #define HCF_ERR_MAX 0x3F /* end of HCF range
861  *** ** *** ****** *** *************** */
862 #define HCF_ERR_DEFUNCT 0x80 // BIT, reflecting that the HCF is in defunct mode (bits 0x7F reflect cause)
863 #define HCF_ERR_DEFUNCT_AUX 0x82 // Timeout on acknowledgement on en/disabling AUX registers
864 #define HCF_ERR_DEFUNCT_TIMER 0x83 // Timeout on timer calibration during initialization process
865 #define HCF_ERR_DEFUNCT_TIME_OUT 0x84 // Timeout on Busy bit drop during BAP setup
866 #define HCF_ERR_DEFUNCT_CMD_SEQ 0x86 // Hermes and HCF are out of sync in issuing/processing commands
867 
868 #define HCF_INT_PENDING 0x01 // return status of hcf_act( HCF_ACT_INT_OFF )
869 
870 #define HCF_PORT_0 0x0000 // Station supports only single MAC Port
871 #define HCF_PORT_1 0x0100 // HCF_PORT_1 through HCF_PORT_6 are only supported by AP F/W
872 #define HCF_PORT_2 0x0200
873 #define HCF_PORT_3 0x0300
874 #define HCF_PORT_4 0x0400
875 #define HCF_PORT_5 0x0500
876 #define HCF_PORT_6 0x0600
877 
878 #define HCF_CNTL_ENABLE 0x01
879 #define HCF_CNTL_DISABLE 0x02
880 #define HCF_CNTL_CONNECT 0x03
881 #define HCF_CNTL_DISCONNECT 0x05
882 #define HCF_CNTL_CONTINUE 0x07
883 
884 #define USE_DMA 0x0001
885 #define USE_16BIT 0x0002
886 #define DMA_ENABLED 0x8000 //weak name, it really means: F/W enabled and DMA selected
887 
888 //#define HCF_DMA_FD_CNT (2*29) //size in bytes of one Tx/RxFS minus DA/SA
889 //;?the MSF ( H2PCI.C uses the next 2 mnemonics )
890 #define HCF_DMA_RX_BUF1_SIZE (HFS_ADDR_DEST + 8) //extra bytes for LEN/SNAP if decapsulation
891 #define HCF_DMA_TX_BUF1_SIZE (HFS_ADDR_DEST + 2*6 + 8) //extra bytes for DA/SA/LEN/SNAP if encapsulation
892 
893 //HFS_TX_CNTL
894 /* Note that the HCF_.... System Constants influence the HFS_.... values below
895  * H-I H-I | H-II H-II H-II.5
896  * WPA | WPA
897  * HFS_TX_CNTL_TX_OK 0002 0002 | 0002 0002 N/A <<<<<<<<deprecated
898  * HFS_TX_CNTL_TX_EX 0004 0004 | 0004 0004 N/A
899  * HFS_TX_CNTL_MIC N/A 0010 | N/A 0010 N/A
900  * HFS_TX_CNTL_TID N/A N/A | N/A N/A 000F
901  * HFS_TX_CNTL_SERVICE_CLASS N/A N/A | N/A N/A 00C0
902  * HFS_TX_CNTL_PORT 0700 0700 | 0700 0700 0700
903  * HFS_TX_CNTL_MIC_KEY_ID 1800 1800 | 0000 1800 N/A
904  * HFS_TX_CNTL_CKIP 0000 0000 | 0000 2000 2000
905  * HFS_TX_CNTL_TX_DELAY 4000 4000 | 4000 4000 N/A
906  * HFS_TX_CNTL_ACTION N/A N/A | N/A N/A 4000
907  * ==== ==== | ==== ==== ====
908  * 5F06 5F16 | 4706 7F06 67CF
909  *
910  * HCF_TX_CNTL_MASK specifies the bits allowed on the Host I/F
911  * note: bit 0x4000 has different meaning for H-II and H-II.5
912  * note: [] indicate bits which are possibly added by the HCF to TxControl at the Host I/F
913  * note: () indicate bits which are supposedly never ever used in a WCI environment
914  * note: ? denote bits which seem not to be documented in the documents I have available
915  */
916 //H-I: HCF_TX_CNTL_MASK 0x47FE //TX_DELAY, MACPort, Priority, (StrucType), TxEx, TxOK
917 //H-I WPA: HCF_TX_CNTL_MASK 0x5FE6 //TX_DELAY, MICKey, MACPort, Priority, (StrucType), TxEx, TxOK
918 #if (HCF_TYPE) & HCF_TYPE_WARP
919 #define HCF_TX_CNTL_MASK 0x27E7 //no TX_DELAY?, CCX, MACPort, Priority, (StrucType), TxEx, TxOK, Spectralink
920 //#elif (HCF_TYPE) & HCF_TYPE_WPA
921 //#define HCF_TX_CNTL_MASK 0x7F06 //TX_DELAY, CKIP?, MICKeyID, MACPort, [MIC],TxEx, TxOK (TAR419D7)
922 #else
923 #define HCF_TX_CNTL_MASK 0x67E7 //TX_DELAY?, CCX, MACPort, Priority, (StrucType), TxEx, TxOK, Spectralink
924 #endif // HCF_TYPE_WARP
925 
926 #define HFS_TX_CNTL_TX_EX 0x0004U
927 
928 #if (HCF_TYPE) & HCF_TYPE_WPA
929 #define HFS_TX_CNTL_MIC 0x0010U //802.3 format with TKIP ;?changes to 0x0008 for H-II
930 #define HFS_TX_CNTL_MIC_KEY_ID 0x1800U //MIC Key ID subfield
931 #endif // HCF_TYPE_WPA
932 
933 #define HFS_TX_CNTL_PORT 0x0700U //Port subfield of TxControl field of Transmit Frame Structure
934 
935 #if (HCF_TYPE) & HCF_TYPE_CCX
936 #define HFS_TX_CNTL_CKIP 0x2000U //CKIP encrypted flag
937 #endif // HCF_TYPE_CCX
938 
939 #if (HCF_TYPE) & HCF_TYPE_TX_DELAY
940 #define HFS_TX_CNTL_TX_DELAY 0x4000U //decouple "put data" and send
941 #endif // HCF_TYPE_TX_DELAY
942 #define HFS_TX_CNTL_TX_CONT 0x4000u //engineering: continuous transmit
943 
944 /*============================================================= HCF Defined RECORDS =========================*/
945 #define CFG_PROD_DATA 0x0800 //Plug Data (Engineering Test purposes only)
946 #define CFG_DL_EEPROM 0x0806 //Up/Download I2PROM for USB
947 #define CFG_PDA 0x0002 //Download PDA
948 #define CFG_MEM_I2PROM 0x0004 //Up/Download EEPROM
949 
950 #define CFG_MEM_READ 0x0000
951 #define CFG_MEM_WRITE 0x0001
952 
953 #define CFG_NULL 0x0820 //Empty Mail Box Info Block
954 #define CFG_MB_INFO 0x0820 //Mail Box Info Block
955 #define CFG_WMP 0x0822 //WaveLAN Management Protocol
956 
957 #if defined MSF_COMPONENT_ID
958 #define CFG_DRV_INFO 0x0825 //Driver Information structure (see CFG_DRV_INFO_STRCT for details)
959 #define CFG_DRV_IDENTITY 0x0826 //driver identity (see CFG_DRV_IDENTITY_STRCT for details)
960 #define CFG_DRV_SUP_RANGE 0x0827 //Supplier range of driver - utility I/F
961 #define CFG_DRV_ACT_RANGES_PRI 0x0828 //(Acceptable) Actor range for Primary Firmware - driver I/F
962 #define CFG_DRV_ACT_RANGES_STA 0x0829 //(Acceptable) Actor range for Station Firmware - driver I/F
963 #define CFG_DRV_ACT_RANGES_HSI 0x082A //(Acceptable) Actor range for H/W - driver I/F
964 #define CFG_DRV_ACT_RANGES_APF 0x082B //(Acceptable) Actor range for AP Firmware - driver I/F
965 #define CFG_HCF_OPT 0x082C //HCF (Compile time) options
966 #endif // MSF_COMPONENT_ID
967 
968 #define CFG_REG_MB 0x0830 //Register Mail Box
969 #define CFG_MB_ASSERT 0x0831 //Assert information
970 #define CFG_REG_ASSERT_RTNP 0x0832 //(de-)register MSF Assert Callback routine
971 #if (HCF_EXT) & HCF_EXT_INFO_LOG
972 #define CFG_REG_INFO_LOG 0x0839 //(de-)register Info frames to Log
973 #endif // HCF_INFO_LOG
974 #define CFG_CNTL_OPT 0x083A //Control options
975 
976 #define CFG_PROG 0x0857 //Program NIC memory
977 #define CFG_PROG_STOP 0x0000
978 #define CFG_PROG_VOLATILE 0x0100
979 //#define CFG_PROG_FLASH 0x0300 //restore if H-II non-volatile is introduced
980 //#define CFG_PROG_SEEPROM 0x1300 //restore if H-II non-volatile is introduced
981 #define CFG_PROG_SEEPROM_READBACK 0x0400
982 
983 #define CFG_FW_PRINTF 0x0858 //Related to firmware debug printf functionality
984 #define CFG_FW_PRINTF_BUFFER_LOCATION 0x0859 //Also related to firmware debug printf functionality
985 
986 #define CFG_CMD_NIC 0x0860 //Hermes Engineering command
987 #define CFG_CMD_HCF 0x0863 //HCF Engineering command
988 #define CFG_CMD_HCF_REG_ACCESS 0x0000 //Direct register access
989 #define CFG_CMD_HCF_RX_MON 0x0001 //Rx-monitor
990 
991 
992 /*============================================================= MSF Defined RECORDS ========================*/
993 #define CFG_ENCRYPT_STRING 0x0900 //transfer encryption info from CPL to MSF
994 #define CFG_AP_MODE 0x0901 //control mode of STAP driver from CPL
995 #define CFG_DRIVER_ENABLE 0x0902 //extend&export En-/Disable facility to Utility
996 #define CFG_PCI_COMMAND 0x0903 //PCI adapter (Ooievaar) structure
997 #define CFG_WOLAS_ENABLE 0x0904 //extend&export En-/Disable WOLAS facility to Utility
998 #define CFG_COUNTRY_STRING 0x0905 //transfer CountryInfo info from CPL to MSF
999 #define CFG_FW_DUMP 0x0906 //transfer nic memory to utility
1000 #define CFG_POWER_MODE 0x0907 //controls the PM mode of the card
1001 #define CFG_CONNECTION_MODE 0x0908 //controls the mode of the FW (ESS/AP/IBSS/ADHOC)
1002 #define CFG_IFB 0x0909 //byte wise copy of IFB
1003 #define CFG_MSF_TALLIES 0x090A //MSF tallies (int's, rx and tx)
1004 #define CFG_CURRENT_LINK_STATUS 0x090B //Latest link status got through 0xF200 LinkEvent
1005 
1006 /*============================================================ INFORMATION FRAMES =========================*/
1007 #define CFG_INFO_FRAME_MIN 0xF000 //lowest value representing an Information Frame
1008 
1009 #define CFG_TALLIES 0xF100 //Communications Tallies
1010 #define CFG_SCAN 0xF101 //Scan results
1011 #define CFG_PRS_SCAN 0xF102 //Probe Response Scan results
1012 
1013 #define CFG_LINK_STAT 0xF200 //Link Status
1014  /* 1 through 5 are F/W defined values, produced by CFG_LINK_STAT frame
1015  * 1 through 5 are shared by CFG_LINK_STAT, IFB_LinkStat and IFB_DSLinkStat
1016  * 1 plays a double role as CFG_LINK_STAT_CONNECTED and as bit reflecting:
1017  * - connected: ON
1018  * - disconnected: OFF
1019  */
1020 #define CFG_LINK_STAT_CONNECTED 0x0001
1021 #define CFG_LINK_STAT_DISCONNECTED 0x0002
1022 #define CFG_LINK_STAT_AP_CHANGE 0x0003
1023 #define CFG_LINK_STAT_AP_OOR 0x0004
1024 #define CFG_LINK_STAT_AP_IR 0x0005
1025 #define CFG_LINK_STAT_FW 0x000F //mask to isolate F/W defined bits
1026 //#define CFG_LINK_STAT_TIMER 0x0FF0 //mask to isolate OOR timer
1027 //#define CFG_LINK_STAT_DS_OOR 0x2000 //2000 and up are IFB_LinkStat specific
1028 //#define CFG_LINK_STAT_DS_IR 0x4000
1029 #define CFG_LINK_STAT_CHANGE 0x8000
1030 #define CFG_ASSOC_STAT 0xF201 //Association Status
1031 #define CFG_SECURITY_STAT 0xF202 //Security Status
1032 #define CFG_UPDATED_INFO_RECORD 0xF204 //Updated Info Record
1033 
1034 /*============================================================ CONFIGURATION RECORDS ======================*/
1035 /***********************************************************************************************************/
1036 
1037 /****************************** S T R U C T U R E D E F I N I T I O N S **********************************/
1038 
1039 //Quick&Dirty to get download for DOS ODI Hermes-II running typedef LTV_STRCT FAR * LTVP;
1040 typedef LTV_STRCT FAR * LTVP; // i.s.o #define LTVP LTV_STRCT FAR *
1041 
1042 #if defined WVLAN_42 || defined WVLAN_43 //;?keepup with legacy a little while longer (4aug2003)
1043 typedef struct DUI_STRCT { /* "legacy", still used by WVLAN42/43, NDIS drivers use WLAPI */
1044  void FAR *ifbp; /* Pointer to IFB
1045  * returned from MSF to USF by uil_connect
1046  * passed from USF to MSF as a "magic cookie" by all other UIL function calls
1047  */
1048  hcf_16 stat; // status returned from MSF to USF
1049  hcf_16 fun; // command code from USF to MSF
1050  LTV_STRCT ltv; /* LTV structure
1051  *** during uil_put_info:
1052  * the L, T and V-fields carry information from USF to MSF
1053  *** during uil_get_info:
1054  * the L and T fields carry information from USF to MSF
1055  * the L and V-fields carry information from MSF to USF
1056  */
1057 } DUI_STRCT;
1058 typedef DUI_STRCT FAR * DUIP;
1059 #endif //defined WVLAN_42 || defined WVLAN_43 //;?keepup with legacy a liitle while longer (4aug2003)
1062 typedef struct CFG_CMD_NIC_STRCT { // CFG_CMD_NIC (0x0860) Hermes Engineering command
1063  hcf_16 len; //default length of RID
1064  hcf_16 typ; //RID identification as defined by Hermes
1065  hcf_16 cmd; //Command code (0x003F) and control bits (0xFFC0)
1066  hcf_16 parm0; //parameters for Hermes Param0 register
1067  hcf_16 parm1; //parameters for Hermes Param1 register
1068  hcf_16 parm2; //parameters for Hermes Param2 register
1069  hcf_16 stat; //result code from Hermes Status register
1070  hcf_16 resp0; //responses from Hermes Resp0 register
1071  hcf_16 resp1; //responses from Hermes Resp1 register
1072  hcf_16 resp2; //responses from Hermes Resp2 register
1073  hcf_16 hcf_stat; //result code from cmd_exe routine
1074  hcf_16 ifb_err_cmd; //IFB_ErrCmd
1075  hcf_16 ifb_err_qualifier; //IFB_ErrQualifier
1079 typedef struct CFG_DRV_INFO_STRCT { //CFG_DRV_INFO (0x0825) driver information
1080  hcf_16 len; //default length of RID
1081  hcf_16 typ; //RID identification as defined by Hermes
1082  hcf_8 driver_name[8]; //Driver name, 8 bytes, right zero padded
1083  hcf_16 driver_version; //BCD 2 digit major and 2 digit minor driver version
1084  hcf_16 HCF_version; //BCD 2 digit major and 2 digit minor HCF version
1085  hcf_16 driver_stat; //
1086  hcf_16 IO_address; //base IO address used by NIC
1087  hcf_16 IO_range; //range of IO addresses used by NIC
1088  hcf_16 IRQ_number; //Interrupt used by NIC
1089  hcf_16 card_stat; /*NIC status
1090  @* 0x8000 Card present
1091  @* 0x4000 Card Enabled
1092  @* 0x2000 Driver incompatible with NIC Primary Functions
1093  @* 0x1000 Driver incompatible with NIC Station Functions */
1094  hcf_16 frame_type; /*Frame type
1095  @* 0x000 802.3
1096  @* 0x008 802.11 */
1097  hcf_32 drv_info; /*driver specific info
1098  * CE: virtual I/O base */
1101 #define COMP_ID_FW_PRI 21 //Primary Functions Firmware
1102 #define COMP_ID_FW_INTERMEDIATE 22 //Intermediate Functions Firmware
1103 #define COMP_ID_FW_STA 31 //Station Functions Firmware
1104 #define COMP_ID_FW_AP 32 //AP Functions Firmware
1105 #define COMP_ID_FW_AP_FAKE 331 //AP Functions Firmware
1106 
1107 #define COMP_ID_MINIPORT_NDIS_31 41 //Windows 9x/NT Miniport NDIS 3.1
1108 #define COMP_ID_PACKET 42 //Packet
1109 #define COMP_ID_ODI_16 43 //DOS ODI
1110 #define COMP_ID_ODI_32 44 //32-bits ODI
1111 #define COMP_ID_MAC_OS 45 //Macintosh OS
1112 #define COMP_ID_WIN_CE 46 //Windows CE Miniport
1113 //#define COMP_ID_LINUX_PD 47 //Linux, HCF-light based, MSF source code in Public Domain
1114 #define COMP_ID_MINIPORT_NDIS_50 48 //Windows 9x/NT Miniport NDIS 5.0
1115 #define COMP_ID_LINUX 49 /*Linux, GPL'ed HCF based, full source code in Public Domain
1116  *thanks to Andreas Neuhaus */
1117 #define COMP_ID_QNX 50 //QNX
1118 #define COMP_ID_MINIPORT_NDIS_50_USB 51 //Windows 9x/NT Miniport NDIS 4.0
1119 #define COMP_ID_MINIPORT_NDIS_40 52 //Windows 9x/NT Miniport NDIS 4.0
1120 #define COMP_ID_VX_WORKS_ENDSTA 53 // VxWorks END Station driver
1121 #define COMP_ID_VX_WORKS_ENDAP 54 // VxWorks END Access Point driver
1122 //;?#define COMP_ID_MAC_OS_???? 55 //;?check with HM
1123 #define COMP_ID_VX_WORKS_END 56 // VxWorks END Station/Access Point driver
1124 // 57 //NucleusOS@ARM Driver.
1125 #define COMP_ID_WSU 63 /* WaveLAN Station Firmware Update utility
1126  * variant 1: Windows
1127  * variant 2: DOS
1128  */
1129 #define COMP_ID_AP1 81 //WaveLAN/IEEE AP
1130 #define COMP_ID_EC 83 //WaveLAN/IEEE Ethernet Converter
1131 #define COMP_ID_UBL 87 //USB Boot Loader
1133 #define COMP_ROLE_SUPL 0x00 //supplier
1134 #define COMP_ROLE_ACT 0x01 //actor
1135 
1136  //Supplier - actor
1137 #define COMP_ID_MFI 0x01 //Modem - Firmware I/F
1138 #define COMP_ID_CFI 0x02 //Controller - Firmware I/F
1139 #define COMP_ID_PRI 0x03 //Primary Firmware - Driver I/F
1140 #define COMP_ID_STA 0x04 //Station Firmware - Driver I/F
1141 #define COMP_ID_DUI 0x05 //Driver - Utility I/F
1142 #define COMP_ID_HSI 0x06 //H/W - Driver I/F
1143 #define COMP_ID_DAI 0x07 //API - Driver I/F
1144 #define COMP_ID_APF 0x08 //H/W - Driver I/F
1145 #define COMP_ID_INT 0x09 //Intermediate FW - Driver I/F
1146 
1147 #ifdef HCF_LEGACY
1148 #define HCF_ACT_ACS_SCAN HCF_ACT_PRS_SCAN
1149 #define UIL_ACT_ACS_SCAN UIL_ACT_PRS_SCAN
1150 #define MDD_ACT_ACS_SCAN MDD_ACT_PRS_SCAN
1151 #define CFG_ACS_SCAN CFG_PRS_SCAN
1152 #endif // HCF_LEGACY
1153 
1154 #endif // MDD_H
1155