[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/usb/if_kuereg.h

Version: -  FREEBSD  -  FREEBSD7  -  FREEBSD70  -  FREEBSD6  -  FREEBSD64  -  FREEBSD63  -  FREEBSD62  -  FREEBSD61  -  FREEBSD60  -  FREEBSD5  -  FREEBSD55  -  FREEBSD54  -  FREEBSD53  -  FREEBSD52  -  FREEBSD51  -  FREEBSD50  -  FREEBSD4  -  FREEBSD3  -  FREEBSD22  -  linux-2.6  -  linux-2.4.22  -  MK83  -  MK84  -  PLAN9  -  DFBSD  -  NETBSD  -  NETBSD5  -  NETBSD4  -  NETBSD3  -  NETBSD20  -  OPENBSD  -  xnu-517  -  xnu-792  -  xnu-792.6.70  -  xnu-1228  -  OPENSOLARIS  -  minix-3-1-1  -  TRUSTEDBSD-SEBSD  -  FREEBSD-LIBC  -  FREEBSD7-LIBC  -  FREEBSD6-LIBC  -  GLIBC27 
SearchContext: -  none  -  excerpts  -  bigexcerpts 

  1 /*-
  2  * Copyright (c) 1997, 1998, 1999, 2000
  3  *      Bill Paul <wpaul@ee.columbia.edu>.  All rights reserved.
  4  *
  5  * Redistribution and use in source and binary forms, with or without
  6  * modification, are permitted provided that the following conditions
  7  * are met:
  8  * 1. Redistributions of source code must retain the above copyright
  9  *    notice, this list of conditions and the following disclaimer.
 10  * 2. Redistributions in binary form must reproduce the above copyright
 11  *    notice, this list of conditions and the following disclaimer in the
 12  *    documentation and/or other materials provided with the distribution.
 13  * 3. All advertising materials mentioning features or use of this software
 14  *    must display the following acknowledgement:
 15  *      This product includes software developed by Bill Paul.
 16  * 4. 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
 24  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 30  * THE POSSIBILITY OF SUCH DAMAGE.
 31  *
 32  * $FreeBSD: src/sys/dev/usb/if_kuereg.h,v 1.20 2007/06/11 05:50:47 imp Exp $
 33  */
 34 
 35 /*
 36  * Definitions for the KLSI KL5KUSB101B USB to ethernet controller.
 37  * The KLSI part is controlled via vendor control requests, the structure
 38  * of which depend a bit on the firmware running on the internal
 39  * microcontroller. The one exception is the 'send scan data' command,
 40  * which is used to load the firmware.
 41  */
 42 
 43 #define KUE_CMD_GET_ETHER_DESCRIPTOR            0x00
 44 #define KUE_CMD_SET_MCAST_FILTERS               0x01
 45 #define KUE_CMD_SET_PKT_FILTER                  0x02
 46 #define KUE_CMD_GET_ETHERSTATS                  0x03
 47 #define KUE_CMD_GET_GPIO                        0x04
 48 #define KUE_CMD_SET_GPIO                        0x05
 49 #define KUE_CMD_SET_MAC                         0x06
 50 #define KUE_CMD_GET_MAC                         0x07
 51 #define KUE_CMD_SET_URB_SIZE                    0x08
 52 #define KUE_CMD_SET_SOFS                        0x09
 53 #define KUE_CMD_SET_EVEN_PKTS                   0x0A
 54 #define KUE_CMD_SEND_SCAN                       0xFF
 55 
 56 struct kue_ether_desc {
 57         u_int8_t                kue_len;
 58         u_int8_t                kue_rsvd0;
 59         u_int8_t                kue_rsvd1;
 60         u_int8_t                kue_macaddr[ETHER_ADDR_LEN];
 61         u_int8_t                kue_etherstats[4];
 62         u_int8_t                kue_maxseg[2];
 63         u_int8_t                kue_mcastfilt[2];
 64         u_int8_t                kue_rsvd2;
 65 };
 66 
 67 #define KUE_ETHERSTATS(x)       \
 68         (*(u_int32_t *)&(x)->kue_desc.kue_etherstats)
 69 #define KUE_MAXSEG(x)           \
 70         (*(u_int16_t *)&(x)->kue_desc.kue_maxseg)
 71 #define KUE_MCFILTCNT(x)        \
 72         ((*(u_int16_t *)&(x)->kue_desc.kue_mcastfilt) & 0x7FFF)
 73 #define KUE_MCFILT(x, y)        \
 74         (char *)&(sc->kue_mcfilters[y * ETHER_ADDR_LEN])
 75 
 76 #define KUE_STAT_TX_OK                  0x00000001
 77 #define KUE_STAT_RX_OK                  0x00000002
 78 #define KUE_STAT_TX_ERR                 0x00000004
 79 #define KUE_STAT_RX_ERR                 0x00000008
 80 #define KUE_STAT_RX_NOBUF               0x00000010
 81 #define KUE_STAT_TX_UCAST_BYTES         0x00000020
 82 #define KUE_STAT_TX_UCAST_FRAMES        0x00000040
 83 #define KUE_STAT_TX_MCAST_BYTES         0x00000080
 84 #define KUE_STAT_TX_MCAST_FRAMES        0x00000100
 85 #define KUE_STAT_TX_BCAST_BYTES         0x00000200
 86 #define KUE_STAT_TX_BCAST_FRAMES        0x00000400
 87 #define KUE_STAT_RX_UCAST_BYTES         0x00000800
 88 #define KUE_STAT_RX_UCAST_FRAMES        0x00001000
 89 #define KUE_STAT_RX_MCAST_BYTES         0x00002000
 90 #define KUE_STAT_RX_MCAST_FRAMES        0x00004000
 91 #define KUE_STAT_RX_BCAST_BYTES         0x00008000
 92 #define KUE_STAT_RX_BCAST_FRAMES        0x00010000
 93 #define KUE_STAT_RX_CRCERR              0x00020000
 94 #define KUE_STAT_TX_QUEUE_LENGTH        0x00040000
 95 #define KUE_STAT_RX_ALIGNERR            0x00080000
 96 #define KUE_STAT_TX_SINGLECOLL          0x00100000
 97 #define KUE_STAT_TX_MULTICOLL           0x00200000
 98 #define KUE_STAT_TX_DEFERRED            0x00400000
 99 #define KUE_STAT_TX_MAXCOLLS            0x00800000
100 #define KUE_STAT_RX_OVERRUN             0x01000000
101 #define KUE_STAT_TX_UNDERRUN            0x02000000
102 #define KUE_STAT_TX_SQE_ERR             0x04000000
103 #define KUE_STAT_TX_CARRLOSS            0x08000000
104 #define KUE_STAT_RX_LATECOLL            0x10000000
105 
106 #define KUE_RXFILT_PROMISC              0x0001
107 #define KUE_RXFILT_ALLMULTI             0x0002
108 #define KUE_RXFILT_UNICAST              0x0004
109 #define KUE_RXFILT_BROADCAST            0x0008
110 #define KUE_RXFILT_MULTICAST            0x0010
111 
112 #define KUE_TIMEOUT             1000
113 #define KUE_MIN_FRAMELEN        60
114 
115 #define KUE_CTL_READ            0x01
116 #define KUE_CTL_WRITE           0x02
117 
118 #define KUE_CONFIG_NO           1
119 #define KUE_IFACE_IDX           0
120 
121 /*
122  * The interrupt endpoint is currently unused
123  * by the KLSI part.
124  */
125 #define KUE_ENDPT_RX            0x0
126 #define KUE_ENDPT_TX            0x1
127 #define KUE_ENDPT_INTR          0x2
128 #define KUE_ENDPT_MAX           0x3
129 
130 struct kue_type {
131         u_int16_t               kue_vid;
132         u_int16_t               kue_did;
133 };
134 
135 #define KUE_INC(x, y)           (x) = (x + 1) % y
136 
137 struct kue_softc {
138         struct ifnet            *kue_ifp;
139         device_t                kue_dev;
140         usbd_device_handle      kue_udev;
141         usbd_interface_handle   kue_iface;
142         struct kue_ether_desc   kue_desc;
143         int                     kue_ed[KUE_ENDPT_MAX];
144         usbd_pipe_handle        kue_ep[KUE_ENDPT_MAX];
145         int                     kue_if_flags;
146         u_int16_t               kue_rxfilt;
147         u_int8_t                *kue_mcfilters;
148         struct ue_cdata         kue_cdata;
149         struct mtx              kue_mtx;
150         char                    kue_dying;
151         struct timeval          kue_rx_notice;
152         struct usb_qdat         kue_qdat;
153 };
154 
155 #if 0
156 #define KUE_LOCK(_sc)           mtx_lock(&(_sc)->kue_mtx)
157 #define KUE_UNLOCK(_sc)         mtx_unlock(&(_sc)->kue_mtx)
158 #else
159 #define KUE_LOCK(_sc)
160 #define KUE_UNLOCK(_sc)
161 #endif
162 

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.