| 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 */ |