root/dev/pcmcia/if_rayreg.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


    1 /*      $OpenBSD: if_rayreg.h,v 1.7 2003/12/12 02:36:07 mcbride Exp $   */
    2 /*      $NetBSD: if_rayreg.h,v 1.3 2000/08/10 11:48:46 ad Exp $ */
    3 
    4 /* 
    5  * Copyright (c) 2000 Christian E. Hopps
    6  * All rights reserved.
    7  * 
    8  * Redistribution and use in source and binary forms, with or without
    9  * modification, are permitted provided that the following conditions
   10  * are met:
   11  * 1. Redistributions of source code must retain the above copyright
   12  *    notice, this list of conditions and the following disclaimer.
   13  * 2. Redistributions in binary form must reproduce the above copyright
   14  *    notice, this list of conditions and the following disclaimer in the
   15  *    documentation and/or other materials provided with the distribution.
   16  * 3. Neither the name of the author nor the names of any co-contributors
   17  *    may be used to endorse or promote products derived from this software
   18  *    without specific prior written permission.
   19  *
   20  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   21  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   23  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   24  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   25  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   26  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   27  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   28  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   29  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   30  * SUCH DAMAGE.
   31  */
   32 
   33 #define RAY_MAXSSIDLEN  32
   34 
   35 #pragma pack(1)
   36 
   37 /*
   38  * CCR registers 
   39  */
   40 #define RAY_COR         (0x00)  /* config option register */
   41 #define RAY_CCSR        (0x01)  /* card config and status register */
   42 #define RAY_PIN         (0x02)  /* not in hw */
   43 #define RAY_SOCKETCOPY  (0x03)  /* not used by hw */
   44 #define RAY_HCSIR       (0x05)  /* HCS intr register */
   45 #define RAY_ECFIR       (0x06)  /* ECF intr register */
   46 #define RAY_AR0         (0x08)  /* authorization register 0 (unused) */
   47 #define RAY_AR1         (0x09)  /* authorization register 1 (unused) */
   48 /*
   49  * XXX these registers cannot be accessed with pcmcia.c's 14 byte mapping
   50  * of the CCR for us
   51  */
   52 #if 0
   53 #define RAY_PMR         0x0a    /* program mode register (unused) */
   54 #define RAY_TMR         0x0b    /* pc test mode register (unused) */
   55 #define RAY_FCWR        0x10    /* frequency control word register */
   56 #define RAY_TMC1        0x14    /* test mode control 1 (unused) */
   57 #define RAY_TMC2        0x15    /* test mode control 1 (unused) */
   58 #define RAY_TMC3        0x16    /* test mode control 1 (unused) */
   59 #define RAY_TMC4        0x17    /* test mode control 1 (unused) */
   60 #endif
   61 
   62 /*
   63  * COR register bits
   64  */
   65 #define RAY_COR_CFG_NUM         0x01    /* currently ignored and set */
   66 #define RAY_COR_CFG_MASK        0x3f    /* mask for function */
   67 #define RAY_COR_LEVEL_IRQ       0x40    /* currently ignored and set */
   68 #define RAY_COR_RESET           0x80    /* soft-reset the card */
   69 
   70 /*
   71  * CCS register bits
   72  */
   73 /* XXX the linux driver indicates bit 0 is the irq bit */
   74 #define RAY_CCS_IRQ             0x02    /* interrupt pending */
   75 #define RAY_CCS_POWER_DOWN      0x04
   76 
   77 /*
   78  * HCSI register bits
   79  *
   80  * the host can only clear this bit.
   81  */
   82 #define RAY_HCSIR_IRQ           0x01    /* indicates an interrupt */
   83 
   84 /*
   85  * ECFI register values
   86  */
   87 #define RAY_ECSIR_IRQ           0x01    /* interrupt the card */
   88 
   89 /*
   90  * authorization register 0 values
   91  *    -- used for testing/programming the card (unused)
   92  */
   93 #define RAY_AR0_ON              0x57
   94 
   95 /*
   96  * authorization register 1 values
   97  *      -- used for testing/programming the card (unused)
   98  */
   99 #define RAY_AR1_ON              0x82
  100 
  101 /*
  102  * PMR bits -- these are used to program the card (unused)
  103  */
  104 #define RAY_PMR_PC2PM           0x02    /* grant access to firmware flash */
  105 #define RAY_PMR_PC2CAL          0x10    /* read access to the A/D modem inp */
  106 #define RAY_PMR_MLSE            0x20    /* read access to the MSLE prom */
  107 
  108 /*
  109  * TMR bits -- get access to test modes (unused)
  110  */
  111 #define RAY_TMR_TEST            0x08    /* test mode */
  112 
  113 /*
  114  * FCWR -- frequency control word, values from [0x02,0xA6] map to
  115  * RF frequency values.
  116  */
  117 
  118 /*
  119  * 48k of memory -- would like to map this into smaller isa windows
  120  * but doesn't seem currently possible with the pcmcia code
  121  */
  122 #define RAY_SRAM_MEM_BASE       0
  123 #define RAY_SRAM_MEM_SIZE       0xc000
  124 
  125 /*
  126  * offsets into shared ram
  127  */
  128 #define RAY_SCB_BASE            0x0     /* cfg/status/ctl area */
  129 #define RAY_STATUS_BASE         0x0100
  130 #define RAY_HOST_TO_ECF_BASE    0x0200
  131 #define RAY_ECF_TO_HOST_BASE    0x0300
  132 #define RAY_CCS_BASE            0x0400
  133 #define RAY_RCS_BASE            0x0800
  134 #define RAY_APOINT_TIM_BASE     0x0c00
  135 #define RAY_SSID_LIST_BASE      0x0d00
  136 #define RAY_TX_BASE             0x1000
  137 #define RAY_TX_SIZE             0x7000
  138 #define RAY_TX_END              0x8000
  139 #define RAY_RX_BASE             0x8000
  140 #define RAY_RX_END              0xc000
  141 #define RAY_RX_MASK             0x3fff
  142 
  143 struct ray_ecf_startup {
  144         u_int8_t        e_status;               /* RAY_ECFS_ */
  145         u_int8_t        e_station_addr[ETHER_ADDR_LEN];
  146         u_int8_t        e_resv0;
  147         u_int8_t        e_rates[8];
  148         u_int8_t        e_japan_callsign[12];
  149         u_int8_t        e_prg_cksum;
  150         u_int8_t        e_cis_cksum;
  151         u_int8_t        e_fw_build_string;
  152         u_int8_t        e_fw_build;
  153         u_int8_t        e_fw_resv;
  154         u_int8_t        e_asic_version;
  155         u_int8_t        e_tib_size;
  156         u_int8_t        e_resv1[29];
  157 };
  158 
  159 #define RAY_ECFS_RESERVED0              0x01
  160 #define RAY_ECFS_PROC_SELF_TEST         0x02
  161 #define RAY_ECFS_PROG_MEM_CHECKSUM      0x04
  162 #define RAY_ECFS_DATA_MEM_TEST          0x08
  163 #define RAY_ECFS_RX_CALIBRATION         0x10
  164 #define RAY_ECFS_FW_VERSION_COMPAT      0x20
  165 #define RAY_ECFS_RERSERVED1             0x40
  166 #define RAY_ECFS_TEST_COMPLETE          0x80
  167 #define RAY_ECFS_CARD_OK                RAY_ECFS_TEST_COMPLETE
  168 
  169 /* configure/status/control memory */
  170 struct ray_csc {
  171         u_int8_t        csc_mrxo_own;   /* 0 ECF writes, 1 host write */
  172         u_int8_t        csc_mrxc_own;   /* " */
  173         u_int8_t        csc_rxhc_own;   /* " */
  174         u_int8_t        csc_resv;
  175         u_int16_t       csc_mrx_overflow;       /* ECF incs on rx overflow */
  176         u_int16_t       csc_mrx_cksum;  /* " on cksum error */
  177         u_int16_t       csc_rx_hcksum;  /* " on header cksum error */
  178         u_int8_t        csc_rx_noise;           /* average RSL measurement */
  179 };
  180 
  181 /* status area */
  182 struct ray_status {
  183         u_int8_t        st_startup_word;
  184         u_int8_t        st_station_addr[ETHER_ADDR_LEN];
  185         u_int8_t        st_calc_prog_cksum;
  186         u_int8_t        st_calc_cis_cksum;
  187         u_int8_t        st_ecf_spare[7];
  188         u_int8_t        st_japan_callsign[12];
  189 };
  190 
  191 /*
  192  * Host to ECF data formats
  193  */
  194 struct ray_startup_params_head {
  195         u_int8_t        sp_net_type;    /* 0: ad-hoc 1: infra */
  196         u_int8_t        sp_ap_status;   /* 0: terminal 1: access-point */
  197         u_int8_t        sp_ssid[RAY_MAXSSIDLEN];        /* current SSID */
  198         u_int8_t        sp_scan_mode;   /* 1: active */
  199         u_int8_t        sp_apm_mode;    /* 0: none 1: power-saving */
  200         u_int8_t        sp_mac_addr[ETHER_ADDR_LEN];
  201         u_int8_t        sp_frag_thresh[2];
  202 /*2c*/  u_int8_t        sp_dwell_time[2];
  203 /*2e*/  u_int8_t        sp_beacon_period[2];
  204 /*30*/  u_int8_t        sp_dtim_interval;
  205 /*31*/  u_int8_t        sp_max_retry;   /* number of times to attemp tx */
  206 /*32*/  u_int8_t        sp_ack_timo;
  207 /*33*/  u_int8_t        sp_sifs;
  208 /*34*/  u_int8_t        sp_difs;
  209 /*35*/  u_int8_t        sp_pifs;
  210 /*36*/  u_int8_t        sp_rts_thresh[2];
  211 /*38*/  u_int8_t        sp_scan_dwell[2];
  212 /*3a*/  u_int8_t        sp_scan_max_dwell[2];
  213 /*3c*/  u_int8_t        sp_assoc_timo;
  214 /*3d*/  u_int8_t        sp_adhoc_scan_cycle;
  215 /*3e*/  u_int8_t        sp_infra_scan_cycle;
  216 /*3f*/  u_int8_t        sp_infra_super_scan_cycle;
  217 /*40*/  u_int8_t        sp_promisc;
  218 /*41*/  u_int8_t        sp_uniq_word[2];
  219 /*43*/  u_int8_t        sp_slot_time;
  220 /*44*/  u_int8_t        sp_roam_low_snr_thresh; /* if below this inc count */
  221 
  222 /*45*/  u_int8_t        sp_low_snr_count;       /* roam after cnt below thrsh */
  223 /*46*/  u_int8_t        sp_infra_missed_beacon_count;
  224 /*47*/  u_int8_t        sp_adhoc_missed_beacon_count;
  225 
  226 /*48*/  u_int8_t        sp_country_code;
  227 /*49*/  u_int8_t        sp_hop_seq;
  228 /*4a*/  u_int8_t        sp_hop_seq_len; /* no longer supported */
  229 };
  230 
  231 /* build 5 tail to the startup params */
  232 struct ray_startup_params_tail_5 {
  233         u_int8_t        sp_cw_max[2];
  234         u_int8_t        sp_cw_min[2];
  235         u_int8_t        sp_noise_filter_gain;
  236         u_int8_t        sp_noise_limit_offset;
  237         u_int8_t        sp_rssi_thresh_offset;
  238         u_int8_t        sp_busy_thresh_offset;
  239         u_int8_t        sp_sync_thresh;
  240         u_int8_t        sp_test_mode;
  241         u_int8_t        sp_test_min_chan;
  242         u_int8_t        sp_test_max_chan;
  243         u_int8_t        sp_allow_probe_resp;
  244         u_int8_t        sp_privacy_must_start;
  245         u_int8_t        sp_privacy_can_join;
  246         u_int8_t        sp_basic_rate_set[8];
  247 };
  248 
  249 /* build 4 (webgear) tail to the startup params */
  250 struct ray_startup_params_tail_4 {
  251 /*4b*/  u_int8_t        sp_cw_max;              /* 2 bytes in build 5 */
  252 /*4c*/  u_int8_t        sp_cw_min;              /* 2 bytes in build 5 */
  253 /*4e*/  u_int8_t        sp_noise_filter_gain;
  254 /*4f*/  u_int8_t        sp_noise_limit_offset;
  255         u_int8_t        sp_rssi_thresh_offset;
  256         u_int8_t        sp_busy_thresh_offset;
  257         u_int8_t        sp_sync_thresh;
  258         u_int8_t        sp_test_mode;
  259         u_int8_t        sp_test_min_chan;
  260         u_int8_t        sp_test_max_chan;
  261         /* more bytes in build 5 */
  262 };
  263 
  264 /*
  265  * Parameter IDs for the update/report param commands and values if
  266  * relevant
  267  */
  268 #define RAY_PID_NET_TYPE                0
  269 #define RAY_PID_AP_STATUS               1
  270 #define RAY_PID_SSID                    2
  271 #define RAY_PID_SCAN_MODE               3
  272 #define RAY_PID_APM_MODE                4
  273 #define RAY_PID_MAC_ADDR                5
  274 #define RAY_PID_FRAG_THRESH             6
  275 #define RAY_PID_DWELL_TIME              7
  276 #define RAY_PID_BEACON_PERIOD           8
  277 #define RAY_PID_DTIM_INT                9
  278 #define RAY_PID_MAX_RETRY               10
  279 #define RAY_PID_ACK_TIMO                11
  280 #define RAY_PID_SIFS                    12
  281 #define RAY_PID_DIFS                    13
  282 #define RAY_PID_PIFS                    14
  283 #define RAY_PID_RTS_THRESH              15
  284 #define RAY_PID_SCAN_DWELL_PERIOD       16
  285 #define RAY_PID_MAX_SCAN_DWELL_PERIOD   17
  286 #define RAY_PID_ASSOC_TIMO              18
  287 #define RAY_PID_ADHOC_SCAN_CYCLE        19
  288 #define RAY_PID_INFRA_SCAN_CYCLE        20
  289 #define RAY_PID_INFRA_SUPER_SCAN_CYCLE  21
  290 #define RAY_PID_PROMISC                 22
  291 #define RAY_PID_UNIQ_WORD               23
  292 #define RAY_PID_SLOT_TIME               24
  293 #define RAY_PID_ROAM_LOW_SNR_THRESH     25
  294 #define RAY_PID_LOW_SNR_COUNT           26
  295 #define RAY_PID_INFRA_MISSED_BEACON_COUNT       27
  296 #define RAY_PID_ADHOC_MISSED_BEACON_COUNT       28
  297 #define RAY_PID_COUNTRY_CODE            29
  298 #define RAY_PID_HOP_SEQ                 30
  299 #define RAY_PID_HOP_SEQ_LEN             31
  300 #define RAY_PID_CW_MAX                  32
  301 #define RAY_PID_CW_MIN                  33
  302 #define RAY_PID_NOISE_FILTER_GAIN       34
  303 #define RAY_PID_NOISE_LIMIT_OFFSET      35
  304 #define RAY_PID_RSSI_THRESH_OFFSET      36
  305 #define RAY_PID_BUSY_THRESH_OFFSET      37
  306 #define RAY_PID_SYNC_THRESH             38
  307 #define RAY_PID_TEST_MODE               39
  308 #define RAY_PID_TEST_MIN_CHAN           40
  309 #define RAY_PID_TEST_MAX_CHAN           41
  310 #define RAY_PID_ALLOW_PROBE_RESP        42
  311 #define RAY_PID_PRIVACY_MUST_START      43
  312 #define RAY_PID_PRIVACY_CAN_JOIN        44
  313 #define RAY_PID_BASIC_RATE_SET          45
  314 #define RAY_PID_MAX                     46
  315 
  316 /*
  317  * various values for the above parameters
  318  */
  319 #define RAY_PID_NET_TYPE_ADHOC          0x00
  320 #define RAY_PID_NET_TYPE_INFRA          0x01
  321 
  322 #define RAY_PID_AP_STATUS_TERMINAL      0x00    /* not access-point */
  323 #define RAY_PID_AP_STATUS_AP            0x01    /* act as access-point */
  324 
  325 #define RAY_PID_SCAN_MODE_PASSIVE       0x00    /* hw doesn't implement */
  326 #define RAY_PID_SCAN_MODE_ACTIVE        0x01
  327 
  328 #define RAY_PID_APM_MODE_NONE           0x00    /* no power saving */
  329 #define RAY_PID_APM_MODE_PS             0x01    /* power saving mode */
  330 
  331 #define RAY_PID_COUNTRY_CODE_USA        0x1
  332 #define RAY_PID_COUNTRY_CODE_EUROPE     0x2
  333 #define RAY_PID_COUNTRY_CODE_JAPAN      0x3
  334 #define RAY_PID_COUNTRY_CODE_KOREA      0x4
  335 #define RAY_PID_COUNTRY_CODE_SPAIN      0x5
  336 #define RAY_PID_COUNTRY_CODE_FRANCE     0x6
  337 #define RAY_PID_COUNTRY_CODE_ISRAEL     0x7
  338 #define RAY_PID_COUNTRY_CODE_AUSTRALIA  0x8
  339 #define RAY_PID_COUNTRY_CODE_JAPAN_TEST 0x9
  340 #define RAY_PID_COUNTRY_CODE_MAX        0xa
  341 
  342 #define RAY_PID_TEST_MODE_NORMAL        0x0
  343 #define RAY_PID_TEST_MODE_ANT_1         0x1
  344 #define RAY_PID_TEST_MODE_ATN_2         0x2
  345 #define RAY_PID_TEST_MODE_ATN_BOTH      0x3
  346 
  347 #define RAY_PID_ALLOW_PROBE_RESP_DISALLOW       0x0
  348 #define RAY_PID_ALLOW_PROBE_RESP_ALLOW          0x1
  349 
  350 #define RAY_PID_PRIVACY_MUST_START_NOWEP        0x0
  351 #define RAY_PID_PRIVACY_MUST_START_WEP          0x1
  352 
  353 #define RAY_PID_PRIVACY_CAN_JOIN_NOWEP          0x0
  354 #define RAY_PID_PRIVACY_CAN_JOIN_WEP            0x1
  355 #define RAY_PID_PRIVACY_CAN_JOIN_DONT_CARE      0x2
  356 
  357 #define RAY_PID_BASIC_RATE_500K         1
  358 #define RAY_PID_BASIC_RATE_1000K        2
  359 #define RAY_PID_BASIC_RATE_1500K        3
  360 #define RAY_PID_BASIC_RATE_2000K        4
  361 
  362 /*
  363  * System Control Block
  364  */
  365 #define RAY_SCB_CCSI            0x00    /* host CCS index */
  366 #define RAY_SCB_RCCSI           0x01    /* ecf RCCS index */
  367 
  368 /*
  369  * command control structures (for CCSR commands)
  370  */
  371 
  372 /*
  373  * commands for CCSR
  374  */
  375 #define RAY_CMD_START_PARAMS    0x01    /* download start params */
  376 #define RAY_CMD_UPDATE_PARAMS   0x02    /* update params */
  377 #define RAY_CMD_REPORT_PARAMS   0x03    /* report params */
  378 #define RAY_CMD_UPDATE_MCAST    0x04    /* update mcast list */
  379 #define RAY_CMD_UPDATE_APM      0x05    /* update power saving mode */
  380 #define RAY_CMD_START_NET       0x06
  381 #define RAY_CMD_JOIN_NET        0x07
  382 #define RAY_CMD_START_ASSOC     0x08
  383 #define RAY_CMD_TX_REQ          0x09
  384 #define RAY_CMD_TEST_MEM        0x0a
  385 #define RAY_CMD_SHUTDOWN        0x0b
  386 #define RAY_CMD_DUMP_MEM        0x0c
  387 #define RAY_CMD_START_TIMER     0x0d
  388 #define RAY_CMD_MAX             0x0e
  389 
  390 /*
  391  * unsolicited commands from the ECF
  392  */
  393 #define RAY_ECMD_RX_DONE                0x80    /* process rx packet */
  394 #define RAY_ECMD_REJOIN_DONE            0x81    /* rejoined the network */
  395 #define RAY_ECMD_ROAM_START             0x82    /* roaming started */
  396 #define RAY_ECMD_JAPAN_CALL_SIGNAL      0x83    /* japan test thing */
  397 
  398 
  399 #define RAY_CCS_LINK_NULL       0xff
  400 #define RAY_CCS_SIZE    16
  401 
  402 #define RAY_CCS_TX_FIRST        0
  403 #define RAY_CCS_TX_LAST         13
  404 #define RAY_CCS_NTX             (RAY_CCS_TX_LAST - RAY_CCS_TX_FIRST + 1)
  405 #define RAY_TX_BUF_SIZE         2048
  406 #define RAY_CCS_CMD_FIRST       14
  407 #define RAY_CCS_CMD_LAST        63
  408 #define RAY_CCS_NCMD            (RAY_CCS_CMD_LAST - RAY_CCS_CMD_FIRST + 1)
  409 #define RAY_CCS_LAST            63
  410 
  411 #define RAY_RCCS_FIRST  64
  412 #define RAY_RCCS_LAST   127
  413 
  414 struct ray_cmd {
  415         u_int8_t        c_status;       /* ccs generic header */
  416         u_int8_t        c_cmd;          /* " */
  417         u_int8_t        c_link;         /* " */
  418 };
  419 
  420 #define RAY_CCS_STATUS_FREE             0x0
  421 #define RAY_CCS_STATUS_BUSY             0x1
  422 #define RAY_CCS_STATUS_COMPLETE         0x2
  423 #define RAY_CCS_STATUS_FAIL             0x3
  424 
  425 /* RAY_CMD_UPDATE_PARAMS */
  426 struct ray_cmd_update {
  427         u_int8_t        c_status;       /* ccs generic header */
  428         u_int8_t        c_cmd;          /* " */
  429         u_int8_t        c_link;         /* " */
  430         u_int8_t        c_paramid;
  431         u_int8_t        c_nparam;
  432         u_int8_t        c_failcause;
  433 };
  434 
  435 /* RAY_CMD_REPORT_PARAMS */
  436 struct ray_cmd_report {
  437         u_int8_t        c_status;       /* ccs generic header */
  438         u_int8_t        c_cmd;          /* " */
  439         u_int8_t        c_link;         /* " */
  440         u_int8_t        c_paramid;
  441         u_int8_t        c_nparam;
  442         u_int8_t        c_failcause;
  443         u_int8_t        c_len;
  444 };
  445 
  446 /* RAY_CMD_UPDATE_MCAST */
  447 struct ray_cmd_update_mcast {
  448         u_int8_t        c_status;       /* ccs generic header */
  449         u_int8_t        c_cmd;          /* " */
  450         u_int8_t        c_link;         /* " */
  451         u_int8_t        c_nmcast;
  452 };
  453 
  454 /* RAY_CMD_UPDATE_APM */
  455 struct ray_cmd_udpate_apm {
  456         u_int8_t        c_status;       /* ccs generic header */
  457         u_int8_t        c_cmd;          /* " */
  458         u_int8_t        c_link;         /* " */
  459         u_int8_t        c_mode;
  460 };
  461 
  462 /* RAY_CMD_START_NET and RAY_CMD_JOIN_NET */
  463 struct ray_cmd_net {
  464         u_int8_t        c_status;       /* ccs generic header */
  465         u_int8_t        c_cmd;          /* " */
  466         u_int8_t        c_link;         /* " */
  467         u_int8_t        c_upd_param;
  468         u_int8_t        c_bss_id[ETHER_ADDR_LEN];
  469         u_int8_t        c_inited;
  470         u_int8_t        c_def_txrate;
  471         u_int8_t        c_encrypt;
  472 };
  473 
  474 /* parameters passwd in h2e section when c_upd_param is set in ray_cmd_net */
  475 struct ray_net_params {
  476         u_int8_t        p_net_type;
  477         u_int8_t        p_ssid[32];
  478         u_int8_t        p_privacy_must_start;
  479         u_int8_t        p_privacy_can_join;
  480 };
  481 
  482 /* RAY_CMD_UPDATE_ASSOC */
  483 struct ray_cmd_update_assoc {
  484         u_int8_t        c_status;       /* ccs generic header */
  485         u_int8_t        c_cmd;          /* " */
  486         u_int8_t        c_link;         /* " */
  487         u_int8_t        c_astatus;
  488         u_int8_t        c_aid[2];
  489 };
  490 
  491 /* RAY_CMD_TX_REQ */
  492 struct ray_cmd_tx {
  493         u_int8_t        c_status;       /* ccs generic header */
  494         u_int8_t        c_cmd;          /* " */
  495         u_int8_t        c_link;         /* " */
  496         u_int8_t        c_bufp[2];
  497         u_int8_t        c_len[2];
  498         u_int8_t        c_resv[5];
  499         u_int8_t        c_tx_rate;
  500         u_int8_t        c_apm_mode;
  501         u_int8_t        c_nretry;
  502         u_int8_t        c_antenna;
  503 };
  504 
  505 /* RAY_CMD_TX_REQ (for build 4) */
  506 struct ray_cmd_tx_4 {
  507         u_int8_t        c_status;       /* ccs generic header */
  508         u_int8_t        c_cmd;          /* " */
  509         u_int8_t        c_link;         /* " */
  510         u_int8_t        c_bufp[2];
  511         u_int8_t        c_len[2];
  512         u_int8_t        c_addr[ETHER_ADDR_LEN];
  513         u_int8_t        c_apm_mode;
  514         u_int8_t        c_nretry;
  515         u_int8_t        c_antenna;
  516 };
  517 
  518 /* RAY_CMD_DUMP_MEM */
  519 struct ray_cmd_dump_mem {
  520         u_int8_t        c_status;       /* ccs generic header */
  521         u_int8_t        c_cmd;          /* " */
  522         u_int8_t        c_link;         /* " */
  523         u_int8_t        c_memtype;
  524         u_int8_t        c_memp[2];
  525         u_int8_t        c_len;
  526 };
  527 
  528 /* RAY_CMD_START_TIMER */
  529 struct ray_cmd_start_timer {
  530         u_int8_t        c_status;       /* ccs generic header */
  531         u_int8_t        c_cmd;          /* " */
  532         u_int8_t        c_link;         /* " */
  533         u_int8_t        c_duration[2];
  534 };
  535 
  536 struct ray_cmd_rx {
  537         u_int8_t        c_status;       /* ccs generic header */
  538         u_int8_t        c_cmd;          /* " */
  539         u_int8_t        c_link;         /* " */
  540         u_int8_t        c_bufp[2];      /* buffer pointer */
  541         u_int8_t        c_len[2];       /* length */
  542         u_int8_t        c_siglev;       /* signal level */
  543         u_int8_t        c_nextfrag;     /* next fragment in packet */
  544         u_int8_t        c_pktlen[2];    /* total packet length */
  545         u_int8_t        c_antenna;      /* antenna with best reception */
  546         u_int8_t        c_updbss;       /* only 1 for beacon messages */
  547 };
  548 
  549 #pragma pack()
  550 
  551 #define RAY_TX_PHY_SIZE 0x4
  552 
  553 /* this is used by the user to request objects */
  554 struct ray_param_req {
  555         int             r_failcause;
  556         u_int8_t        r_paramid;
  557         u_int8_t        r_len;
  558         u_int8_t        r_data[256];
  559 };
  560 #define RAY_FAILCAUSE_EIDRANGE  1
  561 #define RAY_FAILCAUSE_ELENGTH   2
  562 /* device can possibly return up to 255 */
  563 #define RAY_FAILCAUSE_EDEVSTOP  256
  564 
  565 #ifdef _KERNEL
  566 #define RAY_FAILCAUSE_WAITING   257
  567 #endif
  568 
  569 /* get a param the data is a ray_param_request structure */
  570 #define SIOCSRAYPARAM   SIOCSIFGENERIC
  571 #define SIOCGRAYPARAM   SIOCGIFGENERIC
  572 
  573 #define RAY_PID_STRINGS {                               \
  574         "RAY_PID_NET_TYPE",                             \
  575         "RAY_PID_AP_STATUS",                            \
  576         "RAY_PID_SSID",                                 \
  577         "RAY_PID_SCAN_MODE",                            \
  578         "RAY_PID_APM_MODE",                             \
  579         "RAY_PID_MAC_ADDR",                             \
  580         "RAY_PID_FRAG_THRESH",                          \
  581         "RAY_PID_DWELL_TIME",                           \
  582         "RAY_PID_BEACON_PERIOD",                        \
  583         "RAY_PID_DTIM_INT",                             \
  584         "RAY_PID_MAX_RETRY",                            \
  585         "RAY_PID_ACK_TIMO",                             \
  586         "RAY_PID_SIFS",                                 \
  587         "RAY_PID_DIFS",                                 \
  588         "RAY_PID_PIFS",                                 \
  589         "RAY_PID_RTS_THRESH",                           \
  590         "RAY_PID_SCAN_DWELL_PERIOD",                    \
  591         "RAY_PID_MAX_SCAN_DWELL_PERIOD",                \
  592         "RAY_PID_ASSOC_TIMO",                           \
  593         "RAY_PID_ADHOC_SCAN_CYCLE",                     \
  594         "RAY_PID_INFRA_SCAN_CYCLE",                     \
  595         "RAY_PID_INFRA_SUPER_SCAN_CYCLE",               \
  596         "RAY_PID_PROMISC",                              \
  597         "RAY_PID_UNIQ_WORD",                            \
  598         "RAY_PID_SLOT_TIME",                            \
  599         "RAY_PID_ROAM_LOW_SNR_THRESH",                  \
  600         "RAY_PID_LOW_SNR_COUNT",                        \
  601         "RAY_PID_INFRA_MISSED_BEACON_COUNT",            \
  602         "RAY_PID_ADHOC_MISSED_BEACON_COUNT",            \
  603         "RAY_PID_COUNTRY_CODE",                         \
  604         "RAY_PID_HOP_SEQ",                              \
  605         "RAY_PID_HOP_SEQ_LEN",                          \
  606         "RAY_PID_CW_MAX",                               \
  607         "RAY_PID_CW_MIN",                               \
  608         "RAY_PID_NOISE_FILTER_GAIN",                    \
  609         "RAY_PID_NOISE_LIMIT_OFFSET",                   \
  610         "RAY_PID_RSSI_THRESH_OFFSET",                   \
  611         "RAY_PID_BUSY_THRESH_OFFSET",                   \
  612         "RAY_PID_SYNC_THRESH",                          \
  613         "RAY_PID_TEST_MODE",                            \
  614         "RAY_PID_TEST_MIN_CHAN",                        \
  615         "RAY_PID_TEST_MAX_CHAN",                        \
  616         "RAY_PID_ALLOW_PROBE_RESP",                     \
  617         "RAY_PID_PRIVACY_MUST_START",                   \
  618         "RAY_PID_PRIVACY_CAN_JOIN",                     \
  619         "RAY_PID_BASIC_RATE_SET"                        \
  620     }
  621 
  622 #ifdef RAY_DO_SIGLEV
  623 #define SIOCGRAYSIGLEV  _IOWR('i', 201, struct ifreq)
  624 
  625 #define RAY_NSIGLEVRECS 8
  626 #define RAY_NSIGLEV 8
  627 
  628 struct ray_siglev {
  629         u_int8_t        rsl_host[ETHER_ADDR_LEN]; /* MAC address */
  630         u_int8_t        rsl_siglevs[RAY_NSIGLEV]; /* levels, newest in [0] */
  631         struct timeval  rsl_time;                 /* time of last packet */
  632 };
  633 #endif

/* [<][>][^][v][top][bottom][index][help] */