rayctl.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:25k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

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