]> Pileus Git - ~andy/linux/blob - drivers/staging/wlags49_h2/mdd.h
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal
[~andy/linux] / drivers / staging / wlags49_h2 / mdd.h
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
244         hcf_16  first_channel;
245         hcf_16  number_of_channels;
246         hcf_16  max_tx_output_level;
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
255         hcf_16  channel_id;
256         hcf_16  noise_level;
257         hcf_16  signal_level;
258         hcf_8   bssid[6];
259         hcf_16  beacon_interval_time;
260         hcf_16  capability;
261         hcf_16  ssid_len;
262         hcf_8   ssid_val[32];
263 } SCAN_RS_STRCT;
264
265 typedef struct CFG_RANGE_SPEC_STRCT {           // range specification structure used in CFG_RANGES, CFG_RANGE1 etc
266         hcf_16  variant;
267         hcf_16  bottom;
268         hcf_16  top;
269 } CFG_RANGE_SPEC_STRCT;
270
271 typedef struct CFG_RANGE_SPEC_BYTE_STRCT {      // byte oriented range specification structure used in CFG_RANGE_B LTV
272         hcf_8   variant[2];
273         hcf_8   bottom[2];
274         hcf_8   top[2];
275 } CFG_RANGE_SPEC_BYTE_STRCT;
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;
289 } CFG_MB_INFO_FRAG;
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;
341 } CFG_FW_PRINTF_STRCT;
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
352 } CFG_FW_PRINTF_BUFFER_LOCATION_STRCT;
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,                                                           \
442                  tkip_key_id_info, tkip_key_iv_info[4], tkip_key[8], \
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,                                                                                         \
504          energy_detect_thrh, carrier_detect_thrh, defer_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)
1060
1061
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
1076 } CFG_CMD_NIC_STRCT;
1077
1078
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                                                                                                 */
1099 }CFG_DRV_INFO_STRCT;
1100
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
1132
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