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