[BACK]Return to if_rayreg.h CVS log [TXT][DIR] Up to [local] / sys / dev / pcmcia

Annotation of sys/dev/pcmcia/if_rayreg.h, Revision 1.1

1.1     ! nbrk        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

CVSweb