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

Cache object: 6190b78b7926b54f77d66e239f346201


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