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

Annotation of sys/dev/usb/if_kuereg.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: if_kuereg.h,v 1.9 2007/06/26 06:33:17 jsg Exp $ */
                      2: /*     $NetBSD: if_kuereg.h,v 1.11 2001/01/21 02:35:31 augustss Exp $  */
                      3: /*
                      4:  * Copyright (c) 1997, 1998, 1999, 2000
                      5:  *     Bill Paul <wpaul@ee.columbia.edu>.  All rights reserved.
                      6:  *
                      7:  * Redistribution and use in source and binary forms, with or without
                      8:  * modification, are permitted provided that the following conditions
                      9:  * are met:
                     10:  * 1. Redistributions of source code must retain the above copyright
                     11:  *    notice, this list of conditions and the following disclaimer.
                     12:  * 2. Redistributions in binary form must reproduce the above copyright
                     13:  *    notice, this list of conditions and the following disclaimer in the
                     14:  *    documentation and/or other materials provided with the distribution.
                     15:  * 3. All advertising materials mentioning features or use of this software
                     16:  *    must display the following acknowledgement:
                     17:  *     This product includes software developed by Bill Paul.
                     18:  * 4. Neither the name of the author nor the names of any co-contributors
                     19:  *    may be used to endorse or promote products derived from this software
                     20:  *    without specific prior written permission.
                     21:  *
                     22:  * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
                     23:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     24:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     25:  * ARE DISCLAIMED.  IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
                     26:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
                     27:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
                     28:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                     29:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                     30:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                     31:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
                     32:  * THE POSSIBILITY OF SUCH DAMAGE.
                     33:  *
                     34:  * $FreeBSD: src/sys/dev/usb/if_kuereg.h,v 1.2 2000/01/06 07:39:07 wpaul Exp $
                     35:  */
                     36:
                     37: /*
                     38:  * Definitions for the KLSI KL5KUSB101B USB to ethernet controller.
                     39:  * The KLSI part is controlled via vendor control requests, the structure
                     40:  * of which depend a bit on the firmware running on the internal
                     41:  * microcontroller. The one exception is the 'send scan data' command,
                     42:  * which is used to load the firmware.
                     43:  */
                     44:
                     45: #define KUE_CONFIG_NO          1
                     46: #define KUE_IFACE_IDX          0
                     47:
                     48: #define KUE_CMD_GET_ETHER_DESCRIPTOR           0x00
                     49: #define KUE_CMD_SET_MCAST_FILTERS              0x01
                     50: #define KUE_CMD_SET_PKT_FILTER                 0x02
                     51: #define KUE_CMD_GET_ETHERSTATS                 0x03
                     52: #define KUE_CMD_GET_GPIO                       0x04
                     53: #define KUE_CMD_SET_GPIO                       0x05
                     54: #define KUE_CMD_SET_MAC                                0x06
                     55: #define KUE_CMD_GET_MAC                                0x07
                     56: #define KUE_CMD_SET_URB_SIZE                   0x08
                     57: #define KUE_CMD_SET_SOFS                       0x09
                     58: #define KUE_CMD_SET_EVEN_PKTS                  0x0A
                     59: #define KUE_CMD_SEND_SCAN                      0xFF
                     60:
                     61: struct kue_ether_desc {
                     62:        u_int8_t                kue_len;
                     63:        u_int8_t                kue_rsvd0;
                     64:        u_int8_t                kue_rsvd1;
                     65:        u_int8_t                kue_macaddr[ETHER_ADDR_LEN];
                     66:        u_int8_t                kue_etherstats[4];
                     67:        u_int8_t                kue_maxseg[2];
                     68:        u_int8_t                kue_mcastfilt[2];
                     69:        u_int8_t                kue_rsvd2;
                     70: } __packed;
                     71:
                     72: #define KUE_ETHERSTATS(x)      \
                     73:        (((x)->kue_desc.kue_etherstats[3] << 24) | \
                     74:         ((x)->kue_desc.kue_etherstats[2] << 16) | \
                     75:         ((x)->kue_desc.kue_etherstats[1] << 8) | \
                     76:          (x)->kue_desc.kue_etherstats[0])
                     77: #define KUE_MAXSEG(x)          \
                     78:        (((x)->kue_desc.kue_maxseg[1] << 8) | (x)->kue_desc.kue_maxseg[0])
                     79: #define KUE_MCFILTCNT(x)       \
                     80:        ((((x)->kue_desc.kue_mcastfilt[1] << 8) | \
                     81:           (x)->kue_desc.kue_mcastfilt[0]) & 0x7FFF)
                     82: #define KUE_MCFILT(x, y)       \
                     83:        (char *)&(sc->kue_mcfilters[y * ETHER_ADDR_LEN])
                     84:
                     85: #define KUE_STAT_TX_OK                 0x00000001
                     86: #define KUE_STAT_RX_OK                 0x00000002
                     87: #define KUE_STAT_TX_ERR                        0x00000004
                     88: #define KUE_STAT_RX_ERR                        0x00000008
                     89: #define KUE_STAT_RX_NOBUF              0x00000010
                     90: #define KUE_STAT_TX_UCAST_BYTES                0x00000020
                     91: #define KUE_STAT_TX_UCAST_FRAMES       0x00000040
                     92: #define KUE_STAT_TX_MCAST_BYTES                0x00000080
                     93: #define KUE_STAT_TX_MCAST_FRAMES       0x00000100
                     94: #define KUE_STAT_TX_BCAST_BYTES                0x00000200
                     95: #define KUE_STAT_TX_BCAST_FRAMES       0x00000400
                     96: #define KUE_STAT_RX_UCAST_BYTES                0x00000800
                     97: #define KUE_STAT_RX_UCAST_FRAMES       0x00001000
                     98: #define KUE_STAT_RX_MCAST_BYTES                0x00002000
                     99: #define KUE_STAT_RX_MCAST_FRAMES       0x00004000
                    100: #define KUE_STAT_RX_BCAST_BYTES                0x00008000
                    101: #define KUE_STAT_RX_BCAST_FRAMES       0x00010000
                    102: #define KUE_STAT_RX_CRCERR             0x00020000
                    103: #define KUE_STAT_TX_QUEUE_LENGTH       0x00040000
                    104: #define KUE_STAT_RX_ALIGNERR           0x00080000
                    105: #define KUE_STAT_TX_SINGLECOLL         0x00100000
                    106: #define KUE_STAT_TX_MULTICOLL          0x00200000
                    107: #define KUE_STAT_TX_DEFERRED           0x00400000
                    108: #define KUE_STAT_TX_MAXCOLLS           0x00800000
                    109: #define KUE_STAT_RX_OVERRUN            0x01000000
                    110: #define KUE_STAT_TX_UNDERRUN           0x02000000
                    111: #define KUE_STAT_TX_SQE_ERR            0x04000000
                    112: #define KUE_STAT_TX_CARRLOSS           0x08000000
                    113: #define KUE_STAT_RX_LATECOLL           0x10000000
                    114:
                    115: #define KUE_RXFILT_PROMISC             0x0001
                    116: #define KUE_RXFILT_ALLMULTI            0x0002
                    117: #define KUE_RXFILT_UNICAST             0x0004
                    118: #define KUE_RXFILT_BROADCAST           0x0008
                    119: #define KUE_RXFILT_MULTICAST           0x0010
                    120:
                    121: #define KUE_TIMEOUT            1000
                    122: #define KUE_BUFSZ              1536
                    123: #define KUE_MIN_FRAMELEN       60
                    124:
                    125: #define KUE_RX_LIST_CNT                1
                    126: #define KUE_TX_LIST_CNT                1
                    127:
                    128: #define KUE_CTL_READ           0x01
                    129: #define KUE_CTL_WRITE          0x02
                    130:
                    131: #define KUE_WARM_REV           0x0202
                    132:
                    133: /*
                    134:  * The interrupt endpoint is currently unused
                    135:  * by the KLSI part.
                    136:  */
                    137: #define KUE_ENDPT_RX           0x0
                    138: #define KUE_ENDPT_TX           0x1
                    139: #define KUE_ENDPT_INTR         0x2
                    140: #define KUE_ENDPT_MAX          0x3
                    141:
                    142: struct kue_type {
                    143:        u_int16_t               kue_vid;
                    144:        u_int16_t               kue_did;
                    145: };
                    146:
                    147: struct kue_softc;
                    148:
                    149: struct kue_chain {
                    150:        struct kue_softc        *kue_sc;
                    151:        usbd_xfer_handle        kue_xfer;
                    152:        char                    *kue_buf;
                    153:        struct mbuf             *kue_mbuf;
                    154:        int                     kue_idx;
                    155: };
                    156:
                    157: struct kue_cdata {
                    158:        struct kue_chain        kue_tx_chain[KUE_TX_LIST_CNT];
                    159:        struct kue_chain        kue_rx_chain[KUE_RX_LIST_CNT];
                    160:        int                     kue_tx_prod;
                    161:        int                     kue_tx_cons;
                    162:        int                     kue_tx_cnt;
                    163:        int                     kue_rx_prod;
                    164: };
                    165:
                    166: struct kue_softc {
                    167:        struct device           kue_dev;
                    168:
                    169:        struct arpcom           arpcom;
                    170: #define GET_IFP(sc) (&(sc)->arpcom.ac_if)
                    171:
                    172:        usbd_device_handle      kue_udev;
                    173:        usbd_interface_handle   kue_iface;
                    174:        u_int16_t               kue_vendor;
                    175:        u_int16_t               kue_product;
                    176:        struct kue_ether_desc   kue_desc;
                    177:        int                     kue_ed[KUE_ENDPT_MAX];
                    178:        usbd_pipe_handle        kue_ep[KUE_ENDPT_MAX];
                    179:        int                     kue_if_flags;
                    180:        u_int16_t               kue_rxfilt;
                    181:        u_int8_t                *kue_mcfilters;
                    182:        struct kue_cdata        kue_cdata;
                    183:
                    184:        char                    kue_dying;
                    185:        char                    kue_attached;
                    186:        u_int                   kue_rx_errs;
                    187:        struct timeval          kue_rx_notice;
                    188: };

CVSweb