forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
734 lines
26 KiB
734 lines
26 KiB
/* SPDX-License-Identifier: GPL-2.0 */ |
|
#ifndef _RAYCTL_H_ |
|
#define _RAYCTL_H_ |
|
|
|
typedef unsigned char UCHAR; |
|
|
|
/****** IEEE 802.11 constants ************************************************/ |
|
#define ADDRLEN 6 |
|
/* Frame control 1 bit fields */ |
|
#define PROTOCOL_VER 0x00 |
|
#define DATA_TYPE 0x08 |
|
#define ASSOC_REQ_TYPE 0x00 |
|
#define ASSOC_RESP_TYPE 0x10 |
|
#define REASSOC_REQ_TYPE 0x20 |
|
#define REASSOC_RESP_TYPE 0x30 |
|
#define NULL_MSG_TYPE 0x48 |
|
#define BEACON_TYPE 0x80 |
|
#define DISASSOC_TYPE 0xA0 |
|
#define PSPOLL_TYPE 0xA4 |
|
#define AUTHENTIC_TYPE 0xB0 |
|
#define DEAUTHENTIC_TYPE 0xC0 |
|
/* Frame control 2 bit fields */ |
|
#define FC2_TO_DS 0x01 |
|
#define FC2_FROM_DS 0x02 |
|
#define FC2_MORE_FRAG 0x04 |
|
#define FC2_RETRY 0x08 |
|
#define FC2_PSM 0x10 |
|
#define FC2_MORE_DATA 0x20 |
|
#define FC2_WEP 0x40 |
|
#define FC2_ORDER 0x80 |
|
/*****************************************************************************/ |
|
/* 802.11 element ID's and lengths */ |
|
#define C_BP_CAPABILITY_ESS 0x01 |
|
#define C_BP_CAPABILITY_IBSS 0x02 |
|
#define C_BP_CAPABILITY_CF_POLLABLE 0x04 |
|
#define C_BP_CAPABILITY_CF_POLL_REQUEST 0x08 |
|
#define C_BP_CAPABILITY_PRIVACY 0x10 |
|
|
|
#define C_ESSID_ELEMENT_ID 0 |
|
#define C_ESSID_ELEMENT_MAX_LENGTH 32 |
|
|
|
#define C_SUPPORTED_RATES_ELEMENT_ID 1 |
|
#define C_SUPPORTED_RATES_ELEMENT_LENGTH 2 |
|
|
|
#define C_FH_PARAM_SET_ELEMENT_ID 2 |
|
#define C_FH_PARAM_SET_ELEMENT_LNGTH 5 |
|
|
|
#define C_CF_PARAM_SET_ELEMENT_ID 4 |
|
#define C_CF_PARAM_SET_ELEMENT_LNGTH 6 |
|
|
|
#define C_TIM_ELEMENT_ID 5 |
|
#define C_TIM_BITMAP_LENGTH 251 |
|
#define C_TIM_BMCAST_BIT 0x01 |
|
|
|
#define C_IBSS_ELEMENT_ID 6 |
|
#define C_IBSS_ELEMENT_LENGTH 2 |
|
|
|
#define C_JAPAN_CALL_SIGN_ELEMENT_ID 51 |
|
#define C_JAPAN_CALL_SIGN_ELEMENT_LNGTH 12 |
|
|
|
#define C_DISASSOC_REASON_CODE_LEN 2 |
|
#define C_DISASSOC_REASON_CODE_DEFAULT 8 |
|
|
|
#define C_CRC_LEN 4 |
|
#define C_NUM_SUPPORTED_RATES 8 |
|
/****** IEEE 802.11 mac header for type data packets *************************/ |
|
struct mac_header { |
|
UCHAR frame_ctl_1; |
|
UCHAR frame_ctl_2; |
|
UCHAR duration_lsb; |
|
UCHAR duration_msb; |
|
UCHAR addr_1[ADDRLEN]; |
|
UCHAR addr_2[ADDRLEN]; |
|
UCHAR addr_3[ADDRLEN]; |
|
UCHAR seq_frag_num[2]; |
|
/* UCHAR addr_4[ADDRLEN]; *//* only present for AP to AP (TO DS and FROM DS */ |
|
}; |
|
/****** IEEE 802.11 frame element structures *********************************/ |
|
struct essid_element |
|
{ |
|
UCHAR id; |
|
UCHAR length; |
|
UCHAR text[C_ESSID_ELEMENT_MAX_LENGTH]; |
|
}; |
|
struct rates_element |
|
{ |
|
UCHAR id; |
|
UCHAR length; |
|
UCHAR value[8]; |
|
}; |
|
struct freq_hop_element |
|
{ |
|
UCHAR id; |
|
UCHAR length; |
|
UCHAR dwell_time[2]; |
|
UCHAR hop_set; |
|
UCHAR hop_pattern; |
|
UCHAR hop_index; |
|
}; |
|
struct tim_element |
|
{ |
|
UCHAR id; |
|
UCHAR length; |
|
UCHAR dtim_count; |
|
UCHAR dtim_period; |
|
UCHAR bitmap_control; |
|
UCHAR tim[C_TIM_BITMAP_LENGTH]; |
|
}; |
|
struct ibss_element |
|
{ |
|
UCHAR id; |
|
UCHAR length; |
|
UCHAR atim_window[2]; |
|
}; |
|
struct japan_call_sign_element |
|
{ |
|
UCHAR id; |
|
UCHAR length; |
|
UCHAR call_sign[12]; |
|
}; |
|
/****** Beacon message structures ********************************************/ |
|
/* .elements is a large lump of max size because elements are variable size */ |
|
struct infra_beacon |
|
{ |
|
UCHAR timestamp[8]; |
|
UCHAR beacon_intvl[2]; |
|
UCHAR capability[2]; |
|
UCHAR elements[sizeof(struct essid_element) |
|
+ sizeof(struct rates_element) |
|
+ sizeof(struct freq_hop_element) |
|
+ sizeof(struct japan_call_sign_element) |
|
+ sizeof(struct tim_element)]; |
|
}; |
|
struct adhoc_beacon |
|
{ |
|
UCHAR timestamp[8]; |
|
UCHAR beacon_intvl[2]; |
|
UCHAR capability[2]; |
|
UCHAR elements[sizeof(struct essid_element) |
|
+ sizeof(struct rates_element) |
|
+ sizeof(struct freq_hop_element) |
|
+ sizeof(struct japan_call_sign_element) |
|
+ sizeof(struct ibss_element)]; |
|
}; |
|
/*****************************************************************************/ |
|
/*****************************************************************************/ |
|
/* #define C_MAC_HDR_2_WEP 0x40 */ |
|
/* TX/RX CCS constants */ |
|
#define TX_HEADER_LENGTH 0x1C |
|
#define RX_MAC_HEADER_LENGTH 0x18 |
|
#define TX_AUTHENTICATE_LENGTH (TX_HEADER_LENGTH + 6) |
|
#define TX_AUTHENTICATE_LENGTH_MSB (TX_AUTHENTICATE_LENGTH >> 8) |
|
#define TX_AUTHENTICATE_LENGTH_LSB (TX_AUTHENTICATE_LENGTH & 0xff) |
|
#define TX_DEAUTHENTICATE_LENGTH (TX_HEADER_LENGTH + 2) |
|
#define TX_DEAUTHENTICATE_LENGTH_MSB (TX_AUTHENTICATE_LENGTH >> 8) |
|
#define TX_DEAUTHENTICATE_LENGTH_LSB (TX_AUTHENTICATE_LENGTH & 0xff) |
|
#define FCS_LEN 4 |
|
|
|
#define ADHOC 0 |
|
#define INFRA 1 |
|
|
|
#define TYPE_STA 0 |
|
#define TYPE_AP 1 |
|
|
|
#define PASSIVE_SCAN 1 |
|
#define ACTIVE_SCAN 1 |
|
|
|
#define PSM_CAM 0 |
|
|
|
/* Country codes */ |
|
#define USA 1 |
|
#define EUROPE 2 |
|
#define JAPAN 3 |
|
#define KOREA 4 |
|
#define SPAIN 5 |
|
#define FRANCE 6 |
|
#define ISRAEL 7 |
|
#define AUSTRALIA 8 |
|
#define JAPAN_TEST 9 |
|
|
|
/* Hop pattern lengths */ |
|
#define USA_HOP_MOD 79 |
|
#define EUROPE_HOP_MOD 79 |
|
#define JAPAN_HOP_MOD 23 |
|
#define KOREA_HOP_MOD 23 |
|
#define SPAIN_HOP_MOD 27 |
|
#define FRANCE_HOP_MOD 35 |
|
#define ISRAEL_HOP_MOD 35 |
|
#define AUSTRALIA_HOP_MOD 47 |
|
#define JAPAN_TEST_HOP_MOD 23 |
|
|
|
#define ESSID_SIZE 32 |
|
/**********************************************************************/ |
|
/* CIS Register Constants */ |
|
#define CIS_OFFSET 0x0f00 |
|
/* Configuration Option Register (0x0F00) */ |
|
#define COR_OFFSET 0x00 |
|
#define COR_SOFT_RESET 0x80 |
|
#define COR_LEVEL_IRQ 0x40 |
|
#define COR_CONFIG_NUM 0x01 |
|
#define COR_DEFAULT (COR_LEVEL_IRQ | COR_CONFIG_NUM) |
|
|
|
/* Card Configuration and Status Register (0x0F01) */ |
|
#define CCSR_OFFSET 0x01 |
|
#define CCSR_HOST_INTR_PENDING 0x01 |
|
#define CCSR_POWER_DOWN 0x04 |
|
|
|
/* HCS Interrupt Register (0x0F05) */ |
|
#define HCS_INTR_OFFSET 0x05 |
|
/* #define HCS_INTR_OFFSET 0x0A */ |
|
#define HCS_INTR_CLEAR 0x00 |
|
|
|
/* ECF Interrupt Register (0x0F06) */ |
|
#define ECF_INTR_OFFSET 0x06 |
|
/* #define ECF_INTR_OFFSET 0x0C */ |
|
#define ECF_INTR_SET 0x01 |
|
|
|
/* Authorization Register 0 (0x0F08) */ |
|
#define AUTH_0_ON 0x57 |
|
|
|
/* Authorization Register 1 (0x0F09) */ |
|
#define AUTH_1_ON 0x82 |
|
|
|
/* Program Mode Register (0x0F0A) */ |
|
#define PC2PM 0x02 |
|
#define PC2CAL 0x10 |
|
#define PC2MLSE 0x20 |
|
|
|
/* PC Test Mode Register (0x0F0B) */ |
|
#define PC_TEST_MODE 0x08 |
|
|
|
/* Frequency Control Word (0x0F10) */ |
|
/* Range 0x02 - 0xA6 */ |
|
|
|
/* Test Mode Control 1-4 (0x0F14 - 0x0F17) */ |
|
|
|
/**********************************************************************/ |
|
|
|
/* Shared RAM Area */ |
|
#define SCB_BASE 0x0000 |
|
#define STATUS_BASE 0x0100 |
|
#define HOST_TO_ECF_BASE 0x0200 |
|
#define ECF_TO_HOST_BASE 0x0300 |
|
#define CCS_BASE 0x0400 |
|
#define RCS_BASE 0x0800 |
|
#define INFRA_TIM_BASE 0x0C00 |
|
#define SSID_LIST_BASE 0x0D00 |
|
#define TX_BUF_BASE 0x1000 |
|
#define RX_BUF_BASE 0x8000 |
|
|
|
#define NUMBER_OF_CCS 64 |
|
#define NUMBER_OF_RCS 64 |
|
/*#define NUMBER_OF_TX_CCS 14 */ |
|
#define NUMBER_OF_TX_CCS 14 |
|
|
|
#define TX_BUF_SIZE (2048 - sizeof(struct tx_msg)) |
|
#define RX_BUFF_END 0x3FFF |
|
/* Values for buffer_status */ |
|
#define CCS_BUFFER_FREE 0 |
|
#define CCS_BUFFER_BUSY 1 |
|
#define CCS_COMMAND_COMPLETE 2 |
|
#define CCS_COMMAND_FAILED 3 |
|
|
|
/* Values for cmd */ |
|
#define CCS_DOWNLOAD_STARTUP_PARAMS 1 |
|
#define CCS_UPDATE_PARAMS 2 |
|
#define CCS_REPORT_PARAMS 3 |
|
#define CCS_UPDATE_MULTICAST_LIST 4 |
|
#define CCS_UPDATE_POWER_SAVINGS_MODE 5 |
|
#define CCS_START_NETWORK 6 |
|
#define CCS_JOIN_NETWORK 7 |
|
#define CCS_START_ASSOCIATION 8 |
|
#define CCS_TX_REQUEST 9 |
|
#define CCS_TEST_MEMORY 0xa |
|
#define CCS_SHUTDOWN 0xb |
|
#define CCS_DUMP_MEMORY 0xc |
|
#define CCS_START_TIMER 0xe |
|
#define CCS_LAST_CMD CCS_START_TIMER |
|
|
|
/* Values for link field */ |
|
#define CCS_END_LIST 0xff |
|
|
|
/* values for buffer_status field */ |
|
#define RCS_BUFFER_FREE 0 |
|
#define RCS_BUFFER_BUSY 1 |
|
#define RCS_COMPLETE 2 |
|
#define RCS_FAILED 3 |
|
#define RCS_BUFFER_RELEASE 0xFF |
|
|
|
/* values for interrupt_id field */ |
|
#define PROCESS_RX_PACKET 0x80 /* */ |
|
#define REJOIN_NET_COMPLETE 0x81 /* RCS ID: Rejoin Net Complete */ |
|
#define ROAMING_INITIATED 0x82 /* RCS ID: Roaming Initiated */ |
|
#define JAPAN_CALL_SIGN_RXD 0x83 /* RCS ID: New Japan Call Sign */ |
|
|
|
/*****************************************************************************/ |
|
/* Memory types for dump memory command */ |
|
#define C_MEM_PROG 0 |
|
#define C_MEM_XDATA 1 |
|
#define C_MEM_SFR 2 |
|
#define C_MEM_IDATA 3 |
|
|
|
/*** Return values for hw_xmit **********/ |
|
#define XMIT_OK (0) |
|
#define XMIT_MSG_BAD (-1) |
|
#define XMIT_NO_CCS (-2) |
|
#define XMIT_NO_INTR (-3) |
|
#define XMIT_NEED_AUTH (-4) |
|
|
|
/*** Values for card status */ |
|
#define CARD_INSERTED (0) |
|
|
|
#define CARD_AWAITING_PARAM (1) |
|
#define CARD_INIT_ERROR (11) |
|
|
|
#define CARD_DL_PARAM (2) |
|
#define CARD_DL_PARAM_ERROR (12) |
|
|
|
#define CARD_DOING_ACQ (3) |
|
|
|
#define CARD_ACQ_COMPLETE (4) |
|
#define CARD_ACQ_FAILED (14) |
|
|
|
#define CARD_AUTH_COMPLETE (5) |
|
#define CARD_AUTH_REFUSED (15) |
|
|
|
#define CARD_ASSOC_COMPLETE (6) |
|
#define CARD_ASSOC_FAILED (16) |
|
|
|
/*** Values for authentication_state ***********************************/ |
|
#define UNAUTHENTICATED (0) |
|
#define AWAITING_RESPONSE (1) |
|
#define AUTHENTICATED (2) |
|
#define NEED_TO_AUTH (3) |
|
|
|
/*** Values for authentication type ************************************/ |
|
#define OPEN_AUTH_REQUEST (1) |
|
#define OPEN_AUTH_RESPONSE (2) |
|
#define BROADCAST_DEAUTH (0xc0) |
|
/*** Values for timer functions ****************************************/ |
|
#define TODO_NOTHING (0) |
|
#define TODO_VERIFY_DL_START (-1) |
|
#define TODO_START_NET (-2) |
|
#define TODO_JOIN_NET (-3) |
|
#define TODO_AUTHENTICATE_TIMEOUT (-4) |
|
#define TODO_SEND_CCS (-5) |
|
/***********************************************************************/ |
|
/* Parameter passing structure for update/report parameter CCS's */ |
|
struct object_id { |
|
void *object_addr; |
|
unsigned char object_length; |
|
}; |
|
|
|
#define OBJID_network_type 0 |
|
#define OBJID_acting_as_ap_status 1 |
|
#define OBJID_current_ess_id 2 |
|
#define OBJID_scanning_mode 3 |
|
#define OBJID_power_mgt_state 4 |
|
#define OBJID_mac_address 5 |
|
#define OBJID_frag_threshold 6 |
|
#define OBJID_hop_time 7 |
|
#define OBJID_beacon_period 8 |
|
#define OBJID_dtim_period 9 |
|
#define OBJID_retry_max 10 |
|
#define OBJID_ack_timeout 11 |
|
#define OBJID_sifs 12 |
|
#define OBJID_difs 13 |
|
#define OBJID_pifs 14 |
|
#define OBJID_rts_threshold 15 |
|
#define OBJID_scan_dwell_time 16 |
|
#define OBJID_max_scan_dwell_time 17 |
|
#define OBJID_assoc_resp_timeout 18 |
|
#define OBJID_adhoc_scan_cycle_max 19 |
|
#define OBJID_infra_scan_cycle_max 20 |
|
#define OBJID_infra_super_cycle_max 21 |
|
#define OBJID_promiscuous_mode 22 |
|
#define OBJID_unique_word 23 |
|
#define OBJID_slot_time 24 |
|
#define OBJID_roaming_low_snr 25 |
|
#define OBJID_low_snr_count_thresh 26 |
|
#define OBJID_infra_missed_bcn 27 |
|
#define OBJID_adhoc_missed_bcn 28 |
|
#define OBJID_curr_country_code 29 |
|
#define OBJID_hop_pattern 30 |
|
#define OBJID_reserved 31 |
|
#define OBJID_cw_max_msb 32 |
|
#define OBJID_cw_min_msb 33 |
|
#define OBJID_noise_filter_gain 34 |
|
#define OBJID_noise_limit_offset 35 |
|
#define OBJID_det_rssi_thresh_offset 36 |
|
#define OBJID_med_busy_thresh_offset 37 |
|
#define OBJID_det_sync_thresh 38 |
|
#define OBJID_test_mode 39 |
|
#define OBJID_test_min_chan_num 40 |
|
#define OBJID_test_max_chan_num 41 |
|
#define OBJID_allow_bcast_ID_prbrsp 42 |
|
#define OBJID_privacy_must_start 43 |
|
#define OBJID_privacy_can_join 44 |
|
#define OBJID_basic_rate_set 45 |
|
|
|
/**** Configuration/Status/Control Area ***************************/ |
|
/* System Control Block (SCB) Area |
|
* Located at Shared RAM offset 0 |
|
*/ |
|
struct scb { |
|
UCHAR ccs_index; |
|
UCHAR rcs_index; |
|
}; |
|
|
|
/****** Status area at Shared RAM offset 0x0100 ******************************/ |
|
struct status { |
|
UCHAR mrx_overflow_for_host; /* 0=ECF may write, 1=host may write*/ |
|
UCHAR mrx_checksum_error_for_host; /* 0=ECF may write, 1=host may write*/ |
|
UCHAR rx_hec_error_for_host; /* 0=ECF may write, 1=host may write*/ |
|
UCHAR reserved1; |
|
short mrx_overflow; /* ECF increments on rx overflow */ |
|
short mrx_checksum_error; /* ECF increments on rx CRC error */ |
|
short rx_hec_error; /* ECF incs on mac header CRC error */ |
|
UCHAR rxnoise; /* Average RSL measurement */ |
|
}; |
|
|
|
/****** Host-to-ECF Data Area at Shared RAM offset 0x200 *********************/ |
|
struct host_to_ecf_area { |
|
|
|
}; |
|
|
|
/****** ECF-to-Host Data Area at Shared RAM offset 0x0300 ********************/ |
|
struct startup_res_518 { |
|
UCHAR startup_word; |
|
UCHAR station_addr[ADDRLEN]; |
|
UCHAR calc_prog_chksum; |
|
UCHAR calc_cis_chksum; |
|
UCHAR ecf_spare[7]; |
|
UCHAR japan_call_sign[12]; |
|
}; |
|
|
|
struct startup_res_6 { |
|
UCHAR startup_word; |
|
UCHAR station_addr[ADDRLEN]; |
|
UCHAR reserved; |
|
UCHAR supp_rates[8]; |
|
UCHAR japan_call_sign[12]; |
|
UCHAR calc_prog_chksum; |
|
UCHAR calc_cis_chksum; |
|
UCHAR firmware_version[3]; |
|
UCHAR asic_version; |
|
UCHAR tib_length; |
|
}; |
|
|
|
struct start_join_net_params { |
|
UCHAR net_type; |
|
UCHAR ssid[ESSID_SIZE]; |
|
UCHAR reserved; |
|
UCHAR privacy_can_join; |
|
}; |
|
|
|
/****** Command Control Structure area at Shared ram offset 0x0400 ***********/ |
|
/* Structures for command specific parameters (ccs.var) */ |
|
struct update_param_cmd { |
|
UCHAR object_id; |
|
UCHAR number_objects; |
|
UCHAR failure_cause; |
|
}; |
|
struct report_param_cmd { |
|
UCHAR object_id; |
|
UCHAR number_objects; |
|
UCHAR failure_cause; |
|
UCHAR length; |
|
}; |
|
struct start_network_cmd { |
|
UCHAR update_param; |
|
UCHAR bssid[ADDRLEN]; |
|
UCHAR net_initiated; |
|
UCHAR net_default_tx_rate; |
|
UCHAR encryption; |
|
}; |
|
struct join_network_cmd { |
|
UCHAR update_param; |
|
UCHAR bssid[ADDRLEN]; |
|
UCHAR net_initiated; |
|
UCHAR net_default_tx_rate; |
|
UCHAR encryption; |
|
}; |
|
struct tx_requested_cmd { |
|
|
|
UCHAR tx_data_ptr[2]; |
|
UCHAR tx_data_length[2]; |
|
UCHAR host_reserved[2]; |
|
UCHAR reserved[3]; |
|
UCHAR tx_rate; |
|
UCHAR pow_sav_mode; |
|
UCHAR retries; |
|
UCHAR antenna; |
|
}; |
|
struct tx_requested_cmd_4 { |
|
|
|
UCHAR tx_data_ptr[2]; |
|
UCHAR tx_data_length[2]; |
|
UCHAR dest_addr[ADDRLEN]; |
|
UCHAR pow_sav_mode; |
|
UCHAR retries; |
|
UCHAR station_id; |
|
}; |
|
struct memory_dump_cmd { |
|
UCHAR memory_type; |
|
UCHAR memory_ptr[2]; |
|
UCHAR length; |
|
}; |
|
struct update_association_cmd { |
|
UCHAR status; |
|
UCHAR aid[2]; |
|
}; |
|
struct start_timer_cmd { |
|
UCHAR duration[2]; |
|
}; |
|
|
|
struct ccs { |
|
UCHAR buffer_status; /* 0 = buffer free, 1 = buffer busy */ |
|
/* 2 = command complete, 3 = failed */ |
|
UCHAR cmd; /* command to ECF */ |
|
UCHAR link; /* link to next CCS, FF=end of list */ |
|
/* command specific parameters */ |
|
union { |
|
char reserved[13]; |
|
struct update_param_cmd update_param; |
|
struct report_param_cmd report_param; |
|
UCHAR nummulticast; |
|
UCHAR mode; |
|
struct start_network_cmd start_network; |
|
struct join_network_cmd join_network; |
|
struct tx_requested_cmd tx_request; |
|
struct memory_dump_cmd memory_dump; |
|
struct update_association_cmd update_assoc; |
|
struct start_timer_cmd start_timer; |
|
} var; |
|
}; |
|
|
|
/*****************************************************************************/ |
|
/* Transmit buffer structures */ |
|
struct tib_structure { |
|
UCHAR ccs_index; |
|
UCHAR psm; |
|
UCHAR pass_fail; |
|
UCHAR retry_count; |
|
UCHAR max_retries; |
|
UCHAR frags_remaining; |
|
UCHAR no_rb; |
|
UCHAR rts_reqd; |
|
UCHAR csma_tx_cntrl_2; |
|
UCHAR sifs_tx_cntrl_2; |
|
UCHAR tx_dma_addr_1[2]; |
|
UCHAR tx_dma_addr_2[2]; |
|
UCHAR var_dur_2mhz[2]; |
|
UCHAR var_dur_1mhz[2]; |
|
UCHAR max_dur_2mhz[2]; |
|
UCHAR max_dur_1mhz[2]; |
|
UCHAR hdr_len; |
|
UCHAR max_frag_len[2]; |
|
UCHAR var_len[2]; |
|
UCHAR phy_hdr_4; |
|
UCHAR mac_hdr_1; |
|
UCHAR mac_hdr_2; |
|
UCHAR sid[2]; |
|
}; |
|
|
|
struct phy_header { |
|
UCHAR sfd[2]; |
|
UCHAR hdr_3; |
|
UCHAR hdr_4; |
|
}; |
|
struct ray_rx_msg { |
|
struct mac_header mac; |
|
UCHAR var[]; |
|
}; |
|
|
|
struct tx_msg { |
|
struct tib_structure tib; |
|
struct phy_header phy; |
|
struct mac_header mac; |
|
UCHAR var[1]; |
|
}; |
|
|
|
/****** ECF Receive Control Structure (RCS) Area at Shared RAM offset 0x0800 */ |
|
/* Structures for command specific parameters (rcs.var) */ |
|
struct rx_packet_cmd { |
|
UCHAR rx_data_ptr[2]; |
|
UCHAR rx_data_length[2]; |
|
UCHAR rx_sig_lev; |
|
UCHAR next_frag_rcs_index; |
|
UCHAR totalpacketlength[2]; |
|
}; |
|
struct rejoin_net_cmplt_cmd { |
|
UCHAR reserved; |
|
UCHAR bssid[ADDRLEN]; |
|
}; |
|
struct japan_call_sign_rxd { |
|
UCHAR rxd_call_sign[8]; |
|
UCHAR reserved[5]; |
|
}; |
|
|
|
struct rcs { |
|
UCHAR buffer_status; |
|
UCHAR interrupt_id; |
|
UCHAR link_field; |
|
/* command specific parameters */ |
|
union { |
|
UCHAR reserved[13]; |
|
struct rx_packet_cmd rx_packet; |
|
struct rejoin_net_cmplt_cmd rejoin_net_complete; |
|
struct japan_call_sign_rxd japan_call_sign; |
|
} var; |
|
}; |
|
|
|
/****** Startup parameter structures for both versions of firmware ***********/ |
|
struct b4_startup_params { |
|
UCHAR a_network_type; /* C_ADHOC, C_INFRA */ |
|
UCHAR a_acting_as_ap_status; /* C_TYPE_STA, C_TYPE_AP */ |
|
UCHAR a_current_ess_id[ESSID_SIZE]; /* Null terminated unless 32 long */ |
|
UCHAR a_scanning_mode; /* passive 0, active 1 */ |
|
UCHAR a_power_mgt_state; /* CAM 0, */ |
|
UCHAR a_mac_addr[ADDRLEN]; /* */ |
|
UCHAR a_frag_threshold[2]; /* 512 */ |
|
UCHAR a_hop_time[2]; /* 16k * 2**n, n=0-4 in Kus */ |
|
UCHAR a_beacon_period[2]; /* n * a_hop_time in Kus */ |
|
UCHAR a_dtim_period; /* in beacons */ |
|
UCHAR a_retry_max; /* */ |
|
UCHAR a_ack_timeout; /* */ |
|
UCHAR a_sifs; /* */ |
|
UCHAR a_difs; /* */ |
|
UCHAR a_pifs; /* */ |
|
UCHAR a_rts_threshold[2]; /* */ |
|
UCHAR a_scan_dwell_time[2]; /* */ |
|
UCHAR a_max_scan_dwell_time[2]; /* */ |
|
UCHAR a_assoc_resp_timeout_thresh; /* */ |
|
UCHAR a_adhoc_scan_cycle_max; /* */ |
|
UCHAR a_infra_scan_cycle_max; /* */ |
|
UCHAR a_infra_super_scan_cycle_max; /* */ |
|
UCHAR a_promiscuous_mode; /* */ |
|
UCHAR a_unique_word[2]; /* */ |
|
UCHAR a_slot_time; /* */ |
|
UCHAR a_roaming_low_snr_thresh; /* */ |
|
UCHAR a_low_snr_count_thresh; /* */ |
|
UCHAR a_infra_missed_bcn_thresh; /* */ |
|
UCHAR a_adhoc_missed_bcn_thresh; /* */ |
|
UCHAR a_curr_country_code; /* C_USA */ |
|
UCHAR a_hop_pattern; /* */ |
|
UCHAR a_hop_pattern_length; /* */ |
|
/* b4 - b5 differences start here */ |
|
UCHAR a_cw_max; /* */ |
|
UCHAR a_cw_min; /* */ |
|
UCHAR a_noise_filter_gain; /* */ |
|
UCHAR a_noise_limit_offset; /* */ |
|
UCHAR a_det_rssi_thresh_offset; /* */ |
|
UCHAR a_med_busy_thresh_offset; /* */ |
|
UCHAR a_det_sync_thresh; /* */ |
|
UCHAR a_test_mode; /* */ |
|
UCHAR a_test_min_chan_num; /* */ |
|
UCHAR a_test_max_chan_num; /* */ |
|
UCHAR a_rx_tx_delay; /* */ |
|
UCHAR a_current_bss_id[ADDRLEN]; /* */ |
|
UCHAR a_hop_set; /* */ |
|
}; |
|
struct b5_startup_params { |
|
UCHAR a_network_type; /* C_ADHOC, C_INFRA */ |
|
UCHAR a_acting_as_ap_status; /* C_TYPE_STA, C_TYPE_AP */ |
|
UCHAR a_current_ess_id[ESSID_SIZE]; /* Null terminated unless 32 long */ |
|
UCHAR a_scanning_mode; /* passive 0, active 1 */ |
|
UCHAR a_power_mgt_state; /* CAM 0, */ |
|
UCHAR a_mac_addr[ADDRLEN]; /* */ |
|
UCHAR a_frag_threshold[2]; /* 512 */ |
|
UCHAR a_hop_time[2]; /* 16k * 2**n, n=0-4 in Kus */ |
|
UCHAR a_beacon_period[2]; /* n * a_hop_time in Kus */ |
|
UCHAR a_dtim_period; /* in beacons */ |
|
UCHAR a_retry_max; /* 4 */ |
|
UCHAR a_ack_timeout; /* */ |
|
UCHAR a_sifs; /* */ |
|
UCHAR a_difs; /* */ |
|
UCHAR a_pifs; /* */ |
|
UCHAR a_rts_threshold[2]; /* */ |
|
UCHAR a_scan_dwell_time[2]; /* */ |
|
UCHAR a_max_scan_dwell_time[2]; /* */ |
|
UCHAR a_assoc_resp_timeout_thresh; /* */ |
|
UCHAR a_adhoc_scan_cycle_max; /* */ |
|
UCHAR a_infra_scan_cycle_max; /* */ |
|
UCHAR a_infra_super_scan_cycle_max; /* */ |
|
UCHAR a_promiscuous_mode; /* */ |
|
UCHAR a_unique_word[2]; /* */ |
|
UCHAR a_slot_time; /* */ |
|
UCHAR a_roaming_low_snr_thresh; /* */ |
|
UCHAR a_low_snr_count_thresh; /* */ |
|
UCHAR a_infra_missed_bcn_thresh; /* */ |
|
UCHAR a_adhoc_missed_bcn_thresh; /* */ |
|
UCHAR a_curr_country_code; /* C_USA */ |
|
UCHAR a_hop_pattern; /* */ |
|
UCHAR a_hop_pattern_length; /* */ |
|
/* b4 - b5 differences start here */ |
|
UCHAR a_cw_max[2]; /* */ |
|
UCHAR a_cw_min[2]; /* */ |
|
UCHAR a_noise_filter_gain; /* */ |
|
UCHAR a_noise_limit_offset; /* */ |
|
UCHAR a_det_rssi_thresh_offset; /* */ |
|
UCHAR a_med_busy_thresh_offset; /* */ |
|
UCHAR a_det_sync_thresh; /* */ |
|
UCHAR a_test_mode; /* */ |
|
UCHAR a_test_min_chan_num; /* */ |
|
UCHAR a_test_max_chan_num; /* */ |
|
UCHAR a_allow_bcast_SSID_probe_rsp; |
|
UCHAR a_privacy_must_start; |
|
UCHAR a_privacy_can_join; |
|
UCHAR a_basic_rate_set[8]; |
|
}; |
|
|
|
/*****************************************************************************/ |
|
#define RAY_IOCG_PARMS (SIOCDEVPRIVATE) |
|
#define RAY_IOCS_PARMS (SIOCDEVPRIVATE + 1) |
|
#define RAY_DO_CMD (SIOCDEVPRIVATE + 2) |
|
|
|
/****** ethernet <-> 802.11 translation **************************************/ |
|
typedef struct snaphdr_t |
|
{ |
|
UCHAR dsap; |
|
UCHAR ssap; |
|
UCHAR ctrl; |
|
UCHAR org[3]; |
|
UCHAR ethertype[2]; |
|
} snaphdr_t; |
|
|
|
#define BRIDGE_ENCAP 0xf80000 |
|
#define RFC1042_ENCAP 0 |
|
#define SNAP_ID 0x0003aaaa |
|
#define RAY_IPX_TYPE 0x8137 |
|
#define APPLEARP_TYPE 0x80f3 |
|
/*****************************************************************************/ |
|
#endif /* _RAYCTL_H_ */
|
|
|