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/etherswitch.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  * $FreeBSD$
    3  */
    4 
    5 #ifndef __SYS_DEV_ETHERSWITCH_ETHERSWITCH_H
    6 #define __SYS_DEV_ETHERSWITCH_ETHERSWITCH_H
    7 
    8 #include <sys/ioccom.h>
    9 #include <net/ethernet.h>
   10 
   11 #ifdef _KERNEL
   12 extern driver_t         etherswitch_driver;
   13 #endif /* _KERNEL */
   14 
   15 struct etherswitch_reg {
   16         uint32_t        reg;
   17         uint32_t        val;
   18 };
   19 typedef struct etherswitch_reg etherswitch_reg_t;
   20 
   21 struct etherswitch_phyreg {
   22         uint16_t        phy;
   23         uint16_t        reg;
   24         uint16_t        val;
   25 };
   26 typedef struct etherswitch_phyreg etherswitch_phyreg_t;
   27 
   28 #define ETHERSWITCH_NAMEMAX             64
   29 #define ETHERSWITCH_VID_MASK            0xfff
   30 #define ETHERSWITCH_VID_VALID           (1 << 12)
   31 #define ETHERSWITCH_VLAN_ISL            (1 << 0)        /* ISL */
   32 #define ETHERSWITCH_VLAN_PORT           (1 << 1)        /* Port based vlan */
   33 #define ETHERSWITCH_VLAN_DOT1Q          (1 << 2)        /* 802.1q */
   34 #define ETHERSWITCH_VLAN_DOT1Q_4K       (1 << 3)        /* 4k support on 802.1q */
   35 #define ETHERSWITCH_VLAN_DOUBLE_TAG     (1 << 4)        /* Q-in-Q */
   36 #define ETHERSWITCH_VLAN_CAPS_BITS      \
   37 "\020\1ISL\2PORT\3DOT1Q\4DOT1Q4K\5QinQ"
   38 
   39 struct etherswitch_info {
   40         int             es_nports;
   41         int             es_nvlangroups;
   42         char            es_name[ETHERSWITCH_NAMEMAX];
   43         uint32_t        es_vlan_caps;
   44 };
   45 typedef struct etherswitch_info etherswitch_info_t;
   46 
   47 #define ETHERSWITCH_CONF_FLAGS          (1 << 0)
   48 #define ETHERSWITCH_CONF_MIRROR         (1 << 1)
   49 #define ETHERSWITCH_CONF_VLAN_MODE      (1 << 2)
   50 #define ETHERSWITCH_CONF_SWITCH_MACADDR (1 << 3)
   51 
   52 struct etherswitch_conf {
   53         uint32_t        cmd;            /* What to configure */
   54         uint32_t        vlan_mode;      /* Switch VLAN mode */
   55         struct ether_addr switch_macaddr;       /* Switch MAC address */
   56 };
   57 typedef struct etherswitch_conf etherswitch_conf_t;
   58 
   59 #define ETHERSWITCH_PORT_CPU                    (1 << 0)
   60 #define ETHERSWITCH_PORT_STRIPTAG               (1 << 1)
   61 #define ETHERSWITCH_PORT_ADDTAG                 (1 << 2)
   62 #define ETHERSWITCH_PORT_FIRSTLOCK              (1 << 3)
   63 #define ETHERSWITCH_PORT_DROPUNTAGGED           (1 << 4)
   64 #define ETHERSWITCH_PORT_DOUBLE_TAG             (1 << 5)
   65 #define ETHERSWITCH_PORT_INGRESS                (1 << 6)
   66 #define ETHERSWITCH_PORT_DROPTAGGED             (1 << 7)
   67 #define ETHERSWITCH_PORT_STRIPTAGINGRESS        (1 << 8)
   68 #define ETHERSWITCH_PORT_FLAGS_BITS     \
   69 "\020\1CPUPORT\2STRIPTAG\3ADDTAG\4FIRSTLOCK\5DROPUNTAGGED\6QinQ\7INGRESS" \
   70 "\10DROPTAGGED\11STRIPTAGINGRESS"
   71 
   72 #define ETHERSWITCH_PORT_MAX_LEDS 3
   73 
   74 enum etherswitch_port_led {
   75         ETHERSWITCH_PORT_LED_DEFAULT,
   76         ETHERSWITCH_PORT_LED_ON,
   77         ETHERSWITCH_PORT_LED_OFF,
   78         ETHERSWITCH_PORT_LED_BLINK,
   79         ETHERSWITCH_PORT_LED_MAX
   80 };
   81 typedef enum etherswitch_port_led etherswitch_port_led_t;
   82 
   83 struct etherswitch_port {
   84         int             es_port;
   85         int             es_pvid;
   86         int             es_nleds;
   87         uint32_t        es_flags;
   88         etherswitch_port_led_t es_led[ETHERSWITCH_PORT_MAX_LEDS];
   89         union {
   90                 struct ifreq            es_uifr;
   91                 struct ifmediareq       es_uifmr;
   92         } es_ifu;
   93 #define es_ifr          es_ifu.es_uifr
   94 #define es_ifmr         es_ifu.es_uifmr
   95 };
   96 typedef struct etherswitch_port etherswitch_port_t;
   97 
   98 struct etherswitch_vlangroup {
   99         int             es_vlangroup;
  100         int             es_vid;
  101         int             es_member_ports;
  102         int             es_untagged_ports;
  103         int             es_fid;
  104 };
  105 typedef struct etherswitch_vlangroup etherswitch_vlangroup_t;
  106 
  107 #define ETHERSWITCH_PORTMASK(_port)     (1 << (_port))
  108 
  109 struct etherswitch_portid {
  110         int es_port;
  111 };
  112 typedef struct etherswitch_portid etherswitch_portid_t;
  113 
  114 struct etherswitch_atu_entry {
  115         int id;
  116         int es_portmask;
  117         uint8_t es_macaddr[ETHER_ADDR_LEN];
  118 };
  119 typedef struct etherswitch_atu_entry etherswitch_atu_entry_t;
  120 
  121 struct etherswitch_atu_table {
  122         uint32_t es_nitems;
  123 };
  124 typedef struct etherswitch_atu_table etherswitch_atu_table_t;
  125 
  126 struct etherswitch_atu_flush_macentry {
  127         uint8_t es_macaddr[ETHER_ADDR_LEN];
  128 };
  129 typedef struct etherswitch_atu_flush_macentry etherswitch_atu_flush_macentry_t;
  130 
  131 #define IOETHERSWITCHGETINFO            _IOR('i', 1, etherswitch_info_t)
  132 #define IOETHERSWITCHGETREG             _IOWR('i', 2, etherswitch_reg_t)
  133 #define IOETHERSWITCHSETREG             _IOW('i', 3, etherswitch_reg_t)
  134 #define IOETHERSWITCHGETPORT            _IOWR('i', 4, etherswitch_port_t)
  135 #define IOETHERSWITCHSETPORT            _IOW('i', 5, etherswitch_port_t)
  136 #define IOETHERSWITCHGETVLANGROUP       _IOWR('i', 6, etherswitch_vlangroup_t)
  137 #define IOETHERSWITCHSETVLANGROUP       _IOW('i', 7, etherswitch_vlangroup_t)
  138 #define IOETHERSWITCHGETPHYREG          _IOWR('i', 8, etherswitch_phyreg_t)
  139 #define IOETHERSWITCHSETPHYREG          _IOW('i', 9, etherswitch_phyreg_t)
  140 #define IOETHERSWITCHGETCONF            _IOR('i', 10, etherswitch_conf_t)
  141 #define IOETHERSWITCHSETCONF            _IOW('i', 11, etherswitch_conf_t)
  142 #define IOETHERSWITCHFLUSHALL           _IOW('i', 12, etherswitch_portid_t)     /* Dummy */
  143 #define IOETHERSWITCHFLUSHPORT          _IOW('i', 13, etherswitch_portid_t)
  144 #define IOETHERSWITCHFLUSHMAC           _IOW('i', 14, etherswitch_atu_flush_macentry_t)
  145 #define IOETHERSWITCHGETTABLE           _IOWR('i', 15, etherswitch_atu_table_t)
  146 #define IOETHERSWITCHGETTABLEENTRY      _IOWR('i', 16, etherswitch_atu_entry_t)
  147 
  148 #endif

Cache object: 196613f642d5c00d2258383459f37b33


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