The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/ic/elinkxlvar.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $NetBSD: elinkxlvar.h,v 1.14 2003/06/05 22:11:22 dogcow Exp $   */
    2 
    3 /*-
    4  * Copyright (c) 1998 The NetBSD Foundation, Inc.
    5  * All rights reserved.
    6  *
    7  * This code is derived from software contributed to The NetBSD Foundation
    8  * by Frank van der Linden.
    9  *
   10  * Redistribution and use in source and binary forms, with or without
   11  * modification, are permitted provided that the following conditions
   12  * are met:
   13  * 1. Redistributions of source code must retain the above copyright
   14  *    notice, this list of conditions and the following disclaimer.
   15  * 2. Redistributions in binary form must reproduce the above copyright
   16  *    notice, this list of conditions and the following disclaimer in the
   17  *    documentation and/or other materials provided with the distribution.
   18  * 3. All advertising materials mentioning features or use of this software
   19  *    must display the following acknowledgement:
   20  *      This product includes software developed by the NetBSD
   21  *      Foundation, Inc. and its contributors.
   22  * 4. Neither the name of The NetBSD Foundation nor the names of its
   23  *    contributors may be used to endorse or promote products derived
   24  *    from this software without specific prior written permission.
   25  *
   26  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
   27  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   28  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   29  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
   30  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   31  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   32  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   33  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   34  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   35  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   36  * POSSIBILITY OF SUCH DAMAGE.
   37  */
   38 
   39 #include "rnd.h"
   40 
   41 #if NRND > 0
   42 #include <sys/rnd.h>
   43 #endif
   44 
   45 /*
   46  * Ethernet software status per interface.
   47  */
   48 struct ex_softc {
   49         struct device sc_dev;
   50         void *sc_ih;
   51 
   52         struct ethercom sc_ethercom;    /* Ethernet common part         */
   53         bus_space_tag_t sc_iot;         /* bus cookie                   */
   54         bus_space_handle_t sc_ioh;      /* bus i/o handle               */
   55         bus_dma_tag_t sc_dmat;          /* bus dma tag */
   56         bus_dmamap_t sc_dpd_dmamap;
   57         bus_dmamap_t sc_upd_dmamap;
   58 #define sc_upddma       sc_upd_dmamap->dm_segs[0].ds_addr
   59 #define sc_dpddma       sc_dpd_dmamap->dm_segs[0].ds_addr
   60         struct ex_upd *sc_upd;
   61         struct ex_dpd *sc_dpd;
   62         bus_dmamap_t sc_tx_dmamaps[EX_NDPD];    /* DMA maps for DPDs    */
   63         bus_dmamap_t sc_rx_dmamaps[EX_NUPD];    /* DMA maps for UPDs    */
   64         struct ex_rxdesc sc_rxdescs[EX_NUPD];
   65         struct ex_txdesc sc_txdescs[EX_NDPD];
   66 
   67         struct ex_rxdesc *rx_head;
   68         struct ex_rxdesc *rx_tail;
   69 
   70         struct ex_txdesc *tx_head;
   71         struct ex_txdesc *tx_tail;
   72         struct ex_txdesc *tx_free;
   73         struct ex_txdesc *tx_ftail;
   74 
   75         int tx_start_thresh;            /* Current TX_start_thresh.     */
   76         int tx_succ_ok;                 /* # packets sent in sequence   */
   77 
   78         u_int ex_connectors;            /* Connectors on this card.     */
   79         mii_data_t ex_mii;              /* mii bus data                 */
   80         struct callout ex_mii_callout;  /* mii callout                  */
   81         u_int ex_conf;                  /* config flags */
   82 
   83 #define EX_CONF_MII             0x0001  /* has MII bus */
   84 #define EX_CONF_INTPHY          0x0002  /* has internal PHY */
   85 #define EX_CONF_90XB            0x0004  /* is 90xB */
   86 #define EX_CONF_INV_LED_POLARITY 0x0010 /* CardBus & MiniPCI: LED polarity */
   87 #define EX_CONF_PHY_POWER       0x0020  /* CardBus & MiniPCI: PHY power */
   88 #define EX_CONF_EEPROM_OFF      0x0040  /* EEPROM is offset by 0x30 */
   89 #define EX_CONF_EEPROM_8BIT     0x0080  /* 8 bit EEPROM */
   90 #define EX_CONF_PCI_FUNCREG     0x0100  /* Has PCI function registers */
   91 #define EX_CONF_RESETHACK       0x0200  /* Hack to make reset work on 556B */
   92 #define EX_CONF_NO_XCVR_PWR     0x0400  /* Hack to enable later 556B xcvr */
   93 
   94 #define EX_XCVR_PWR_MAGICBITS   0x0900  /* NO_XCVR_PWR magic value */
   95 
   96 
   97         /*
   98          * XXX code duplication from elink3var.h
   99          */
  100         u_int   ex_flags;               /* capabilities flag (from EEPROM) */
  101 #define EX_FLAGS_PNP                    0x0001
  102 #define EX_FLAGS_FULLDUPLEX             0x0002
  103 #define EX_FLAGS_LARGEPKT               0x0004  /* 4k packet support */
  104 #define EX_FLAGS_SLAVEDMA               0x0008
  105 #define EX_FLAGS_SECONDDMA              0x0010
  106 #define EX_FLAGS_FULLDMA                0x0020
  107 #define EX_FLAGS_FRAGMENTDMA            0x0040
  108 #define EX_FLAGS_CRC_PASSTHRU           0x0080
  109 #define EX_FLAGS_TXDONE                 0x0100
  110 #define EX_FLAGS_NO_TXLENGTH            0x0200
  111 #define EX_FLAGS_RXREPEAT               0x0400
  112 #define EX_FLAGS_SNOOPING               0x0800
  113 #define EX_FLAGS_100MBIT                0x1000
  114 #define EX_FLAGS_POWERMGMT              0x2000
  115 #define EX_FLAGS_ATTACHED               0x4000  /* attach has succeeded */
  116 
  117         u_char  ex_bustype;             /* parent bus type (currently unused) */
  118 
  119 #define EX_BUS_PCI      0
  120 #define EX_BUS_CARDBUS  1
  121 
  122 #if NRND > 0
  123         rndsource_element_t rnd_source;
  124 #endif
  125 
  126         /* power management hooks */
  127         int (*enable) __P((struct ex_softc *));
  128         void (*disable) __P((struct ex_softc *));
  129         void (*power) __P((struct ex_softc *, int));
  130         int enabled;
  131 
  132         /* interrupt acknowledge hook */
  133         void (*intr_ack) __P((struct ex_softc *));
  134 
  135         void *sc_sdhook;
  136         void *sc_powerhook;
  137 
  138         bus_dma_segment_t sc_useg, sc_dseg;
  139         int sc_urseg, sc_drseg;
  140 };
  141 
  142 #define ex_waitcmd(sc) \
  143         do { \
  144                 int stat; \
  145                 do { \
  146                         stat = bus_space_read_2((sc)->sc_iot, (sc)->sc_ioh, \
  147                             ELINK_STATUS); \
  148                 } while ((stat & COMMAND_IN_PROGRESS) && (stat != 0xffff)); \
  149         } while (0)\
  150 
  151 u_int16_t exreadeeprom __P((bus_space_tag_t, bus_space_handle_t, int));
  152 void    ex_config __P((struct ex_softc *));
  153 
  154 int     ex_intr __P((void *));
  155 void    ex_stop __P((struct ifnet *, int));
  156 void    ex_watchdog __P((struct ifnet *));
  157 int     ex_ioctl __P((struct ifnet *ifp, u_long, caddr_t));
  158 int     ex_activate __P((struct device *, enum devact));
  159 int     ex_detach __P((struct ex_softc *));
  160 
  161 int     ex_enable __P((struct ex_softc *));
  162 void    ex_disable __P((struct ex_softc *));

Cache object: 11435a4ba5166109ba4d3ade2923f1ba


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


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