]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
Update kernel headers
authorDavid Ahern <dsahern@gmail.com>
Fri, 20 Mar 2020 16:17:55 +0000 (16:17 +0000)
committerDavid Ahern <dsahern@gmail.com>
Fri, 20 Mar 2020 16:17:55 +0000 (16:17 +0000)
Update kernel headers to commit:
    3fd177cb2b47 ("net: stmmac: dwmac_lib: remove unnecessary checks in dwmac_dma_reset()")

Signed-off-by: David Ahern <dsahern@gmail.com>
include/uapi/linux/bpf.h
include/uapi/linux/if_bridge.h
include/uapi/linux/if_macsec.h
include/uapi/linux/in.h
include/uapi/linux/pkt_cls.h
include/uapi/linux/pkt_sched.h
include/uapi/linux/tcp.h

index 73a52a21ae9099ab15a147289947ff6b4eaf9d8e..28667ac44c6b87b176e5a34faa4a702309b88bf8 100644 (file)
@@ -210,6 +210,7 @@ enum bpf_attach_type {
        BPF_TRACE_RAW_TP,
        BPF_TRACE_FENTRY,
        BPF_TRACE_FEXIT,
+       BPF_MODIFY_RETURN,
        __MAX_BPF_ATTACH_TYPE
 };
 
@@ -325,44 +326,46 @@ enum bpf_attach_type {
 #define BPF_PSEUDO_CALL                1
 
 /* flags for BPF_MAP_UPDATE_ELEM command */
-#define BPF_ANY                0 /* create new element or update existing */
-#define BPF_NOEXIST    1 /* create new element if it didn't exist */
-#define BPF_EXIST      2 /* update existing element */
-#define BPF_F_LOCK     4 /* spin_lock-ed map_lookup/map_update */
+enum {
+       BPF_ANY         = 0, /* create new element or update existing */
+       BPF_NOEXIST     = 1, /* create new element if it didn't exist */
+       BPF_EXIST       = 2, /* update existing element */
+       BPF_F_LOCK      = 4, /* spin_lock-ed map_lookup/map_update */
+};
 
 /* flags for BPF_MAP_CREATE command */
-#define BPF_F_NO_PREALLOC      (1U << 0)
+enum {
+       BPF_F_NO_PREALLOC       = (1U << 0),
 /* Instead of having one common LRU list in the
  * BPF_MAP_TYPE_LRU_[PERCPU_]HASH map, use a percpu LRU list
  * which can scale and perform better.
  * Note, the LRU nodes (including free nodes) cannot be moved
  * across different LRU lists.
  */
-#define BPF_F_NO_COMMON_LRU    (1U << 1)
+       BPF_F_NO_COMMON_LRU     = (1U << 1),
 /* Specify numa node during map creation */
-#define BPF_F_NUMA_NODE                (1U << 2)
-
-#define BPF_OBJ_NAME_LEN 16U
+       BPF_F_NUMA_NODE         = (1U << 2),
 
 /* Flags for accessing BPF object from syscall side. */
-#define BPF_F_RDONLY           (1U << 3)
-#define BPF_F_WRONLY           (1U << 4)
+       BPF_F_RDONLY            = (1U << 3),
+       BPF_F_WRONLY            = (1U << 4),
 
 /* Flag for stack_map, store build_id+offset instead of pointer */
-#define BPF_F_STACK_BUILD_ID   (1U << 5)
+       BPF_F_STACK_BUILD_ID    = (1U << 5),
 
 /* Zero-initialize hash function seed. This should only be used for testing. */
-#define BPF_F_ZERO_SEED                (1U << 6)
+       BPF_F_ZERO_SEED         = (1U << 6),
 
 /* Flags for accessing BPF object from program side. */
-#define BPF_F_RDONLY_PROG      (1U << 7)
-#define BPF_F_WRONLY_PROG      (1U << 8)
+       BPF_F_RDONLY_PROG       = (1U << 7),
+       BPF_F_WRONLY_PROG       = (1U << 8),
 
 /* Clone map from listener for newly accepted socket */
-#define BPF_F_CLONE            (1U << 9)
+       BPF_F_CLONE             = (1U << 9),
 
 /* Enable memory-mapping BPF map */
-#define BPF_F_MMAPABLE         (1U << 10)
+       BPF_F_MMAPABLE          = (1U << 10),
+};
 
 /* Flags for BPF_PROG_QUERY. */
 
@@ -391,6 +394,8 @@ struct bpf_stack_build_id {
        };
 };
 
+#define BPF_OBJ_NAME_LEN 16U
+
 union bpf_attr {
        struct { /* anonymous struct used by BPF_MAP_CREATE command */
                __u32   map_type;       /* one of enum bpf_map_type */
@@ -2909,6 +2914,42 @@ union bpf_attr {
  *             of sizeof(struct perf_branch_entry).
  *
  *             **-ENOENT** if architecture does not support branch records.
+ *
+ * int bpf_get_ns_current_pid_tgid(u64 dev, u64 ino, struct bpf_pidns_info *nsdata, u32 size)
+ *     Description
+ *             Returns 0 on success, values for *pid* and *tgid* as seen from the current
+ *             *namespace* will be returned in *nsdata*.
+ *
+ *             On failure, the returned value is one of the following:
+ *
+ *             **-EINVAL** if dev and inum supplied don't match dev_t and inode number
+ *              with nsfs of current task, or if dev conversion to dev_t lost high bits.
+ *
+ *             **-ENOENT** if pidns does not exists for the current task.
+ *
+ * int bpf_xdp_output(void *ctx, struct bpf_map *map, u64 flags, void *data, u64 size)
+ *     Description
+ *             Write raw *data* blob into a special BPF perf event held by
+ *             *map* of type **BPF_MAP_TYPE_PERF_EVENT_ARRAY**. This perf
+ *             event must have the following attributes: **PERF_SAMPLE_RAW**
+ *             as **sample_type**, **PERF_TYPE_SOFTWARE** as **type**, and
+ *             **PERF_COUNT_SW_BPF_OUTPUT** as **config**.
+ *
+ *             The *flags* are used to indicate the index in *map* for which
+ *             the value must be put, masked with **BPF_F_INDEX_MASK**.
+ *             Alternatively, *flags* can be set to **BPF_F_CURRENT_CPU**
+ *             to indicate that the index of the current CPU core should be
+ *             used.
+ *
+ *             The value to write, of *size*, is passed through eBPF stack and
+ *             pointed by *data*.
+ *
+ *             *ctx* is a pointer to in-kernel struct xdp_buff.
+ *
+ *             This helper is similar to **bpf_perf_eventoutput**\ () but
+ *             restricted to raw_tracepoint bpf programs.
+ *     Return
+ *             0 on success, or a negative error in case of failure.
  */
 #define __BPF_FUNC_MAPPER(FN)          \
        FN(unspec),                     \
@@ -3030,7 +3071,9 @@ union bpf_attr {
        FN(tcp_send_ack),               \
        FN(send_signal_thread),         \
        FN(jiffies64),                  \
-       FN(read_branch_records),
+       FN(read_branch_records),        \
+       FN(get_ns_current_pid_tgid),    \
+       FN(xdp_output),
 
 /* integer value in 'imm' field of BPF_CALL instruction selects which helper
  * function eBPF program intends to call
@@ -3045,72 +3088,100 @@ enum bpf_func_id {
 /* All flags used by eBPF helper functions, placed here. */
 
 /* BPF_FUNC_skb_store_bytes flags. */
-#define BPF_F_RECOMPUTE_CSUM           (1ULL << 0)
-#define BPF_F_INVALIDATE_HASH          (1ULL << 1)
+enum {
+       BPF_F_RECOMPUTE_CSUM            = (1ULL << 0),
+       BPF_F_INVALIDATE_HASH           = (1ULL << 1),
+};
 
 /* BPF_FUNC_l3_csum_replace and BPF_FUNC_l4_csum_replace flags.
  * First 4 bits are for passing the header field size.
  */
-#define BPF_F_HDR_FIELD_MASK           0xfULL
+enum {
+       BPF_F_HDR_FIELD_MASK            = 0xfULL,
+};
 
 /* BPF_FUNC_l4_csum_replace flags. */
-#define BPF_F_PSEUDO_HDR               (1ULL << 4)
-#define BPF_F_MARK_MANGLED_0           (1ULL << 5)
-#define BPF_F_MARK_ENFORCE             (1ULL << 6)
+enum {
+       BPF_F_PSEUDO_HDR                = (1ULL << 4),
+       BPF_F_MARK_MANGLED_0            = (1ULL << 5),
+       BPF_F_MARK_ENFORCE              = (1ULL << 6),
+};
 
 /* BPF_FUNC_clone_redirect and BPF_FUNC_redirect flags. */
-#define BPF_F_INGRESS                  (1ULL << 0)
+enum {
+       BPF_F_INGRESS                   = (1ULL << 0),
+};
 
 /* BPF_FUNC_skb_set_tunnel_key and BPF_FUNC_skb_get_tunnel_key flags. */
-#define BPF_F_TUNINFO_IPV6             (1ULL << 0)
+enum {
+       BPF_F_TUNINFO_IPV6              = (1ULL << 0),
+};
 
 /* flags for both BPF_FUNC_get_stackid and BPF_FUNC_get_stack. */
-#define BPF_F_SKIP_FIELD_MASK          0xffULL
-#define BPF_F_USER_STACK               (1ULL << 8)
+enum {
+       BPF_F_SKIP_FIELD_MASK           = 0xffULL,
+       BPF_F_USER_STACK                = (1ULL << 8),
 /* flags used by BPF_FUNC_get_stackid only. */
-#define BPF_F_FAST_STACK_CMP           (1ULL << 9)
-#define BPF_F_REUSE_STACKID            (1ULL << 10)
+       BPF_F_FAST_STACK_CMP            = (1ULL << 9),
+       BPF_F_REUSE_STACKID             = (1ULL << 10),
 /* flags used by BPF_FUNC_get_stack only. */
-#define BPF_F_USER_BUILD_ID            (1ULL << 11)
+       BPF_F_USER_BUILD_ID             = (1ULL << 11),
+};
 
 /* BPF_FUNC_skb_set_tunnel_key flags. */
-#define BPF_F_ZERO_CSUM_TX             (1ULL << 1)
-#define BPF_F_DONT_FRAGMENT            (1ULL << 2)
-#define BPF_F_SEQ_NUMBER               (1ULL << 3)
+enum {
+       BPF_F_ZERO_CSUM_TX              = (1ULL << 1),
+       BPF_F_DONT_FRAGMENT             = (1ULL << 2),
+       BPF_F_SEQ_NUMBER                = (1ULL << 3),
+};
 
 /* BPF_FUNC_perf_event_output, BPF_FUNC_perf_event_read and
  * BPF_FUNC_perf_event_read_value flags.
  */
-#define BPF_F_INDEX_MASK               0xffffffffULL
-#define BPF_F_CURRENT_CPU              BPF_F_INDEX_MASK
+enum {
+       BPF_F_INDEX_MASK                = 0xffffffffULL,
+       BPF_F_CURRENT_CPU               = BPF_F_INDEX_MASK,
 /* BPF_FUNC_perf_event_output for sk_buff input context. */
-#define BPF_F_CTXLEN_MASK              (0xfffffULL << 32)
+       BPF_F_CTXLEN_MASK               = (0xfffffULL << 32),
+};
 
 /* Current network namespace */
-#define BPF_F_CURRENT_NETNS            (-1L)
+enum {
+       BPF_F_CURRENT_NETNS             = (-1L),
+};
 
 /* BPF_FUNC_skb_adjust_room flags. */
-#define BPF_F_ADJ_ROOM_FIXED_GSO       (1ULL << 0)
+enum {
+       BPF_F_ADJ_ROOM_FIXED_GSO        = (1ULL << 0),
+       BPF_F_ADJ_ROOM_ENCAP_L3_IPV4    = (1ULL << 1),
+       BPF_F_ADJ_ROOM_ENCAP_L3_IPV6    = (1ULL << 2),
+       BPF_F_ADJ_ROOM_ENCAP_L4_GRE     = (1ULL << 3),
+       BPF_F_ADJ_ROOM_ENCAP_L4_UDP     = (1ULL << 4),
+};
 
-#define BPF_ADJ_ROOM_ENCAP_L2_MASK     0xff
-#define BPF_ADJ_ROOM_ENCAP_L2_SHIFT    56
+enum {
+       BPF_ADJ_ROOM_ENCAP_L2_MASK      = 0xff,
+       BPF_ADJ_ROOM_ENCAP_L2_SHIFT     = 56,
+};
 
-#define BPF_F_ADJ_ROOM_ENCAP_L3_IPV4   (1ULL << 1)
-#define BPF_F_ADJ_ROOM_ENCAP_L3_IPV6   (1ULL << 2)
-#define BPF_F_ADJ_ROOM_ENCAP_L4_GRE    (1ULL << 3)
-#define BPF_F_ADJ_ROOM_ENCAP_L4_UDP    (1ULL << 4)
 #define BPF_F_ADJ_ROOM_ENCAP_L2(len)   (((__u64)len & \
                                          BPF_ADJ_ROOM_ENCAP_L2_MASK) \
                                         << BPF_ADJ_ROOM_ENCAP_L2_SHIFT)
 
 /* BPF_FUNC_sysctl_get_name flags. */
-#define BPF_F_SYSCTL_BASE_NAME         (1ULL << 0)
+enum {
+       BPF_F_SYSCTL_BASE_NAME          = (1ULL << 0),
+};
 
 /* BPF_FUNC_sk_storage_get flags */
-#define BPF_SK_STORAGE_GET_F_CREATE    (1ULL << 0)
+enum {
+       BPF_SK_STORAGE_GET_F_CREATE     = (1ULL << 0),
+};
 
 /* BPF_FUNC_read_branch_records flags. */
-#define BPF_F_GET_BRANCH_RECORDS_SIZE  (1ULL << 0)
+enum {
+       BPF_F_GET_BRANCH_RECORDS_SIZE   = (1ULL << 0),
+};
 
 /* Mode for BPF_FUNC_skb_adjust_room helper. */
 enum bpf_adj_room_mode {
@@ -3176,6 +3247,7 @@ struct __sk_buff {
        __u32 wire_len;
        __u32 gso_segs;
        __bpf_md_ptr(struct bpf_sock *, sk);
+       __u32 gso_size;
 };
 
 struct bpf_tunnel_key {
@@ -3528,13 +3600,14 @@ struct bpf_sock_ops {
 };
 
 /* Definitions for bpf_sock_ops_cb_flags */
-#define BPF_SOCK_OPS_RTO_CB_FLAG       (1<<0)
-#define BPF_SOCK_OPS_RETRANS_CB_FLAG   (1<<1)
-#define BPF_SOCK_OPS_STATE_CB_FLAG     (1<<2)
-#define BPF_SOCK_OPS_RTT_CB_FLAG       (1<<3)
-#define BPF_SOCK_OPS_ALL_CB_FLAGS       0xF            /* Mask of all currently
-                                                        * supported cb flags
-                                                        */
+enum {
+       BPF_SOCK_OPS_RTO_CB_FLAG        = (1<<0),
+       BPF_SOCK_OPS_RETRANS_CB_FLAG    = (1<<1),
+       BPF_SOCK_OPS_STATE_CB_FLAG      = (1<<2),
+       BPF_SOCK_OPS_RTT_CB_FLAG        = (1<<3),
+/* Mask of all currently supported cb flags */
+       BPF_SOCK_OPS_ALL_CB_FLAGS       = 0xF,
+};
 
 /* List of known BPF sock_ops operators.
  * New entries can only be added at the end
@@ -3613,8 +3686,10 @@ enum {
        BPF_TCP_MAX_STATES      /* Leave at the end! */
 };
 
-#define TCP_BPF_IW             1001    /* Set TCP initial congestion window */
-#define TCP_BPF_SNDCWND_CLAMP  1002    /* Set sndcwnd_clamp */
+enum {
+       TCP_BPF_IW              = 1001, /* Set TCP initial congestion window */
+       TCP_BPF_SNDCWND_CLAMP   = 1002, /* Set sndcwnd_clamp */
+};
 
 struct bpf_perf_event_value {
        __u64 counter;
@@ -3622,12 +3697,16 @@ struct bpf_perf_event_value {
        __u64 running;
 };
 
-#define BPF_DEVCG_ACC_MKNOD    (1ULL << 0)
-#define BPF_DEVCG_ACC_READ     (1ULL << 1)
-#define BPF_DEVCG_ACC_WRITE    (1ULL << 2)
+enum {
+       BPF_DEVCG_ACC_MKNOD     = (1ULL << 0),
+       BPF_DEVCG_ACC_READ      = (1ULL << 1),
+       BPF_DEVCG_ACC_WRITE     = (1ULL << 2),
+};
 
-#define BPF_DEVCG_DEV_BLOCK    (1ULL << 0)
-#define BPF_DEVCG_DEV_CHAR     (1ULL << 1)
+enum {
+       BPF_DEVCG_DEV_BLOCK     = (1ULL << 0),
+       BPF_DEVCG_DEV_CHAR      = (1ULL << 1),
+};
 
 struct bpf_cgroup_dev_ctx {
        /* access_type encoded as (BPF_DEVCG_ACC_* << 16) | BPF_DEVCG_DEV_* */
@@ -3643,8 +3722,10 @@ struct bpf_raw_tracepoint_args {
 /* DIRECT:  Skip the FIB rules and go to FIB table associated with device
  * OUTPUT:  Do lookup from egress perspective; default is ingress
  */
-#define BPF_FIB_LOOKUP_DIRECT  (1U << 0)
-#define BPF_FIB_LOOKUP_OUTPUT  (1U << 1)
+enum {
+       BPF_FIB_LOOKUP_DIRECT  = (1U << 0),
+       BPF_FIB_LOOKUP_OUTPUT  = (1U << 1),
+};
 
 enum {
        BPF_FIB_LKUP_RET_SUCCESS,      /* lookup successful */
@@ -3716,9 +3797,11 @@ enum bpf_task_fd_type {
        BPF_FD_TYPE_URETPROBE,          /* filename + offset */
 };
 
-#define BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG            (1U << 0)
-#define BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL                (1U << 1)
-#define BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP             (1U << 2)
+enum {
+       BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG             = (1U << 0),
+       BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL         = (1U << 1),
+       BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP              = (1U << 2),
+};
 
 struct bpf_flow_keys {
        __u16   nhoff;
@@ -3784,4 +3867,8 @@ struct bpf_sockopt {
        __s32   retval;
 };
 
+struct bpf_pidns_info {
+       __u32 pid;
+       __u32 tgid;
+};
 #endif /* __LINUX_BPF_H__ */
index e2e925ffc9c0a81b43798ef02bd8e55e7784b0c8..5dffabafb056b904514596d54bfe08314e359944 100644 (file)
@@ -131,6 +131,7 @@ enum {
 #define BRIDGE_VLAN_INFO_RANGE_END     (1<<4) /* VLAN is end of vlan range */
 #define BRIDGE_VLAN_INFO_BRENTRY       (1<<5) /* Global bridge VLAN entry */
 #define BRIDGE_VLAN_INFO_ONLY_OPTS     (1<<6) /* Skip create/delete/flags */
+#define BRIDGE_VLAN_INFO_REMOVE_TUN    (1<<7) /* Remove tunnel mapping */
 
 struct bridge_vlan_info {
        __u16 flags;
@@ -174,6 +175,16 @@ struct br_vlan_msg {
        __u32 ifindex;
 };
 
+enum {
+       BRIDGE_VLANDB_DUMP_UNSPEC,
+       BRIDGE_VLANDB_DUMP_FLAGS,
+       __BRIDGE_VLANDB_DUMP_MAX,
+};
+#define BRIDGE_VLANDB_DUMP_MAX (__BRIDGE_VLANDB_DUMP_MAX - 1)
+
+/* flags used in BRIDGE_VLANDB_DUMP_FLAGS attribute to affect dumps */
+#define BRIDGE_VLANDB_DUMPF_STATS      (1 << 0) /* Include stats in the dump */
+
 /* Bridge vlan RTM attributes
  * [BRIDGE_VLANDB_ENTRY] = {
  *     [BRIDGE_VLANDB_ENTRY_INFO]
@@ -192,10 +203,31 @@ enum {
        BRIDGE_VLANDB_ENTRY_INFO,
        BRIDGE_VLANDB_ENTRY_RANGE,
        BRIDGE_VLANDB_ENTRY_STATE,
+       BRIDGE_VLANDB_ENTRY_TUNNEL_ID,
+       BRIDGE_VLANDB_ENTRY_STATS,
        __BRIDGE_VLANDB_ENTRY_MAX,
 };
 #define BRIDGE_VLANDB_ENTRY_MAX (__BRIDGE_VLANDB_ENTRY_MAX - 1)
 
+/* [BRIDGE_VLANDB_ENTRY] = {
+ *     [BRIDGE_VLANDB_ENTRY_STATS] = {
+ *         [BRIDGE_VLANDB_STATS_RX_BYTES]
+ *         ...
+ *     }
+ *     ...
+ * }
+ */
+enum {
+       BRIDGE_VLANDB_STATS_UNSPEC,
+       BRIDGE_VLANDB_STATS_RX_BYTES,
+       BRIDGE_VLANDB_STATS_RX_PACKETS,
+       BRIDGE_VLANDB_STATS_TX_BYTES,
+       BRIDGE_VLANDB_STATS_TX_PACKETS,
+       BRIDGE_VLANDB_STATS_PAD,
+       __BRIDGE_VLANDB_STATS_MAX,
+};
+#define BRIDGE_VLANDB_STATS_MAX (__BRIDGE_VLANDB_STATS_MAX - 1)
+
 /* Bridge multicast database attributes
  * [MDBA_MDB] = {
  *     [MDBA_MDB_ENTRY] = {
index 33c32051ac366e2a977a3a9704000363820b63f7..eee31cec76d2361b3c1dda36240b23ef490775d8 100644 (file)
 
 #define MACSEC_KEYID_LEN 16
 
-/* cipher IDs as per IEEE802.1AEbn-2011 */
+/* cipher IDs as per IEEE802.1AE-2018 (Table 14-1) */
 #define MACSEC_CIPHER_ID_GCM_AES_128 0x0080C20001000001ULL
 #define MACSEC_CIPHER_ID_GCM_AES_256 0x0080C20001000002ULL
+#define MACSEC_CIPHER_ID_GCM_AES_XPN_128 0x0080C20001000003ULL
+#define MACSEC_CIPHER_ID_GCM_AES_XPN_256 0x0080C20001000004ULL
 
 /* deprecated cipher ID for GCM-AES-128 */
 #define MACSEC_DEFAULT_CIPHER_ID     0x0080020001000001ULL
@@ -88,11 +90,13 @@ enum macsec_sa_attrs {
        MACSEC_SA_ATTR_UNSPEC,
        MACSEC_SA_ATTR_AN,     /* config/dump, u8 0..3 */
        MACSEC_SA_ATTR_ACTIVE, /* config/dump, u8 0..1 */
-       MACSEC_SA_ATTR_PN,     /* config/dump, u32 */
+       MACSEC_SA_ATTR_PN,     /* config/dump, u32/u64 (u64 if XPN) */
        MACSEC_SA_ATTR_KEY,    /* config, data */
        MACSEC_SA_ATTR_KEYID,  /* config/dump, 128-bit */
        MACSEC_SA_ATTR_STATS,  /* dump, nested, macsec_sa_stats_attr */
        MACSEC_SA_ATTR_PAD,
+       MACSEC_SA_ATTR_SSCI,   /* config/dump, u32 - XPN only */
+       MACSEC_SA_ATTR_SALT,   /* config, 96-bit - XPN only */
        __MACSEC_SA_ATTR_END,
        NUM_MACSEC_SA_ATTR = __MACSEC_SA_ATTR_END,
        MACSEC_SA_ATTR_MAX = __MACSEC_SA_ATTR_END - 1,
index 83a4c1874b593db81ab217dd024a6ebfe9fe4ee0..ca59dc7612121ba265af35a4f5cf13271ef7c103 100644 (file)
@@ -74,6 +74,8 @@ enum {
 #define IPPROTO_UDPLITE                IPPROTO_UDPLITE
   IPPROTO_MPLS = 137,          /* MPLS in IP (RFC 4023)                */
 #define IPPROTO_MPLS           IPPROTO_MPLS
+  IPPROTO_ETHERNET = 143,      /* Ethernet-within-IPv6 Encapsulation   */
+#define IPPROTO_ETHERNET       IPPROTO_ETHERNET
   IPPROTO_RAW = 255,           /* Raw IP packets                       */
 #define IPPROTO_RAW            IPPROTO_RAW
   IPPROTO_MPTCP = 262,         /* Multipath TCP connection             */
index 449a63971451f0ff1892f2e39a5ebc10f02a9b53..81cc1a8695884d9f4534cef0af51b0cce87cd4bc 100644 (file)
@@ -17,6 +17,7 @@ enum {
        TCA_ACT_PAD,
        TCA_ACT_COOKIE,
        TCA_ACT_FLAGS,
+       TCA_ACT_HW_STATS_TYPE,
        __TCA_ACT_MAX
 };
 
@@ -24,6 +25,27 @@ enum {
                                         * actions stats.
                                         */
 
+/* tca HW stats type
+ * When user does not pass the attribute, he does not care.
+ * It is the same as if he would pass the attribute with
+ * all supported bits set.
+ * In case no bits are set, user is not interested in getting any HW statistics.
+ */
+#define TCA_ACT_HW_STATS_TYPE_IMMEDIATE (1 << 0) /* Means that in dump, user
+                                                 * gets the current HW stats
+                                                 * state from the device
+                                                 * queried at the dump time.
+                                                 */
+#define TCA_ACT_HW_STATS_TYPE_DELAYED (1 << 1) /* Means that in dump, user gets
+                                               * HW stats that might be out
+                                               * of date for some time, maybe
+                                               * couple of seconds. This is
+                                               * the case when driver polls
+                                               * stats updates periodically
+                                               * or when it gets async stats update
+                                               * from the device.
+                                               */
+
 #define TCA_ACT_MAX __TCA_ACT_MAX
 #define TCA_OLD_COMPAT (TCA_ACT_MAX+1)
 #define TCA_ACT_MAX_PRIO 32
index bbe791b241682fafddfac2d40aaad2bc789eebe8..7307a29a103e5191acd829c745860b637721be30 100644 (file)
@@ -256,6 +256,7 @@ enum {
        TCA_RED_PARMS,
        TCA_RED_STAB,
        TCA_RED_MAX_P,
+       TCA_RED_FLAGS,          /* bitfield32 */
        __TCA_RED_MAX,
 };
 
@@ -268,12 +269,28 @@ struct tc_red_qopt {
        unsigned char   Wlog;           /* log(W)               */
        unsigned char   Plog;           /* log(P_max/(qth_max-qth_min)) */
        unsigned char   Scell_log;      /* cell size for idle damping */
+
+       /* This field can be used for flags that a RED-like qdisc has
+        * historically supported. E.g. when configuring RED, it can be used for
+        * ECN, HARDDROP and ADAPTATIVE. For SFQ it can be used for ECN,
+        * HARDDROP. Etc. Because this field has not been validated, and is
+        * copied back on dump, any bits besides those to which a given qdisc
+        * has assigned a historical meaning need to be considered for free use
+        * by userspace tools.
+        *
+        * Any further flags need to be passed differently, e.g. through an
+        * attribute (such as TCA_RED_FLAGS above). Such attribute should allow
+        * passing both recent and historic flags in one value.
+        */
        unsigned char   flags;
 #define TC_RED_ECN             1
 #define TC_RED_HARDDROP                2
 #define TC_RED_ADAPTATIVE      4
+#define TC_RED_NODROP          8
 };
 
+#define TC_RED_HISTORIC_FLAGS (TC_RED_ECN | TC_RED_HARDDROP | TC_RED_ADAPTATIVE)
+
 struct tc_red_xstats {
        __u32           early;          /* Early drops */
        __u32           pdrop;          /* Drops due to queue limits */
@@ -894,6 +911,8 @@ enum {
 
        TCA_FQ_CE_THRESHOLD,    /* DCTCP-like CE-marking threshold */
 
+       TCA_FQ_TIMER_SLACK,     /* timer slack */
+
        __TCA_FQ_MAX
 };
 
index 36532937a24e296db82d61175f04c00c3e6988e7..f4e1003ba207ca11b86f0dc993a1e930797f2690 100644 (file)
@@ -312,6 +312,7 @@ enum {
        TCP_NLA_REORD_SEEN,     /* reordering events seen */
        TCP_NLA_SRTT,           /* smoothed RTT in usecs */
        TCP_NLA_TIMEOUT_REHASH, /* Timeout-triggered rehash attempts */
+       TCP_NLA_BYTES_NOTSENT,  /* Bytes in write queue not yet sent */
 };
 
 /* for TCP_MD5SIG socket option */