]> rtime.felk.cvut.cz Git - lisovros/iproute2_canprio.git/blobdiff - include/linux/if_link.h
update to 3.3-rc7 kernel headers
[lisovros/iproute2_canprio.git] / include / linux / if_link.h
index 5110b96add9cfa2d8674168dc25ead820f6f7bde..06a3a472e377966955dbdc8a7b11755f13f6ba94 100644 (file)
@@ -4,7 +4,7 @@
 #include <linux/types.h>
 #include <linux/netlink.h>
 
-/* The struct should be in sync with struct net_device_stats */
+/* This struct should be in sync with struct rtnl_link_stats64 */
 struct rtnl_link_stats {
        __u32   rx_packets;             /* total packets received       */
        __u32   tx_packets;             /* total packets transmitted    */
@@ -37,6 +37,39 @@ struct rtnl_link_stats {
        __u32   tx_compressed;
 };
 
+/* The main device statistics structure */
+struct rtnl_link_stats64 {
+       __u64   rx_packets;             /* total packets received       */
+       __u64   tx_packets;             /* total packets transmitted    */
+       __u64   rx_bytes;               /* total bytes received         */
+       __u64   tx_bytes;               /* total bytes transmitted      */
+       __u64   rx_errors;              /* bad packets received         */
+       __u64   tx_errors;              /* packet transmit problems     */
+       __u64   rx_dropped;             /* no space in linux buffers    */
+       __u64   tx_dropped;             /* no space available in linux  */
+       __u64   multicast;              /* multicast packets received   */
+       __u64   collisions;
+
+       /* detailed rx_errors: */
+       __u64   rx_length_errors;
+       __u64   rx_over_errors;         /* receiver ring buff overflow  */
+       __u64   rx_crc_errors;          /* recved pkt with crc error    */
+       __u64   rx_frame_errors;        /* recv'd frame alignment error */
+       __u64   rx_fifo_errors;         /* recv'r fifo overrun          */
+       __u64   rx_missed_errors;       /* receiver missed packet       */
+
+       /* detailed tx_errors */
+       __u64   tx_aborted_errors;
+       __u64   tx_carrier_errors;
+       __u64   tx_fifo_errors;
+       __u64   tx_heartbeat_errors;
+       __u64   tx_window_errors;
+
+       /* for cslip etc */
+       __u64   rx_compressed;
+       __u64   tx_compressed;
+};
+
 /* The struct should be in sync with struct ifmap */
 struct rtnl_link_ifmap {
        __u64   mem_start;
@@ -47,6 +80,24 @@ struct rtnl_link_ifmap {
        __u8    port;
 };
 
+/*
+ * IFLA_AF_SPEC
+ *   Contains nested attributes for address family specific attributes.
+ *   Each address family may create a attribute with the address family
+ *   number as type and create its own attribute structure in it.
+ *
+ *   Example:
+ *   [IFLA_AF_SPEC] = {
+ *       [AF_INET] = {
+ *           [IFLA_INET_CONF] = ...,
+ *       },
+ *       [AF_INET6] = {
+ *           [IFLA_INET6_FLAGS] = ...,
+ *           [IFLA_INET6_CONF] = ...,
+ *       }
+ *   }
+ */
+
 enum {
        IFLA_UNSPEC,
        IFLA_ADDRESS,
@@ -79,10 +130,14 @@ enum {
        IFLA_NET_NS_PID,
        IFLA_IFALIAS,
        IFLA_NUM_VF,            /* Number of VFs if device is SR-IOV PF */
-       IFLA_VF_MAC,            /* Hardware queue specific attributes */
-       IFLA_VF_VLAN,
-       IFLA_VF_TX_RATE,        /* TX Bandwidth Allocation */
-       IFLA_VFINFO,
+       IFLA_VFINFO_LIST,
+       IFLA_STATS64,
+       IFLA_VF_PORTS,
+       IFLA_PORT_SELF,
+       IFLA_AF_SPEC,
+       IFLA_GROUP,             /* Group the device belongs to */
+       IFLA_NET_NS_FD,
+       IFLA_EXT_MASK,          /* Extended info mask, VFs, etc */
        __IFLA_MAX
 };
 
@@ -93,6 +148,14 @@ enum {
 #define IFLA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
 #define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
 
+enum {
+       IFLA_INET_UNSPEC,
+       IFLA_INET_CONF,
+       __IFLA_INET_MAX,
+};
+
+#define IFLA_INET_MAX (__IFLA_INET_MAX - 1)
+
 /* ifi_flags.
 
    IFF_* flags.
@@ -197,9 +260,29 @@ enum macvlan_mode {
        MACVLAN_MODE_PRIVATE = 1, /* don't talk to other macvlans */
        MACVLAN_MODE_VEPA    = 2, /* talk to other ports through ext bridge */
        MACVLAN_MODE_BRIDGE  = 4, /* talk to bridge ports directly */
+       MACVLAN_MODE_PASSTHRU = 8,/* take over the underlying device */
+};
+
+/* SR-IOV virtual function management section */
+
+enum {
+       IFLA_VF_INFO_UNSPEC,
+       IFLA_VF_INFO,
+       __IFLA_VF_INFO_MAX,
 };
 
-/* SR-IOV virtual function managment section */
+#define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
+
+enum {
+       IFLA_VF_UNSPEC,
+       IFLA_VF_MAC,            /* Hardware queue specific attributes */
+       IFLA_VF_VLAN,
+       IFLA_VF_TX_RATE,        /* TX Bandwidth Allocation */
+       IFLA_VF_SPOOFCHK,       /* Spoof Checking on/off switch */
+       __IFLA_VF_MAX,
+};
+
+#define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
 
 struct ifla_vf_mac {
        __u32 vf;
@@ -217,11 +300,81 @@ struct ifla_vf_tx_rate {
        __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
 };
 
-struct ifla_vf_info {
+struct ifla_vf_spoofchk {
        __u32 vf;
-       __u8 mac[32];
-       __u32 vlan;
-       __u32 qos;
-       __u32 tx_rate;
+       __u32 setting;
+};
+
+/* VF ports management section
+ *
+ *     Nested layout of set/get msg is:
+ *
+ *             [IFLA_NUM_VF]
+ *             [IFLA_VF_PORTS]
+ *                     [IFLA_VF_PORT]
+ *                             [IFLA_PORT_*], ...
+ *                     [IFLA_VF_PORT]
+ *                             [IFLA_PORT_*], ...
+ *                     ...
+ *             [IFLA_PORT_SELF]
+ *                     [IFLA_PORT_*], ...
+ */
+
+enum {
+       IFLA_VF_PORT_UNSPEC,
+       IFLA_VF_PORT,                   /* nest */
+       __IFLA_VF_PORT_MAX,
+};
+
+#define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
+
+enum {
+       IFLA_PORT_UNSPEC,
+       IFLA_PORT_VF,                   /* __u32 */
+       IFLA_PORT_PROFILE,              /* string */
+       IFLA_PORT_VSI_TYPE,             /* 802.1Qbg (pre-)standard VDP */
+       IFLA_PORT_INSTANCE_UUID,        /* binary UUID */
+       IFLA_PORT_HOST_UUID,            /* binary UUID */
+       IFLA_PORT_REQUEST,              /* __u8 */
+       IFLA_PORT_RESPONSE,             /* __u16, output only */
+       __IFLA_PORT_MAX,
+};
+
+#define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
+
+#define PORT_PROFILE_MAX       40
+#define PORT_UUID_MAX          16
+#define PORT_SELF_VF           -1
+
+enum {
+       PORT_REQUEST_PREASSOCIATE = 0,
+       PORT_REQUEST_PREASSOCIATE_RR,
+       PORT_REQUEST_ASSOCIATE,
+       PORT_REQUEST_DISASSOCIATE,
 };
+
+enum {
+       PORT_VDP_RESPONSE_SUCCESS = 0,
+       PORT_VDP_RESPONSE_INVALID_FORMAT,
+       PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
+       PORT_VDP_RESPONSE_UNUSED_VTID,
+       PORT_VDP_RESPONSE_VTID_VIOLATION,
+       PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
+       PORT_VDP_RESPONSE_OUT_OF_SYNC,
+       /* 0x08-0xFF reserved for future VDP use */
+       PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
+       PORT_PROFILE_RESPONSE_INPROGRESS,
+       PORT_PROFILE_RESPONSE_INVALID,
+       PORT_PROFILE_RESPONSE_BADSTATE,
+       PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
+       PORT_PROFILE_RESPONSE_ERROR,
+};
+
+struct ifla_port_vsi {
+       __u8 vsi_mgr_id;
+       __u8 vsi_type_id[3];
+       __u8 vsi_type_version;
+       __u8 pad[3];
+};
+
 #endif /* _LINUX_IF_LINK_H */