Henk de Groot | 68c0bdf | 2009-09-27 11:12:52 +0200 | [diff] [blame] | 1 | |
Henk de Groot | 68c0bdf | 2009-09-27 11:12:52 +0200 | [diff] [blame] | 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 | * |
Al Viro | d36b691 | 2011-12-29 17:09:01 -0500 | [diff] [blame] | 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 |
Henk de Groot | 68c0bdf | 2009-09-27 11:12:52 +0200 | [diff] [blame] | 38 | * All rights reserved. |
| 39 | * |
| 40 | * Redistribution and use in source or binary forms, with or without |
| 41 | * modifications, are permitted provided that the following conditions are met: |
| 42 | * |
| 43 | * . Redistributions of source code must retain the above copyright notice, this |
| 44 | * list of conditions and the following Disclaimer as comments in the code as |
| 45 | * well as in the documentation and/or other materials provided with the |
| 46 | * distribution. |
| 47 | * |
| 48 | * . Redistributions in binary form must reproduce the above copyright notice, |
| 49 | * this list of conditions and the following Disclaimer in the documentation |
| 50 | * and/or other materials provided with the distribution. |
| 51 | * |
| 52 | * . Neither the name of Agere Systems Inc. nor the names of the contributors |
| 53 | * may be used to endorse or promote products derived from this software |
| 54 | * without specific prior written permission. |
| 55 | * |
| 56 | * Disclaimer |
| 57 | * |
| 58 | * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
| 59 | * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF |
| 60 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY |
| 61 | * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN |
| 62 | * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY |
| 63 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| 64 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| 65 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
| 66 | * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT |
| 67 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT |
| 68 | * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH |
| 69 | * DAMAGE. |
| 70 | * |
| 71 | * |
| 72 | ************************************************************************************************************/ |
| 73 | |
| 74 | |
| 75 | /************************************************************************************************************ |
| 76 | * |
| 77 | * The macros Xn(...) and XXn(...) are used to define the LTV's (short for Length Type Value[ ]) , |
| 78 | * aka RIDs, processed by the Hermes. |
| 79 | * The n in Xn and XXn reflects the number of "Value" fields in these RIDs. |
| 80 | * |
| 81 | * Xn(...) : Macros used for RIDs which use only type hcf_16 for the "V" fields of the LTV. |
| 82 | * Xn takes as parameters a RID name and "n" name(s), one for each of the "V" fields of the LTV. |
| 83 | * |
| 84 | * XXn(...) : Macros used for RIDs which use at least one other type then hcf_16 for a "V" field |
| 85 | * of the LTV. |
| 86 | * XXn(..) takes as parameters a RID name and "n" pair(s) of type and name, one for each "V" field |
| 87 | * of the LTV |
| 88 | |
| 89 | ****************************************** e x a m p l e s *********************************************** |
| 90 | |
| 91 | * X1(RID_NAME, parameters...) : expands to : |
| 92 | * typedef struct RID_NAME_STRCT { |
| 93 | * hcf_16 len; |
| 94 | * hcf_16 typ; |
| 95 | * hcf_16 par1; |
| 96 | * } RID_NAME_STRCT; |
| 97 | |
| 98 | * X2(RID_NAME, parameters...) : expands to : |
| 99 | * typedef struct RID_NAME_STRCT { |
| 100 | * hcf_16 len; |
| 101 | * hcf_16 typ; |
| 102 | * hcf_16 par1; |
| 103 | * hcf_16 par2; |
| 104 | * } RID_NAME_STRCT; |
| 105 | |
| 106 | |
| 107 | * XX1(RID_NAME, par1type, par1name, ...) : expands to : |
| 108 | * typedef struct RID_NAME_STRCT { |
| 109 | * hcf_16 len; |
| 110 | * hcf_16 typ; |
| 111 | * par1type par1name; |
| 112 | * } RID_NAME_STRCT; |
| 113 | |
| 114 | ************************************************************************************************************/ |
| 115 | |
| 116 | /******************************* XX Sub-macro definitions **************************************************/ |
| 117 | |
| 118 | #define XX1( name, type1, par1 ) \ |
| 119 | typedef struct { \ |
| 120 | hcf_16 len; \ |
| 121 | hcf_16 typ; \ |
| 122 | type1 par1; \ |
| 123 | } name##_STRCT; |
| 124 | |
| 125 | #define XX2( name, type1, par1, type2, par2 ) \ |
| 126 | typedef struct { \ |
| 127 | hcf_16 len; \ |
| 128 | hcf_16 typ; \ |
| 129 | type1 par1; \ |
| 130 | type2 par2; \ |
| 131 | } name##_STRCT; |
| 132 | |
| 133 | #define XX3( name, type1, par1, type2, par2, type3, par3 ) \ |
| 134 | typedef struct name##_STRCT { \ |
| 135 | hcf_16 len; \ |
| 136 | hcf_16 typ; \ |
| 137 | type1 par1; \ |
| 138 | type2 par2; \ |
| 139 | type3 par3; \ |
| 140 | } name##_STRCT; |
| 141 | |
| 142 | #define XX4( name, type1, par1, type2, par2, type3, par3, type4, par4 ) \ |
| 143 | typedef struct { \ |
| 144 | hcf_16 len; \ |
| 145 | hcf_16 typ; \ |
| 146 | type1 par1; \ |
| 147 | type2 par2; \ |
| 148 | type3 par3; \ |
| 149 | type4 par4; \ |
| 150 | } name##_STRCT; |
| 151 | |
| 152 | #define X1( name, par1 ) \ |
| 153 | typedef struct name##_STRCT { \ |
| 154 | hcf_16 len; \ |
| 155 | hcf_16 typ; \ |
| 156 | hcf_16 par1; \ |
| 157 | } name##_STRCT; |
| 158 | |
| 159 | #define X2( name, par1, par2 ) \ |
| 160 | typedef struct { \ |
| 161 | hcf_16 len; \ |
| 162 | hcf_16 typ; \ |
| 163 | hcf_16 par1; \ |
| 164 | hcf_16 par2; \ |
| 165 | } name##_STRCT; |
| 166 | |
| 167 | #define X3( name, par1, par2, par3 ) \ |
| 168 | typedef struct { \ |
| 169 | hcf_16 len; \ |
| 170 | hcf_16 typ; \ |
| 171 | hcf_16 par1; \ |
| 172 | hcf_16 par2; \ |
| 173 | hcf_16 par3; \ |
| 174 | } name##_STRCT; |
| 175 | |
| 176 | #define X4( name, par1, par2, par3, par4 ) \ |
| 177 | typedef struct { \ |
| 178 | hcf_16 len; \ |
| 179 | hcf_16 typ; \ |
| 180 | hcf_16 par1; \ |
| 181 | hcf_16 par2; \ |
| 182 | hcf_16 par3; \ |
| 183 | hcf_16 par4; \ |
| 184 | } name##_STRCT; |
| 185 | |
| 186 | #define X5( name, par1, par2, par3, par4, par5 ) \ |
| 187 | typedef struct { \ |
| 188 | hcf_16 len; \ |
| 189 | hcf_16 typ; \ |
| 190 | hcf_16 par1; \ |
| 191 | hcf_16 par2; \ |
| 192 | hcf_16 par3; \ |
| 193 | hcf_16 par4; \ |
| 194 | hcf_16 par5; \ |
| 195 | } name##_STRCT; |
| 196 | |
| 197 | #define X6( name, par1, par2, par3, par4, par5, par6 ) \ |
| 198 | typedef struct { \ |
| 199 | hcf_16 len; \ |
| 200 | hcf_16 typ; \ |
| 201 | hcf_16 par1; \ |
| 202 | hcf_16 par2; \ |
| 203 | hcf_16 par3; \ |
| 204 | hcf_16 par4; \ |
| 205 | hcf_16 par5; \ |
| 206 | hcf_16 par6; \ |
| 207 | } name##_STRCT; |
| 208 | |
| 209 | #define X8( name, par1, par2, par3, par4, par5, par6, par7, par8 ) \ |
| 210 | typedef struct { \ |
| 211 | hcf_16 len; \ |
| 212 | hcf_16 typ; \ |
| 213 | hcf_16 par1; \ |
| 214 | hcf_16 par2; \ |
| 215 | hcf_16 par3; \ |
| 216 | hcf_16 par4; \ |
| 217 | hcf_16 par5; \ |
| 218 | hcf_16 par6; \ |
| 219 | hcf_16 par7; \ |
| 220 | hcf_16 par8; \ |
| 221 | } name##_STRCT; |
| 222 | |
| 223 | #define X11( name, par1, par2, par3, par4, par5, par6, par7, par8, par9, par10, par11 ) \ |
| 224 | typedef struct { \ |
| 225 | hcf_16 len; \ |
| 226 | hcf_16 typ; \ |
| 227 | hcf_16 par1; \ |
| 228 | hcf_16 par2; \ |
| 229 | hcf_16 par3; \ |
| 230 | hcf_16 par4; \ |
| 231 | hcf_16 par5; \ |
| 232 | hcf_16 par6; \ |
| 233 | hcf_16 par7; \ |
| 234 | hcf_16 par8; \ |
| 235 | hcf_16 par9; \ |
| 236 | hcf_16 par10; \ |
| 237 | hcf_16 par11; \ |
| 238 | } name##_STRCT; |
| 239 | |
| 240 | /******************************* Substructure definitions **************************************************/ |
| 241 | |
| 242 | //apparently not needed (CFG_CNF_COUNTRY) |
| 243 | typedef struct CHANNEL_SET { //channel set structure used in the CFG_CNF_COUNTRY LTV |
| 244 | hcf_16 first_channel; |
| 245 | hcf_16 number_of_channels; |
| 246 | hcf_16 max_tx_output_level; |
| 247 | } CHANNEL_SET; |
| 248 | |
| 249 | typedef struct KEY_STRCT { // key structure used in the CFG_DEFAULT_KEYS LTV |
| 250 | hcf_16 len; //length of key |
| 251 | hcf_8 key[14]; //encryption key |
| 252 | } KEY_STRCT; |
| 253 | |
| 254 | typedef struct SCAN_RS_STRCT { // Scan Result structure used in the CFG_SCAN LTV |
| 255 | hcf_16 channel_id; |
| 256 | hcf_16 noise_level; |
| 257 | hcf_16 signal_level; |
| 258 | hcf_8 bssid[6]; |
| 259 | hcf_16 beacon_interval_time; |
| 260 | hcf_16 capability; |
| 261 | hcf_16 ssid_len; |
| 262 | hcf_8 ssid_val[32]; |
| 263 | } SCAN_RS_STRCT; |
| 264 | |
| 265 | typedef struct CFG_RANGE_SPEC_STRCT { // range specification structure used in CFG_RANGES, CFG_RANGE1 etc |
| 266 | hcf_16 variant; |
| 267 | hcf_16 bottom; |
| 268 | hcf_16 top; |
| 269 | } CFG_RANGE_SPEC_STRCT; |
| 270 | |
| 271 | typedef struct CFG_RANGE_SPEC_BYTE_STRCT { // byte oriented range specification structure used in CFG_RANGE_B LTV |
| 272 | hcf_8 variant[2]; |
| 273 | hcf_8 bottom[2]; |
| 274 | hcf_8 top[2]; |
| 275 | } CFG_RANGE_SPEC_BYTE_STRCT; |
| 276 | |
| 277 | //used to set up "T" functionality for Info frames, i.e. log info frames in MSF supplied buffer and MailBox |
| 278 | XX1( RID_LOG, unsigned short FAR*, bufp ) |
| 279 | typedef RID_LOG_STRCT FAR *RID_LOGP; |
| 280 | XX1( CFG_RID_LOG, RID_LOGP, recordp ) |
| 281 | |
| 282 | X1( LTV, val[1] ) /*minimum LTV proto typ */ |
| 283 | X1( LTV_MAX, val[HCF_MAX_LTV] ) /*maximum LTV proto typ */ |
| 284 | XX2( CFG_REG_MB, hcf_16* , mb_addr, hcf_16, mb_size ) |
| 285 | |
| 286 | typedef struct CFG_MB_INFO_FRAG { // specification of buffer fragment |
| 287 | unsigned short FAR* frag_addr; |
| 288 | hcf_16 frag_len; |
| 289 | } CFG_MB_INFO_FRAG; |
| 290 | |
| 291 | /* Mail Box Info Block structures, |
| 292 | * the base form: CFG_MB_INFO_STRCT |
| 293 | * and the derived forms: CFG_MB_INFO_RANGE<n>_STRCT with n is 1, 2, 3 or 20 |
| 294 | * predefined for a payload of 1, and up to 2, 3 and 20 CFG_MB_INFO_FRAG elements */ |
| 295 | XX3( CFG_MB_INFO, hcf_16, base_typ, hcf_16, frag_cnt, CFG_MB_INFO_FRAG, frag_buf[ 1] ) |
| 296 | XX3( CFG_MB_INFO_RANGE1, hcf_16, base_typ, hcf_16, frag_cnt, CFG_MB_INFO_FRAG, frag_buf[ 1] ) |
| 297 | XX3( CFG_MB_INFO_RANGE2, hcf_16, base_typ, hcf_16, frag_cnt, CFG_MB_INFO_FRAG, frag_buf[ 2] ) |
| 298 | XX3( CFG_MB_INFO_RANGE3, hcf_16, base_typ, hcf_16, frag_cnt, CFG_MB_INFO_FRAG, frag_buf[ 3] ) |
| 299 | XX3( CFG_MB_INFO_RANGE20, hcf_16, base_typ, hcf_16, frag_cnt, CFG_MB_INFO_FRAG, frag_buf[20] ) |
| 300 | |
| 301 | XX3( CFG_MB_ASSERT, hcf_16, line, hcf_16, trace, hcf_32, qualifier ) /*MBInfoBlock for asserts */ |
| 302 | #if (HCF_ASSERT) & ( HCF_ASSERT_LNK_MSF_RTN | HCF_ASSERT_RT_MSF_RTN ) |
| 303 | typedef void (MSF_ASSERT_RTN)( unsigned int , hcf_16, hcf_32 ); |
| 304 | typedef MSF_ASSERT_RTN /*can't link FAR*/ * MSF_ASSERT_RTNP; |
| 305 | /* CFG_REG_ASSERT_RTNP (0x0832) (de-)register MSF Callback routines |
| 306 | * lvl: Assert level filtering (not yet implemented) |
| 307 | * rtnp: address of MSF_ASSERT_RTN (native Endian format) */ |
| 308 | XX2( CFG_REG_ASSERT_RTNP, hcf_16, lvl, MSF_ASSERT_RTNP, rtnp ) |
| 309 | #endif // HCF_ASSERT_LNK_MSF_RTN / HCF_ASSERT_RT_MSF_RTN |
| 310 | |
| 311 | X1( CFG_HCF_OPT, val[20] ) /*(Compile time) options */ |
| 312 | X3( CFG_CMD_HCF, cmd, mode, add_info ) /*HCF Engineering command */ |
| 313 | |
| 314 | typedef struct { |
| 315 | hcf_16 len; |
| 316 | hcf_16 typ; |
| 317 | hcf_16 mode; // PROG_STOP/VOLATILE [FLASH/SEEPROM/SEEPROM_READBACK] |
| 318 | hcf_16 segment_size; // size of the segment in bytes |
| 319 | hcf_32 nic_addr; // destination address (in NIC memory) |
| 320 | hcf_16 flags; // 0x0001 : CRC Yes/No |
| 321 | // hcf_32 flags; // 0x0001 : CRC Yes/No |
| 322 | /* ;? still not the whole story |
| 323 | * flags is extended from 16 to 32 bits to force that compiling FW.C produces the same structures |
| 324 | * in memory as FUPU4 BIN files. |
| 325 | * Note that the problem arises from the violation of the constraint to use packing at byte boundaries |
| 326 | * as was stipulated in the WCI-specification |
| 327 | * The Pack pragma can't resolve this issue, because that impacts all members of the structure with |
| 328 | * disregard of their actual size, so aligning host_addr under MSVC 1.5 at 4 bytes, also aligns |
| 329 | * len, typ etc on 4 bytes |
| 330 | * */ |
| 331 | // hcf_16 pad; //!! be careful alignment problems for Bin download versus C download |
| 332 | hcf_8 FAR *host_addr; // source address (in Host memory) |
| 333 | } CFG_PROG_STRCT; // segment_descp; |
| 334 | |
| 335 | // a structure used for transporting debug-related information from firmware |
| 336 | // via the HCF, into the MSF |
| 337 | typedef struct { |
| 338 | hcf_16 len; |
| 339 | hcf_16 typ; |
| 340 | hcf_16 msg_id, msg_par, msg_tstamp; |
| 341 | } CFG_FW_PRINTF_STRCT; |
| 342 | |
| 343 | // a structure used to define the location and size of a certain debug-related |
| 344 | // buffer in nic-ram. |
| 345 | typedef struct { |
| 346 | hcf_16 len; |
| 347 | hcf_16 typ; |
| 348 | hcf_32 DbMsgCount, // ds (nicram) address of a counter |
| 349 | DbMsgBuffer, // ds (nicram) address of the buffer |
| 350 | DbMsgSize, // number of entries (each 3 word in size) in this buffer |
| 351 | DbMsgIntrvl; // ds (nicram) address of interval for generating InfDrop event |
| 352 | } CFG_FW_PRINTF_BUFFER_LOCATION_STRCT; |
| 353 | |
| 354 | XX3( CFG_RANGES, hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 1] ) /*Actor/Supplier range (1 variant)*/ |
| 355 | XX3( CFG_RANGE1, hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 1] ) /*Actor/Supplier range (1 variant)*/ |
| 356 | XX3( CFG_RANGE2, hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 2] ) /*Actor range ( 2 variants) */ |
| 357 | XX3( CFG_RANGE3, hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 3] ) /*Actor range ( 3 variants) */ |
| 358 | XX3( CFG_RANGE4, hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 4] ) /*Actor range ( 4 variants) */ |
| 359 | XX3( CFG_RANGE5, hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 5] ) /*Actor range ( 5 variants) */ |
| 360 | XX3( CFG_RANGE6, hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 6] ) /*Actor range ( 6 variants) */ |
| 361 | XX3( CFG_RANGE7, hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[ 7] ) /*Actor range ( 7 variants) */ |
| 362 | XX3( CFG_RANGE20, hcf_16, role, hcf_16, id, CFG_RANGE_SPEC_STRCT, var_rec[20] ) /*Actor range (20 variants) */ |
| 363 | |
| 364 | /*Frames */ |
| 365 | X3( CFG_ASSOC_STAT, assoc_stat, station_addr[3], val[46] ) /*Association status, basic */ |
| 366 | X2( CFG_ASSOC_STAT3, assoc_stat, station_addr[3] ) /*assoc_stat:3 */ |
| 367 | X3( CFG_ASSOC_STAT1, assoc_stat, station_addr[3], frame_body[43] ) /*assoc_stat:1 */ |
| 368 | X4( CFG_ASSOC_STAT2, assoc_stat, station_addr[3], old_ap_addr[3], frame_body[43] ) /*assoc_stat:2 */ |
| 369 | |
| 370 | /*Static Configurations */ |
| 371 | X1( CFG_CNF_PORT_TYPE, port_type ) /*[STA] Connection control characteristics */ |
| 372 | X1( CFG_MAC_ADDR, mac_addr[3] ) /*general: FC01,FC08,FC11,FC12,FC13,FC14,FC15,FC16 */ |
| 373 | X1( CFG_CNF_OWN_MAC_ADDR, mac_addr[3] ) |
| 374 | X1( CFG_ID, ssid[17] ) /*0xFC02, 0xFC04, 0xFC0E */ |
| 375 | /* X1( CFG_DESIRED_SSID, ssid[17] ) see Dynamic Configurations */ |
| 376 | X1( CFG_CNF_OWN_CHANNEL, channel ) /*Communication channel for BSS creation */ |
| 377 | X1( CFG_CNF_OWN_SSID, ssid[17] ) |
| 378 | X1( CFG_CNF_OWN_ATIM_WINDOW, atim_window ) |
| 379 | X1( CFG_CNF_SYSTEM_SCALE, system_scale ) |
| 380 | X1( CFG_CNF_MAX_DATA_LEN, max_data_len ) |
| 381 | X1( CFG_CNF_WDS_ADDR, mac_addr[3] ) /*[STA] MAC Address of corresponding WDS Link node */ |
| 382 | X1( CFG_CNF_PM_ENABLED, pm_enabled ) /*[STA] Switch for ESS Power Management (PM) On/Off */ |
| 383 | X1( CFG_CNF_PM_EPS, pm_eps ) /*[STA] Switch for ESS PM EPS/PS Mode */ |
| 384 | X1( CFG_CNF_MCAST_RX, mcast_rx ) /*[STA] Switch for ESS PM Multicast reception On/Off */ |
| 385 | X1( CFG_CNF_MAX_SLEEP_DURATION, duration ) /*[STA] Maximum sleep time for ESS PM */ |
| 386 | X1( CFG_CNF_PM_HOLDOVER_DURATION, duration ) /*[STA] Holdover time for ESS PM */ |
| 387 | X1( CFG_CNF_OWN_NAME, ssid[17] ) /*Identification text for diagnostic purposes */ |
| 388 | X1( CFG_CNF_OWN_DTIM_PERIOD, period ) /*[AP] Beacon intervals between successive DTIMs */ |
| 389 | X1( CFG_CNF_WDS_ADDR1, mac_addr[3] ) /*[AP] Port 1 MAC Adrs of corresponding WDS Link node */ |
| 390 | X1( CFG_CNF_WDS_ADDR2, mac_addr[3] ) /*[AP] Port 2 MAC Adrs of corresponding WDS Link node */ |
| 391 | X1( CFG_CNF_WDS_ADDR3, mac_addr[3] ) /*[AP] Port 3 MAC Adrs of corresponding WDS Link node */ |
| 392 | X1( CFG_CNF_WDS_ADDR4, mac_addr[3] ) /*[AP] Port 4 MAC Adrs of corresponding WDS Link node */ |
| 393 | X1( CFG_CNF_WDS_ADDR5, mac_addr[3] ) /*[AP] Port 5 MAC Adrs of corresponding WDS Link node */ |
| 394 | X1( CFG_CNF_WDS_ADDR6, mac_addr[3] ) /*[AP] Port 6 MAC Adrs of corresponding WDS Link node */ |
| 395 | X1( CFG_CNF_MCAST_PM_BUF, mcast_pm_buf ) /*[AP] Switch for PM buffering of Multicast Messages */ |
| 396 | X1( CFG_CNF_REJECT_ANY, reject_any ) /*[AP] Switch for PM buffering of Multicast Messages */ |
| 397 | //X1( CFG_CNF_ENCRYPTION_ENABLED, encryption ) /*specify encryption type of Tx/Rx messages */ |
| 398 | X1( CFG_CNF_ENCRYPTION, encryption ) /*specify encryption type of Tx/Rx messages */ |
| 399 | X1( CFG_CNF_AUTHENTICATION, authentication ) /*selects Authentication algorithm */ |
| 400 | X1( CFG_CNF_EXCL_UNENCRYPTED, exclude_unencrypted ) /*[AP] Switch for 'clear-text' rx message acceptance */ |
| 401 | X1( CFG_CNF_MCAST_RATE, mcast_rate ) /*Transmit Data rate for Multicast frames */ |
| 402 | X1( CFG_CNF_INTRA_BSS_RELAY, intra_bss_relay ) /*[AP] Switch for IntraBBS relay */ |
| 403 | X1( CFG_CNF_MICRO_WAVE, micro_wave ) /*MicroWave (Robustness) */ |
| 404 | X1( CFG_CNF_LOAD_BALANCING, load_balancing ) /*Load Balancing (Boolean, 0=OFF, 1=ON, default=1) */ |
| 405 | X1( CFG_CNF_MEDIUM_DISTRIBUTION, medium_distribution ) /*Medium Distribution (Boolean, 0=OFF, 1=ON, default=1) */ |
| 406 | X1( CFG_CNF_GROUP_ADDR_FILTER, group_addr_filter ) /*Group Address Filter */ |
| 407 | X1( CFG_CNF_TX_POW_LVL, tx_pow_lvl ) /*Tx Power Level */ |
| 408 | XX4( CFG_CNF_COUNTRY_INFO, \ |
| 409 | hcf_16, n_channel_sets, hcf_16, country_code[2], \ |
| 410 | hcf_16, environment, CHANNEL_SET, channel_set[1] ) /*Current Country Info */ |
| 411 | XX4( CFG_CNF_COUNTRY_INFO_MAX, \ |
| 412 | hcf_16, n_channel_sets, hcf_16, country_code[2], \ |
| 413 | hcf_16, environment, CHANNEL_SET, channel_set[14]) /*Current Country Info */ |
| 414 | |
| 415 | /*Dynamic Configurations */ |
| 416 | X1( CFG_DESIRED_SSID, ssid[17] ) /*[STA] Service Set identification for connection */ |
| 417 | #define GROUP_ADDR_SIZE (32 * 6) //32 6-byte MAC-addresses |
| 418 | X1( CFG_GROUP_ADDR, mac_addr[GROUP_ADDR_SIZE/2] ) /*[STA] Multicast MAC Addresses for Rx-message */ |
| 419 | X1( CFG_CREATE_IBSS, create_ibss ) /*[STA] Switch for IBSS creation On/Off */ |
| 420 | X1( CFG_RTS_THRH, rts_thrh ) /*[STA] Frame length used for RTS/CTS handshake */ |
| 421 | X1( CFG_TX_RATE_CNTL, tx_rate_cntl ) /*[STA] Data rate control for message transmission */ |
| 422 | X1( CFG_PROMISCUOUS_MODE, promiscuous_mode ) /*[STA] Switch for Promiscuous mode reception On/Of */ |
| 423 | X1( CFG_WOL, wake_on_lan ) /*[STA] Switch for Wake-On-LAN mode */ |
| 424 | X1( CFG_RTS_THRH0, rts_thrh ) /*[AP] Port 0 frame length for RTS/CTS handshake */ |
| 425 | X1( CFG_RTS_THRH1, rts_thrh ) /*[AP] Port 1 frame length for RTS/CTS handshake */ |
| 426 | X1( CFG_RTS_THRH2, rts_thrh ) /*[AP] Port 2 frame length for RTS/CTS handshake */ |
| 427 | X1( CFG_RTS_THRH3, rts_thrh ) /*[AP] Port 3 frame length for RTS/CTS handshake */ |
| 428 | X1( CFG_RTS_THRH4, rts_thrh ) /*[AP] Port 4 frame length for RTS/CTS handshake */ |
| 429 | X1( CFG_RTS_THRH5, rts_thrh ) /*[AP] Port 5 frame length for RTS/CTS handshake */ |
| 430 | X1( CFG_RTS_THRH6, rts_thrh ) /*[AP] Port 6 frame length for RTS/CTS handshake */ |
| 431 | X1( CFG_TX_RATE_CNTL0, rate_cntl ) /*[AP] Port 0 data rate control for transmission */ |
| 432 | X1( CFG_TX_RATE_CNTL1, rate_cntl ) /*[AP] Port 1 data rate control for transmission */ |
| 433 | X1( CFG_TX_RATE_CNTL2, rate_cntl ) /*[AP] Port 2 data rate control for transmission */ |
| 434 | X1( CFG_TX_RATE_CNTL3, rate_cntl ) /*[AP] Port 3 data rate control for transmission */ |
| 435 | X1( CFG_TX_RATE_CNTL4, rate_cntl ) /*[AP] Port 4 data rate control for transmission */ |
| 436 | X1( CFG_TX_RATE_CNTL5, rate_cntl ) /*[AP] Port 5 data rate control for transmission */ |
| 437 | X1( CFG_TX_RATE_CNTL6, rate_cntl ) /*[AP] Port 6 data rate control for transmission */ |
| 438 | XX1( CFG_DEFAULT_KEYS, KEY_STRCT, key[4] ) /*defines set of encryption keys */ |
| 439 | X1( CFG_TX_KEY_ID, tx_key_id ) /*select key for encryption of Tx messages */ |
| 440 | X1( CFG_SCAN_SSID, ssid[17] ) /*identification for connection */ |
| 441 | X5( CFG_ADD_TKIP_DEFAULT_KEY, \ |
| 442 | tkip_key_id_info, tkip_key_iv_info[4], tkip_key[8], \ |
| 443 | tx_mic_key[4], rx_mic_key[4] ) /* */ |
| 444 | X6( CFG_ADD_TKIP_MAPPED_KEY, bssid[3], tkip_key[8], \ |
| 445 | tsc[4], rsc[4], tx_mic_key[4], rx_mic_key[4] ) /* */ |
David Kilroy | 4b7ad42 | 2011-09-16 00:20:52 +0100 | [diff] [blame] | 446 | X1( CFG_SET_WPA_AUTHENTICATION_SUITE, \ |
Henk de Groot | 68c0bdf | 2009-09-27 11:12:52 +0200 | [diff] [blame] | 447 | ssn_authentication_suite ) /* */ |
| 448 | X1( CFG_REMOVE_TKIP_DEFAULT_KEY,tkip_key_id ) /* */ |
| 449 | X1( CFG_TICK_TIME, tick_time ) /*Auxiliary Timer tick interval */ |
| 450 | X1( CFG_DDS_TICK_TIME, tick_time ) /*Disconnected DeepSleep Timer tick interval */ |
| 451 | |
| 452 | /********************************************************************** |
| 453 | * Added for Pattern-matching WakeOnLan. (See firmware design note WMDN281C) |
| 454 | **********************************************************************/ |
| 455 | #define WOL_PATTERNS 5 // maximum of 5 patterns in firmware |
| 456 | #define WOL_PATTERN_LEN 124 // maximum 124 bytes pattern length per pattern in firmware |
| 457 | #define WOL_MASK_LEN 30 // maximum 30 bytes mask length per pattern in firmware |
| 458 | #define WOL_BUF_SIZE (WOL_PATTERNS * (WOL_PATTERN_LEN + WOL_MASK_LEN + 6) / 2) |
| 459 | X2( CFG_WOL_PATTERNS, nPatterns, buffer[WOL_BUF_SIZE] ) /*[STA] WakeOnLan pattern match, room for 5 patterns*/ |
| 460 | |
| 461 | X5( CFG_SUP_RANGE, role, id, variant, bottom, top ) /*[PRI] Primary Supplier compatibility range */ |
| 462 | /* NIC Information */ |
| 463 | X4( CFG_IDENTITY, comp_id, variant, version_major, version_minor ) /*identification Prototype */ |
| 464 | #define CFG_DRV_IDENTITY_STRCT CFG_IDENTITY_STRCT |
| 465 | #define CFG_PRI_IDENTITY_STRCT CFG_IDENTITY_STRCT |
| 466 | #define CFG_NIC_IDENTITY_STRCT CFG_IDENTITY_STRCT |
| 467 | #define CFG_FW_IDENTITY_STRCT CFG_IDENTITY_STRCT |
| 468 | X1( CFG_RID_INF_MIN, y ) /*lowest value representing an Information RID */ |
| 469 | X1( CFG_MAX_LOAD_TIME, max_load_time ) /*[PRI] Max response time of the Download command */ |
| 470 | X3( CFG_DL_BUF, buf_page, buf_offset, buf_len ) /*[PRI] Download buffer location and size */ |
| 471 | // X5( CFG_PRI_SUP_RANGE, role, id, variant, bottom, top ) /*[PRI] Primary Supplier compatibility range */ |
| 472 | X5( CFG_CFI_ACT_RANGES_PRI,role, id, variant, bottom, top ) /*[PRI] Controller Actor compatibility ranges */ |
| 473 | // X5( CFG_NIC_HSI_SUP_RANGE, role, id, variant, bottom, top ) /*H/W - S/W I/F supplier range */ |
| 474 | X1( CFG_NIC_SERIAL_NUMBER, serial_number[17] ) /*[PRI] Network I/F Card serial number */ |
| 475 | X5( CFG_NIC_MFI_SUP_RANGE, role, id, variant, bottom, top ) /*[PRI] Modem I/F Supplier compatibility range */ |
| 476 | X5( CFG_NIC_CFI_SUP_RANGE, role, id, variant, bottom, top ) /*[PRI] Controller I/F Supplier compatibility range*/ |
| 477 | //H-I X1( CFG_CHANNEL_LIST, channel_list ) /*Allowed communication channels */ |
| 478 | //H-I XX2( CFG_REG_DOMAINS, hcf_16, num_domain, hcf_8, reg_domains[10] ) /*List of intended regulatory domains */ |
| 479 | X1( CFG_NIC_TEMP_TYPE, temp_type ) /*Hardware temperature range code */ |
| 480 | //H-I X1( CFG_CIS, cis[240] ) /*PC Card Standard Card Information Structure */ |
| 481 | X5( CFG_NIC_PROFILE, \ |
| 482 | profile_code, capability_options, allowed_data_rates, val4, val5 ) /*Card Profile */ |
| 483 | // X5( CFG_FW_SUP_RANGE, role, id, variant, bottom, top ) /*[STA] Station I/F Supplier compatibility range */ |
| 484 | X5( CFG_MFI_ACT_RANGES, role, id, variant, bottom, top ) /*[STA] Modem I/F Actor compatibility ranges */ |
| 485 | X5( CFG_CFI_ACT_RANGES_STA,role, id, variant, bottom, top ) /*[STA] Controller I/F Actor compatibility ranges */ |
| 486 | X5( CFG_MFI_ACT_RANGES_STA,role, id, variant, bottom, top ) /*[STA] Controller I/F Actor compatibility ranges */ |
| 487 | X1( CFG_NIC_BUS_TYPE, nic_bus_type ) /*NIC bustype derived from BUSSEL host I/F signals */ |
| 488 | |
| 489 | /* MAC INFORMATION */ |
| 490 | X1( CFG_PORT_STAT, port_stat ) /*[STA] Actual MAC Port connection control status */ |
| 491 | X1( CFG_CUR_SSID, ssid[17] ) /*[STA] Identification of the actually connected SS */ |
| 492 | X1( CFG_CUR_BSSID, mac_addr[3] ) /*[STA] Identification of the actually connected BSS */ |
| 493 | X3( CFG_COMMS_QUALITY, coms_qual, signal_lvl, noise_lvl ) /*[STA] Quality of the Basic Service Set connection */ |
| 494 | X1( CFG_CUR_TX_RATE, rate ) /*[STA] Actual transmit data rate */ |
| 495 | X1( CFG_CUR_BEACON_INTERVAL, interval ) /*Beacon transmit interval time for BSS creation */ |
| 496 | #if (HCF_TYPE) & HCF_TYPE_WARP |
| 497 | X11( CFG_CUR_SCALE_THRH, \ |
| 498 | carrier_detect_thrh_cck, carrier_detect_thrh_ofdm, defer_thrh, \ |
| 499 | energy_detect_thrh, rssi_on_thrh_deviation, \ |
| 500 | rssi_off_thrh_deviation, cck_drop_thrh, ofdm_drop_thrh, \ |
| 501 | cell_search_thrh, out_of_range_thrh, delta_snr ) |
| 502 | #else |
| 503 | X6( CFG_CUR_SCALE_THRH, \ |
| 504 | energy_detect_thrh, carrier_detect_thrh, defer_thrh, \ |
| 505 | cell_search_thrh, out_of_range_thrh, delta_snr ) /*Actual System Scale thresholds settings */ |
| 506 | #endif // HCF_TYPE_WARP |
| 507 | X1( CFG_PROTOCOL_RSP_TIME, time ) /*Max time to await a response to a request message */ |
| 508 | X1( CFG_CUR_SHORT_RETRY_LIMIT, limit ) /*Max number of transmit attempts for short frames */ |
| 509 | X1( CFG_CUR_LONG_RETRY_LIMIT, limit ) /*Max number of transmit attempts for long frames */ |
| 510 | X1( CFG_MAX_TX_LIFETIME, time ) /*Max transmit frame handling duration */ |
| 511 | X1( CFG_MAX_RX_LIFETIME, time ) /*Max received frame handling duration */ |
| 512 | X1( CFG_CF_POLLABLE, cf_pollable ) /*[STA] Contention Free pollable capability indication */ |
| 513 | X2( CFG_AUTHENTICATION_ALGORITHMS,authentication_type, type_enabled ) /*Authentication Algorithm */ |
| 514 | X1( CFG_PRIVACY_OPT_IMPLEMENTED,privacy_opt_implemented ) /*WEP Option availability indication */ |
| 515 | X1( CFG_CUR_REMOTE_RATES, rates ) /*CurrentRemoteRates */ |
| 516 | X1( CFG_CUR_USED_RATES, rates ) /*CurrentUsedRates */ |
| 517 | X1( CFG_CUR_SYSTEM_SCALE, current_system_scale ) /*CurrentUsedRates */ |
| 518 | X1( CFG_CUR_TX_RATE1, rate ) /*[AP] Actual Port 1 transmit data rate */ |
| 519 | X1( CFG_CUR_TX_RATE2, rate ) /*[AP] Actual Port 2 transmit data rate */ |
| 520 | X1( CFG_CUR_TX_RATE3, rate ) /*[AP] Actual Port 3 transmit data rate */ |
| 521 | X1( CFG_CUR_TX_RATE4, rate ) /*[AP] Actual Port 4 transmit data rate */ |
| 522 | X1( CFG_CUR_TX_RATE5, rate ) /*[AP] Actual Port 5 transmit data rate */ |
| 523 | X1( CFG_CUR_TX_RATE6, rate ) /*[AP] Actual Port 6 transmit data rate */ |
| 524 | X1( CFG_OWN_MAC_ADDR, mac_addr[3] ) /*[AP] Unique local node MAC Address */ |
| 525 | X3( CFG_PCF_INFO, medium_occupancy_limit, \ |
| 526 | cfp_period, cfp_max_duration ) /*[AP] Point Coordination Function capability info */ |
David Kilroy | 4b7ad42 | 2011-09-16 00:20:52 +0100 | [diff] [blame] | 527 | X1( CFG_CUR_WPA_INFO_ELEMENT, ssn_info_element[1] ) /* */ |
Henk de Groot | 68c0bdf | 2009-09-27 11:12:52 +0200 | [diff] [blame] | 528 | X4( CFG_CUR_TKIP_IV_INFO, \ |
| 529 | tkip_seq_cnt0[4], tkip_seq_cnt1[4], \ |
| 530 | tkip_seq_cnt2[4], tkip_seq_cnt3[4] ) /* */ |
| 531 | X2( CFG_CUR_ASSOC_REQ_INFO, frame_type, frame_body[1] ) /* 0xFD8C */ |
| 532 | X2( CFG_CUR_ASSOC_RESP_INFO, frame_type, frame_body[1] ) /* 0xFD8D */ |
| 533 | |
| 534 | |
| 535 | /* Modem INFORMATION */ |
| 536 | X1( CFG_PHY_TYPE, phy_type ) /*Physical layer type indication */ |
| 537 | X1( CFG_CUR_CHANNEL, current_channel ) /*Actual frequency channel used for transmission */ |
| 538 | X1( CFG_CUR_POWER_STATE, current_power_state ) /*Actual power consumption status */ |
| 539 | X1( CFG_CCAMODE, cca_mode ) /*Clear channel assessment mode indication */ |
| 540 | X1( CFG_SUPPORTED_DATA_RATES, rates[5] ) /*Data rates capability information */ |
| 541 | |
| 542 | |
| 543 | /* FRAMES */ |
| 544 | XX1( CFG_SCAN, SCAN_RS_STRCT, scan_result[32] ) /*Scan results */ |
| 545 | |
| 546 | |
| 547 | |
| 548 | //-------------------------------------------------------------------------------------- |
| 549 | // UIL management function to be passed to WaveLAN/IEEE Drivers in DUI_STRCT field fun |
| 550 | //-------------------------------------------------------------------------------------- |
| 551 | |
| 552 | // HCF and UIL Common |
| 553 | #define MDD_ACT_SCAN 0x06 // Hermes Inquire Scan (F101) command |
| 554 | #define MDD_ACT_PRS_SCAN 0x07 // Hermes Probe Response Scan (F102) command |
| 555 | |
| 556 | // UIL Specific |
| 557 | #define UIL_FUN_CONNECT 0x00 // Perform connect command |
| 558 | #define UIL_FUN_DISCONNECT 0x01 // Perform disconnect command |
| 559 | #define UIL_FUN_ACTION 0x02 // Perform UIL Action command. |
| 560 | #define UIL_FUN_SEND_DIAG_MSG 0x03 // Send a diagnostic message. |
| 561 | #define UIL_FUN_GET_INFO 0x04 // Retrieve information from NIC. |
| 562 | #define UIL_FUN_PUT_INFO 0x05 // Put information on NIC. |
| 563 | |
| 564 | /* UIL_ACT_TALLIES 0x05 * this should not be exported to the USF |
| 565 | * it is solely intended as a strategic choice for the MSF to either |
| 566 | * - use HCF_ACT_TALLIES and direct IFB access |
| 567 | * - use CFG_TALLIES |
| 568 | */ |
| 569 | #define UIL_ACT_SCAN MDD_ACT_SCAN |
| 570 | #define UIL_ACT_PRS_SCAN MDD_ACT_PRS_SCAN |
| 571 | #define UIL_ACT_BLOCK 0x0B |
| 572 | #define UIL_ACT_UNBLOCK 0x0C |
| 573 | #define UIL_ACT_RESET 0x80 |
| 574 | #define UIL_ACT_REBIND 0x81 |
| 575 | #define UIL_ACT_APPLY 0x82 |
| 576 | #define UIL_ACT_DISCONNECT 0x83 //;?040108 possibly obsolete //Special for WINCE |
| 577 | |
| 578 | // HCF Specific |
| 579 | /* Note that UIL_ACT-codes must match HCF_ACT-codes across a run-time bound I/F |
| 580 | * The initial matching is achieved by "#define HCF_ACT_xxx HCF_UIL_ACT_xxx" where appropriate |
| 581 | * In other words, these codes should never, ever change to minimize migration problems between |
| 582 | * combinations of old drivers and new utilities and vice versa |
| 583 | */ |
| 584 | #define HCF_DISCONNECT 0x01 //disconnect request for hcf_connect (invalid as IO Address) |
| 585 | #define HCF_ACT_TALLIES 0x05 // ! UIL_ACT_TALLIES does not exist ! Hermes Inquire Tallies (F100) cmd |
| 586 | #if ( (HCF_TYPE) & HCF_TYPE_WARP ) == 0 |
| 587 | #define HCF_ACT_SCAN MDD_ACT_SCAN |
| 588 | #endif // HCF_TYPE_WARP |
| 589 | #define HCF_ACT_PRS_SCAN MDD_ACT_PRS_SCAN |
| 590 | #if HCF_INT_ON |
| 591 | #define HCF_ACT_INT_OFF 0x0D // Disable Interrupt generation |
| 592 | #define HCF_ACT_INT_ON 0x0E // Enable Interrupt generation |
| 593 | #define HCF_ACT_INT_FORCE_ON 0x0F // Enforce Enable Interrupt generation |
| 594 | #endif // HCF_INT_ON |
| 595 | #define HCF_ACT_RX_ACK 0x15 // Receiever ACK (optimization) |
| 596 | #if (HCF_TYPE) & HCF_TYPE_CCX |
| 597 | #define HCF_ACT_CCX_ON 0x1A // enable CKIP |
| 598 | #define HCF_ACT_CCX_OFF 0x1B // disable CKIP |
| 599 | #endif // HCF_TYPE_CCX |
| 600 | #if (HCF_SLEEP) & HCF_DDS |
| 601 | #define HCF_ACT_SLEEP 0x1C // DDS Sleep request |
| 602 | //#define HCF_ACT_WAKEUP 0x1D // DDS Wakeup request |
| 603 | #endif // HCF_DDS |
| 604 | |
| 605 | /* HCF_ACT_MAX // xxxx: start value for UIL-range, NOT to be passed to HCF |
| 606 | * Too bad, there was originally no spare room created to use |
| 607 | * HCF_ACT_MAX as an equivalent of HCF_ERR_MAX. Since creating |
| 608 | * this room in retrospect would create a backward incompatibility |
| 609 | * we will just have to live with the haphazard sequence of |
| 610 | * UIL- and HCF specific codes. Theoretically this could be |
| 611 | * corrected when and if there will ever be an overall |
| 612 | * incompatibility introduced for another reason |
| 613 | */ |
| 614 | |
| 615 | /*============================================================= HERMES RECORDS ============================*/ |
| 616 | #define CFG_RID_FW_MIN 0xFA00 //lowest value representing a Hermes-II based RID |
| 617 | // #define CFG_PDA_BEGIN 0xFA // |
| 618 | // #define CFG_PDA_END 0xFA // |
| 619 | // #define CFG_PDA_NIC_TOP_LVL_ASSEMBLY_NUMBER 0xFA // |
| 620 | // #define CFG_PDA_PCB_TRACER_NUMBER 0xFA // |
| 621 | // #define CFG_PDA_RMM_TRACER_NUMBER 0xFA // |
| 622 | // #define CFG_PDA_RMM_COMP_ID 0xFA // |
| 623 | // #define CFG_PDA_ 0xFA // |
| 624 | |
| 625 | /*============================================================= CONFIGURATION RECORDS =====================*/ |
| 626 | /*============================================================= mask 0xFCxx =====================*/ |
| 627 | #define CFG_RID_CFG_MIN 0xFC00 //lowest value representing a Hermes configuration RID |
| 628 | |
| 629 | // NETWORK PARAMETERS, STATIC CONFIGURATION ENTITIES |
| 630 | //FC05, FC0B, FC0C, FC0D: SEE W2DN149 |
| 631 | |
| 632 | #define CFG_CNF_PORT_TYPE 0xFC00 //[STA] Connection control characteristics |
| 633 | #define CFG_CNF_OWN_MAC_ADDR 0xFC01 //[STA] MAC Address of this node |
| 634 | // 0xFC02 see DYNAMIC CONFIGURATION ENTITIES |
| 635 | #define CFG_CNF_OWN_CHANNEL 0xFC03 //Communication channel for BSS creation |
| 636 | #define CFG_CNF_OWN_SSID 0xFC04 //IBSS creation (STA) or ESS (AP) Service Set Ident |
| 637 | #define CFG_CNF_OWN_ATIM_WINDOW 0xFC05 //[STA] ATIM Window time for IBSS creation |
| 638 | #define CFG_CNF_SYSTEM_SCALE 0xFC06 //System Scale that specifies the AP density |
| 639 | #define CFG_CNF_MAX_DATA_LEN 0xFC07 //Maximum length of MAC Frame Body data |
| 640 | #define CFG_CNF_PM_ENABLED 0xFC09 //[STA] Switch for ESS Power Management (PM) |
| 641 | #define CFG_CNF_MCAST_RX 0xFC0B //[STA] Switch for ESS PM Multicast reception On/Off |
| 642 | #define CFG_CNF_MAX_SLEEP_DURATION 0xFC0C //[STA] Maximum sleep time for ESS PM |
| 643 | #define CFG_CNF_HOLDOVER_DURATION 0xFC0D //[STA] Holdover time for ESS PM |
| 644 | #define CFG_CNF_OWN_NAME 0xFC0E //Identification text for diagnostic purposes |
| 645 | |
| 646 | #define CFG_CNF_OWN_DTIM_PERIOD 0xFC10 //[AP] Beacon intervals between successive DTIMs |
| 647 | #define CFG_CNF_WDS_ADDR1 0xFC11 //[AP] Port 1 MAC Adrs of corresponding WDS Link node |
| 648 | #define CFG_CNF_WDS_ADDR2 0xFC12 //[AP] Port 2 MAC Adrs of corresponding WDS Link node |
| 649 | #define CFG_CNF_WDS_ADDR3 0xFC13 //[AP] Port 3 MAC Adrs of corresponding WDS Link node |
| 650 | #define CFG_CNF_WDS_ADDR4 0xFC14 //[AP] Port 4 MAC Adrs of corresponding WDS Link node |
| 651 | #define CFG_CNF_WDS_ADDR5 0xFC15 //[AP] Port 5 MAC Adrs of corresponding WDS Link node |
| 652 | #define CFG_CNF_WDS_ADDR6 0xFC16 //[AP] Port 6 MAC Adrs of corresponding WDS Link node |
| 653 | #define CFG_CNF_PM_MCAST_BUF 0xFC17 //[AP] Switch for PM buffereing of Multicast Messages |
| 654 | #define CFG_CNF_MCAST_PM_BUF CFG_CNF_PM_MCAST_BUF //name does not match H-II spec |
Justin P. Mattock | 86f9150 | 2012-09-10 16:01:27 -0700 | [diff] [blame] | 655 | #define CFG_CNF_REJECT_ANY 0xFC18 //[AP] Switch for PM buffering of Multicast Messages |
Henk de Groot | 68c0bdf | 2009-09-27 11:12:52 +0200 | [diff] [blame] | 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 | |
Uwe Kleine-König | f69b0d6 | 2010-07-12 17:15:46 +0200 | [diff] [blame] | 729 | #define CFG_HANDOVER_ADDR 0xFCC0 //[AP] Station MAC Address re-associated with other AP |
Henk de Groot | 68c0bdf | 2009-09-27 11:12:52 +0200 | [diff] [blame] | 730 | #define CFG_SCAN_CHANNEL 0xFCC2 //Channel set for host requested scan |
| 731 | //;?#define CFG_SCAN_CHANNEL_MASK 0xFCC2 // contains |
Uwe Kleine-König | f69b0d6 | 2010-07-12 17:15:46 +0200 | [diff] [blame] | 732 | #define CFG_DISASSOCIATE_ADDR 0xFCC4 //[AP] Station MAC Address to be disassociated |
Henk de Groot | 68c0bdf | 2009-09-27 11:12:52 +0200 | [diff] [blame] | 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 // |
David Kilroy | 4b7ad42 | 2011-09-16 00:20:52 +0100 | [diff] [blame] | 804 | #define CFG_CUR_WPA_INFO_ELEMENT 0xFD8A // |
Henk de Groot | 68c0bdf | 2009-09-27 11:12:52 +0200 | [diff] [blame] | 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 |
Masanari Iida | cb154c1 | 2012-08-27 23:21:13 +0900 | [diff] [blame] | 847 | #define HCF_ERR_TIME_OUT 0x04 // Expected Hermes event did not occur in expected time |
Henk de Groot | 68c0bdf | 2009-09-27 11:12:52 +0200 | [diff] [blame] | 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 |
Masanari Iida | cb154c1 | 2012-08-27 23:21:13 +0900 | [diff] [blame] | 853 | * to accommodate all data |
Henk de Groot | 68c0bdf | 2009-09-27 11:12:52 +0200 | [diff] [blame] | 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 |
David Kilroy | 2a83cb0 | 2011-09-16 00:20:56 +0100 | [diff] [blame] | 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 |
Henk de Groot | 68c0bdf | 2009-09-27 11:12:52 +0200 | [diff] [blame] | 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) |
Uwe Kleine-König | 54669fd | 2010-09-01 15:40:27 +0200 | [diff] [blame] | 1004 | #define CFG_CURRENT_LINK_STATUS 0x090B //Latest link status got through 0xF200 LinkEvent |
Henk de Groot | 68c0bdf | 2009-09-27 11:12:52 +0200 | [diff] [blame] | 1005 | |
| 1006 | /*============================================================ INFORMATION FRAMES =========================*/ |
Justin P. Mattock | 86f9150 | 2012-09-10 16:01:27 -0700 | [diff] [blame] | 1007 | #define CFG_INFO_FRAME_MIN 0xF000 //lowest value representing an Information Frame |
Henk de Groot | 68c0bdf | 2009-09-27 11:12:52 +0200 | [diff] [blame] | 1008 | |
| 1009 | #define CFG_TALLIES 0xF100 //Communications Tallies |
| 1010 | #define CFG_SCAN 0xF101 //Scan results |
| 1011 | #define CFG_PRS_SCAN 0xF102 //Probe Response Scan results |
| 1012 | |
| 1013 | #define CFG_LINK_STAT 0xF200 //Link Status |
| 1014 | /* 1 through 5 are F/W defined values, produced by CFG_LINK_STAT frame |
| 1015 | * 1 through 5 are shared by CFG_LINK_STAT, IFB_LinkStat and IFB_DSLinkStat |
| 1016 | * 1 plays a double role as CFG_LINK_STAT_CONNECTED and as bit reflecting: |
| 1017 | * - connected: ON |
| 1018 | * - disconnected: OFF |
| 1019 | */ |
| 1020 | #define CFG_LINK_STAT_CONNECTED 0x0001 |
| 1021 | #define CFG_LINK_STAT_DISCONNECTED 0x0002 |
| 1022 | #define CFG_LINK_STAT_AP_CHANGE 0x0003 |
| 1023 | #define CFG_LINK_STAT_AP_OOR 0x0004 |
| 1024 | #define CFG_LINK_STAT_AP_IR 0x0005 |
| 1025 | #define CFG_LINK_STAT_FW 0x000F //mask to isolate F/W defined bits |
| 1026 | //#define CFG_LINK_STAT_TIMER 0x0FF0 //mask to isolate OOR timer |
| 1027 | //#define CFG_LINK_STAT_DS_OOR 0x2000 //2000 and up are IFB_LinkStat specific |
| 1028 | //#define CFG_LINK_STAT_DS_IR 0x4000 |
| 1029 | #define CFG_LINK_STAT_CHANGE 0x8000 |
| 1030 | #define CFG_ASSOC_STAT 0xF201 //Association Status |
| 1031 | #define CFG_SECURITY_STAT 0xF202 //Security Status |
| 1032 | #define CFG_UPDATED_INFO_RECORD 0xF204 //Updated Info Record |
| 1033 | |
| 1034 | /*============================================================ CONFIGURATION RECORDS ======================*/ |
| 1035 | /***********************************************************************************************************/ |
| 1036 | |
| 1037 | /****************************** S T R U C T U R E D E F I N I T I O N S **********************************/ |
| 1038 | |
| 1039 | //Quick&Dirty to get download for DOS ODI Hermes-II running typedef LTV_STRCT FAR * LTVP; |
| 1040 | typedef LTV_STRCT FAR * LTVP; // i.s.o #define LTVP LTV_STRCT FAR * |
| 1041 | |
| 1042 | #if defined WVLAN_42 || defined WVLAN_43 //;?keepup with legacy a little while longer (4aug2003) |
| 1043 | typedef struct DUI_STRCT { /* "legacy", still used by WVLAN42/43, NDIS drivers use WLAPI */ |
| 1044 | void FAR *ifbp; /* Pointer to IFB |
| 1045 | * returned from MSF to USF by uil_connect |
| 1046 | * passed from USF to MSF as a "magic cookie" by all other UIL function calls |
| 1047 | */ |
| 1048 | hcf_16 stat; // status returned from MSF to USF |
| 1049 | hcf_16 fun; // command code from USF to MSF |
| 1050 | LTV_STRCT ltv; /* LTV structure |
| 1051 | *** during uil_put_info: |
| 1052 | * the L, T and V-fields carry information from USF to MSF |
| 1053 | *** during uil_get_info: |
| 1054 | * the L and T fields carry information from USF to MSF |
| 1055 | * the L and V-fields carry information from MSF to USF |
| 1056 | */ |
| 1057 | } DUI_STRCT; |
| 1058 | typedef DUI_STRCT FAR * DUIP; |
| 1059 | #endif //defined WVLAN_42 || defined WVLAN_43 //;?keepup with legacy a liitle while longer (4aug2003) |
| 1060 | |
| 1061 | |
| 1062 | typedef struct CFG_CMD_NIC_STRCT { // CFG_CMD_NIC (0x0860) Hermes Engineering command |
| 1063 | hcf_16 len; //default length of RID |
| 1064 | hcf_16 typ; //RID identification as defined by Hermes |
| 1065 | hcf_16 cmd; //Command code (0x003F) and control bits (0xFFC0) |
| 1066 | hcf_16 parm0; //parameters for Hermes Param0 register |
| 1067 | hcf_16 parm1; //parameters for Hermes Param1 register |
| 1068 | hcf_16 parm2; //parameters for Hermes Param2 register |
| 1069 | hcf_16 stat; //result code from Hermes Status register |
| 1070 | hcf_16 resp0; //responses from Hermes Resp0 register |
| 1071 | hcf_16 resp1; //responses from Hermes Resp1 register |
| 1072 | hcf_16 resp2; //responses from Hermes Resp2 register |
| 1073 | hcf_16 hcf_stat; //result code from cmd_exe routine |
| 1074 | hcf_16 ifb_err_cmd; //IFB_ErrCmd |
| 1075 | hcf_16 ifb_err_qualifier; //IFB_ErrQualifier |
| 1076 | } CFG_CMD_NIC_STRCT; |
| 1077 | |
| 1078 | |
| 1079 | typedef struct CFG_DRV_INFO_STRCT { //CFG_DRV_INFO (0x0825) driver information |
| 1080 | hcf_16 len; //default length of RID |
| 1081 | hcf_16 typ; //RID identification as defined by Hermes |
| 1082 | hcf_8 driver_name[8]; //Driver name, 8 bytes, right zero padded |
| 1083 | hcf_16 driver_version; //BCD 2 digit major and 2 digit minor driver version |
| 1084 | hcf_16 HCF_version; //BCD 2 digit major and 2 digit minor HCF version |
| 1085 | hcf_16 driver_stat; // |
| 1086 | hcf_16 IO_address; //base IO address used by NIC |
| 1087 | hcf_16 IO_range; //range of IO addresses used by NIC |
| 1088 | hcf_16 IRQ_number; //Interrupt used by NIC |
| 1089 | hcf_16 card_stat; /*NIC status |
| 1090 | @* 0x8000 Card present |
| 1091 | @* 0x4000 Card Enabled |
| 1092 | @* 0x2000 Driver incompatible with NIC Primary Functions |
| 1093 | @* 0x1000 Driver incompatible with NIC Station Functions */ |
| 1094 | hcf_16 frame_type; /*Frame type |
| 1095 | @* 0x000 802.3 |
| 1096 | @* 0x008 802.11 */ |
| 1097 | hcf_32 drv_info; /*driver specific info |
| 1098 | * CE: virtual I/O base */ |
| 1099 | }CFG_DRV_INFO_STRCT; |
| 1100 | |
| 1101 | #define COMP_ID_FW_PRI 21 //Primary Functions Firmware |
| 1102 | #define COMP_ID_FW_INTERMEDIATE 22 //Intermediate Functions Firmware |
| 1103 | #define COMP_ID_FW_STA 31 //Station Functions Firmware |
| 1104 | #define COMP_ID_FW_AP 32 //AP Functions Firmware |
| 1105 | #define COMP_ID_FW_AP_FAKE 331 //AP Functions Firmware |
| 1106 | |
| 1107 | #define COMP_ID_MINIPORT_NDIS_31 41 //Windows 9x/NT Miniport NDIS 3.1 |
| 1108 | #define COMP_ID_PACKET 42 //Packet |
| 1109 | #define COMP_ID_ODI_16 43 //DOS ODI |
| 1110 | #define COMP_ID_ODI_32 44 //32-bits ODI |
| 1111 | #define COMP_ID_MAC_OS 45 //Macintosh OS |
| 1112 | #define COMP_ID_WIN_CE 46 //Windows CE Miniport |
| 1113 | //#define COMP_ID_LINUX_PD 47 //Linux, HCF-light based, MSF source code in Public Domain |
| 1114 | #define COMP_ID_MINIPORT_NDIS_50 48 //Windows 9x/NT Miniport NDIS 5.0 |
| 1115 | #define COMP_ID_LINUX 49 /*Linux, GPL'ed HCF based, full source code in Public Domain |
| 1116 | *thanks to Andreas Neuhaus */ |
| 1117 | #define COMP_ID_QNX 50 //QNX |
| 1118 | #define COMP_ID_MINIPORT_NDIS_50_USB 51 //Windows 9x/NT Miniport NDIS 4.0 |
| 1119 | #define COMP_ID_MINIPORT_NDIS_40 52 //Windows 9x/NT Miniport NDIS 4.0 |
| 1120 | #define COMP_ID_VX_WORKS_ENDSTA 53 // VxWorks END Station driver |
| 1121 | #define COMP_ID_VX_WORKS_ENDAP 54 // VxWorks END Access Point driver |
| 1122 | //;?#define COMP_ID_MAC_OS_???? 55 //;?check with HM |
| 1123 | #define COMP_ID_VX_WORKS_END 56 // VxWorks END Station/Access Point driver |
| 1124 | // 57 //NucleusOS@ARM Driver. |
| 1125 | #define COMP_ID_WSU 63 /* WaveLAN Station Firmware Update utility |
| 1126 | * variant 1: Windows |
| 1127 | * variant 2: DOS |
| 1128 | */ |
| 1129 | #define COMP_ID_AP1 81 //WaveLAN/IEEE AP |
| 1130 | #define COMP_ID_EC 83 //WaveLAN/IEEE Ethernet Converter |
| 1131 | #define COMP_ID_UBL 87 //USB Boot Loader |
| 1132 | |
| 1133 | #define COMP_ROLE_SUPL 0x00 //supplier |
| 1134 | #define COMP_ROLE_ACT 0x01 //actor |
| 1135 | |
| 1136 | //Supplier - actor |
| 1137 | #define COMP_ID_MFI 0x01 //Modem - Firmware I/F |
| 1138 | #define COMP_ID_CFI 0x02 //Controller - Firmware I/F |
| 1139 | #define COMP_ID_PRI 0x03 //Primary Firmware - Driver I/F |
| 1140 | #define COMP_ID_STA 0x04 //Station Firmware - Driver I/F |
| 1141 | #define COMP_ID_DUI 0x05 //Driver - Utility I/F |
| 1142 | #define COMP_ID_HSI 0x06 //H/W - Driver I/F |
| 1143 | #define COMP_ID_DAI 0x07 //API - Driver I/F |
| 1144 | #define COMP_ID_APF 0x08 //H/W - Driver I/F |
| 1145 | #define COMP_ID_INT 0x09 //Intermediate FW - Driver I/F |
| 1146 | |
| 1147 | #ifdef HCF_LEGACY |
| 1148 | #define HCF_ACT_ACS_SCAN HCF_ACT_PRS_SCAN |
| 1149 | #define UIL_ACT_ACS_SCAN UIL_ACT_PRS_SCAN |
| 1150 | #define MDD_ACT_ACS_SCAN MDD_ACT_PRS_SCAN |
| 1151 | #define CFG_ACS_SCAN CFG_PRS_SCAN |
| 1152 | #endif // HCF_LEGACY |
| 1153 | |
| 1154 | #endif // MDD_H |
| 1155 | |