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/etherswitch/ip17x/ip17x_var.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 /*-
    2  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
    3  *
    4  * Copyright (c) 2013 Luiz Otavio O Souza.
    5  * Copyright (c) 2011-2012 Stefan Bethke.
    6  * Copyright (c) 2012 Adrian Chadd.
    7  * All rights reserved.
    8  *
    9  * Redistribution and use in source and binary forms, with or without
   10  * modification, are permitted provided that the following conditions
   11  * are met:
   12  * 1. Redistributions of source code must retain the above copyright
   13  *    notice, this list of conditions and the following disclaimer.
   14  * 2. Redistributions in binary form must reproduce the above copyright
   15  *    notice, this list of conditions and the following disclaimer in the
   16  *    documentation and/or other materials provided with the distribution.
   17  *
   18  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   19  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   21  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   22  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   23  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   24  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   26  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   27  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   28  * SUCH DAMAGE.
   29  *
   30  * $FreeBSD$
   31  */
   32 
   33 #ifndef __IP17X_VAR_H__
   34 #define __IP17X_VAR_H__
   35 
   36 typedef enum {
   37         IP17X_SWITCH_NONE,
   38         IP17X_SWITCH_IP175A,
   39         IP17X_SWITCH_IP175C,
   40         IP17X_SWITCH_IP175D,
   41         IP17X_SWITCH_IP178C,
   42 } ip17x_switch_type;
   43 
   44 struct ip17x_vlan {
   45         uint32_t        ports;
   46         int             vlanid;
   47 };
   48 
   49 struct ip17x_softc {
   50         device_t        sc_dev;
   51         int             media;          /* cpu port media */
   52         int             cpuport;        /* which PHY is connected to the CPU */
   53         int             phymask;        /* PHYs we manage */
   54         int             phyport[MII_NPHY];
   55         int             numports;       /* number of ports */
   56         int             *portphy;
   57         device_t        **miibus;
   58         int             miipoll;
   59         etherswitch_info_t      info;
   60         ip17x_switch_type       sc_switchtype;
   61         struct callout  callout_tick;
   62         if_t *ifp;
   63         struct mtx      sc_mtx;         /* serialize access to softc */
   64 
   65         struct ip17x_vlan       vlan[IP17X_MAX_VLANS];
   66         uint32_t        *pvid;          /* PVID */
   67         uint32_t        addtag;         /* per port add tag flag */
   68         uint32_t        striptag;       /* per port strip tag flag */
   69         uint32_t        vlan_mode;      /* VLAN mode */
   70 
   71         struct {
   72                 int (* ip17x_reset) (struct ip17x_softc *);
   73                 int (* ip17x_hw_setup) (struct ip17x_softc *);
   74                 int (* ip17x_get_vlan_mode) (struct ip17x_softc *);
   75                 int (* ip17x_set_vlan_mode) (struct ip17x_softc *, uint32_t);
   76         } hal;
   77 };
   78 
   79 #define IP17X_IS_SWITCH(_sc, _type)     \
   80             (!!((_sc)->sc_switchtype == IP17X_SWITCH_ ## _type))
   81 
   82 #define IP17X_LOCK(_sc)                 \
   83             mtx_lock(&(_sc)->sc_mtx)
   84 #define IP17X_UNLOCK(_sc)               \
   85             mtx_unlock(&(_sc)->sc_mtx)
   86 #define IP17X_LOCK_ASSERT(_sc, _what)   \
   87             mtx_assert(&(_sc)->sc_mtx, (_what))
   88 #define IP17X_TRYLOCK(_sc)              \
   89             mtx_trylock(&(_sc)->sc_mtx)
   90 
   91 #if defined(DEBUG)
   92 #define DPRINTF(dev, args...) device_printf(dev, args)
   93 #else
   94 #define DPRINTF(dev, args...)
   95 #endif
   96 
   97 #endif  /* __IP17X_VAR_H__ */

Cache object: c98866f21bd1950608c9cd7e92249993


[ 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.