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