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