| 1 | #ifndef _RAYCTL_H_ |
| 2 | #define _RAYCTL_H_ |
| 3 | |
| 4 | typedef unsigned char UCHAR; |
| 5 | |
| 6 | /****** IEEE 802.11 constants ************************************************/ |
| 7 | #define ADDRLEN 6 |
| 8 | /* Frame control 1 bit fields */ |
| 9 | #define PROTOCOL_VER 0x00 |
| 10 | #define DATA_TYPE 0x08 |
| 11 | #define ASSOC_REQ_TYPE 0x00 |
| 12 | #define ASSOC_RESP_TYPE 0x10 |
| 13 | #define REASSOC_REQ_TYPE 0x20 |
| 14 | #define REASSOC_RESP_TYPE 0x30 |
| 15 | #define NULL_MSG_TYPE 0x48 |
| 16 | #define BEACON_TYPE 0x80 |
| 17 | #define DISASSOC_TYPE 0xA0 |
| 18 | #define PSPOLL_TYPE 0xA4 |
| 19 | #define AUTHENTIC_TYPE 0xB0 |
| 20 | #define DEAUTHENTIC_TYPE 0xC0 |
| 21 | /* Frame control 2 bit fields */ |
| 22 | #define FC2_TO_DS 0x01 |
| 23 | #define FC2_FROM_DS 0x02 |
| 24 | #define FC2_MORE_FRAG 0x04 |
| 25 | #define FC2_RETRY 0x08 |
| 26 | #define FC2_PSM 0x10 |
| 27 | #define FC2_MORE_DATA 0x20 |
| 28 | #define FC2_WEP 0x40 |
| 29 | #define FC2_ORDER 0x80 |
| 30 | /*****************************************************************************/ |
| 31 | /* 802.11 element ID's and lengths */ |
| 32 | #define C_BP_CAPABILITY_ESS 0x01 |
| 33 | #define C_BP_CAPABILITY_IBSS 0x02 |
| 34 | #define C_BP_CAPABILITY_CF_POLLABLE 0x04 |
| 35 | #define C_BP_CAPABILITY_CF_POLL_REQUEST 0x08 |
| 36 | #define C_BP_CAPABILITY_PRIVACY 0x10 |
| 37 | |
| 38 | #define C_ESSID_ELEMENT_ID 0 |
| 39 | #define C_ESSID_ELEMENT_MAX_LENGTH 32 |
| 40 | |
| 41 | #define C_SUPPORTED_RATES_ELEMENT_ID 1 |
| 42 | #define C_SUPPORTED_RATES_ELEMENT_LENGTH 2 |
| 43 | |
| 44 | #define C_FH_PARAM_SET_ELEMENT_ID 2 |
| 45 | #define C_FH_PARAM_SET_ELEMENT_LNGTH 5 |
| 46 | |
| 47 | #define C_CF_PARAM_SET_ELEMENT_ID 4 |
| 48 | #define C_CF_PARAM_SET_ELEMENT_LNGTH 6 |
| 49 | |
| 50 | #define C_TIM_ELEMENT_ID 5 |
| 51 | #define C_TIM_BITMAP_LENGTH 251 |
| 52 | #define C_TIM_BMCAST_BIT 0x01 |
| 53 | |
| 54 | #define C_IBSS_ELEMENT_ID 6 |
| 55 | #define C_IBSS_ELEMENT_LENGTH 2 |
| 56 | |
| 57 | #define C_JAPAN_CALL_SIGN_ELEMENT_ID 51 |
| 58 | #define C_JAPAN_CALL_SIGN_ELEMENT_LNGTH 12 |
| 59 | |
| 60 | #define C_DISASSOC_REASON_CODE_LEN 2 |
| 61 | #define C_DISASSOC_REASON_CODE_DEFAULT 8 |
| 62 | |
| 63 | #define C_CRC_LEN 4 |
| 64 | #define C_NUM_SUPPORTED_RATES 8 |
| 65 | /****** IEEE 802.11 mac header for type data packets *************************/ |
| 66 | struct mac_header { |
| 67 | UCHAR frame_ctl_1; |
| 68 | UCHAR frame_ctl_2; |
| 69 | UCHAR duration_lsb; |
| 70 | UCHAR duration_msb; |
| 71 | UCHAR addr_1[ADDRLEN]; |
| 72 | UCHAR addr_2[ADDRLEN]; |
| 73 | UCHAR addr_3[ADDRLEN]; |
| 74 | UCHAR seq_frag_num[2]; |
| 75 | /* UCHAR addr_4[ADDRLEN]; *//* only present for AP to AP (TO DS and FROM DS */ |
| 76 | }; |
| 77 | /****** IEEE 802.11 frame element structures *********************************/ |
| 78 | struct essid_element |
| 79 | { |
| 80 | UCHAR id; |
| 81 | UCHAR length; |
| 82 | UCHAR text[C_ESSID_ELEMENT_MAX_LENGTH]; |
| 83 | }; |
| 84 | struct rates_element |
| 85 | { |
| 86 | UCHAR id; |
| 87 | UCHAR length; |
| 88 | UCHAR value[8]; |
| 89 | }; |
| 90 | struct freq_hop_element |
| 91 | { |
| 92 | UCHAR id; |
| 93 | UCHAR length; |
| 94 | UCHAR dwell_time[2]; |
| 95 | UCHAR hop_set; |
| 96 | UCHAR hop_pattern; |
| 97 | UCHAR hop_index; |
| 98 | }; |
| 99 | struct tim_element |
| 100 | { |
| 101 | UCHAR id; |
| 102 | UCHAR length; |
| 103 | UCHAR dtim_count; |
| 104 | UCHAR dtim_period; |
| 105 | UCHAR bitmap_control; |
| 106 | UCHAR tim[C_TIM_BITMAP_LENGTH]; |
| 107 | }; |
| 108 | struct ibss_element |
| 109 | { |
| 110 | UCHAR id; |
| 111 | UCHAR length; |
| 112 | UCHAR atim_window[2]; |
| 113 | }; |
| 114 | struct japan_call_sign_element |
| 115 | { |
| 116 | UCHAR id; |
| 117 | UCHAR length; |
| 118 | UCHAR call_sign[12]; |
| 119 | }; |
| 120 | /****** Beacon message structures ********************************************/ |
| 121 | /* .elements is a large lump of max size because elements are variable size */ |
| 122 | struct infra_beacon |
| 123 | { |
| 124 | UCHAR timestamp[8]; |
| 125 | UCHAR beacon_intvl[2]; |
| 126 | UCHAR capability[2]; |
| 127 | UCHAR elements[sizeof(struct essid_element) |
| 128 | + sizeof(struct rates_element) |
| 129 | + sizeof(struct freq_hop_element) |
| 130 | + sizeof(struct japan_call_sign_element) |
| 131 | + sizeof(struct tim_element)]; |
| 132 | }; |
| 133 | struct adhoc_beacon |
| 134 | { |
| 135 | UCHAR timestamp[8]; |
| 136 | UCHAR beacon_intvl[2]; |
| 137 | UCHAR capability[2]; |
| 138 | UCHAR elements[sizeof(struct essid_element) |
| 139 | + sizeof(struct rates_element) |
| 140 | + sizeof(struct freq_hop_element) |
| 141 | + sizeof(struct japan_call_sign_element) |
| 142 | + sizeof(struct ibss_element)]; |
| 143 | }; |
| 144 | /*****************************************************************************/ |
| 145 | /*****************************************************************************/ |
| 146 | /* #define C_MAC_HDR_2_WEP 0x40 */ |
| 147 | /* TX/RX CCS constants */ |
| 148 | #define TX_HEADER_LENGTH 0x1C |
| 149 | #define RX_MAC_HEADER_LENGTH 0x18 |
| 150 | #define TX_AUTHENTICATE_LENGTH (TX_HEADER_LENGTH + 6) |
| 151 | #define TX_AUTHENTICATE_LENGTH_MSB (TX_AUTHENTICATE_LENGTH >> 8) |
| 152 | #define TX_AUTHENTICATE_LENGTH_LSB (TX_AUTHENTICATE_LENGTH & 0xff) |
| 153 | #define TX_DEAUTHENTICATE_LENGTH (TX_HEADER_LENGTH + 2) |
| 154 | #define TX_DEAUTHENTICATE_LENGTH_MSB (TX_AUTHENTICATE_LENGTH >> 8) |
| 155 | #define TX_DEAUTHENTICATE_LENGTH_LSB (TX_AUTHENTICATE_LENGTH & 0xff) |
| 156 | #define FCS_LEN 4 |
| 157 | |
| 158 | #define ADHOC 0 |
| 159 | #define INFRA 1 |
| 160 | |
| 161 | #define TYPE_STA 0 |
| 162 | #define TYPE_AP 1 |
| 163 | |
| 164 | #define PASSIVE_SCAN 1 |
| 165 | #define ACTIVE_SCAN 1 |
| 166 | |
| 167 | #define PSM_CAM 0 |
| 168 | |
| 169 | /* Country codes */ |
| 170 | #define USA 1 |
| 171 | #define EUROPE 2 |
| 172 | #define JAPAN 3 |
| 173 | #define KOREA 4 |
| 174 | #define SPAIN 5 |
| 175 | #define FRANCE 6 |
| 176 | #define ISRAEL 7 |
| 177 | #define AUSTRALIA 8 |
| 178 | #define JAPAN_TEST 9 |
| 179 | |
| 180 | /* Hop pattern lengths */ |
| 181 | #define USA_HOP_MOD 79 |
| 182 | #define EUROPE_HOP_MOD 79 |
| 183 | #define JAPAN_HOP_MOD 23 |
| 184 | #define KOREA_HOP_MOD 23 |
| 185 | #define SPAIN_HOP_MOD 27 |
| 186 | #define FRANCE_HOP_MOD 35 |
| 187 | #define ISRAEL_HOP_MOD 35 |
| 188 | #define AUSTRALIA_HOP_MOD 47 |
| 189 | #define JAPAN_TEST_HOP_MOD 23 |
| 190 | |
| 191 | #define ESSID_SIZE 32 |
| 192 | /**********************************************************************/ |
| 193 | /* CIS Register Constants */ |
| 194 | #define CIS_OFFSET 0x0f00 |
| 195 | /* Configuration Option Register (0x0F00) */ |
| 196 | #define COR_OFFSET 0x00 |
| 197 | #define COR_SOFT_RESET 0x80 |
| 198 | #define COR_LEVEL_IRQ 0x40 |
| 199 | #define COR_CONFIG_NUM 0x01 |
| 200 | #define COR_DEFAULT (COR_LEVEL_IRQ | COR_CONFIG_NUM) |
| 201 | |
| 202 | /* Card Configuration and Status Register (0x0F01) */ |
| 203 | #define CCSR_OFFSET 0x01 |
| 204 | #define CCSR_HOST_INTR_PENDING 0x01 |
| 205 | #define CCSR_POWER_DOWN 0x04 |
| 206 | |
| 207 | /* HCS Interrupt Register (0x0F05) */ |
| 208 | #define HCS_INTR_OFFSET 0x05 |
| 209 | /* #define HCS_INTR_OFFSET 0x0A */ |
| 210 | #define HCS_INTR_CLEAR 0x00 |
| 211 | |
| 212 | /* ECF Interrupt Register (0x0F06) */ |
| 213 | #define ECF_INTR_OFFSET 0x06 |
| 214 | /* #define ECF_INTR_OFFSET 0x0C */ |
| 215 | #define ECF_INTR_SET 0x01 |
| 216 | |
| 217 | /* Authorization Register 0 (0x0F08) */ |
| 218 | #define AUTH_0_ON 0x57 |
| 219 | |
| 220 | /* Authorization Register 1 (0x0F09) */ |
| 221 | #define AUTH_1_ON 0x82 |
| 222 | |
| 223 | /* Program Mode Register (0x0F0A) */ |
| 224 | #define PC2PM 0x02 |
| 225 | #define PC2CAL 0x10 |
| 226 | #define PC2MLSE 0x20 |
| 227 | |
| 228 | /* PC Test Mode Register (0x0F0B) */ |
| 229 | #define PC_TEST_MODE 0x08 |
| 230 | |
| 231 | /* Frequency Control Word (0x0F10) */ |
| 232 | /* Range 0x02 - 0xA6 */ |
| 233 | |
| 234 | /* Test Mode Control 1-4 (0x0F14 - 0x0F17) */ |
| 235 | |
| 236 | /**********************************************************************/ |
| 237 | |
| 238 | /* Shared RAM Area */ |
| 239 | #define SCB_BASE 0x0000 |
| 240 | #define STATUS_BASE 0x0100 |
| 241 | #define HOST_TO_ECF_BASE 0x0200 |
| 242 | #define ECF_TO_HOST_BASE 0x0300 |
| 243 | #define CCS_BASE 0x0400 |
| 244 | #define RCS_BASE 0x0800 |
| 245 | #define INFRA_TIM_BASE 0x0C00 |
| 246 | #define SSID_LIST_BASE 0x0D00 |
| 247 | #define TX_BUF_BASE 0x1000 |
| 248 | #define RX_BUF_BASE 0x8000 |
| 249 | |
| 250 | #define NUMBER_OF_CCS 64 |
| 251 | #define NUMBER_OF_RCS 64 |
| 252 | /*#define NUMBER_OF_TX_CCS 14 */ |
| 253 | #define NUMBER_OF_TX_CCS 14 |
| 254 | |
| 255 | #define TX_BUF_SIZE (2048 - sizeof(struct tx_msg)) |
| 256 | #define RX_BUFF_END 0x3FFF |
| 257 | /* Values for buffer_status */ |
| 258 | #define CCS_BUFFER_FREE 0 |
| 259 | #define CCS_BUFFER_BUSY 1 |
| 260 | #define CCS_COMMAND_COMPLETE 2 |
| 261 | #define CCS_COMMAND_FAILED 3 |
| 262 | |
| 263 | /* Values for cmd */ |
| 264 | #define CCS_DOWNLOAD_STARTUP_PARAMS 1 |
| 265 | #define CCS_UPDATE_PARAMS 2 |
| 266 | #define CCS_REPORT_PARAMS 3 |
| 267 | #define CCS_UPDATE_MULTICAST_LIST 4 |
| 268 | #define CCS_UPDATE_POWER_SAVINGS_MODE 5 |
| 269 | #define CCS_START_NETWORK 6 |
| 270 | #define CCS_JOIN_NETWORK 7 |
| 271 | #define CCS_START_ASSOCIATION 8 |
| 272 | #define CCS_TX_REQUEST 9 |
| 273 | #define CCS_TEST_MEMORY 0xa |
| 274 | #define CCS_SHUTDOWN 0xb |
| 275 | #define CCS_DUMP_MEMORY 0xc |
| 276 | #define CCS_START_TIMER 0xe |
| 277 | #define CCS_LAST_CMD CCS_START_TIMER |
| 278 | |
| 279 | /* Values for link field */ |
| 280 | #define CCS_END_LIST 0xff |
| 281 | |
| 282 | /* values for buffer_status field */ |
| 283 | #define RCS_BUFFER_FREE 0 |
| 284 | #define RCS_BUFFER_BUSY 1 |
| 285 | #define RCS_COMPLETE 2 |
| 286 | #define RCS_FAILED 3 |
| 287 | #define RCS_BUFFER_RELEASE 0xFF |
| 288 | |
| 289 | /* values for interrupt_id field */ |
| 290 | #define PROCESS_RX_PACKET 0x80 /* */ |
| 291 | #define REJOIN_NET_COMPLETE 0x81 /* RCS ID: Rejoin Net Complete */ |
| 292 | #define ROAMING_INITIATED 0x82 /* RCS ID: Roaming Initiated */ |
| 293 | #define JAPAN_CALL_SIGN_RXD 0x83 /* RCS ID: New Japan Call Sign */ |
| 294 | |
| 295 | /*****************************************************************************/ |
| 296 | /* Memory types for dump memory command */ |
| 297 | #define C_MEM_PROG 0 |
| 298 | #define C_MEM_XDATA 1 |
| 299 | #define C_MEM_SFR 2 |
| 300 | #define C_MEM_IDATA 3 |
| 301 | |
| 302 | /*** Return values for hw_xmit **********/ |
| 303 | #define XMIT_OK (0) |
| 304 | #define XMIT_MSG_BAD (-1) |
| 305 | #define XMIT_NO_CCS (-2) |
| 306 | #define XMIT_NO_INTR (-3) |
| 307 | #define XMIT_NEED_AUTH (-4) |
| 308 | |
| 309 | /*** Values for card status */ |
| 310 | #define CARD_INSERTED (0) |
| 311 | |
| 312 | #define CARD_AWAITING_PARAM (1) |
| 313 | #define CARD_INIT_ERROR (11) |
| 314 | |
| 315 | #define CARD_DL_PARAM (2) |
| 316 | #define CARD_DL_PARAM_ERROR (12) |
| 317 | |
| 318 | #define CARD_DOING_ACQ (3) |
| 319 | |
| 320 | #define CARD_ACQ_COMPLETE (4) |
| 321 | #define CARD_ACQ_FAILED (14) |
| 322 | |
| 323 | #define CARD_AUTH_COMPLETE (5) |
| 324 | #define CARD_AUTH_REFUSED (15) |
| 325 | |
| 326 | #define CARD_ASSOC_COMPLETE (6) |
| 327 | #define CARD_ASSOC_FAILED (16) |
| 328 | |
| 329 | /*** Values for authentication_state ***********************************/ |
| 330 | #define UNAUTHENTICATED (0) |
| 331 | #define AWAITING_RESPONSE (1) |
| 332 | #define AUTHENTICATED (2) |
| 333 | #define NEED_TO_AUTH (3) |
| 334 | |
| 335 | /*** Values for authentication type ************************************/ |
| 336 | #define OPEN_AUTH_REQUEST (1) |
| 337 | #define OPEN_AUTH_RESPONSE (2) |
| 338 | #define BROADCAST_DEAUTH (0xc0) |
| 339 | /*** Values for timer functions ****************************************/ |
| 340 | #define TODO_NOTHING (0) |
| 341 | #define TODO_VERIFY_DL_START (-1) |
| 342 | #define TODO_START_NET (-2) |
| 343 | #define TODO_JOIN_NET (-3) |
| 344 | #define TODO_AUTHENTICATE_TIMEOUT (-4) |
| 345 | #define TODO_SEND_CCS (-5) |
| 346 | /***********************************************************************/ |
| 347 | /* Parameter passing structure for update/report parameter CCS's */ |
| 348 | struct object_id { |
| 349 | void *object_addr; |
| 350 | unsigned char object_length; |
| 351 | }; |
| 352 | |
| 353 | #define OBJID_network_type 0 |
| 354 | #define OBJID_acting_as_ap_status 1 |
| 355 | #define OBJID_current_ess_id 2 |
| 356 | #define OBJID_scanning_mode 3 |
| 357 | #define OBJID_power_mgt_state 4 |
| 358 | #define OBJID_mac_address 5 |
| 359 | #define OBJID_frag_threshold 6 |
| 360 | #define OBJID_hop_time 7 |
| 361 | #define OBJID_beacon_period 8 |
| 362 | #define OBJID_dtim_period 9 |
| 363 | #define OBJID_retry_max 10 |
| 364 | #define OBJID_ack_timeout 11 |
| 365 | #define OBJID_sifs 12 |
| 366 | #define OBJID_difs 13 |
| 367 | #define OBJID_pifs 14 |
| 368 | #define OBJID_rts_threshold 15 |
| 369 | #define OBJID_scan_dwell_time 16 |
| 370 | #define OBJID_max_scan_dwell_time 17 |
| 371 | #define OBJID_assoc_resp_timeout 18 |
| 372 | #define OBJID_adhoc_scan_cycle_max 19 |
| 373 | #define OBJID_infra_scan_cycle_max 20 |
| 374 | #define OBJID_infra_super_cycle_max 21 |
| 375 | #define OBJID_promiscuous_mode 22 |
| 376 | #define OBJID_unique_word 23 |
| 377 | #define OBJID_slot_time 24 |
| 378 | #define OBJID_roaming_low_snr 25 |
| 379 | #define OBJID_low_snr_count_thresh 26 |
| 380 | #define OBJID_infra_missed_bcn 27 |
| 381 | #define OBJID_adhoc_missed_bcn 28 |
| 382 | #define OBJID_curr_country_code 29 |
| 383 | #define OBJID_hop_pattern 30 |
| 384 | #define OBJID_reserved 31 |
| 385 | #define OBJID_cw_max_msb 32 |
| 386 | #define OBJID_cw_min_msb 33 |
| 387 | #define OBJID_noise_filter_gain 34 |
| 388 | #define OBJID_noise_limit_offset 35 |
| 389 | #define OBJID_det_rssi_thresh_offset 36 |
| 390 | #define OBJID_med_busy_thresh_offset 37 |
| 391 | #define OBJID_det_sync_thresh 38 |
| 392 | #define OBJID_test_mode 39 |
| 393 | #define OBJID_test_min_chan_num 40 |
| 394 | #define OBJID_test_max_chan_num 41 |
| 395 | #define OBJID_allow_bcast_ID_prbrsp 42 |
| 396 | #define OBJID_privacy_must_start 43 |
| 397 | #define OBJID_privacy_can_join 44 |
| 398 | #define OBJID_basic_rate_set 45 |
| 399 | |
| 400 | /**** Configuration/Status/Control Area ***************************/ |
| 401 | /* System Control Block (SCB) Area |
| 402 | * Located at Shared RAM offset 0 |
| 403 | */ |
| 404 | struct scb { |
| 405 | UCHAR ccs_index; |
| 406 | UCHAR rcs_index; |
| 407 | }; |
| 408 | |
| 409 | /****** Status area at Shared RAM offset 0x0100 ******************************/ |
| 410 | struct status { |
| 411 | UCHAR mrx_overflow_for_host; /* 0=ECF may write, 1=host may write*/ |
| 412 | UCHAR mrx_checksum_error_for_host; /* 0=ECF may write, 1=host may write*/ |
| 413 | UCHAR rx_hec_error_for_host; /* 0=ECF may write, 1=host may write*/ |
| 414 | UCHAR reserved1; |
| 415 | short mrx_overflow; /* ECF increments on rx overflow */ |
| 416 | short mrx_checksum_error; /* ECF increments on rx CRC error */ |
| 417 | short rx_hec_error; /* ECF incs on mac header CRC error */ |
| 418 | UCHAR rxnoise; /* Average RSL measurement */ |
| 419 | }; |
| 420 | |
| 421 | /****** Host-to-ECF Data Area at Shared RAM offset 0x200 *********************/ |
| 422 | struct host_to_ecf_area { |
| 423 | |
| 424 | }; |
| 425 | |
| 426 | /****** ECF-to-Host Data Area at Shared RAM offset 0x0300 ********************/ |
| 427 | struct startup_res_518 { |
| 428 | UCHAR startup_word; |
| 429 | UCHAR station_addr[ADDRLEN]; |
| 430 | UCHAR calc_prog_chksum; |
| 431 | UCHAR calc_cis_chksum; |
| 432 | UCHAR ecf_spare[7]; |
| 433 | UCHAR japan_call_sign[12]; |
| 434 | }; |
| 435 | |
| 436 | struct startup_res_6 { |
| 437 | UCHAR startup_word; |
| 438 | UCHAR station_addr[ADDRLEN]; |
| 439 | UCHAR reserved; |
| 440 | UCHAR supp_rates[8]; |
| 441 | UCHAR japan_call_sign[12]; |
| 442 | UCHAR calc_prog_chksum; |
| 443 | UCHAR calc_cis_chksum; |
| 444 | UCHAR firmware_version[3]; |
| 445 | UCHAR asic_version; |
| 446 | UCHAR tib_length; |
| 447 | }; |
| 448 | |
| 449 | struct start_join_net_params { |
| 450 | UCHAR net_type; |
| 451 | UCHAR ssid[ESSID_SIZE]; |
| 452 | UCHAR reserved; |
| 453 | UCHAR privacy_can_join; |
| 454 | }; |
| 455 | |
| 456 | /****** Command Control Structure area at Shared ram offset 0x0400 ***********/ |
| 457 | /* Structures for command specific parameters (ccs.var) */ |
| 458 | struct update_param_cmd { |
| 459 | UCHAR object_id; |
| 460 | UCHAR number_objects; |
| 461 | UCHAR failure_cause; |
| 462 | }; |
| 463 | struct report_param_cmd { |
| 464 | UCHAR object_id; |
| 465 | UCHAR number_objects; |
| 466 | UCHAR failure_cause; |
| 467 | UCHAR length; |
| 468 | }; |
| 469 | struct start_network_cmd { |
| 470 | UCHAR update_param; |
| 471 | UCHAR bssid[ADDRLEN]; |
| 472 | UCHAR net_initiated; |
| 473 | UCHAR net_default_tx_rate; |
| 474 | UCHAR encryption; |
| 475 | }; |
| 476 | struct join_network_cmd { |
| 477 | UCHAR update_param; |
| 478 | UCHAR bssid[ADDRLEN]; |
| 479 | UCHAR net_initiated; |
| 480 | UCHAR net_default_tx_rate; |
| 481 | UCHAR encryption; |
| 482 | }; |
| 483 | struct tx_requested_cmd { |
| 484 | |
| 485 | UCHAR tx_data_ptr[2]; |
| 486 | UCHAR tx_data_length[2]; |
| 487 | UCHAR host_reserved[2]; |
| 488 | UCHAR reserved[3]; |
| 489 | UCHAR tx_rate; |
| 490 | UCHAR pow_sav_mode; |
| 491 | UCHAR retries; |
| 492 | UCHAR antenna; |
| 493 | }; |
| 494 | struct tx_requested_cmd_4 { |
| 495 | |
| 496 | UCHAR tx_data_ptr[2]; |
| 497 | UCHAR tx_data_length[2]; |
| 498 | UCHAR dest_addr[ADDRLEN]; |
| 499 | UCHAR pow_sav_mode; |
| 500 | UCHAR retries; |
| 501 | UCHAR station_id; |
| 502 | }; |
| 503 | struct memory_dump_cmd { |
| 504 | UCHAR memory_type; |
| 505 | UCHAR memory_ptr[2]; |
| 506 | UCHAR length; |
| 507 | }; |
| 508 | struct update_association_cmd { |
| 509 | UCHAR status; |
| 510 | UCHAR aid[2]; |
| 511 | }; |
| 512 | struct start_timer_cmd { |
| 513 | UCHAR duration[2]; |
| 514 | }; |
| 515 | |
| 516 | struct ccs { |
| 517 | UCHAR buffer_status; /* 0 = buffer free, 1 = buffer busy */ |
| 518 | /* 2 = command complete, 3 = failed */ |
| 519 | UCHAR cmd; /* command to ECF */ |
| 520 | UCHAR link; /* link to next CCS, FF=end of list */ |
| 521 | /* command specific parameters */ |
| 522 | union { |
| 523 | char reserved[13]; |
| 524 | struct update_param_cmd update_param; |
| 525 | struct report_param_cmd report_param; |
| 526 | UCHAR nummulticast; |
| 527 | UCHAR mode; |
| 528 | struct start_network_cmd start_network; |
| 529 | struct join_network_cmd join_network; |
| 530 | struct tx_requested_cmd tx_request; |
| 531 | struct memory_dump_cmd memory_dump; |
| 532 | struct update_association_cmd update_assoc; |
| 533 | struct start_timer_cmd start_timer; |
| 534 | } var; |
| 535 | }; |
| 536 | |
| 537 | /*****************************************************************************/ |
| 538 | /* Transmit buffer structures */ |
| 539 | struct tib_structure { |
| 540 | UCHAR ccs_index; |
| 541 | UCHAR psm; |
| 542 | UCHAR pass_fail; |
| 543 | UCHAR retry_count; |
| 544 | UCHAR max_retries; |
| 545 | UCHAR frags_remaining; |
| 546 | UCHAR no_rb; |
| 547 | UCHAR rts_reqd; |
| 548 | UCHAR csma_tx_cntrl_2; |
| 549 | UCHAR sifs_tx_cntrl_2; |
| 550 | UCHAR tx_dma_addr_1[2]; |
| 551 | UCHAR tx_dma_addr_2[2]; |
| 552 | UCHAR var_dur_2mhz[2]; |
| 553 | UCHAR var_dur_1mhz[2]; |
| 554 | UCHAR max_dur_2mhz[2]; |
| 555 | UCHAR max_dur_1mhz[2]; |
| 556 | UCHAR hdr_len; |
| 557 | UCHAR max_frag_len[2]; |
| 558 | UCHAR var_len[2]; |
| 559 | UCHAR phy_hdr_4; |
| 560 | UCHAR mac_hdr_1; |
| 561 | UCHAR mac_hdr_2; |
| 562 | UCHAR sid[2]; |
| 563 | }; |
| 564 | |
| 565 | struct phy_header { |
| 566 | UCHAR sfd[2]; |
| 567 | UCHAR hdr_3; |
| 568 | UCHAR hdr_4; |
| 569 | }; |
| 570 | struct ray_rx_msg { |
| 571 | struct mac_header mac; |
| 572 | UCHAR var[0]; |
| 573 | }; |
| 574 | |
| 575 | struct tx_msg { |
| 576 | struct tib_structure tib; |
| 577 | struct phy_header phy; |
| 578 | struct mac_header mac; |
| 579 | UCHAR var[1]; |
| 580 | }; |
| 581 | |
| 582 | /****** ECF Receive Control Structure (RCS) Area at Shared RAM offset 0x0800 */ |
| 583 | /* Structures for command specific parameters (rcs.var) */ |
| 584 | struct rx_packet_cmd { |
| 585 | UCHAR rx_data_ptr[2]; |
| 586 | UCHAR rx_data_length[2]; |
| 587 | UCHAR rx_sig_lev; |
| 588 | UCHAR next_frag_rcs_index; |
| 589 | UCHAR totalpacketlength[2]; |
| 590 | }; |
| 591 | struct rejoin_net_cmplt_cmd { |
| 592 | UCHAR reserved; |
| 593 | UCHAR bssid[ADDRLEN]; |
| 594 | }; |
| 595 | struct japan_call_sign_rxd { |
| 596 | UCHAR rxd_call_sign[8]; |
| 597 | UCHAR reserved[5]; |
| 598 | }; |
| 599 | |
| 600 | struct rcs { |
| 601 | UCHAR buffer_status; |
| 602 | UCHAR interrupt_id; |
| 603 | UCHAR link_field; |
| 604 | /* command specific parameters */ |
| 605 | union { |
| 606 | UCHAR reserved[13]; |
| 607 | struct rx_packet_cmd rx_packet; |
| 608 | struct rejoin_net_cmplt_cmd rejoin_net_complete; |
| 609 | struct japan_call_sign_rxd japan_call_sign; |
| 610 | } var; |
| 611 | }; |
| 612 | |
| 613 | /****** Startup parameter structures for both versions of firmware ***********/ |
| 614 | struct b4_startup_params { |
| 615 | UCHAR a_network_type; /* C_ADHOC, C_INFRA */ |
| 616 | UCHAR a_acting_as_ap_status; /* C_TYPE_STA, C_TYPE_AP */ |
| 617 | UCHAR a_current_ess_id[ESSID_SIZE]; /* Null terminated unless 32 long */ |
| 618 | UCHAR a_scanning_mode; /* passive 0, active 1 */ |
| 619 | UCHAR a_power_mgt_state; /* CAM 0, */ |
| 620 | UCHAR a_mac_addr[ADDRLEN]; /* */ |
| 621 | UCHAR a_frag_threshold[2]; /* 512 */ |
| 622 | UCHAR a_hop_time[2]; /* 16k * 2**n, n=0-4 in Kus */ |
| 623 | UCHAR a_beacon_period[2]; /* n * a_hop_time in Kus */ |
| 624 | UCHAR a_dtim_period; /* in beacons */ |
| 625 | UCHAR a_retry_max; /* */ |
| 626 | UCHAR a_ack_timeout; /* */ |
| 627 | UCHAR a_sifs; /* */ |
| 628 | UCHAR a_difs; /* */ |
| 629 | UCHAR a_pifs; /* */ |
| 630 | UCHAR a_rts_threshold[2]; /* */ |
| 631 | UCHAR a_scan_dwell_time[2]; /* */ |
| 632 | UCHAR a_max_scan_dwell_time[2]; /* */ |
| 633 | UCHAR a_assoc_resp_timeout_thresh; /* */ |
| 634 | UCHAR a_adhoc_scan_cycle_max; /* */ |
| 635 | UCHAR a_infra_scan_cycle_max; /* */ |
| 636 | UCHAR a_infra_super_scan_cycle_max; /* */ |
| 637 | UCHAR a_promiscuous_mode; /* */ |
| 638 | UCHAR a_unique_word[2]; /* */ |
| 639 | UCHAR a_slot_time; /* */ |
| 640 | UCHAR a_roaming_low_snr_thresh; /* */ |
| 641 | UCHAR a_low_snr_count_thresh; /* */ |
| 642 | UCHAR a_infra_missed_bcn_thresh; /* */ |
| 643 | UCHAR a_adhoc_missed_bcn_thresh; /* */ |
| 644 | UCHAR a_curr_country_code; /* C_USA */ |
| 645 | UCHAR a_hop_pattern; /* */ |
| 646 | UCHAR a_hop_pattern_length; /* */ |
| 647 | /* b4 - b5 differences start here */ |
| 648 | UCHAR a_cw_max; /* */ |
| 649 | UCHAR a_cw_min; /* */ |
| 650 | UCHAR a_noise_filter_gain; /* */ |
| 651 | UCHAR a_noise_limit_offset; /* */ |
| 652 | UCHAR a_det_rssi_thresh_offset; /* */ |
| 653 | UCHAR a_med_busy_thresh_offset; /* */ |
| 654 | UCHAR a_det_sync_thresh; /* */ |
| 655 | UCHAR a_test_mode; /* */ |
| 656 | UCHAR a_test_min_chan_num; /* */ |
| 657 | UCHAR a_test_max_chan_num; /* */ |
| 658 | UCHAR a_rx_tx_delay; /* */ |
| 659 | UCHAR a_current_bss_id[ADDRLEN]; /* */ |
| 660 | UCHAR a_hop_set; /* */ |
| 661 | }; |
| 662 | struct b5_startup_params { |
| 663 | UCHAR a_network_type; /* C_ADHOC, C_INFRA */ |
| 664 | UCHAR a_acting_as_ap_status; /* C_TYPE_STA, C_TYPE_AP */ |
| 665 | UCHAR a_current_ess_id[ESSID_SIZE]; /* Null terminated unless 32 long */ |
| 666 | UCHAR a_scanning_mode; /* passive 0, active 1 */ |
| 667 | UCHAR a_power_mgt_state; /* CAM 0, */ |
| 668 | UCHAR a_mac_addr[ADDRLEN]; /* */ |
| 669 | UCHAR a_frag_threshold[2]; /* 512 */ |
| 670 | UCHAR a_hop_time[2]; /* 16k * 2**n, n=0-4 in Kus */ |
| 671 | UCHAR a_beacon_period[2]; /* n * a_hop_time in Kus */ |
| 672 | UCHAR a_dtim_period; /* in beacons */ |
| 673 | UCHAR a_retry_max; /* 4 */ |
| 674 | UCHAR a_ack_timeout; /* */ |
| 675 | UCHAR a_sifs; /* */ |
| 676 | UCHAR a_difs; /* */ |
| 677 | UCHAR a_pifs; /* */ |
| 678 | UCHAR a_rts_threshold[2]; /* */ |
| 679 | UCHAR a_scan_dwell_time[2]; /* */ |
| 680 | UCHAR a_max_scan_dwell_time[2]; /* */ |
| 681 | UCHAR a_assoc_resp_timeout_thresh; /* */ |
| 682 | UCHAR a_adhoc_scan_cycle_max; /* */ |
| 683 | UCHAR a_infra_scan_cycle_max; /* */ |
| 684 | UCHAR a_infra_super_scan_cycle_max; /* */ |
| 685 | UCHAR a_promiscuous_mode; /* */ |
| 686 | UCHAR a_unique_word[2]; /* */ |
| 687 | UCHAR a_slot_time; /* */ |
| 688 | UCHAR a_roaming_low_snr_thresh; /* */ |
| 689 | UCHAR a_low_snr_count_thresh; /* */ |
| 690 | UCHAR a_infra_missed_bcn_thresh; /* */ |
| 691 | UCHAR a_adhoc_missed_bcn_thresh; /* */ |
| 692 | UCHAR a_curr_country_code; /* C_USA */ |
| 693 | UCHAR a_hop_pattern; /* */ |
| 694 | UCHAR a_hop_pattern_length; /* */ |
| 695 | /* b4 - b5 differences start here */ |
| 696 | UCHAR a_cw_max[2]; /* */ |
| 697 | UCHAR a_cw_min[2]; /* */ |
| 698 | UCHAR a_noise_filter_gain; /* */ |
| 699 | UCHAR a_noise_limit_offset; /* */ |
| 700 | UCHAR a_det_rssi_thresh_offset; /* */ |
| 701 | UCHAR a_med_busy_thresh_offset; /* */ |
| 702 | UCHAR a_det_sync_thresh; /* */ |
| 703 | UCHAR a_test_mode; /* */ |
| 704 | UCHAR a_test_min_chan_num; /* */ |
| 705 | UCHAR a_test_max_chan_num; /* */ |
| 706 | UCHAR a_allow_bcast_SSID_probe_rsp; |
| 707 | UCHAR a_privacy_must_start; |
| 708 | UCHAR a_privacy_can_join; |
| 709 | UCHAR a_basic_rate_set[8]; |
| 710 | }; |
| 711 | |
| 712 | /*****************************************************************************/ |
| 713 | #define RAY_IOCG_PARMS (SIOCDEVPRIVATE) |
| 714 | #define RAY_IOCS_PARMS (SIOCDEVPRIVATE + 1) |
| 715 | #define RAY_DO_CMD (SIOCDEVPRIVATE + 2) |
| 716 | |
| 717 | /****** ethernet <-> 802.11 translation **************************************/ |
| 718 | typedef struct snaphdr_t |
| 719 | { |
| 720 | UCHAR dsap; |
| 721 | UCHAR ssap; |
| 722 | UCHAR ctrl; |
| 723 | UCHAR org[3]; |
| 724 | UCHAR ethertype[2]; |
| 725 | } snaphdr_t; |
| 726 | |
| 727 | #define BRIDGE_ENCAP 0xf80000 |
| 728 | #define RFC1042_ENCAP 0 |
| 729 | #define SNAP_ID 0x0003aaaa |
| 730 | #define RAY_IPX_TYPE 0x8137 |
| 731 | #define APPLEARP_TYPE 0x80f3 |
| 732 | /*****************************************************************************/ |
| 733 | #endif /* _RAYCTL_H_ */ |