linux/drivers/staging/wlags49_h2/mdd.h
<<
>>
Prefs
   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 )        \
 120typedef struct {                                        \
 121        hcf_16  len;                    \
 122        hcf_16  typ;                    \
 123        type1   par1;                   \
 124} name##_STRCT;
 125
 126#define XX2( name, type1, par1, type2, par2 )   \
 127typedef 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 )      \
 135typedef 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 ) \
 144typedef 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 )        \
 154typedef 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 )          \
 161typedef 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 )            \
 169typedef 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 )              \
 178typedef 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 )                \
 188typedef 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 )          \
 199typedef 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 )              \
 211typedef 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 )         \
 225typedef 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)
 244typedef 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
 250typedef 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
 255typedef 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
 266typedef 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
 272typedef 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
 279XX1( RID_LOG, unsigned short FAR*, bufp )
 280typedef RID_LOG_STRCT  FAR *RID_LOGP;
 281XX1( 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 */
 285XX2( CFG_REG_MB, hcf_16* , mb_addr, hcf_16, mb_size )
 286
 287typedef 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 */
 296XX3( CFG_MB_INFO,                 hcf_16, base_typ, hcf_16, frag_cnt, CFG_MB_INFO_FRAG, frag_buf[ 1] )
 297XX3( CFG_MB_INFO_RANGE1,  hcf_16, base_typ, hcf_16, frag_cnt, CFG_MB_INFO_FRAG, frag_buf[ 1] )
 298XX3( CFG_MB_INFO_RANGE2,  hcf_16, base_typ, hcf_16, frag_cnt, CFG_MB_INFO_FRAG, frag_buf[ 2] )
 299XX3( CFG_MB_INFO_RANGE3,  hcf_16, base_typ, hcf_16, frag_cnt, CFG_MB_INFO_FRAG, frag_buf[ 3] )
 300XX3( CFG_MB_INFO_RANGE20, hcf_16, base_typ, hcf_16, frag_cnt, CFG_MB_INFO_FRAG, frag_buf[20] )
 301
 302XX3( 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 )
 304typedef void (MSF_ASSERT_RTN)( unsigned int , hcf_16, hcf_32 );
 305typedef 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) */
 309XX2( 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
 315typedef 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
 338typedef 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.
 346typedef 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
 355XX3( CFG_RANGES,        hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 1] ) /*Actor/Supplier range (1 variant)*/
 356XX3( CFG_RANGE1,        hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 1] ) /*Actor/Supplier range (1 variant)*/
 357XX3( CFG_RANGE2,        hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 2] ) /*Actor range ( 2 variants)               */
 358XX3( CFG_RANGE3,        hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 3] ) /*Actor range ( 3 variants)               */
 359XX3( CFG_RANGE4,        hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 4] ) /*Actor range ( 4 variants)               */
 360XX3( CFG_RANGE5,        hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 5] ) /*Actor range ( 5 variants)               */
 361XX3( CFG_RANGE6,        hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 6] ) /*Actor range ( 6 variants)               */
 362XX3( CFG_RANGE7,        hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 7] ) /*Actor range ( 7 variants)               */
 363XX3( 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                                                                                     */
 409XX4( 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                                                                       */
 412XX4( 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        */
 439XX1( 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)
 460X2( 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 */
 545XX1( 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;
1041typedef 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)
1044typedef 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;
1059typedef DUI_STRCT FAR * DUIP;
1060#endif //defined WVLAN_42 || defined WVLAN_43 //;?keepup with legacy a liitle while longer (4aug2003)
1061
1062
1063typedef 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
1080typedef 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
1157