1 /* 2 * public_commands.h 3 * 4 * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 11 * * Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * * Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in 15 * the documentation and/or other materials provided with the 16 * distribution. 17 * * Neither the name Texas Instruments nor the names of its 18 * contributors may be used to endorse or promote products derived 19 * from this software without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 */ 33 34 /********************************************************************************************************************** 35 36 FILENAME: public_commands.h 37 38 DESCRIPTION: Command definitions shared with host 39 40 41 42 ***********************************************************************************************************************/ 43 #ifndef PUBLIC_COMMANDS_H 44 #define PUBLIC_COMMANDS_H 45 46 47 #include "public_types.h" 48 #include "public_radio.h" 49 50 typedef enum 51 { 52 CMD_INTERROGATE = 1, /*use this to read information elements*/ 53 CMD_CONFIGURE = 2, /*use this to write information elements*/ 54 CMD_ENABLE_RX = 3, 55 CMD_ENABLE_TX = 4, 56 CMD_DISABLE_RX = 5, 57 CMD_DISABLE_TX = 6, 58 CMD_SCAN = 8, 59 CMD_STOP_SCAN = 9, 60 61 CMD_START_JOIN = 11, 62 CMD_SET_KEYS = 12, 63 CMD_READ_MEMORY = 13, 64 CMD_WRITE_MEMORY = 14, 65 66 CMD_SET_TEMPLATE = 19, 67 CMD_TEST = 23, 68 69 CMD_NOISE_HIST = 28, 70 71 CMD_LNA_CONTROL = 32, 72 CMD_SET_BCN_MODE = 33, 73 74 CMD_MEASUREMENT = 34, 75 CMD_STOP_MEASUREMENT = 35, 76 CMD_DISCONNECT = 36, 77 CMD_SET_PS_MODE = 37, 78 79 CMD_CHANNEL_SWITCH = 38, 80 CMD_STOP_CHANNEL_SWICTH = 39, 81 82 CMD_AP_DISCOVERY = 40, 83 CMD_STOP_AP_DISCOVERY = 41, 84 85 CMD_SPS_SCAN = 42, 86 CMD_STOP_SPS_SCAN = 43, 87 88 CMD_HEALTH_CHECK = 45, 89 CMD_DEBUG = 46, 90 CMD_TRIGGER_SCAN_TO = 47, 91 92 CMD_CONNECTION_SCAN_CFG = 48, 93 CMD_CONNECTION_SCAN_SSID_CFG = 49, 94 CMD_START_PERIODIC_SCAN = 50, 95 CMD_STOP_PERIODIC_SCAN = 51, 96 CMD_SET_STA_STATE = 52, 97 98 NUM_COMMANDS, 99 MAX_COMMAND_ID = 0xFFFF 100 } Command_enum; 101 102 #ifdef HOST_COMPILE 103 typedef uint16 Command_e; 104 #else 105 typedef Command_enum Command_e; 106 #endif 107 108 109 #ifdef HOST_COMPILE 110 111 #define CMD_MAILBOX_IDLE 0 112 #define CMD_STATUS_SUCCESS 1 113 #define CMD_STATUS_UNKNOWN_CMD 2 114 #define CMD_STATUS_UNKNOWN_IE 3 115 #define CMD_STATUS_REJECT_MEAS_SG_ACTIVE 11 116 #define CMD_STATUS_RX_BUSY 13 117 #define CMD_STATUS_INVALID_PARAM 14 118 #define CMD_STATUS_TEMPLATE_TOO_LARGE 15 119 #define CMD_STATUS_OUT_OF_MEMORY 16 120 #define CMD_STATUS_STA_TABLE_FULL 17 121 #define CMD_STATUS_RADIO_ERROR 18 122 #define CMD_STATUS_WRONG_NESTING 19 123 #define CMD_STATUS_TIMEOUT 21 /* Driver internal use.*/ 124 #define CMD_STATUS_FW_RESET 22 /* Driver internal use.*/ 125 #define MAX_COMMAND_STATUS MAX_POSITIVE16 126 127 #else 128 129 typedef enum 130 { 131 CMD_MAILBOX_IDLE = 0, 132 CMD_STATUS_SUCCESS = 1, 133 CMD_STATUS_UNKNOWN_CMD = 2, 134 CMD_STATUS_UNKNOWN_IE = 3, 135 CMD_STATUS_REJECT_MEAS_SG_ACTIVE = 11, 136 CMD_STATUS_RX_BUSY = 13, 137 CMD_STATUS_INVALID_PARAM = 14, 138 CMD_STATUS_TEMPLATE_TOO_LARGE = 15, 139 CMD_STATUS_OUT_OF_MEMORY = 16, 140 CMD_STATUS_STA_TABLE_FULL = 17, 141 CMD_STATUS_RADIO_ERROR = 18, 142 CMD_STATUS_WRONG_NESTING = 19, 143 CMD_STATUS_TIMEOUT = 21, /* Driver internal use.*/ 144 CMD_STATUS_FW_RESET = 22, /* Driver internal use.*/ 145 MAX_COMMAND_STATUS = MAX_POSITIVE16 146 } CommandStatus_enum; 147 148 #endif 149 150 #ifdef HOST_COMPILE 151 typedef uint16 CommandStatus_e; 152 #else 153 typedef CommandStatus_enum CommandStatus_e; 154 #endif 155 156 #define MAX_CMD_PARAMS 610 157 158 #define DEBUG_INDICATOR 0x8000 159 160 typedef struct 161 { 162 Command_e cmdID; 163 CommandStatus_e cmdStatus; 164 uint8 parameters[MAX_CMD_PARAMS]; 165 } Command_t; 166 167 168 /****************************************************************************** 169 170 ID: CMD_INTERROGATE 171 Desc: This command requests an information element from the WiLink. The 172 interface for this command is somewhat different from other commands 173 since the interface is bi-directional and asymmetric. 174 The host structure consists of the Command ID, a Command Status 175 (returned by WiLink) place holder, and the Information Element Heading 176 (ID and expected length). 177 The response to that command is a buffer of the information element's 178 actual values returned by the WiLink just after the command is issued. 179 The response to that command is a buffer of the information element's 180 actual values returned by the WiLink just after the command is issued. 181 Params: InfoElement_t - see below. 182 183 184 ******************************************************************************/ 185 /* 186 Description of InfoElement structure - defined in "public_infoele.h" 187 offset length source description 188 ====== ====== ====== =========== 189 0 2 host Information Element ID - contains the ID of the requested 190 information element (refer to InfoElement_enum in 191 pblic_infoele.h). In response to this command, the WiLink 192 writes the requested information element to the response area 193 for the command mailbox. 194 2 4 wilink Length - the length of the response (different for each IE 195 according to definitions in public_infoele.h). 196 4 Length wilink IE payload according to definition in public_infoele.h. 197 */ 198 199 200 201 /****************************************************************************** 202 203 ID: CMD_CONFIGURE 204 Desc: This command configures an information element in the WiLink. 205 Params: InfoElement_t - see below. 206 207 ******************************************************************************/ 208 /* 209 Description of InfoElement structure - defined in "public_infoele.h" 210 offset length source description 211 ====== ====== ====== =========== 212 0 2 host Information Element ID - contains the ID of the requested 213 information element (refer to InfoElement_enum in 214 pblic_infoele.h). In response to this command, the WiLink 215 writes the requested information element to the response area 216 for the command mailbox. 217 2 4 host Length - the length of the response (different for each IE 218 according to definitions in public_infoele.h). 219 4 Length host IE payload according to definition in public_infoele.h. 220 */ 221 222 223 /****************************************************************************** 224 225 ID: CMD_ENABLE_RX 226 Desc: This command enables the normal reception of frames. 227 Params: Channel Number - this field indicates the radio channel on which to 228 receive data. This parameter also sets the channel on 229 which to transmit. The last channel number used, 230 regardless of the order in which the ENABLE_RX and 231 ENABLE_TX commands are issued, is the channel number 232 for both RX and TX. This command must be issued after 233 the host has set all necessary configuration elements 234 appropriately. 235 236 ******************************************************************************/ 237 238 239 240 /****************************************************************************** 241 242 ID: CMD_ENABLE_TX 243 Desc: This command enables the normal transmission of frames. 244 Params: Channel Number - this field indicates the radio channel on which to 245 transmit data. This parameter also sets the channel on 246 which to receive. The last channel number used, 247 regardless of the order in which the ENABLE_RX and 248 ENABLE_TX commands are issued, is the channel number 249 for both RX and TX. This command must be issued after 250 the host has set all necessary configuration elements 251 appropriately. 252 253 ******************************************************************************/ 254 255 /****************************************************************************** 256 257 ID: CMD_DISABLE_RX 258 Desc: This command disables the normal reception of packets over the 259 Baseband interface. 260 Params: None 261 262 ******************************************************************************/ 263 264 /****************************************************************************** 265 266 ID: CMD_DISABLE_TX 267 Desc: This command disables the normal transmission of frames. 268 Params: None. 269 270 ******************************************************************************/ 271 272 /****************************************************************************** 273 274 ID: CMD_SCAN 275 Desc: This command instructs the WiLink to scan for BSS/IBSSs. The host 276 may perform either an active scan or a passive scan. During an active 277 scan, the WiLink transmits a probe request on the specified channel(s) 278 and then listens for beacon/probe responses. During a passive scan, the 279 WiLink monitors the specified channel(s) for beacons. 280 The WiLink sends SCAN_COMPLETE event to notify the host when it has 281 completed a scan. 282 Params: ScanParameters_t - see below 283 284 ******************************************************************************/ 285 /* 286 Offset Length Definition 287 0 8 RX filters for Scan (refer to ACXRxConfigStruct) 288 8 2 Scan options (Band select, Voice mode and Scan type = Active/Passive) 289 10 1 NumChannels 290 11 1 Number of Probe requests (used for Active scan) 291 12 2 Probe request rate & modulation 292 14 1 AC trigger (for Voice mode only) 293 15 1 SSID length 294 16 32 SSID string (Null terminated) 295 48 2 Channel [0] ScanMinDuration 296 50 2 Channel [0] ScanMaxDuration 297 52 6 Channel [0] BSSID (4 bytes LOW and 2 bytes HIGH) 298 58 1 Channel [0].bit0-3: Early Termination count. Bit 4-5: Condition 299 59 1 Channel [0] TX power level for Scan (0 means do not change - other values:1-5) 300 60 1 Channel [0] Channel 301 61 3 Channel [0] Reserved 302 64-404 340 Optional Channel [1] - Channel [15] - same format as Channel [0] fields above. 303 */ 304 305 /* Defines for Rx "ConfigOptions".*/ 306 /* Only bits 2-10 can be configured by the Driver".*/ 307 #define CFG_RX_SERIAL BIT_0 /* 0 = use parallel interface, 1 = use serial interface from ACX101- not valid.*/ 308 #define CFG_RX_RAW BIT_1 /* 1 = write all data from baseband to frame buffer including PHY header.*/ 309 #define CFG_RX_FCS BIT_2 /* 1 = write FCS to end of frame in memory, 0 = do not write FCS to memory.*/ 310 #define CFG_RX_ALL_GOOD BIT_3 /* promiscuous mode, receive all good frames.*/ 311 #define CFG_UNI_FILTER_EN BIT_4 /* local MAC address filter enable.*/ 312 #define CFG_BSSID_FILTER_EN BIT_5 /* BSSID filter enable.*/ 313 #define CFG_MC_FILTER_EN BIT_6 /* 0 = receive all multicast, 1 = use one or both multicast address filters.*/ 314 #define CFG_MC_ADDR0_EN BIT_7 /* 1 = receive frames from mc_addr0, 0 = do not use this filter.*/ 315 #define CFG_MC_ADDR1_EN BIT_8 /* 1 = receive frames from mc_addr1, 0 = do not use this filter .*/ 316 #define CFG_BC_REJECT_EN BIT_9 /* 0 = receive all broadcast, 1 = filter all broadcast.*/ 317 #define CFG_SSID_FILTER_EN BIT_10 /* SSID Filter Enable.*/ 318 #define CFG_RX_INT_FCS_ERROR BIT_11 /* 1 = give rx complete interrupt for FCS errors.*/ 319 #define CFG_RX_INT_ENCRYPTED BIT_12 /* 1 = only give rx header interrupt if frame is encrypted.*/ 320 #define CFG_RX_WR_RX_STATUS BIT_13 /* 0 = do not write three status words, 1 = write three receive status words to top of rx'd MPDU.*/ 321 #define CFG_RX_FILTER_NULTI BIT_14 /* 1 = filter multicast/broadcast frame if SA matchs local MAC addr->.*/ 322 #define CFG_RX_RESERVE BIT_15 /* reserve.*/ 323 #define CFG_RX_TIMESTAMP_TSF BIT_16 /* 1 = sample frame's' arrival time in 32bits TSF, 0 = write it in MAC time stamp.*/ 324 325 326 /* Defines for Rx "FilterOptions".*/ 327 /* The rx filter enables control what type of receive frames will be rejected or received by the rx hardware*/ 328 /* 1 = frame is written to memory,*/ 329 /* 0 = not written to memory, rejected.*/ 330 #define CFG_RX_RSV_EN BIT_0 /* reserved types and subtypes.*/ 331 #define CFG_RX_RCTS_ACK BIT_1 /* rts, cts, ack frames.*/ 332 #define CFG_RX_PRSP_EN BIT_2 /* probe response.*/ 333 #define CFG_RX_PREQ_EN BIT_3 /* probe request.*/ 334 #define CFG_RX_MGMT_EN BIT_4 /* type = management.*/ 335 #define CFG_RX_FCS_ERROR BIT_5 /* frames with FCS errors.*/ 336 #define CFG_RX_DATA_EN BIT_6 /* type = data.*/ 337 #define CFG_RX_CTL_EN BIT_7 /* type = control.*/ 338 #define CFG_RX_CF_EN BIT_8 /* contention free frames.*/ 339 #define CFG_RX_BCN_EN BIT_9 /* beacons.*/ 340 #define CFG_RX_AUTH_EN BIT_10 /* authentication, deauthentication.*/ 341 #define CFG_RX_ASSOC_EN BIT_11 /* association related frames (all 5 subtypes assoc req/resp,*/ 342 343 344 typedef struct 345 { 346 uint32 ConfigOptions; 347 uint32 FilterOptions; 348 } ACXRxConfigStruct; 349 350 351 /* ScanOptions bit mask field.*/ 352 #define SCAN_ACTIVE 0 353 #define SCAN_PASSIVE 1 /* 1 = passive scan, 0 = active scan*/ 354 /* #define SCAN_5GHZ_BAND 2 */ /* 1 = scan channel list in 5 Ghz band, 0 = scan channel list in 2.4 Ghz band*/ 355 #define TRIGGERED_SCAN 2 /* 1 = Triggered scan, 0 = Normal scan*/ 356 #define SCAN_PRIORITY_HIGH 4 /* 1 = High priority scan, 0 = Low priority scan*/ 357 358 typedef uint8 TidTrigger_t; 359 360 /* General scan parameters.*/ 361 typedef struct 362 { 363 ACXRxConfigStruct rxCfg; /* Rx filter to be used for each channel scan. */ 364 /* The BSSID filter enable will be set (by the */ 365 /* scan process) to ON for a specific channel if*/ 366 /* the BSSID of this channel is a unicast address.*/ 367 /* Otherwise it will be set to OFF (Refer to */ 368 /* ACXRxConfig IE in public_infoele.h).*/ 369 370 uint16 scanOptions; /* This bitwise field indicates the scan options. */ 371 /* Bits [4:15] are reserved. */ 372 /* Bits [0:3] are defined as follows: */ 373 /* Scan Type (bit 0) - When this bit is set, the */ 374 /* WiLink performs a passive scan. When this bit*/ 375 /* is cleared, the WiLink performs an active scan. */ 376 /* Band Select (bit 1) - When this bit is set, the*/ 377 /* WiLink scans the specified channels in the */ 378 /* 5GHz band. When this bit is cleared, the */ 379 /* WiLink scans the specified channels in the */ 380 /* 2.4GHz band. */ 381 /* Voice mode (bit 2) - When this bit is set, */ 382 /* the request is for a voice scan. When this bit*/ 383 /* is cleared, the request is for a normal scan. */ 384 /* Scan priority (bit 3) - When this bit is set, */ 385 /* the request is for a high priority scan. When*/ 386 /* this bit is cleared, the request is for a low*/ 387 /* priority scan.*/ 388 389 uint8 numChannels; /* Number of scan channels in the list (minimum is*/ 390 /* 1, maximum is 30).*/ 391 392 uint8 numOfProbRqst; /* This field indicates the number of probe */ 393 /* requests to send per channel, in active scan. */ 394 395 EHwRateBitFiled txdRateSet; /* This EHwRateBitFiled format field specifies the rate and */ 396 /* modulation to transmit the probe request during*/ 397 /* an active scan. It is not used for passive scans.*/ 398 399 TidTrigger_t tidTrigger; /* used for TidTriggered scan only.*/ 400 401 uint8 ssidLength; /* This field specifies the size of the SSID, */ 402 /* which can be up to 32 bytes long. If this field*/ 403 /* equals to zero, SSID filter is not applied. */ 404 405 uint8 padding1[2]; /* in order to align */ 406 407 408 uint32 ssidStr[8]; /* This field specifies the SSID packets from that*/ 409 /* are relevant for the Scan result. The WiLink*/ 410 /* uses this information to filter beacon, probe*/ 411 /* response frames (if the SSID length field of */ 412 /* this command structure is not zero) */ 413 414 RadioBand_e band; /* Band to scan */ 415 416 uint8 useSsidList; /* Whether to use SSID list (configured seperately) 417 when transmitting probe-requests */ 418 419 uint8 scanTag; /* Scan results tag */ 420 421 uint8 padding2; /* in order to align */ 422 423 } BasicScanParameters_t; 424 425 426 427 #define SCAN_ET_COND_MASK 0x30 428 #define SCAN_ET_COUNT_MASK 0x0F 429 430 #define SCAN_MAX_NUM_OF_CHANNELS 24 431 432 /* Early Termination condition (bits 4-5) - This field can have one of the following */ 433 /* values (note that bits 0-3 indicates Early Termination count): */ 434 typedef enum 435 { 436 ET_COND_DISABLE = 0x00, /* Disable - No early termination condition.*/ 437 438 ET_COND_BEACON = 0x10, /* Beacon only. When this value is selected, the */ 439 /* Early Termination count field specifies the */ 440 /* maximum number of beacons to collect before */ 441 /* ending a scan. */ 442 443 ET_COND_PROBE_RESP = 0x20, /* Probe responses only. When this value is */ 444 /* selected, the Early Termination count field */ 445 /* specifies the maximum number of probe responses*/ 446 /* to collect before ending a scan. */ 447 448 ET_COND_BEACON_PROBE_RESP = 0x30,/* Beacon/probe response. When this value is */ 449 /* selected, the Early Termination count field */ 450 /* specifies the maximum number of beacons or probe*/ 451 /* responses to collect before ending a scan. */ 452 453 ET_COND_INVALID = 0xFF 454 } ETCondition_enum; 455 456 #ifdef HOST_COMPILE 457 typedef uint8 ETCondition_e; 458 #else 459 typedef ETCondition_enum ETCondition_e; 460 #endif 461 462 463 typedef uint8 ETCondCount_t; 464 465 466 467 #define PROCESS_SCAN_IS_HIGH(pScanParameters) ((pScanParameters)->basicScanParameters.scanOptions & SCAN_PRIORITY_HIGH) 468 #define PROCESS_SCAN_IS_LOW(pScanParameters) ((PROCESS_SCAN_IS_HIGH(pScanParameters)) == 0) 469 470 471 /* Per-Channel scan parameters.*/ 472 typedef struct 473 { 474 475 uint32 scanMinDuration; /* For active scans, this field specifies the */ 476 /* minimum amount of time, in time units (TUs), */ 477 /* to wait for a frame on a channel. This */ 478 /* parameter is not used for passive scans. The*/ 479 /* value can range from 0 to 65535 TUs */ 480 /* (67.1 seconds). */ 481 482 uint32 scanMaxDuration; /* For active scans, this field specifies the */ 483 /* maximum amount of time, in time units (TUs), */ 484 /* to wait for a probe response on a channel.*/ 485 /* For passive scans, this field specifies the */ 486 /* amount of time, in time units (TUs), to listen*/ 487 /* on a channel. The value can range from 0 to */ 488 /* 65535 TUs (67.1 seconds). */ 489 490 491 uint32 bssIdL; /* 32 LSBits of BSSID of the AP to scan for. */ 492 /* If scanning on this channel any BSSID, this */ 493 /* field shall be set to broadcast BSSID. */ 494 495 uint16 bssIdH; /* 16 MSBits of BSSID of the AP to scan for.*/ 496 497 ETCondCount_t ETCondCount; /* bit 0-3: Early Termination count - This field */ 498 /* defines the maximum number of beacons*/ 499 /* or probe responses or both (according*/ 500 /* to condition) to collect before ending*/ 501 /* a scan.*/ 502 503 /* Bit 4-5: Early Termination Condition (refer */ 504 /* to ETCondition_enum).*/ 505 506 uint8 txPowerAttenuation; /* TX power level to be used per channel scanned. */ 507 /* If 0, leave normal TX power level for this */ 508 /* channel. Range: 0 - 20 [dB].*/ 509 510 Channel_e channel; /* Channel number to scan, valid range 0-255 */ 511 /* (1-14 for 802.11b). */ 512 513 Bool_e dfsCandidate; /* FW internal use only! */ 514 Bool_e activityDetected; /* FW internal use only! */ 515 516 uint8 padding[1]; /* for alignment to 32 bits boundry*/ 517 } BasicScanChannelParameters_t; 518 519 /* The Scan command structure.*/ 520 typedef struct 521 { 522 BasicScanParameters_t basicScanParameters; /* refer to BasicScanParameters_t */ 523 /* definition*/ 524 525 BasicScanChannelParameters_t basicScanChannelParameters[SCAN_MAX_NUM_OF_CHANNELS]; 526 } ScanParameters_t; 527 528 /***************************************************************************** 529 530 ID: CMD_TRIGGER_SCAN_TO 531 Desc: This Command will configure the enhanced Trigger Scan Timeout 532 information. 533 To use legacy Trigger Scan, configure the parameter to 0 534 Params: None 535 536 ******************************************************************************/ 537 typedef struct 538 { 539 uint32 slicedScanTimeOut; /* 0 - Split Scan Disable 540 any other value will represent the timeout 541 for each channel "mini scan" in uSec */ 542 }enhancedTriggerTO_t; 543 544 545 546 /***************************************************************************** 547 548 ID: CMD_STOP_SCAN 549 Desc: This command instructs the WiLink to terminate any scan in progress. 550 After processing this command, the WiLink returns to its previous state 551 (the state before the scan was started) and generates the SCAN_COMPLETE 552 information message. 553 Params: None 554 555 ******************************************************************************/ 556 557 558 559 /****************************************************************************** 560 561 ID: CMD_START_JOIN 562 Desc: This command instructs the WiLink to either join a BSS or IBSS, or 563 start an IBSS. When the device has joined the BSS or IBSS the Join 564 Complete event is raised to the host. 565 Params: StartJoinRequest_t - see below. 566 567 ******************************************************************************/ 568 569 /* 570 * Join command control bit mask field: 571 */ 572 573 574 575 /* Cyclic counter in range 1-7, advanced on every Join command to enable the FW distinguish 576 between connection sessions and drop obsolete Tx packets. */ 577 #define JOIN_CMD_CTRL_TX_SESSION (BIT_3 | BIT_2 | BIT_1) 578 579 /* When this bit is set,the firmware will flush all Tx frames in the pipe and will not transmit them. */ 580 #define JOIN_CMD_CTRL_TX_FLUSH BIT_7 581 582 /* Offsets of the above fields */ 583 #define JOIN_CMD_CTRL_OFFSET_TX_SESSION 1 584 #define JOIN_CMD_CTRL_OFFSET_TX_FLUSH 7 585 586 587 typedef enum 588 { 589 BSS_TYPE_IBSS = 0, 590 BSS_TYPE_STA_BSS = 2, 591 BSS_TYPE_AP_BSS = 3, 592 MAX_BSS_TYPE = 0xFF 593 } BssType_enum; 594 595 #ifdef HOST_COMPILE 596 typedef uint8 BSS_e; 597 #else 598 typedef BssType_enum BSS_e; 599 #endif 600 601 #define MAX_SSID_STR_LEN_BYTESX4 8 602 603 typedef struct 604 { 605 uint32 bssIdL; /* This field indicates the 32 LSBits of the MAC*/ 606 /* address of the BSS to join. */ 607 /* Note: To correctly generate beacon frames, the */ 608 /* byte order of the BSS ID field must be */ 609 /* reversed. for example, if the MAC address of */ 610 /* the AP is 00 7E 99 11 22 33, program the BSS */ 611 /* ID field as 33 22 11 99 7E 00.*/ 612 613 uint16 bssIdH; /* This field indicates the 16 MSBits of the MAC*/ 614 /* address of the BSS to join. */ 615 616 uint16 beaconInterval;/* This field specifies the time between target */ 617 /* beacon transmission times (TBTTs), in time */ 618 /* units (TUs). Valid values are 1 to 1024.*/ 619 620 ACXRxConfigStruct rxFilter; /* This filed is the Rx filter configuration for*/ 621 /* the device while connected to the BSS or IBSS.*/ 622 /* This setting is overridden in case of a */ 623 /* measurement or a scan activity and is reset */ 624 /* after these activities end.*/ 625 626 EHwRateBitFiled basicRateSet; /* For 802.11b, this field specifies the control*/ 627 /* response frame rate for the BSS or IBSS (that*/ 628 /* is, the BSSBasicRateSet parameter in the */ 629 /* 802.11 Specification). The WiLink uses this */ 630 /* field to determine the rate at which to */ 631 /* transmit control frame responses (such as ACK */ 632 /* or CTS frames). */ 633 634 uint8 dtimInterval; /* This field specifies the number of beacon */ 635 /* intervals between DTIM beacon frames. The host*/ 636 /* is only required to set this field when the */ 637 /* BSS Type is infrastructure BSS (STA) or AP. */ 638 /* For an independent BSS, the host should set */ 639 /* this field to 1.*/ 640 641 BSS_e bssType; /* bits 0-2: This bitwise field specifies the type */ 642 /* of BSS to start or join (Refer to BssType_enum). */ 643 /* bit 4: Band - The radio band in which to join*/ 644 /* or start.*/ 645 /* 0 - 2.4GHz band */ 646 /* 1 - 5GHz band*/ 647 /* bits 3, 5-7: Reserved*/ 648 649 Channel_e channelNumber; /* This field specifies the channel number of the*/ 650 /* BSS to join or start. Valid values are 1 to 14. */ 651 /* If the specified channel is not allowed in the*/ 652 /* regulatory domain, the command is rejected and*/ 653 /* the status code 0x0005 is returned in the */ 654 /* Command Status field.*/ 655 656 uint8 ssidLength; /* This field specifies the size of the SSID, which*/ 657 /* can be up to 32 bytes long.*/ 658 659 uint32 ssidStr[MAX_SSID_STR_LEN_BYTESX4]; 660 /* This field specifies the SSID of the BSS to */ 661 /* start or join. The WiLink uses this information*/ 662 /* to filter beacon, probe response and probe */ 663 /* request frames (if configured to do so in bit 10*/ 664 /* in the Receive Configuration field of the */ 665 /* ACXRxConfig information element). */ 666 /* It also uses this information to determine if a*/ 667 /* probe response should be transmitted in */ 668 /* response to a received probe request.*/ 669 670 uint8 ctrl; /* Join command control field (refer to */ 671 /* the JOIN_CMD_CTRL... specified above).*/ 672 673 uint8 reserved[3]; 674 } StartJoinRequest_t; 675 676 677 /****************************************************************************** 678 679 ID: CMD_SET_KEYS 680 Desc: The host issues this command to manage the WEP key cache in the WiLink. 681 The host can issue this command during the configuration or operation 682 phase. 683 Params: SetKey_t - see below. 684 685 ******************************************************************************/ 686 687 #define NUM_ACCESS_CATEGORIES_COPY 4 688 689 #define MAX_KEY_SIZE 32 690 691 typedef enum 692 { 693 KEY_ADD_OR_REPLACE = 1, /* Add or replace a key in the WEP cache*/ 694 KEY_REMOVE = 2, /* Remove a key from the WEP cache*/ 695 KEY_SET_ID = 3, /* Set Key ID*/ 696 MAX_KEY_ACTION = MAX_POSITIVE16 /* force this enum to be uint16*/ 697 } KeyAction_enum; 698 699 #ifdef HOST_COMPILE 700 typedef uint16 KeyAction_e; 701 #else 702 typedef KeyAction_enum KeyAction_e; 703 #endif 704 705 706 /* 707 Key Size+Key Data table (valid value) 708 KeyType_enum Key Type Valid Key Size Key Data Field Format 709 ============ ======== ============== ===================== 710 0x00 WEP default key 5, 13, 29 Key Size bytes of key data 711 712 0x01 WEP key mapping key 5, 13, 29 Key Size bytes of key data 713 714 0x04 AES Group Key 16 16 bytes of key data 715 716 0x05 AES Pairwise Key 16 16 bytes of key data 717 718 0x0A TKIP and MIC Group Key 32 16 bytes of TKIP key data 719 8 bytes of Rx MIC key data 720 8 bytes of Tx MIC key data 721 722 0x0B TKIP and MIC Pairwise Key 32 16 bytes of TKIP key data 723 8 bytes of Rx MIC key data 724 8 bytes of Tx MIC key data 725 726 0x0C GEM and MIC Group Key 32 16 bytes of GEM key data 727 16 bytes of MIC key data 728 729 0x0D GEM and MIC Pairwise Key 32 16 bytes of GEM key data 730 16 bytes of MIC key data 731 732 */ 733 734 735 typedef enum 736 { 737 CIPHER_SUITE_NONE = 0, 738 CIPHER_SUITE_WEP = 1, 739 CIPHER_SUITE_TKIP = 2, 740 CIPHER_SUITE_AES = 3, 741 CIPHER_SUITE_GEM = 4, 742 MAX_KEY_TYPE 743 } CipherSuite_enum; 744 745 #ifdef HOST_COMPILE 746 typedef uint8 CipherSuite_e; 747 #else 748 typedef CipherSuite_enum CipherSuite_e; 749 #endif 750 751 typedef enum 752 { 753 NO_KEY = 0, 754 KEY_SIZE_WEP_64 = 5, 755 KEY_SIZE_WEP_128 = 13, 756 KEY_SIZE_WEP_256 = 29, 757 KEY_SIZE_TKIP = MAX_KEY_SIZE 758 } KeySize_enum; /* WEP keysizes reflect 3 bytes appended from IV.*/ 759 760 #ifdef HOST_COMPILE 761 typedef uint8 KeySize_e; 762 #else 763 typedef KeySize_enum KeySize_e; 764 #endif 765 766 767 typedef struct 768 { 769 uint8 addr[MAC_ADDR_SIZE]; /* This field specifies the MAC address of the station to*/ 770 /* add or remove from the WEP key cache. This field is */ 771 /* ignored if a WEP default key is being added or removed.*/ 772 773 KeyAction_e action; /* This field specifies the action to be performed.*/ 774 /* Refer to KeyAction_enum.*/ 775 776 uint16 reserved; 777 KeySize_e keySize; /* This field indicates the size of the key in bytes */ 778 /* being added. Valid values are listed in the Valid Key */ 779 /* Size column in the above "Key Size+Key Data table". */ 780 781 CipherSuite_e type; /* This field indicates the type of key being added.*/ 782 /* Valid values are listed in the Value column in the*/ 783 /* KeyType_enum.*/ 784 785 uint8 ssidProfile; /* This field indicates the SSID profile for which the */ 786 /* key is set.*/ 787 uint8 id; /* Key ID - For TKIP and AES key types, this field */ 788 /* indicates the value that should be inserted into the*/ 789 /* KeyID field of frames transmitted using this key */ 790 /* entry. For WEP default key types, this field indicates*/ 791 /* the ID of the key to add or remove. */ 792 /* For WEP key mapping key types, this field is ignored.*/ 793 /* Valid values for this field are 0 to 3.*/ 794 795 uint8 reserved2[6]; 796 uint8 key[MAX_KEY_SIZE]; 797 /* This field holds the security key data to add to the*/ 798 /* STA table. The format of this field varies depending*/ 799 /* on the type field. The format of this field for each*/ 800 /* key type is described in the Key Data Field Format */ 801 /* column in the "Key Size+Key Data table", above.*/ 802 803 uint16 AcSeqNum16[NUM_ACCESS_CATEGORIES_COPY]; 804 /* This field indicates the lower part of the PN\IV */ 805 /* sequence number that is used, for the four Access*/ 806 /* Categories.*/ 807 808 uint32 AcSeqNum32[NUM_ACCESS_CATEGORIES_COPY]; 809 /* This field indicates the higher part of the PN\IV */ 810 /* sequence number that is used, for four Access */ 811 /* Categories.*/ 812 813 } SetKey_t; 814 815 816 /****************************************************************************** 817 818 ID: CMD_READ_MEMORY 819 Desc: The host issues this command to read the WiLink device 820 memory/registers. 821 Params: ReadWriteCommand_t - see below. 822 Note: The Base Band address has special handling (16 bits registers and 823 addresses). For more information, see the hardware specification. 824 825 ******************************************************************************/ 826 /****************************************************************************** 827 828 ID: CMD_WRITE_MEMORY 829 Desc: The host issues this command to write the WiLink device memory/registers. 830 Params: ReadWriteCommand_t - see below. 831 Note: The Base Band address has special handling (16 bits registers and 832 addresses). For more information, see the hardware specification. 833 834 ******************************************************************************/ 835 836 #define MAX_READ_SIZE 256 837 838 typedef struct 839 { 840 uint32 addr; /* The address of the memory to read from or write to.*/ 841 uint32 size; /* The amount of data in bytes to read from or write */ 842 /* to the WiLink device.*/ 843 uint8 value[MAX_READ_SIZE]; /* The actual value read from or written to the Wilink.*/ 844 /* The source of this field is the Host in WRITE */ 845 /* command or the Wilink in READ command.*/ 846 } ReadWriteCommand_t; 847 848 849 /****************************************************************************** 850 851 ID: CMD_BEACON 852 Desc: This command specifies the contents of the beacon template stored in 853 the WiLink. 854 Params: PktTemplate_t - see below. 855 856 ******************************************************************************/ 857 858 /****************************************************************************** 859 860 ID: CMD_PROBE_RESP 861 Desc: This command specifies the contents of the probe response template 862 stored in the WiLink. 863 Params: PktTemplate_t - see below. 864 865 ******************************************************************************/ 866 867 /****************************************************************************** 868 869 ID: CMD_NULL_DATA 870 Desc: This command specifies the contents of the Null data template 871 stored in the WiLink. 872 Params: PktTemplate_t - see below. 873 874 ******************************************************************************/ 875 876 /****************************************************************************** 877 878 ID: CMD_PROBE_REQ 879 Desc: This command specifies the contents of the probe request template 880 stored in the WiLink. 881 Params: PktTemplate_t - see below. 882 883 ******************************************************************************/ 884 885 /****************************************************************************** 886 887 ID: CMD_PS_POLL 888 Desc: This command specifies the contents of the PS-poll template 889 stored in the WiLink. 890 Params: PktTemplate_t - see below. 891 892 ******************************************************************************/ 893 894 895 /****************************************************************************** 896 897 ID: CMD_QOS_NULL_DATA 898 Desc: This command specifies the contents of the QOS-Null template 899 stored in the WiLink. 900 Params: PktTemplate_t - see below. 901 902 ******************************************************************************/ 903 /* Template command data structure.*/ 904 typedef enum 905 { 906 TEMPLATE_NULL_DATA = 0, 907 TEMPLATE_BEACON, 908 CFG_TEMPLATE_PROBE_REQ_2_4, 909 CFG_TEMPLATE_PROBE_REQ_5, 910 TEMPLATE_PROBE_RESPONSE, 911 TEMPLATE_QOS_NULL_DATA, 912 TEMPLATE_PS_POLL, 913 TEMPLATE_KLV, 914 TEMPLATE_DISCONNECT, 915 TEMPLATE_PROBE_REQ_2_4, /*for firmware internal use only*/ 916 TEMPLATE_PROBE_REQ_5, /*for firmware internal use only*/ 917 TEMPLATE_BAR, /*for firmware internal use only*/ 918 TEMPLATE_CTS, /* For CTS-to-self (FastCTS) mechanism for BT/WLAN coexistence (SoftGemini). */ 919 TEMPLATE_ARP_RSP, /* Template for Automatic ARP reply by FW */ 920 921 MAX_NUM_OF_TEMPLATES = 0xff 922 } TemplateType_enum; 923 924 #ifdef HOST_COMPILE 925 typedef uint8 TemplateType_e; 926 #else 927 typedef TemplateType_enum TemplateType_e; 928 #endif 929 930 #define MAX_TEMPLATES_SIZE 252 /* according to max size of FW memblock */ 931 #define RATE_MASK_UNSPECIFIED 0 /* Let the FW select the rates mask internally */ 932 933 /* 934 aflag definition: 935 bit field description 936 ========= =========== 937 0 Truncate - If set, then attempts to send a frame stop when the total 938 valid per-rate attempts have been exhausted; 939 otherwise transmissions will continue at the lowest available rate 940 until the appropriate one of the Short Retry Limit, Long Retry Limit, 941 dot11MaxTransmitMsduLifetime, or MAX TX Life Time (in ACXTIDConfig), 942 if supported and supplied, is exhausted. 943 1 Preamble Override - Indicates if the preamble type should be used in TX. 944 2 Preamble Type - The type of the preamble to be used by the policy. 945 0 - long preamble, 946 1 - short preamble. 947 3-7 Reserved 948 */ 949 950 /* definition of single rate policy*/ 951 typedef struct 952 { 953 954 uint32 enabledRates; /* A Bit Mask which indicates which Rates are enabled */ 955 /* The rates bitmap is defined in EHwBitRate. */ 956 /* If set to RATE_MASK_UNSPECIFIED, the FW sets it internally */ 957 958 uint8 shortRetryLimit; /* The dot11ShortRetryLimit used */ 959 /* for Tx retries.*/ 960 961 uint8 longRetryLimit; /* The dot11LongRetryLimit used */ 962 /* for Tx retries. */ 963 964 uint8 aflags; /* Flags controlling attributes */ 965 /* of the transmission. */ 966 /* see above description for the */ 967 /* structure of this field.*/ 968 969 uint8 reserved; 970 }txAttrClass_t; 971 972 /* Template command data structure.*/ 973 typedef struct 974 { 975 uint16 len; 976 TemplateType_e templateType; 977 uint8 index; /* relevant only for KLV_TEMPLATE type */ 978 txAttrClass_t templateTxAttribute; 979 uint8 templateStart[MAX_TEMPLATES_SIZE]; 980 } PktTemplate_t; 981 982 983 /****************************************************************************** 984 985 ID: CMD_NOISE_HIST 986 Desc: This command starts/stops the noise histogram measurements. 987 Params: NoiseHistRequest_t - see below. 988 989 ******************************************************************************/ 990 #define NOISE_HIST_LEN 8 991 992 typedef enum 993 { 994 NOISE_HIST_STOP, 995 NOISE_HIST_START, 996 NOISE_HIST_INVALID = MAX_POSITIVE16 /* Force to be 16 bits enum*/ 997 } NoiseHistMode_enum; 998 999 #ifdef HOST_COMPILE 1000 typedef uint16 NoiseHistMode_e; 1001 #else 1002 typedef NoiseHistMode_enum NoiseHistMode_e; 1003 #endif 1004 1005 typedef struct 1006 { 1007 NoiseHistMode_e mode; /* Start or stop the FW engine. */ 1008 /* Possible values are 1 (Start) and 0 (Stop).*/ 1009 1010 uint16 sampleIntervalUSec; /* The time interval in usec between measurements.*/ 1011 /* Valid values are between 100us (default) and */ 1012 /* 2ms (with 100us jumps). This parameter is */ 1013 /* relevant only when Mode is Start (1).*/ 1014 1015 uint8 thresholds[NOISE_HIST_LEN];/* An array of eight 8 bit thresholds. The FW */ 1016 /* takes noise measurements, once every */ 1017 /* SampleIntervalUSec interval. If the measured */ 1018 /* noise level is between the threshold[X] and */ 1019 /* threshold[X 1], then the FW increments the */ 1020 /* noise histogram counter[X]. */ 1021 /* The counters are read via the */ 1022 /* ACXNoiseHistogramResults IE. This parameter is */ 1023 /* relevant only when Mode is Start (1).*/ 1024 } NoiseHistRequest_t; 1025 1026 1027 /****************************************************************************** 1028 1029 ID: CMD_LNA_CONTROL 1030 Desc: This command controls the LNA state. 1031 Params: LNAControl_t - see below. 1032 1033 ******************************************************************************/ 1034 1035 typedef enum 1036 { 1037 LNA_MODE_MANUAL, /* 0: The LNA is set to manual mode and is turned off.*/ 1038 LNA_MODE_AUTO, /* 1: The LNA is set to automatic mode.*/ 1039 LNA_MODE_INVALID = 0xFF 1040 } LnaMode_enum; 1041 1042 #ifdef HOST_COMPILE 1043 typedef uint8 LnaMode_e; 1044 #else 1045 typedef LnaMode_enum LnaMode_e; 1046 #endif 1047 1048 typedef struct 1049 { 1050 LnaMode_e LNAControlField; /* refer to LnaMode_enum*/ 1051 uint8 padding[3]; /* for alignment to 32 bits boundry*/ 1052 } LNAControl_t; 1053 1054 1055 /****************************************************************************** 1056 1057 ID: CMD_MEASUREMENT 1058 Desc: This command instructs the WiLink device to begin a basic channel 1059 load measurement on the specified channel. When the measurement 1060 process actually starts running the WilLink device will raise the 1061 Measurement Started event. When the measurement process completes as 1062 a result of the end of the measurement duration or a STOP_MEASUREMENT 1063 command, the WilLink device will raise a Measurement Complete event. 1064 Params: MeasurementParameters_t - see below. 1065 1066 ******************************************************************************/ 1067 typedef struct 1068 { 1069 ACXRxConfigStruct rxFilter; /* This field is the Rx filter configuration for the */ 1070 /* device while the measurement process is running. */ 1071 /* When the process ends the previous Rx filter */ 1072 /* configuration is reset. The filter configuration is*/ 1073 /* composed of two 32 bit registers. When they are set*/ 1074 /* to 0xFFFFFFFF the Rx filter configuration is not*/ 1075 /* changed.*/ 1076 1077 uint32 duration; /* Specifies the measurement process duration in */ 1078 /* microseconds. The value of 0 means infinite duration*/ 1079 /* in which only a STOP_MEASUREMENT command can*/ 1080 /* stop the measurement process.*/ 1081 1082 Channel_e channel; /* Channel number on which the measurement is performed,*/ 1083 /* valid range 0-255 (1-14 for 802.11b).*/ 1084 1085 RadioBand_e band; /* Specifies the band to which the channel belongs. */ 1086 /* 0 - 2.4GHz */ 1087 /* 1 - 5GHz , */ 1088 /* 0xFF - Current band.*/ 1089 1090 uint8 scanTag; /* results tag */ 1091 1092 uint8 padding[1]; /* for alignment to 32 bits boundry*/ 1093 } MeasurementParameters_t; 1094 1095 /****************************************************************************** 1096 1097 ID: CMD_STOP_MEASUREMENT 1098 Desc: This command instructs the WiLink to terminate any measurement in 1099 progress. After processing this command, the WiLink returns to its 1100 previous state (the state before the measurement was started) and 1101 generates the Measurment Complete event. 1102 Params: None. 1103 1104 ******************************************************************************/ 1105 1106 /****************************************************************************** 1107 1108 ID: CMD_DISCONNECT 1109 Desc: This command instructs the WiLink device to stop all BSS or IBSS activity. 1110 The device will cancel all of its TSF dependent events and activities. 1111 Power Save dependent activities are an exception to this, therefore 1112 the host must exit Power Save mode by issuing the SET_PS_MODE command 1113 before calling this command. When this command is complete the Disconnect 1114 Complete event is raised to the host and the WiLink device is allowed 1115 to enter the configured low power state. 1116 Params: DisconnectParameters_t - see below. 1117 1118 ******************************************************************************/ 1119 1120 typedef enum 1121 { 1122 DISCONNECT_IMMEDIATE, /* Disconnect without sending any frame */ 1123 DISCONNECT_DE_AUTH, /* Send deauthentication frame upon disconnecting */ 1124 DISCONNECT_DIS_ASSOC /* Send disassociation frame upon disconnecting */ 1125 } DisconnectType_enum; 1126 1127 #ifdef HOST_COMPILE 1128 typedef uint8 DisconnectType_e; 1129 #else 1130 typedef DisconnectType_enum DisconnectType_e; 1131 #endif 1132 1133 1134 1135 typedef struct 1136 { 1137 ACXRxConfigStruct rxFilter; 1138 uint16 disconnectReason; 1139 DisconnectType_e disconnectType; 1140 uint8 padding[1]; /* for alignment to 32 bits boundry */ 1141 } DisconnectParameters_t; 1142 1143 1144 1145 1146 /****************************************************************************** 1147 1148 ID: CMD_SET_PS_MODE 1149 Desc: This command turns ON/OFF Power save protocol on the WiLink. 1150 After HW configuration, FW sends Null data packet to the AP with Power 1151 Management bit set accordingly to the field "Mode" of this command 1152 structure. After processing this command, the FW generates the 1153 PS_COMPLETE event. 1154 Params: PSModeParameters_t - see below. 1155 1156 ******************************************************************************/ 1157 1158 typedef enum 1159 { 1160 STATION_ACTIVE_MODE, 1161 STATION_POWER_SAVE_MODE 1162 } StationPSMode_enum; 1163 1164 #ifdef HOST_COMPILE 1165 typedef uint8 StationPowerSaveMode_e; 1166 #else 1167 typedef StationPSMode_enum StationPowerSaveMode_e; 1168 #endif 1169 1170 1171 typedef struct 1172 { 1173 StationPowerSaveMode_e mode; /* This field specifies the future Power save*/ 1174 /* protocol mode of the system. */ 1175 /* When set, Power save protocol is enabled. */ 1176 /* When cleared, Power save protocol is */ 1177 /* disabled (refer to StationPSMode_enum).*/ 1178 1179 uint8 needToSendNullData; 1180 uint8 numberOfRetries; /* This field specifies the maximum allowed */ 1181 /* number of retries of the Null data packet */ 1182 /* that FW will send after switching the */ 1183 /* Power Save Protocol mode.*/ 1184 1185 uint8 hangOverPeriod; /* This field specifies the hangover period, */ 1186 /* which is the time in TUs during which the */ 1187 /* WiLink remains awake after sending an MPDU */ 1188 /* with the Power Save bit set, indicating that*/ 1189 /* the station is to go into Power Save mode. */ 1190 /* Setting bit 0 does not affect the hangover */ 1191 /* period.*/ 1192 1193 EHwRateBitFiled rateToTransmitNullData; /* This EHwBitRate format field specifies the rate and */ 1194 /* modulation to transmit the Null data packet*/ 1195 /* to the AP. */ 1196 1197 } PSModeParameters_t; 1198 1199 /****************************************************************************** 1200 1201 ID: CMD_CHANNEL_SWITCH 1202 Desc: This command instructs the WiLink to switch serving channel at the given 1203 time. Once the channel switch is performed, the Channel Switch Complete 1204 event is raised to the host. 1205 Params: ChannelSwitchParameters_t - see below. 1206 1207 ******************************************************************************/ 1208 typedef struct 1209 { 1210 Channel_e channel; /* The new serving channel.*/ 1211 uint8 switchTime; /* Relative time of the serving channel switch in TBTT units.*/ 1212 Bool_e txSuspend; /* 1: Suspend TX till switch time; */ 1213 /* 0: Do not suspend TX*/ 1214 Bool_e flush; /* 1: Flush TX at switch time; */ 1215 /* 0: Do not flush*/ 1216 1217 } ChannelSwitchParameters_t; 1218 1219 /****************************************************************************** 1220 1221 ID: CMD_STOP_CHANNEL_SWICTH 1222 Desc: This command instructs the WiLink device to cancel performing a 1223 pending channel switch event command. 1224 Params: None. 1225 1226 ******************************************************************************/ 1227 1228 /****************************************************************************** 1229 1230 ID: CMD_AP_DISCOVERY 1231 Desc: This command instructs the WiLink device to perform an AP discovery 1232 measurement on a single channel. This command can only be issued after 1233 a measurement process has been started by the WiLink device as a result 1234 of a previous Measurement command. The Measurement command specifies the 1235 channel on which the AP discovery is performed. Once the "AP discovery" 1236 measurement is completed either by a STOP_AP_DISCOVERY command or when 1237 the duration has expired, it will send an "AP discovery complete event" 1238 to the host. 1239 Params: ApDiscoveryParameters_t - see below. 1240 1241 ******************************************************************************/ 1242 1243 1244 typedef struct 1245 { 1246 ACXRxConfigStruct rxFilter; /* This field is the Rx filter configuration for the */ 1247 /* device while the AP Discovery process is running. */ 1248 /* When the process ends the previous Rx filter */ 1249 /* configuration is reset. The filter configuration is*/ 1250 /* composed of two 32 bit registers. When they are set */ 1251 /* to 0xFFFFFFFF the Rx filter configuration is not */ 1252 /* changed.*/ 1253 1254 uint32 scanDuration; /* This field specifies the amount of time, in time*/ 1255 /* units (TUs), to perform the AP discovery. The value*/ 1256 /* can range from 0 to 65535 TUs (67.1 seconds). */ 1257 1258 uint16 scanOptions; /* This field specifies whether the AP discovery is */ 1259 /* performed by an active scan or a passive scan. */ 1260 /* 0 - ACTIVE, 1 - PASSIVE.*/ 1261 1262 uint8 numOfProbRqst; /* This field indicates the number of probe requests to*/ 1263 /* send per channel, when active scan is specified. */ 1264 /* Note: for XCC measurement this value should be set */ 1265 /* to 1.*/ 1266 1267 uint8 txPowerAttenuation; /* TX power level to be used for sending probe requests*/ 1268 /* when active scan is specified. */ 1269 /* If 0, leave normal TX power level for this channel. */ 1270 1271 EHwRateBitFiled txdRateSet; /* This EHwBitRate format field specifies the rate and modulation*/ 1272 /* to transmit the probe request when an active scan is*/ 1273 /* specified. */ 1274 1275 } ApDiscoveryParameters_t; 1276 1277 /****************************************************************************** 1278 1279 ID: CMD_STOP_AP_DISCOVERY 1280 Desc: This command instructs the WiLink to terminate the AP Discovery 1281 measurement in progress. After processing this command, the WiLink 1282 returns to its previous state and generates the AP Discovery Complete 1283 Event. 1284 Params: None. 1285 1286 ******************************************************************************/ 1287 1288 /****************************************************************************** 1289 1290 ID: CMD_SPS_SCAN 1291 Desc: This command instructs the WiLink to perform a scheduled passive 1292 scan for BSS/IBSSs. The WiLink monitors the specified channel(s) 1293 for beacons. The WiLink sends Scheduled Scan Complete event to notify 1294 the host when it has completed a scan. 1295 Params: InfoElement_t - see below. 1296 1297 ******************************************************************************/ 1298 /* Scheduled - General scan parameters.*/ 1299 typedef struct 1300 { 1301 ACXRxConfigStruct rxCfg; /* Rx filter to be used for each channel scan. */ 1302 /* The BSSID filter enable will be set (by the scan*/ 1303 /* process) to ON for a specific channel if the*/ 1304 /* BSSID of this channel is a unicast address. */ 1305 /* Otherwise it will be set to OFF (Refer to */ 1306 /* ACXRxConfigStruct).*/ 1307 1308 uint32 scanCmdTime_h; /* This filed is the latest 32 MSBits of TSF known*/ 1309 /* at the time the SPS command was issued. When the*/ 1310 /* scan process is about to begin, this value is */ 1311 /* used to determine if the AP has performed a */ 1312 /* recovery by comparing this value to the current*/ 1313 /* TSF. (An AP that has performed a recovery should*/ 1314 /* have a lower TSF then the one that was saved).*/ 1315 1316 uint32 scanCmdTime_l; /* This filed is the latest 32 LSBits of TSF known*/ 1317 /* at the time the SPS command was issued. */ 1318 1319 uint16 scanOptions; /* This bitwise field indicates the scan options. */ 1320 /* 0 - ACTIVE, 1 - PASSIVE.*/ 1321 1322 uint8 numChannels; /* Number of scan channels in the list (minimum */ 1323 /* (minimumis 1, maximum is 30).*/ 1324 1325 RadioBand_e band; /* Band to scan */ 1326 uint8 scanTag; /* results tag */ 1327 } ScheduledGeneralParameters_t; 1328 1329 1330 /* Scheduled - Per-Channel scan parameters.*/ 1331 typedef struct 1332 { 1333 uint32 scanStartTime; /* Duration in microseconds of the scan on this channel */ 1334 /* (Scan could be aborted before this duration in case of*/ 1335 /* early termination condition met on the channel). */ 1336 1337 uint32 scanMaxDuration; /* Lower 4 bytes of TSF time in microseconds when the */ 1338 /* scan should start listening on the desired channel. */ 1339 1340 uint32 bssIdL; /* 32 LSBits of BSSID of the AP to scan for. If scanning */ 1341 /* on this channel any BSSID, this field shall be set */ 1342 /* to broadcast BSSID. */ 1343 1344 uint16 bssIdH; /* 16 MSBits of BSSID of the AP to scan for. */ 1345 1346 ETCondCount_t ETCondCount; /* bit 0-3: Early Termination count - This field */ 1347 /* defines the maximum number of beacons*/ 1348 /* or probe responses or both (according*/ 1349 /* to condition) to collect before ending*/ 1350 /* a scan.*/ 1351 1352 /* Bit 4-5: Early Termination Condition (refer */ 1353 /* to ETCondition_enum).*/ 1354 Channel_e channel; /* Channel number to scan, valid range 0-255 */ 1355 /* (1-14 for 802.11b).*/ 1356 } ScheduledChannelParameters_t; 1357 1358 1359 /* The Scheduled Scan command structure.*/ 1360 typedef struct 1361 { 1362 ScheduledGeneralParameters_t scheduledGeneralParameters; 1363 ScheduledChannelParameters_t scheduledChannelParameters[SCAN_MAX_NUM_OF_CHANNELS]; 1364 } ScheduledScanParameters_t; 1365 1366 /****************************************************************************** 1367 1368 ID: CMD_STOP_SPS_SCAN 1369 Desc: This command instructs the WiLink to terminate a currently running 1370 SPS or a pending SPS.. After processing this command, the WiLink 1371 returns to its previous state and generates the Scheduled Scan 1372 Complete Event. 1373 Params: None. 1374 1375 ******************************************************************************/ 1376 1377 /****************************************************************************** 1378 1379 ID: CMD_HEALTH_CHECK 1380 Desc: This command instructs the WiLink to raise a MAC status event 1381 which contains the current FCS Error counter. 1382 Params: None. 1383 1384 ******************************************************************************/ 1385 1386 /****************************************************************************** 1387 1388 ID: CMD_DEBUG 1389 Desc: 1390 Params: debugCommnad_t - see below. 1391 1392 ******************************************************************************/ 1393 #define MAX_DEBUG_PARAMETERS 10 1394 1395 typedef struct 1396 { 1397 uint32 id; 1398 uint32 params[MAX_DEBUG_PARAMETERS]; 1399 } debugCommnad_t; 1400 1401 1402 /****************************************************************************** 1403 1404 ID: CMD_CONNECTION_SCAN_CFG 1405 Desc: This command configures the periodic connection scan feature 1406 Params: ConnectionScanParameters_t followed by active and passive channel 1407 lists (variable size structure) 1408 1409 ******************************************************************************/ 1410 1411 typedef enum 1412 { 1413 BSS_INDEPENDENT = 0, 1414 BSS_INFRASTRUCTURE = 1, 1415 BSS_ANY = 2, 1416 BSS_MAX = 0xFF 1417 } ScanBssType_enum; 1418 1419 #ifdef HOST_COMPILE 1420 typedef uint8 ScanBssType_e; 1421 #else 1422 typedef ScanBssType_enum ScanBssType_e; 1423 #endif 1424 1425 typedef enum 1426 { 1427 SCAN_SSID_FILTER_TYPE_ANY = 0, 1428 SCAN_SSID_FILTER_TYPE_SPECIFIC = 1, 1429 SCAN_SSID_FILTER_TYPE_LIST = 2, 1430 SCAN_SSID_FILTER_TYPE_LIST_FILTER_DISABLED = 3, 1431 MAX_SCAN_SSID_FILTER_TYPE = 0xFF 1432 } ScanSsidFilterType_enum; 1433 1434 #ifdef HOST_COMPILE 1435 typedef uint8 ScanSsidFilterType_e; 1436 #else 1437 typedef ScanSsidFilterType_enum ScanSsidFilterType_e; 1438 #endif 1439 1440 #define CONN_SCAN_MAX_CHANNELS_BG 14 1441 #define CONN_SCAN_MAX_CHANNELS_J 4 1442 #define CONN_SCAN_MAX_CHANNELS_A 23 1443 #define CONN_SCAN_MAX_CHANNELS_ALL_BANDS ((CONN_SCAN_MAX_CHANNELS_BG) + (CONN_SCAN_MAX_CHANNELS_A) + (CONN_SCAN_MAX_CHANNELS_J)) 1444 #define CONN_SCAN_MAX_NUM_OF_CYCLES_INTERVALS (16) /* Maximum number of configured inter-cycle intervals */ 1445 1446 #define CONN_SCAN_MAX_BAND (3) /* Maximum number of bands in scan configuration */ 1447 1448 #define CONN_SCAN_DFS_CANDIDATE_CHANNEL BIT_0 1449 #define CONN_SCAN_DFS_ENABLED_CHANNEL BIT_1 1450 1451 typedef struct 1452 { 1453 uint16 scanMinDuration; /* Min duration (in ms)*/ 1454 uint16 scanMaxDuration; /* Max duration (in ms)*/ 1455 uint16 passiveScanDuration; /* Duration to use for passive scans (in ms)*/ 1456 uint8 channel; /* channel number (channel_e) */ 1457 uint8 txPowerLevelDbm; /* TX power level in dbm */ 1458 uint8 channelFlags; /* BIT 0: DFS channel */ 1459 /* BIT 1: DFS enabled (to be included in active scan) */ 1460 uint8 padding[3]; 1461 } ConnScanChannelInfo_t; 1462 1463 typedef struct 1464 { 1465 uint32 cycleIntervals[CONN_SCAN_MAX_NUM_OF_CYCLES_INTERVALS]; /* Intervals between each scan cycle */ 1466 int8 rssiThreshold; /* RSSI threshold */ 1467 int8 snrThreshold; /* SNR threshold */ 1468 uint8 maxNumOfCycles; /* number of cycles to run */ 1469 uint8 reportThreshold; /* Report after N results are received */ 1470 uint8 terminateOnReport; /* Terminate after report */ 1471 uint8 resultsTag; /* Tag for filtered scan results */ 1472 ScanBssType_e bssType; /* BSS type to filter (0 - Infra, 1 - IBSS, 2 - Any) */ 1473 ScanSsidFilterType_e ssidFilterType; /* SSID filter Type (0 - Any, 1 - specified in command, 2 - use SSID list, 3 - use SSID list no filter) */ 1474 uint8 ssidLength; /* SSID Length (if ssidType is specified in command) */ 1475 uint8 ssid[32]; /* SSID (if ssidType is specified in command) */ 1476 uint8 numProbe; /* Number of probe requests to transmit per (hidden) SSID per channel */ 1477 1478 uint8 numOfPassive[CONN_SCAN_MAX_BAND]; 1479 uint8 numOfActive[CONN_SCAN_MAX_BAND]; 1480 uint8 numOfDfs; 1481 uint8 padding[ 3 ]; 1482 ConnScanChannelInfo_t channelList[CONN_SCAN_MAX_CHANNELS_ALL_BANDS]; 1483 } ConnScanParameters_t; 1484 1485 /****************************************************************************** 1486 1487 ID: CMD_CONNECTION_SCAN_SSID_CFG 1488 Desc: This command configures the SSID filter list to be used in the 1489 periodic connection scan 1490 Params: None. 1491 1492 ******************************************************************************/ 1493 1494 #define CONN_SCAN_MAX_NUMBER_OF_SSID_ENTRIES (8) 1495 1496 typedef enum 1497 { 1498 SCAN_SSID_TYPE_PUBLIC = 0, 1499 SCAN_SSID_TYPE_HIDDEN = 1, 1500 MAX_SCAN_SSID_TYPE = 0xFF 1501 } ScanSsidType_enum; 1502 1503 #ifdef HOST_COMPILE 1504 typedef uint8 ScanSsidType_e; 1505 #else 1506 typedef ScanSsidType_enum ScanSsidType_e; 1507 #endif 1508 1509 typedef struct 1510 { 1511 ScanSsidType_e ssidType; 1512 uint8 ssidLength; 1513 uint8 ssid[32]; 1514 } ConnScanSSID_t; 1515 1516 1517 typedef struct 1518 { 1519 uint8 numOfSSIDEntries; 1520 ConnScanSSID_t SSIDList[CONN_SCAN_MAX_NUMBER_OF_SSID_ENTRIES]; 1521 } ConnScanSSIDList_t; 1522 1523 1524 /****************************************************************************** 1525 1526 ID: CMD_START_PERIODIC_SCAN 1527 Desc: This command instructs the WiLink to start a periodic scan 1528 process (either connection-scan or discovery) 1529 Params: None. 1530 1531 ******************************************************************************/ 1532 1533 typedef struct 1534 { 1535 uint8 scanTag; 1536 uint8 uReserved[3]; 1537 } PeriodicScanTag; 1538 1539 /****************************************************************************** 1540 1541 ID: CMD_STOP_PERIODIC_SCAN 1542 Desc: This command instructs the WiLink to stop a periodic scan 1543 process (either connection-scan or discovery) 1544 Params: None. 1545 1546 ******************************************************************************/ 1547 1548 /****************************************************************************** 1549 1550 ID: CMD_SET_STATUS 1551 Desc: This command instructs the station state 1552 Params: None. 1553 1554 ******************************************************************************/ 1555 1556 #define STA_STATE_CONNECTED 1 1557 1558 typedef struct 1559 { 1560 uint8 staState; 1561 uint8 pad[3]; 1562 } SetStaState_t; 1563 1564 /* PLT public definitions*/ 1565 #define TEST_CONTINUOUS 0x04 /* transmit frames contimuously */ 1566 1567 1568 /*This typedef corresponds to the Fig 1 Frame Format for PER test given in PER test doc.*/ 1569 #define PER_MODE_TX 1 1570 #define PER_MODE_RX 2 1571 #define INFRA 0x2 /* BSS is in Infrastructure mode */ 1572 #define LOCAL_MEM_LAST 0x02000000 1573 #define PBCC_MODULATION_MASK 0x80 1574 #define OFDM_MODULATION_MASK 0x40 1575 #define BAND_SELECT_5GHZ 0x10 1576 #define CTL_PREAMBLE 0x01 1577 1578 1579 1580 #endif /* PUBLIC_COMMANDS_H*/ 1581