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