aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi/linux
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2018-08-15 18:04:25 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2018-08-15 18:04:25 -0400
commit9a76aba02a37718242d7cdc294f0a3901928aa57 (patch)
tree2040d038f85d2120f21af83b0793efd5af1864e3 /include/uapi/linux
parent0a957467c5fd46142bc9c52758ffc552d4c5e2f7 (diff)
parent26a1ccc6c117be8e33e0410fce8c5298b0015b99 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
Pull networking updates from David Miller: "Highlights: - Gustavo A. R. Silva keeps working on the implicit switch fallthru changes. - Support 802.11ax High-Efficiency wireless in cfg80211 et al, From Luca Coelho. - Re-enable ASPM in r8169, from Kai-Heng Feng. - Add virtual XFRM interfaces, which avoids all of the limitations of existing IPSEC tunnels. From Steffen Klassert. - Convert GRO over to use a hash table, so that when we have many flows active we don't traverse a long list during accumluation. - Many new self tests for routing, TC, tunnels, etc. Too many contributors to mention them all, but I'm really happy to keep seeing this stuff. - Hardware timestamping support for dpaa_eth/fsl-fman from Yangbo Lu. - Lots of cleanups and fixes in L2TP code from Guillaume Nault. - Add IPSEC offload support to netdevsim, from Shannon Nelson. - Add support for slotting with non-uniform distribution to netem packet scheduler, from Yousuk Seung. - Add UDP GSO support to mlx5e, from Boris Pismenny. - Support offloading of Team LAG in NFP, from John Hurley. - Allow to configure TX queue selection based upon RX queue, from Amritha Nambiar. - Support ethtool ring size configuration in aquantia, from Anton Mikaev. - Support DSCP and flowlabel per-transport in SCTP, from Xin Long. - Support list based batching and stack traversal of SKBs, this is very exciting work. From Edward Cree. - Busyloop optimizations in vhost_net, from Toshiaki Makita. - Introduce the ETF qdisc, which allows time based transmissions. IGB can offload this in hardware. From Vinicius Costa Gomes. - Add parameter support to devlink, from Moshe Shemesh. - Several multiplication and division optimizations for BPF JIT in nfp driver, from Jiong Wang. - Lots of prepatory work to make more of the packet scheduler layer lockless, when possible, from Vlad Buslov. - Add ACK filter and NAT awareness to sch_cake packet scheduler, from Toke Høiland-Jørgensen. - Support regions and region snapshots in devlink, from Alex Vesker. - Allow to attach XDP programs to both HW and SW at the same time on a given device, with initial support in nfp. From Jakub Kicinski. - Add TLS RX offload and support in mlx5, from Ilya Lesokhin. - Use PHYLIB in r8169 driver, from Heiner Kallweit. - All sorts of changes to support Spectrum 2 in mlxsw driver, from Ido Schimmel. - PTP support in mv88e6xxx DSA driver, from Andrew Lunn. - Make TCP_USER_TIMEOUT socket option more accurate, from Jon Maxwell. - Support for templates in packet scheduler classifier, from Jiri Pirko. - IPV6 support in RDS, from Ka-Cheong Poon. - Native tproxy support in nf_tables, from Máté Eckl. - Maintain IP fragment queue in an rbtree, but optimize properly for in-order frags. From Peter Oskolkov. - Improvde handling of ACKs on hole repairs, from Yuchung Cheng" * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1996 commits) bpf: test: fix spelling mistake "REUSEEPORT" -> "REUSEPORT" hv/netvsc: Fix NULL dereference at single queue mode fallback net: filter: mark expected switch fall-through xen-netfront: fix warn message as irq device name has '/' cxgb4: Add new T5 PCI device ids 0x50af and 0x50b0 net: dsa: mv88e6xxx: missing unlock on error path rds: fix building with IPV6=m inet/connection_sock: prefer _THIS_IP_ to current_text_addr net: dsa: mv88e6xxx: bitwise vs logical bug net: sock_diag: Fix spectre v1 gadget in __sock_diag_cmd() ieee802154: hwsim: using right kind of iteration net: hns3: Add vlan filter setting by ethtool command -K net: hns3: Set tx ring' tc info when netdev is up net: hns3: Remove tx ring BD len register in hns3_enet net: hns3: Fix desc num set to default when setting channel net: hns3: Fix for phy link issue when using marvell phy driver net: hns3: Fix for information of phydev lost problem when down/up net: hns3: Fix for command format parsing error in hclge_is_all_function_id_zero net: hns3: Add support for serdes loopback selftest bnxt_en: take coredump_record structure off stack ...
Diffstat (limited to 'include/uapi/linux')
-rw-r--r--include/uapi/linux/bpf.h104
-rw-r--r--include/uapi/linux/can.h2
-rw-r--r--include/uapi/linux/dcbnl.h3
-rw-r--r--include/uapi/linux/devlink.h42
-rw-r--r--include/uapi/linux/errqueue.h4
-rw-r--r--include/uapi/linux/ethtool.h9
-rw-r--r--include/uapi/linux/if_link.h17
-rw-r--r--include/uapi/linux/ila.h1
-rw-r--r--include/uapi/linux/ip.h1
-rw-r--r--include/uapi/linux/l2tp.h15
-rw-r--r--include/uapi/linux/mii.h1
-rw-r--r--include/uapi/linux/mroute.h2
-rw-r--r--include/uapi/linux/net_tstamp.h18
-rw-r--r--include/uapi/linux/netconf.h1
-rw-r--r--include/uapi/linux/netfilter/nf_tables.h124
-rw-r--r--include/uapi/linux/netfilter/nfnetlink_osf.h (renamed from include/uapi/linux/netfilter/nf_osf.h)32
-rw-r--r--include/uapi/linux/netfilter/xt_osf.h22
-rw-r--r--include/uapi/linux/netfilter_bridge.h11
-rw-r--r--include/uapi/linux/nl80211.h102
-rw-r--r--include/uapi/linux/openvswitch.h3
-rw-r--r--include/uapi/linux/pkt_cls.h41
-rw-r--r--include/uapi/linux/pkt_sched.h150
-rw-r--r--include/uapi/linux/ppp-ioctl.h2
-rw-r--r--include/uapi/linux/rds.h69
-rw-r--r--include/uapi/linux/rtnetlink.h7
-rw-r--r--include/uapi/linux/sctp.h5
-rw-r--r--include/uapi/linux/smc_diag.h25
-rw-r--r--include/uapi/linux/snmp.h3
-rw-r--r--include/uapi/linux/sysctl.h3
-rw-r--r--include/uapi/linux/tc_act/tc_pedit.h9
-rw-r--r--include/uapi/linux/tc_act/tc_skbedit.h2
-rw-r--r--include/uapi/linux/tc_act/tc_tunnel_key.h28
-rw-r--r--include/uapi/linux/tcp.h10
-rw-r--r--include/uapi/linux/tipc_netlink.h14
-rw-r--r--include/uapi/linux/vhost.h18
-rw-r--r--include/uapi/linux/xfrm.h5
36 files changed, 857 insertions, 48 deletions
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index b7db3261c62d..66917a4eba27 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -75,6 +75,11 @@ struct bpf_lpm_trie_key {
75 __u8 data[0]; /* Arbitrary size */ 75 __u8 data[0]; /* Arbitrary size */
76}; 76};
77 77
78struct bpf_cgroup_storage_key {
79 __u64 cgroup_inode_id; /* cgroup inode id */
80 __u32 attach_type; /* program attach type */
81};
82
78/* BPF syscall commands, see bpf(2) man-page for details. */ 83/* BPF syscall commands, see bpf(2) man-page for details. */
79enum bpf_cmd { 84enum bpf_cmd {
80 BPF_MAP_CREATE, 85 BPF_MAP_CREATE,
@@ -120,6 +125,8 @@ enum bpf_map_type {
120 BPF_MAP_TYPE_CPUMAP, 125 BPF_MAP_TYPE_CPUMAP,
121 BPF_MAP_TYPE_XSKMAP, 126 BPF_MAP_TYPE_XSKMAP,
122 BPF_MAP_TYPE_SOCKHASH, 127 BPF_MAP_TYPE_SOCKHASH,
128 BPF_MAP_TYPE_CGROUP_STORAGE,
129 BPF_MAP_TYPE_REUSEPORT_SOCKARRAY,
123}; 130};
124 131
125enum bpf_prog_type { 132enum bpf_prog_type {
@@ -144,6 +151,7 @@ enum bpf_prog_type {
144 BPF_PROG_TYPE_CGROUP_SOCK_ADDR, 151 BPF_PROG_TYPE_CGROUP_SOCK_ADDR,
145 BPF_PROG_TYPE_LWT_SEG6LOCAL, 152 BPF_PROG_TYPE_LWT_SEG6LOCAL,
146 BPF_PROG_TYPE_LIRC_MODE2, 153 BPF_PROG_TYPE_LIRC_MODE2,
154 BPF_PROG_TYPE_SK_REUSEPORT,
147}; 155};
148 156
149enum bpf_attach_type { 157enum bpf_attach_type {
@@ -1371,6 +1379,20 @@ union bpf_attr {
1371 * A 8-byte long non-decreasing number on success, or 0 if the 1379 * A 8-byte long non-decreasing number on success, or 0 if the
1372 * socket field is missing inside *skb*. 1380 * socket field is missing inside *skb*.
1373 * 1381 *
1382 * u64 bpf_get_socket_cookie(struct bpf_sock_addr *ctx)
1383 * Description
1384 * Equivalent to bpf_get_socket_cookie() helper that accepts
1385 * *skb*, but gets socket from **struct bpf_sock_addr** contex.
1386 * Return
1387 * A 8-byte long non-decreasing number.
1388 *
1389 * u64 bpf_get_socket_cookie(struct bpf_sock_ops *ctx)
1390 * Description
1391 * Equivalent to bpf_get_socket_cookie() helper that accepts
1392 * *skb*, but gets socket from **struct bpf_sock_ops** contex.
1393 * Return
1394 * A 8-byte long non-decreasing number.
1395 *
1374 * u32 bpf_get_socket_uid(struct sk_buff *skb) 1396 * u32 bpf_get_socket_uid(struct sk_buff *skb)
1375 * Return 1397 * Return
1376 * The owner UID of the socket associated to *skb*. If the socket 1398 * The owner UID of the socket associated to *skb*. If the socket
@@ -1826,7 +1848,7 @@ union bpf_attr {
1826 * A non-negative value equal to or less than *size* on success, 1848 * A non-negative value equal to or less than *size* on success,
1827 * or a negative error in case of failure. 1849 * or a negative error in case of failure.
1828 * 1850 *
1829 * int skb_load_bytes_relative(const struct sk_buff *skb, u32 offset, void *to, u32 len, u32 start_header) 1851 * int bpf_skb_load_bytes_relative(const struct sk_buff *skb, u32 offset, void *to, u32 len, u32 start_header)
1830 * Description 1852 * Description
1831 * This helper is similar to **bpf_skb_load_bytes**\ () in that 1853 * This helper is similar to **bpf_skb_load_bytes**\ () in that
1832 * it provides an easy way to load *len* bytes from *offset* 1854 * it provides an easy way to load *len* bytes from *offset*
@@ -1877,7 +1899,7 @@ union bpf_attr {
1877 * * < 0 if any input argument is invalid 1899 * * < 0 if any input argument is invalid
1878 * * 0 on success (packet is forwarded, nexthop neighbor exists) 1900 * * 0 on success (packet is forwarded, nexthop neighbor exists)
1879 * * > 0 one of **BPF_FIB_LKUP_RET_** codes explaining why the 1901 * * > 0 one of **BPF_FIB_LKUP_RET_** codes explaining why the
1880 * * packet is not forwarded or needs assist from full stack 1902 * packet is not forwarded or needs assist from full stack
1881 * 1903 *
1882 * int bpf_sock_hash_update(struct bpf_sock_ops_kern *skops, struct bpf_map *map, void *key, u64 flags) 1904 * int bpf_sock_hash_update(struct bpf_sock_ops_kern *skops, struct bpf_map *map, void *key, u64 flags)
1883 * Description 1905 * Description
@@ -2033,7 +2055,6 @@ union bpf_attr {
2033 * This helper is only available is the kernel was compiled with 2055 * This helper is only available is the kernel was compiled with
2034 * the **CONFIG_BPF_LIRC_MODE2** configuration option set to 2056 * the **CONFIG_BPF_LIRC_MODE2** configuration option set to
2035 * "**y**". 2057 * "**y**".
2036 *
2037 * Return 2058 * Return
2038 * 0 2059 * 0
2039 * 2060 *
@@ -2053,7 +2074,6 @@ union bpf_attr {
2053 * This helper is only available is the kernel was compiled with 2074 * This helper is only available is the kernel was compiled with
2054 * the **CONFIG_BPF_LIRC_MODE2** configuration option set to 2075 * the **CONFIG_BPF_LIRC_MODE2** configuration option set to
2055 * "**y**". 2076 * "**y**".
2056 *
2057 * Return 2077 * Return
2058 * 0 2078 * 0
2059 * 2079 *
@@ -2073,10 +2093,54 @@ union bpf_attr {
2073 * Return 2093 * Return
2074 * The id is returned or 0 in case the id could not be retrieved. 2094 * The id is returned or 0 in case the id could not be retrieved.
2075 * 2095 *
2096 * u64 bpf_skb_ancestor_cgroup_id(struct sk_buff *skb, int ancestor_level)
2097 * Description
2098 * Return id of cgroup v2 that is ancestor of cgroup associated
2099 * with the *skb* at the *ancestor_level*. The root cgroup is at
2100 * *ancestor_level* zero and each step down the hierarchy
2101 * increments the level. If *ancestor_level* == level of cgroup
2102 * associated with *skb*, then return value will be same as that
2103 * of **bpf_skb_cgroup_id**\ ().
2104 *
2105 * The helper is useful to implement policies based on cgroups
2106 * that are upper in hierarchy than immediate cgroup associated
2107 * with *skb*.
2108 *
2109 * The format of returned id and helper limitations are same as in
2110 * **bpf_skb_cgroup_id**\ ().
2111 * Return
2112 * The id is returned or 0 in case the id could not be retrieved.
2113 *
2076 * u64 bpf_get_current_cgroup_id(void) 2114 * u64 bpf_get_current_cgroup_id(void)
2077 * Return 2115 * Return
2078 * A 64-bit integer containing the current cgroup id based 2116 * A 64-bit integer containing the current cgroup id based
2079 * on the cgroup within which the current task is running. 2117 * on the cgroup within which the current task is running.
2118 *
2119 * void* get_local_storage(void *map, u64 flags)
2120 * Description
2121 * Get the pointer to the local storage area.
2122 * The type and the size of the local storage is defined
2123 * by the *map* argument.
2124 * The *flags* meaning is specific for each map type,
2125 * and has to be 0 for cgroup local storage.
2126 *
2127 * Depending on the bpf program type, a local storage area
2128 * can be shared between multiple instances of the bpf program,
2129 * running simultaneously.
2130 *
2131 * A user should care about the synchronization by himself.
2132 * For example, by using the BPF_STX_XADD instruction to alter
2133 * the shared data.
2134 * Return
2135 * Pointer to the local storage area.
2136 *
2137 * int bpf_sk_select_reuseport(struct sk_reuseport_md *reuse, struct bpf_map *map, void *key, u64 flags)
2138 * Description
2139 * Select a SO_REUSEPORT sk from a BPF_MAP_TYPE_REUSEPORT_ARRAY map
2140 * It checks the selected sk is matching the incoming
2141 * request in the skb.
2142 * Return
2143 * 0 on success, or a negative error in case of failure.
2080 */ 2144 */
2081#define __BPF_FUNC_MAPPER(FN) \ 2145#define __BPF_FUNC_MAPPER(FN) \
2082 FN(unspec), \ 2146 FN(unspec), \
@@ -2159,7 +2223,10 @@ union bpf_attr {
2159 FN(rc_repeat), \ 2223 FN(rc_repeat), \
2160 FN(rc_keydown), \ 2224 FN(rc_keydown), \
2161 FN(skb_cgroup_id), \ 2225 FN(skb_cgroup_id), \
2162 FN(get_current_cgroup_id), 2226 FN(get_current_cgroup_id), \
2227 FN(get_local_storage), \
2228 FN(sk_select_reuseport), \
2229 FN(skb_ancestor_cgroup_id),
2163 2230
2164/* integer value in 'imm' field of BPF_CALL instruction selects which helper 2231/* integer value in 'imm' field of BPF_CALL instruction selects which helper
2165 * function eBPF program intends to call 2232 * function eBPF program intends to call
@@ -2376,6 +2443,30 @@ struct sk_msg_md {
2376 __u32 local_port; /* stored in host byte order */ 2443 __u32 local_port; /* stored in host byte order */
2377}; 2444};
2378 2445
2446struct sk_reuseport_md {
2447 /*
2448 * Start of directly accessible data. It begins from
2449 * the tcp/udp header.
2450 */
2451 void *data;
2452 void *data_end; /* End of directly accessible data */
2453 /*
2454 * Total length of packet (starting from the tcp/udp header).
2455 * Note that the directly accessible bytes (data_end - data)
2456 * could be less than this "len". Those bytes could be
2457 * indirectly read by a helper "bpf_skb_load_bytes()".
2458 */
2459 __u32 len;
2460 /*
2461 * Eth protocol in the mac header (network byte order). e.g.
2462 * ETH_P_IP(0x0800) and ETH_P_IPV6(0x86DD)
2463 */
2464 __u32 eth_protocol;
2465 __u32 ip_protocol; /* IP protocol. e.g. IPPROTO_TCP, IPPROTO_UDP */
2466 __u32 bind_inany; /* Is sock bound to an INANY address? */
2467 __u32 hash; /* A hash of the packet 4 tuples */
2468};
2469
2379#define BPF_TAG_SIZE 8 2470#define BPF_TAG_SIZE 8
2380 2471
2381struct bpf_prog_info { 2472struct bpf_prog_info {
@@ -2557,6 +2648,9 @@ enum {
2557 * Arg1: old_state 2648 * Arg1: old_state
2558 * Arg2: new_state 2649 * Arg2: new_state
2559 */ 2650 */
2651 BPF_SOCK_OPS_TCP_LISTEN_CB, /* Called on listen(2), right after
2652 * socket transition to LISTEN state.
2653 */
2560}; 2654};
2561 2655
2562/* List of TCP states. There is a build check in net/ipv4/tcp.c to detect 2656/* List of TCP states. There is a build check in net/ipv4/tcp.c to detect
diff --git a/include/uapi/linux/can.h b/include/uapi/linux/can.h
index d7f97ac197a9..0afb7d8e867f 100644
--- a/include/uapi/linux/can.h
+++ b/include/uapi/linux/can.h
@@ -77,7 +77,7 @@ typedef __u32 canid_t;
77/* 77/*
78 * Controller Area Network Error Message Frame Mask structure 78 * Controller Area Network Error Message Frame Mask structure
79 * 79 *
80 * bit 0-28 : error class mask (see include/linux/can/error.h) 80 * bit 0-28 : error class mask (see include/uapi/linux/can/error.h)
81 * bit 29-31 : set to zero 81 * bit 29-31 : set to zero
82 */ 82 */
83typedef __u32 can_err_mask_t; 83typedef __u32 can_err_mask_t;
diff --git a/include/uapi/linux/dcbnl.h b/include/uapi/linux/dcbnl.h
index 60aa2e446698..69df19aa8e72 100644
--- a/include/uapi/linux/dcbnl.h
+++ b/include/uapi/linux/dcbnl.h
@@ -233,7 +233,8 @@ struct cee_pfc {
233 * 2 Well known port number over TCP or SCTP 233 * 2 Well known port number over TCP or SCTP
234 * 3 Well known port number over UDP or DCCP 234 * 3 Well known port number over UDP or DCCP
235 * 4 Well known port number over TCP, SCTP, UDP, or DCCP 235 * 4 Well known port number over TCP, SCTP, UDP, or DCCP
236 * 5-7 Reserved 236 * 5 Differentiated Services Code Point (DSCP) value
237 * 6-7 Reserved
237 * 238 *
238 * Selector field values for CEE 239 * Selector field values for CEE
239 * 0 Ethertype 240 * 0 Ethertype
diff --git a/include/uapi/linux/devlink.h b/include/uapi/linux/devlink.h
index 75cb5450c851..79407bbd296d 100644
--- a/include/uapi/linux/devlink.h
+++ b/include/uapi/linux/devlink.h
@@ -78,6 +78,17 @@ enum devlink_command {
78 */ 78 */
79 DEVLINK_CMD_RELOAD, 79 DEVLINK_CMD_RELOAD,
80 80
81 DEVLINK_CMD_PARAM_GET, /* can dump */
82 DEVLINK_CMD_PARAM_SET,
83 DEVLINK_CMD_PARAM_NEW,
84 DEVLINK_CMD_PARAM_DEL,
85
86 DEVLINK_CMD_REGION_GET,
87 DEVLINK_CMD_REGION_SET,
88 DEVLINK_CMD_REGION_NEW,
89 DEVLINK_CMD_REGION_DEL,
90 DEVLINK_CMD_REGION_READ,
91
81 /* add new commands above here */ 92 /* add new commands above here */
82 __DEVLINK_CMD_MAX, 93 __DEVLINK_CMD_MAX,
83 DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1 94 DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
@@ -142,6 +153,16 @@ enum devlink_port_flavour {
142 */ 153 */
143}; 154};
144 155
156enum devlink_param_cmode {
157 DEVLINK_PARAM_CMODE_RUNTIME,
158 DEVLINK_PARAM_CMODE_DRIVERINIT,
159 DEVLINK_PARAM_CMODE_PERMANENT,
160
161 /* Add new configuration modes above */
162 __DEVLINK_PARAM_CMODE_MAX,
163 DEVLINK_PARAM_CMODE_MAX = __DEVLINK_PARAM_CMODE_MAX - 1
164};
165
145enum devlink_attr { 166enum devlink_attr {
146 /* don't change the order or add anything between, this is ABI! */ 167 /* don't change the order or add anything between, this is ABI! */
147 DEVLINK_ATTR_UNSPEC, 168 DEVLINK_ATTR_UNSPEC,
@@ -238,6 +259,27 @@ enum devlink_attr {
238 DEVLINK_ATTR_PORT_NUMBER, /* u32 */ 259 DEVLINK_ATTR_PORT_NUMBER, /* u32 */
239 DEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER, /* u32 */ 260 DEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER, /* u32 */
240 261
262 DEVLINK_ATTR_PARAM, /* nested */
263 DEVLINK_ATTR_PARAM_NAME, /* string */
264 DEVLINK_ATTR_PARAM_GENERIC, /* flag */
265 DEVLINK_ATTR_PARAM_TYPE, /* u8 */
266 DEVLINK_ATTR_PARAM_VALUES_LIST, /* nested */
267 DEVLINK_ATTR_PARAM_VALUE, /* nested */
268 DEVLINK_ATTR_PARAM_VALUE_DATA, /* dynamic */
269 DEVLINK_ATTR_PARAM_VALUE_CMODE, /* u8 */
270
271 DEVLINK_ATTR_REGION_NAME, /* string */
272 DEVLINK_ATTR_REGION_SIZE, /* u64 */
273 DEVLINK_ATTR_REGION_SNAPSHOTS, /* nested */
274 DEVLINK_ATTR_REGION_SNAPSHOT, /* nested */
275 DEVLINK_ATTR_REGION_SNAPSHOT_ID, /* u32 */
276
277 DEVLINK_ATTR_REGION_CHUNKS, /* nested */
278 DEVLINK_ATTR_REGION_CHUNK, /* nested */
279 DEVLINK_ATTR_REGION_CHUNK_DATA, /* binary */
280 DEVLINK_ATTR_REGION_CHUNK_ADDR, /* u64 */
281 DEVLINK_ATTR_REGION_CHUNK_LEN, /* u64 */
282
241 /* add new attributes above here, update the policy in devlink.c */ 283 /* add new attributes above here, update the policy in devlink.c */
242 284
243 __DEVLINK_ATTR_MAX, 285 __DEVLINK_ATTR_MAX,
diff --git a/include/uapi/linux/errqueue.h b/include/uapi/linux/errqueue.h
index dc64cfaf13da..c0151200f7d1 100644
--- a/include/uapi/linux/errqueue.h
+++ b/include/uapi/linux/errqueue.h
@@ -20,12 +20,16 @@ struct sock_extended_err {
20#define SO_EE_ORIGIN_ICMP6 3 20#define SO_EE_ORIGIN_ICMP6 3
21#define SO_EE_ORIGIN_TXSTATUS 4 21#define SO_EE_ORIGIN_TXSTATUS 4
22#define SO_EE_ORIGIN_ZEROCOPY 5 22#define SO_EE_ORIGIN_ZEROCOPY 5
23#define SO_EE_ORIGIN_TXTIME 6
23#define SO_EE_ORIGIN_TIMESTAMPING SO_EE_ORIGIN_TXSTATUS 24#define SO_EE_ORIGIN_TIMESTAMPING SO_EE_ORIGIN_TXSTATUS
24 25
25#define SO_EE_OFFENDER(ee) ((struct sockaddr*)((ee)+1)) 26#define SO_EE_OFFENDER(ee) ((struct sockaddr*)((ee)+1))
26 27
27#define SO_EE_CODE_ZEROCOPY_COPIED 1 28#define SO_EE_CODE_ZEROCOPY_COPIED 1
28 29
30#define SO_EE_CODE_TXTIME_INVALID_PARAM 1
31#define SO_EE_CODE_TXTIME_MISSED 2
32
29/** 33/**
30 * struct scm_timestamping - timestamps exposed through cmsg 34 * struct scm_timestamping - timestamps exposed through cmsg
31 * 35 *
diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h
index 7363f18e65a5..dc69391d2bba 100644
--- a/include/uapi/linux/ethtool.h
+++ b/include/uapi/linux/ethtool.h
@@ -870,7 +870,8 @@ struct ethtool_flow_ext {
870 * includes the %FLOW_EXT or %FLOW_MAC_EXT flag 870 * includes the %FLOW_EXT or %FLOW_MAC_EXT flag
871 * (see &struct ethtool_flow_ext description). 871 * (see &struct ethtool_flow_ext description).
872 * @ring_cookie: RX ring/queue index to deliver to, or %RX_CLS_FLOW_DISC 872 * @ring_cookie: RX ring/queue index to deliver to, or %RX_CLS_FLOW_DISC
873 * if packets should be discarded 873 * if packets should be discarded, or %RX_CLS_FLOW_WAKE if the
874 * packets should be used for Wake-on-LAN with %WAKE_FILTER
874 * @location: Location of rule in the table. Locations must be 875 * @location: Location of rule in the table. Locations must be
875 * numbered such that a flow matching multiple rules will be 876 * numbered such that a flow matching multiple rules will be
876 * classified according to the first (lowest numbered) rule. 877 * classified according to the first (lowest numbered) rule.
@@ -902,13 +903,13 @@ struct ethtool_rx_flow_spec {
902static inline __u64 ethtool_get_flow_spec_ring(__u64 ring_cookie) 903static inline __u64 ethtool_get_flow_spec_ring(__u64 ring_cookie)
903{ 904{
904 return ETHTOOL_RX_FLOW_SPEC_RING & ring_cookie; 905 return ETHTOOL_RX_FLOW_SPEC_RING & ring_cookie;
905}; 906}
906 907
907static inline __u64 ethtool_get_flow_spec_ring_vf(__u64 ring_cookie) 908static inline __u64 ethtool_get_flow_spec_ring_vf(__u64 ring_cookie)
908{ 909{
909 return (ETHTOOL_RX_FLOW_SPEC_RING_VF & ring_cookie) >> 910 return (ETHTOOL_RX_FLOW_SPEC_RING_VF & ring_cookie) >>
910 ETHTOOL_RX_FLOW_SPEC_RING_VF_OFF; 911 ETHTOOL_RX_FLOW_SPEC_RING_VF_OFF;
911}; 912}
912 913
913/** 914/**
914 * struct ethtool_rxnfc - command to get or set RX flow classification rules 915 * struct ethtool_rxnfc - command to get or set RX flow classification rules
@@ -1634,6 +1635,7 @@ static inline int ethtool_validate_duplex(__u8 duplex)
1634#define WAKE_ARP (1 << 4) 1635#define WAKE_ARP (1 << 4)
1635#define WAKE_MAGIC (1 << 5) 1636#define WAKE_MAGIC (1 << 5)
1636#define WAKE_MAGICSECURE (1 << 6) /* only meaningful if WAKE_MAGIC */ 1637#define WAKE_MAGICSECURE (1 << 6) /* only meaningful if WAKE_MAGIC */
1638#define WAKE_FILTER (1 << 7)
1637 1639
1638/* L2-L4 network traffic flow types */ 1640/* L2-L4 network traffic flow types */
1639#define TCP_V4_FLOW 0x01 /* hash or spec (tcp_ip4_spec) */ 1641#define TCP_V4_FLOW 0x01 /* hash or spec (tcp_ip4_spec) */
@@ -1671,6 +1673,7 @@ static inline int ethtool_validate_duplex(__u8 duplex)
1671#define RXH_DISCARD (1 << 31) 1673#define RXH_DISCARD (1 << 31)
1672 1674
1673#define RX_CLS_FLOW_DISC 0xffffffffffffffffULL 1675#define RX_CLS_FLOW_DISC 0xffffffffffffffffULL
1676#define RX_CLS_FLOW_WAKE 0xfffffffffffffffeULL
1674 1677
1675/* Special RX classification rule insert location values */ 1678/* Special RX classification rule insert location values */
1676#define RX_CLS_LOC_SPECIAL 0x80000000 /* flag */ 1679#define RX_CLS_LOC_SPECIAL 0x80000000 /* flag */
diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
index cf01b6824244..43391e2d1153 100644
--- a/include/uapi/linux/if_link.h
+++ b/include/uapi/linux/if_link.h
@@ -164,6 +164,8 @@ enum {
164 IFLA_CARRIER_UP_COUNT, 164 IFLA_CARRIER_UP_COUNT,
165 IFLA_CARRIER_DOWN_COUNT, 165 IFLA_CARRIER_DOWN_COUNT,
166 IFLA_NEW_IFINDEX, 166 IFLA_NEW_IFINDEX,
167 IFLA_MIN_MTU,
168 IFLA_MAX_MTU,
167 __IFLA_MAX 169 __IFLA_MAX
168}; 170};
169 171
@@ -334,6 +336,7 @@ enum {
334 IFLA_BRPORT_GROUP_FWD_MASK, 336 IFLA_BRPORT_GROUP_FWD_MASK,
335 IFLA_BRPORT_NEIGH_SUPPRESS, 337 IFLA_BRPORT_NEIGH_SUPPRESS,
336 IFLA_BRPORT_ISOLATED, 338 IFLA_BRPORT_ISOLATED,
339 IFLA_BRPORT_BACKUP_PORT,
337 __IFLA_BRPORT_MAX 340 __IFLA_BRPORT_MAX
338}; 341};
339#define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1) 342#define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
@@ -459,6 +462,16 @@ enum {
459 462
460#define IFLA_MACSEC_MAX (__IFLA_MACSEC_MAX - 1) 463#define IFLA_MACSEC_MAX (__IFLA_MACSEC_MAX - 1)
461 464
465/* XFRM section */
466enum {
467 IFLA_XFRM_UNSPEC,
468 IFLA_XFRM_LINK,
469 IFLA_XFRM_IF_ID,
470 __IFLA_XFRM_MAX
471};
472
473#define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
474
462enum macsec_validation_type { 475enum macsec_validation_type {
463 MACSEC_VALIDATE_DISABLED = 0, 476 MACSEC_VALIDATE_DISABLED = 0,
464 MACSEC_VALIDATE_CHECK = 1, 477 MACSEC_VALIDATE_CHECK = 1,
@@ -920,6 +933,7 @@ enum {
920 XDP_ATTACHED_DRV, 933 XDP_ATTACHED_DRV,
921 XDP_ATTACHED_SKB, 934 XDP_ATTACHED_SKB,
922 XDP_ATTACHED_HW, 935 XDP_ATTACHED_HW,
936 XDP_ATTACHED_MULTI,
923}; 937};
924 938
925enum { 939enum {
@@ -928,6 +942,9 @@ enum {
928 IFLA_XDP_ATTACHED, 942 IFLA_XDP_ATTACHED,
929 IFLA_XDP_FLAGS, 943 IFLA_XDP_FLAGS,
930 IFLA_XDP_PROG_ID, 944 IFLA_XDP_PROG_ID,
945 IFLA_XDP_DRV_PROG_ID,
946 IFLA_XDP_SKB_PROG_ID,
947 IFLA_XDP_HW_PROG_ID,
931 __IFLA_XDP_MAX, 948 __IFLA_XDP_MAX,
932}; 949};
933 950
diff --git a/include/uapi/linux/ila.h b/include/uapi/linux/ila.h
index 483b77af4eb8..db45d3e49a12 100644
--- a/include/uapi/linux/ila.h
+++ b/include/uapi/linux/ila.h
@@ -30,6 +30,7 @@ enum {
30 ILA_CMD_ADD, 30 ILA_CMD_ADD,
31 ILA_CMD_DEL, 31 ILA_CMD_DEL,
32 ILA_CMD_GET, 32 ILA_CMD_GET,
33 ILA_CMD_FLUSH,
33 34
34 __ILA_CMD_MAX, 35 __ILA_CMD_MAX,
35}; 36};
diff --git a/include/uapi/linux/ip.h b/include/uapi/linux/ip.h
index b24a742beae5..e42d13b55cf3 100644
--- a/include/uapi/linux/ip.h
+++ b/include/uapi/linux/ip.h
@@ -168,6 +168,7 @@ enum
168 IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN, 168 IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN,
169 IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST, 169 IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,
170 IPV4_DEVCONF_DROP_GRATUITOUS_ARP, 170 IPV4_DEVCONF_DROP_GRATUITOUS_ARP,
171 IPV4_DEVCONF_BC_FORWARDING,
171 __IPV4_DEVCONF_MAX 172 __IPV4_DEVCONF_MAX
172}; 173};
173 174
diff --git a/include/uapi/linux/l2tp.h b/include/uapi/linux/l2tp.h
index 7d570c7bd117..61158f5a1a5b 100644
--- a/include/uapi/linux/l2tp.h
+++ b/include/uapi/linux/l2tp.h
@@ -60,14 +60,14 @@ struct sockaddr_l2tpip6 {
60/* 60/*
61 * Commands. 61 * Commands.
62 * Valid TLVs of each command are:- 62 * Valid TLVs of each command are:-
63 * TUNNEL_CREATE - CONN_ID, pw_type, netns, ifname, ipinfo, udpinfo, udpcsum, vlanid 63 * TUNNEL_CREATE - CONN_ID, pw_type, netns, ifname, ipinfo, udpinfo, udpcsum
64 * TUNNEL_DELETE - CONN_ID 64 * TUNNEL_DELETE - CONN_ID
65 * TUNNEL_MODIFY - CONN_ID, udpcsum 65 * TUNNEL_MODIFY - CONN_ID, udpcsum
66 * TUNNEL_GETSTATS - CONN_ID, (stats) 66 * TUNNEL_GETSTATS - CONN_ID, (stats)
67 * TUNNEL_GET - CONN_ID, (...) 67 * TUNNEL_GET - CONN_ID, (...)
68 * SESSION_CREATE - SESSION_ID, PW_TYPE, data_seq, cookie, peer_cookie, l2spec 68 * SESSION_CREATE - SESSION_ID, PW_TYPE, cookie, peer_cookie, l2spec
69 * SESSION_DELETE - SESSION_ID 69 * SESSION_DELETE - SESSION_ID
70 * SESSION_MODIFY - SESSION_ID, data_seq 70 * SESSION_MODIFY - SESSION_ID
71 * SESSION_GET - SESSION_ID, (...) 71 * SESSION_GET - SESSION_ID, (...)
72 * SESSION_GETSTATS - SESSION_ID, (stats) 72 * SESSION_GETSTATS - SESSION_ID, (stats)
73 * 73 *
@@ -95,7 +95,7 @@ enum {
95 L2TP_ATTR_PW_TYPE, /* u16, enum l2tp_pwtype */ 95 L2TP_ATTR_PW_TYPE, /* u16, enum l2tp_pwtype */
96 L2TP_ATTR_ENCAP_TYPE, /* u16, enum l2tp_encap_type */ 96 L2TP_ATTR_ENCAP_TYPE, /* u16, enum l2tp_encap_type */
97 L2TP_ATTR_OFFSET, /* u16 (not used) */ 97 L2TP_ATTR_OFFSET, /* u16 (not used) */
98 L2TP_ATTR_DATA_SEQ, /* u16 */ 98 L2TP_ATTR_DATA_SEQ, /* u16 (not used) */
99 L2TP_ATTR_L2SPEC_TYPE, /* u8, enum l2tp_l2spec_type */ 99 L2TP_ATTR_L2SPEC_TYPE, /* u8, enum l2tp_l2spec_type */
100 L2TP_ATTR_L2SPEC_LEN, /* u8 (not used) */ 100 L2TP_ATTR_L2SPEC_LEN, /* u8 (not used) */
101 L2TP_ATTR_PROTO_VERSION, /* u8 */ 101 L2TP_ATTR_PROTO_VERSION, /* u8 */
@@ -105,7 +105,7 @@ enum {
105 L2TP_ATTR_SESSION_ID, /* u32 */ 105 L2TP_ATTR_SESSION_ID, /* u32 */
106 L2TP_ATTR_PEER_SESSION_ID, /* u32 */ 106 L2TP_ATTR_PEER_SESSION_ID, /* u32 */
107 L2TP_ATTR_UDP_CSUM, /* u8 */ 107 L2TP_ATTR_UDP_CSUM, /* u8 */
108 L2TP_ATTR_VLAN_ID, /* u16 */ 108 L2TP_ATTR_VLAN_ID, /* u16 (not used) */
109 L2TP_ATTR_COOKIE, /* 0, 4 or 8 bytes */ 109 L2TP_ATTR_COOKIE, /* 0, 4 or 8 bytes */
110 L2TP_ATTR_PEER_COOKIE, /* 0, 4 or 8 bytes */ 110 L2TP_ATTR_PEER_COOKIE, /* 0, 4 or 8 bytes */
111 L2TP_ATTR_DEBUG, /* u32, enum l2tp_debug_flags */ 111 L2TP_ATTR_DEBUG, /* u32, enum l2tp_debug_flags */
@@ -119,8 +119,8 @@ enum {
119 L2TP_ATTR_IP_DADDR, /* u32 */ 119 L2TP_ATTR_IP_DADDR, /* u32 */
120 L2TP_ATTR_UDP_SPORT, /* u16 */ 120 L2TP_ATTR_UDP_SPORT, /* u16 */
121 L2TP_ATTR_UDP_DPORT, /* u16 */ 121 L2TP_ATTR_UDP_DPORT, /* u16 */
122 L2TP_ATTR_MTU, /* u16 */ 122 L2TP_ATTR_MTU, /* u16 (not used) */
123 L2TP_ATTR_MRU, /* u16 */ 123 L2TP_ATTR_MRU, /* u16 (not used) */
124 L2TP_ATTR_STATS, /* nested */ 124 L2TP_ATTR_STATS, /* nested */
125 L2TP_ATTR_IP6_SADDR, /* struct in6_addr */ 125 L2TP_ATTR_IP6_SADDR, /* struct in6_addr */
126 L2TP_ATTR_IP6_DADDR, /* struct in6_addr */ 126 L2TP_ATTR_IP6_DADDR, /* struct in6_addr */
@@ -169,6 +169,7 @@ enum l2tp_encap_type {
169 L2TP_ENCAPTYPE_IP, 169 L2TP_ENCAPTYPE_IP,
170}; 170};
171 171
172/* For L2TP_ATTR_DATA_SEQ. Unused. */
172enum l2tp_seqmode { 173enum l2tp_seqmode {
173 L2TP_SEQ_NONE = 0, 174 L2TP_SEQ_NONE = 0,
174 L2TP_SEQ_IP = 1, 175 L2TP_SEQ_IP = 1,
diff --git a/include/uapi/linux/mii.h b/include/uapi/linux/mii.h
index b5c2fdcf23fd..a506216591d6 100644
--- a/include/uapi/linux/mii.h
+++ b/include/uapi/linux/mii.h
@@ -136,6 +136,7 @@
136#define CTL1000_ENABLE_MASTER 0x1000 136#define CTL1000_ENABLE_MASTER 0x1000
137 137
138/* 1000BASE-T Status register */ 138/* 1000BASE-T Status register */
139#define LPA_1000MSFAIL 0x8000 /* Master/Slave resolution failure */
139#define LPA_1000LOCALRXOK 0x2000 /* Link partner local receiver status */ 140#define LPA_1000LOCALRXOK 0x2000 /* Link partner local receiver status */
140#define LPA_1000REMRXOK 0x1000 /* Link partner remote receiver status */ 141#define LPA_1000REMRXOK 0x1000 /* Link partner remote receiver status */
141#define LPA_1000FULL 0x0800 /* Link partner 1000BASE-T full duplex */ 142#define LPA_1000FULL 0x0800 /* Link partner 1000BASE-T full duplex */
diff --git a/include/uapi/linux/mroute.h b/include/uapi/linux/mroute.h
index 10f9ff9426a2..5d37a9ccce63 100644
--- a/include/uapi/linux/mroute.h
+++ b/include/uapi/linux/mroute.h
@@ -120,6 +120,7 @@ enum {
120 IPMRA_TABLE_MROUTE_DO_ASSERT, 120 IPMRA_TABLE_MROUTE_DO_ASSERT,
121 IPMRA_TABLE_MROUTE_DO_PIM, 121 IPMRA_TABLE_MROUTE_DO_PIM,
122 IPMRA_TABLE_VIFS, 122 IPMRA_TABLE_VIFS,
123 IPMRA_TABLE_MROUTE_DO_WRVIFWHOLE,
123 __IPMRA_TABLE_MAX 124 __IPMRA_TABLE_MAX
124}; 125};
125#define IPMRA_TABLE_MAX (__IPMRA_TABLE_MAX - 1) 126#define IPMRA_TABLE_MAX (__IPMRA_TABLE_MAX - 1)
@@ -173,5 +174,6 @@ enum {
173#define IGMPMSG_NOCACHE 1 /* Kern cache fill request to mrouted */ 174#define IGMPMSG_NOCACHE 1 /* Kern cache fill request to mrouted */
174#define IGMPMSG_WRONGVIF 2 /* For PIM assert processing (unused) */ 175#define IGMPMSG_WRONGVIF 2 /* For PIM assert processing (unused) */
175#define IGMPMSG_WHOLEPKT 3 /* For PIM Register processing */ 176#define IGMPMSG_WHOLEPKT 3 /* For PIM Register processing */
177#define IGMPMSG_WRVIFWHOLE 4 /* For PIM Register and assert processing */
176 178
177#endif /* _UAPI__LINUX_MROUTE_H */ 179#endif /* _UAPI__LINUX_MROUTE_H */
diff --git a/include/uapi/linux/net_tstamp.h b/include/uapi/linux/net_tstamp.h
index 4fe104b2411f..97ff3c17ec4d 100644
--- a/include/uapi/linux/net_tstamp.h
+++ b/include/uapi/linux/net_tstamp.h
@@ -141,4 +141,22 @@ struct scm_ts_pktinfo {
141 __u32 reserved[2]; 141 __u32 reserved[2];
142}; 142};
143 143
144/*
145 * SO_TXTIME gets a struct sock_txtime with flags being an integer bit
146 * field comprised of these values.
147 */
148enum txtime_flags {
149 SOF_TXTIME_DEADLINE_MODE = (1 << 0),
150 SOF_TXTIME_REPORT_ERRORS = (1 << 1),
151
152 SOF_TXTIME_FLAGS_LAST = SOF_TXTIME_REPORT_ERRORS,
153 SOF_TXTIME_FLAGS_MASK = (SOF_TXTIME_FLAGS_LAST - 1) |
154 SOF_TXTIME_FLAGS_LAST
155};
156
157struct sock_txtime {
158 clockid_t clockid; /* reference clockid */
159 __u32 flags; /* as defined by enum txtime_flags */
160};
161
144#endif /* _NET_TIMESTAMPING_H */ 162#endif /* _NET_TIMESTAMPING_H */
diff --git a/include/uapi/linux/netconf.h b/include/uapi/linux/netconf.h
index c84fcdfca862..fac4edd55379 100644
--- a/include/uapi/linux/netconf.h
+++ b/include/uapi/linux/netconf.h
@@ -18,6 +18,7 @@ enum {
18 NETCONFA_PROXY_NEIGH, 18 NETCONFA_PROXY_NEIGH,
19 NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN, 19 NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN,
20 NETCONFA_INPUT, 20 NETCONFA_INPUT,
21 NETCONFA_BC_FORWARDING,
21 __NETCONFA_MAX 22 __NETCONFA_MAX
22}; 23};
23#define NETCONFA_MAX (__NETCONFA_MAX - 1) 24#define NETCONFA_MAX (__NETCONFA_MAX - 1)
diff --git a/include/uapi/linux/netfilter/nf_tables.h b/include/uapi/linux/netfilter/nf_tables.h
index 89438e68dc03..e23290ffdc77 100644
--- a/include/uapi/linux/netfilter/nf_tables.h
+++ b/include/uapi/linux/netfilter/nf_tables.h
@@ -8,6 +8,7 @@
8#define NFT_SET_MAXNAMELEN NFT_NAME_MAXLEN 8#define NFT_SET_MAXNAMELEN NFT_NAME_MAXLEN
9#define NFT_OBJ_MAXNAMELEN NFT_NAME_MAXLEN 9#define NFT_OBJ_MAXNAMELEN NFT_NAME_MAXLEN
10#define NFT_USERDATA_MAXLEN 256 10#define NFT_USERDATA_MAXLEN 256
11#define NFT_OSF_MAXGENRELEN 16
11 12
12/** 13/**
13 * enum nft_registers - nf_tables registers 14 * enum nft_registers - nf_tables registers
@@ -921,10 +922,12 @@ enum nft_socket_attributes {
921/* 922/*
922 * enum nft_socket_keys - nf_tables socket expression keys 923 * enum nft_socket_keys - nf_tables socket expression keys
923 * 924 *
924 * @NFT_SOCKET_TRANSPARENT: Value of the IP(V6)_TRANSPARENT socket option_ 925 * @NFT_SOCKET_TRANSPARENT: Value of the IP(V6)_TRANSPARENT socket option
926 * @NFT_SOCKET_MARK: Value of the socket mark
925 */ 927 */
926enum nft_socket_keys { 928enum nft_socket_keys {
927 NFT_SOCKET_TRANSPARENT, 929 NFT_SOCKET_TRANSPARENT,
930 NFT_SOCKET_MARK,
928 __NFT_SOCKET_MAX 931 __NFT_SOCKET_MAX
929}; 932};
930#define NFT_SOCKET_MAX (__NFT_SOCKET_MAX - 1) 933#define NFT_SOCKET_MAX (__NFT_SOCKET_MAX - 1)
@@ -955,6 +958,7 @@ enum nft_socket_keys {
955 * @NFT_CT_DST_IP: conntrack layer 3 protocol destination (IPv4 address) 958 * @NFT_CT_DST_IP: conntrack layer 3 protocol destination (IPv4 address)
956 * @NFT_CT_SRC_IP6: conntrack layer 3 protocol source (IPv6 address) 959 * @NFT_CT_SRC_IP6: conntrack layer 3 protocol source (IPv6 address)
957 * @NFT_CT_DST_IP6: conntrack layer 3 protocol destination (IPv6 address) 960 * @NFT_CT_DST_IP6: conntrack layer 3 protocol destination (IPv6 address)
961 * @NFT_CT_TIMEOUT: connection tracking timeout policy assigned to conntrack
958 */ 962 */
959enum nft_ct_keys { 963enum nft_ct_keys {
960 NFT_CT_STATE, 964 NFT_CT_STATE,
@@ -980,6 +984,7 @@ enum nft_ct_keys {
980 NFT_CT_DST_IP, 984 NFT_CT_DST_IP,
981 NFT_CT_SRC_IP6, 985 NFT_CT_SRC_IP6,
982 NFT_CT_DST_IP6, 986 NFT_CT_DST_IP6,
987 NFT_CT_TIMEOUT,
983 __NFT_CT_MAX 988 __NFT_CT_MAX
984}; 989};
985#define NFT_CT_MAX (__NFT_CT_MAX - 1) 990#define NFT_CT_MAX (__NFT_CT_MAX - 1)
@@ -1251,6 +1256,22 @@ enum nft_nat_attributes {
1251#define NFTA_NAT_MAX (__NFTA_NAT_MAX - 1) 1256#define NFTA_NAT_MAX (__NFTA_NAT_MAX - 1)
1252 1257
1253/** 1258/**
1259 * enum nft_tproxy_attributes - nf_tables tproxy expression netlink attributes
1260 *
1261 * NFTA_TPROXY_FAMILY: Target address family (NLA_U32: nft_registers)
1262 * NFTA_TPROXY_REG_ADDR: Target address register (NLA_U32: nft_registers)
1263 * NFTA_TPROXY_REG_PORT: Target port register (NLA_U32: nft_registers)
1264 */
1265enum nft_tproxy_attributes {
1266 NFTA_TPROXY_UNSPEC,
1267 NFTA_TPROXY_FAMILY,
1268 NFTA_TPROXY_REG_ADDR,
1269 NFTA_TPROXY_REG_PORT,
1270 __NFTA_TPROXY_MAX
1271};
1272#define NFTA_TPROXY_MAX (__NFTA_TPROXY_MAX - 1)
1273
1274/**
1254 * enum nft_masq_attributes - nf_tables masquerade expression attributes 1275 * enum nft_masq_attributes - nf_tables masquerade expression attributes
1255 * 1276 *
1256 * @NFTA_MASQ_FLAGS: NAT flags (see NF_NAT_RANGE_* in linux/netfilter/nf_nat.h) (NLA_U32) 1277 * @NFTA_MASQ_FLAGS: NAT flags (see NF_NAT_RANGE_* in linux/netfilter/nf_nat.h) (NLA_U32)
@@ -1392,13 +1413,24 @@ enum nft_ct_helper_attributes {
1392}; 1413};
1393#define NFTA_CT_HELPER_MAX (__NFTA_CT_HELPER_MAX - 1) 1414#define NFTA_CT_HELPER_MAX (__NFTA_CT_HELPER_MAX - 1)
1394 1415
1416enum nft_ct_timeout_timeout_attributes {
1417 NFTA_CT_TIMEOUT_UNSPEC,
1418 NFTA_CT_TIMEOUT_L3PROTO,
1419 NFTA_CT_TIMEOUT_L4PROTO,
1420 NFTA_CT_TIMEOUT_DATA,
1421 __NFTA_CT_TIMEOUT_MAX,
1422};
1423#define NFTA_CT_TIMEOUT_MAX (__NFTA_CT_TIMEOUT_MAX - 1)
1424
1395#define NFT_OBJECT_UNSPEC 0 1425#define NFT_OBJECT_UNSPEC 0
1396#define NFT_OBJECT_COUNTER 1 1426#define NFT_OBJECT_COUNTER 1
1397#define NFT_OBJECT_QUOTA 2 1427#define NFT_OBJECT_QUOTA 2
1398#define NFT_OBJECT_CT_HELPER 3 1428#define NFT_OBJECT_CT_HELPER 3
1399#define NFT_OBJECT_LIMIT 4 1429#define NFT_OBJECT_LIMIT 4
1400#define NFT_OBJECT_CONNLIMIT 5 1430#define NFT_OBJECT_CONNLIMIT 5
1401#define __NFT_OBJECT_MAX 6 1431#define NFT_OBJECT_TUNNEL 6
1432#define NFT_OBJECT_CT_TIMEOUT 7
1433#define __NFT_OBJECT_MAX 8
1402#define NFT_OBJECT_MAX (__NFT_OBJECT_MAX - 1) 1434#define NFT_OBJECT_MAX (__NFT_OBJECT_MAX - 1)
1403 1435
1404/** 1436/**
@@ -1461,6 +1493,13 @@ enum nft_flowtable_hook_attributes {
1461}; 1493};
1462#define NFTA_FLOWTABLE_HOOK_MAX (__NFTA_FLOWTABLE_HOOK_MAX - 1) 1494#define NFTA_FLOWTABLE_HOOK_MAX (__NFTA_FLOWTABLE_HOOK_MAX - 1)
1463 1495
1496enum nft_osf_attributes {
1497 NFTA_OSF_UNSPEC,
1498 NFTA_OSF_DREG,
1499 __NFTA_OSF_MAX,
1500};
1501#define NFTA_OSF_MAX (__NFTA_OSF_MAX - 1)
1502
1464/** 1503/**
1465 * enum nft_device_attributes - nf_tables device netlink attributes 1504 * enum nft_device_attributes - nf_tables device netlink attributes
1466 * 1505 *
@@ -1555,4 +1594,85 @@ enum nft_ng_types {
1555}; 1594};
1556#define NFT_NG_MAX (__NFT_NG_MAX - 1) 1595#define NFT_NG_MAX (__NFT_NG_MAX - 1)
1557 1596
1597enum nft_tunnel_key_ip_attributes {
1598 NFTA_TUNNEL_KEY_IP_UNSPEC,
1599 NFTA_TUNNEL_KEY_IP_SRC,
1600 NFTA_TUNNEL_KEY_IP_DST,
1601 __NFTA_TUNNEL_KEY_IP_MAX
1602};
1603#define NFTA_TUNNEL_KEY_IP_MAX (__NFTA_TUNNEL_KEY_IP_MAX - 1)
1604
1605enum nft_tunnel_ip6_attributes {
1606 NFTA_TUNNEL_KEY_IP6_UNSPEC,
1607 NFTA_TUNNEL_KEY_IP6_SRC,
1608 NFTA_TUNNEL_KEY_IP6_DST,
1609 NFTA_TUNNEL_KEY_IP6_FLOWLABEL,
1610 __NFTA_TUNNEL_KEY_IP6_MAX
1611};
1612#define NFTA_TUNNEL_KEY_IP6_MAX (__NFTA_TUNNEL_KEY_IP6_MAX - 1)
1613
1614enum nft_tunnel_opts_attributes {
1615 NFTA_TUNNEL_KEY_OPTS_UNSPEC,
1616 NFTA_TUNNEL_KEY_OPTS_VXLAN,
1617 NFTA_TUNNEL_KEY_OPTS_ERSPAN,
1618 __NFTA_TUNNEL_KEY_OPTS_MAX
1619};
1620#define NFTA_TUNNEL_KEY_OPTS_MAX (__NFTA_TUNNEL_KEY_OPTS_MAX - 1)
1621
1622enum nft_tunnel_opts_vxlan_attributes {
1623 NFTA_TUNNEL_KEY_VXLAN_UNSPEC,
1624 NFTA_TUNNEL_KEY_VXLAN_GBP,
1625 __NFTA_TUNNEL_KEY_VXLAN_MAX
1626};
1627#define NFTA_TUNNEL_KEY_VXLAN_MAX (__NFTA_TUNNEL_KEY_VXLAN_MAX - 1)
1628
1629enum nft_tunnel_opts_erspan_attributes {
1630 NFTA_TUNNEL_KEY_ERSPAN_UNSPEC,
1631 NFTA_TUNNEL_KEY_ERSPAN_VERSION,
1632 NFTA_TUNNEL_KEY_ERSPAN_V1_INDEX,
1633 NFTA_TUNNEL_KEY_ERSPAN_V2_HWID,
1634 NFTA_TUNNEL_KEY_ERSPAN_V2_DIR,
1635 __NFTA_TUNNEL_KEY_ERSPAN_MAX
1636};
1637#define NFTA_TUNNEL_KEY_ERSPAN_MAX (__NFTA_TUNNEL_KEY_ERSPAN_MAX - 1)
1638
1639enum nft_tunnel_flags {
1640 NFT_TUNNEL_F_ZERO_CSUM_TX = (1 << 0),
1641 NFT_TUNNEL_F_DONT_FRAGMENT = (1 << 1),
1642 NFT_TUNNEL_F_SEQ_NUMBER = (1 << 2),
1643};
1644#define NFT_TUNNEL_F_MASK (NFT_TUNNEL_F_ZERO_CSUM_TX | \
1645 NFT_TUNNEL_F_DONT_FRAGMENT | \
1646 NFT_TUNNEL_F_SEQ_NUMBER)
1647
1648enum nft_tunnel_key_attributes {
1649 NFTA_TUNNEL_KEY_UNSPEC,
1650 NFTA_TUNNEL_KEY_ID,
1651 NFTA_TUNNEL_KEY_IP,
1652 NFTA_TUNNEL_KEY_IP6,
1653 NFTA_TUNNEL_KEY_FLAGS,
1654 NFTA_TUNNEL_KEY_TOS,
1655 NFTA_TUNNEL_KEY_TTL,
1656 NFTA_TUNNEL_KEY_SPORT,
1657 NFTA_TUNNEL_KEY_DPORT,
1658 NFTA_TUNNEL_KEY_OPTS,
1659 __NFTA_TUNNEL_KEY_MAX
1660};
1661#define NFTA_TUNNEL_KEY_MAX (__NFTA_TUNNEL_KEY_MAX - 1)
1662
1663enum nft_tunnel_keys {
1664 NFT_TUNNEL_PATH,
1665 NFT_TUNNEL_ID,
1666 __NFT_TUNNEL_MAX
1667};
1668#define NFT_TUNNEL_MAX (__NFT_TUNNEL_MAX - 1)
1669
1670enum nft_tunnel_attributes {
1671 NFTA_TUNNEL_UNSPEC,
1672 NFTA_TUNNEL_KEY,
1673 NFTA_TUNNEL_DREG,
1674 __NFTA_TUNNEL_MAX
1675};
1676#define NFTA_TUNNEL_MAX (__NFTA_TUNNEL_MAX - 1)
1677
1558#endif /* _LINUX_NF_TABLES_H */ 1678#endif /* _LINUX_NF_TABLES_H */
diff --git a/include/uapi/linux/netfilter/nf_osf.h b/include/uapi/linux/netfilter/nfnetlink_osf.h
index 8f2f2f403183..76a3527df5dd 100644
--- a/include/uapi/linux/netfilter/nf_osf.h
+++ b/include/uapi/linux/netfilter/nfnetlink_osf.h
@@ -16,9 +16,14 @@
16 16
17#define NF_OSF_TTL_TRUE 0 /* True ip and fingerprint TTL comparison */ 17#define NF_OSF_TTL_TRUE 0 /* True ip and fingerprint TTL comparison */
18 18
19/* Check if ip TTL is less than fingerprint one */
20#define NF_OSF_TTL_LESS 1
21
19/* Do not compare ip and fingerprint TTL at all */ 22/* Do not compare ip and fingerprint TTL at all */
20#define NF_OSF_TTL_NOCHECK 2 23#define NF_OSF_TTL_NOCHECK 2
21 24
25#define NF_OSF_FLAGMASK (NF_OSF_GENRE | NF_OSF_TTL | \
26 NF_OSF_LOG | NF_OSF_INVERT)
22/* Wildcard MSS (kind of). 27/* Wildcard MSS (kind of).
23 * It is used to implement a state machine for the different wildcard values 28 * It is used to implement a state machine for the different wildcard values
24 * of the MSS and window sizes. 29 * of the MSS and window sizes.
@@ -83,4 +88,31 @@ enum iana_options {
83 OSFOPT_EMPTY = 255, 88 OSFOPT_EMPTY = 255,
84}; 89};
85 90
91/* Initial window size option state machine: multiple of mss, mtu or
92 * plain numeric value. Can also be made as plain numeric value which
93 * is not a multiple of specified value.
94 */
95enum nf_osf_window_size_options {
96 OSF_WSS_PLAIN = 0,
97 OSF_WSS_MSS,
98 OSF_WSS_MTU,
99 OSF_WSS_MODULO,
100 OSF_WSS_MAX,
101};
102
103enum nf_osf_attr_type {
104 OSF_ATTR_UNSPEC,
105 OSF_ATTR_FINGER,
106 OSF_ATTR_MAX,
107};
108
109/*
110 * Add/remove fingerprint from the kernel.
111 */
112enum nf_osf_msg_types {
113 OSF_MSG_ADD,
114 OSF_MSG_REMOVE,
115 OSF_MSG_MAX,
116};
117
86#endif /* _NF_OSF_H */ 118#endif /* _NF_OSF_H */
diff --git a/include/uapi/linux/netfilter/xt_osf.h b/include/uapi/linux/netfilter/xt_osf.h
index 72956eceeb09..24102b5286ec 100644
--- a/include/uapi/linux/netfilter/xt_osf.h
+++ b/include/uapi/linux/netfilter/xt_osf.h
@@ -23,7 +23,7 @@
23#include <linux/types.h> 23#include <linux/types.h>
24#include <linux/ip.h> 24#include <linux/ip.h>
25#include <linux/tcp.h> 25#include <linux/tcp.h>
26#include <linux/netfilter/nf_osf.h> 26#include <linux/netfilter/nfnetlink_osf.h>
27 27
28#define XT_OSF_GENRE NF_OSF_GENRE 28#define XT_OSF_GENRE NF_OSF_GENRE
29#define XT_OSF_INVERT NF_OSF_INVERT 29#define XT_OSF_INVERT NF_OSF_INVERT
@@ -37,8 +37,7 @@
37 37
38#define XT_OSF_TTL_TRUE NF_OSF_TTL_TRUE 38#define XT_OSF_TTL_TRUE NF_OSF_TTL_TRUE
39#define XT_OSF_TTL_NOCHECK NF_OSF_TTL_NOCHECK 39#define XT_OSF_TTL_NOCHECK NF_OSF_TTL_NOCHECK
40 40#define XT_OSF_TTL_LESS NF_OSF_TTL_LESS
41#define XT_OSF_TTL_LESS 1 /* Check if ip TTL is less than fingerprint one */
42 41
43#define xt_osf_wc nf_osf_wc 42#define xt_osf_wc nf_osf_wc
44#define xt_osf_opt nf_osf_opt 43#define xt_osf_opt nf_osf_opt
@@ -47,19 +46,8 @@
47#define xt_osf_finger nf_osf_finger 46#define xt_osf_finger nf_osf_finger
48#define xt_osf_nlmsg nf_osf_nlmsg 47#define xt_osf_nlmsg nf_osf_nlmsg
49 48
50/* 49#define xt_osf_window_size_options nf_osf_window_size_options
51 * Add/remove fingerprint from the kernel. 50#define xt_osf_attr_type nf_osf_attr_type
52 */ 51#define xt_osf_msg_types nf_osf_msg_types
53enum xt_osf_msg_types {
54 OSF_MSG_ADD,
55 OSF_MSG_REMOVE,
56 OSF_MSG_MAX,
57};
58
59enum xt_osf_attr_type {
60 OSF_ATTR_UNSPEC,
61 OSF_ATTR_FINGER,
62 OSF_ATTR_MAX,
63};
64 52
65#endif /* _XT_OSF_H */ 53#endif /* _XT_OSF_H */
diff --git a/include/uapi/linux/netfilter_bridge.h b/include/uapi/linux/netfilter_bridge.h
index 12fb77633f83..156ccd089df1 100644
--- a/include/uapi/linux/netfilter_bridge.h
+++ b/include/uapi/linux/netfilter_bridge.h
@@ -26,4 +26,15 @@
26#define NF_BR_BROUTING 5 26#define NF_BR_BROUTING 5
27#define NF_BR_NUMHOOKS 6 27#define NF_BR_NUMHOOKS 6
28 28
29enum nf_br_hook_priorities {
30 NF_BR_PRI_FIRST = INT_MIN,
31 NF_BR_PRI_NAT_DST_BRIDGED = -300,
32 NF_BR_PRI_FILTER_BRIDGED = -200,
33 NF_BR_PRI_BRNF = 0,
34 NF_BR_PRI_NAT_DST_OTHER = 100,
35 NF_BR_PRI_FILTER_OTHER = 200,
36 NF_BR_PRI_NAT_SRC = 300,
37 NF_BR_PRI_LAST = INT_MAX,
38};
39
29#endif /* _UAPI__LINUX_BRIDGE_NETFILTER_H */ 40#endif /* _UAPI__LINUX_BRIDGE_NETFILTER_H */
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index 27e4e441caac..7acc16f34942 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -2237,6 +2237,9 @@ enum nl80211_commands {
2237 * enforced. 2237 * enforced.
2238 * @NL80211_ATTR_TXQ_QUANTUM: TXQ scheduler quantum (bytes). Number of bytes 2238 * @NL80211_ATTR_TXQ_QUANTUM: TXQ scheduler quantum (bytes). Number of bytes
2239 * a flow is assigned on each round of the DRR scheduler. 2239 * a flow is assigned on each round of the DRR scheduler.
2240 * @NL80211_ATTR_HE_CAPABILITY: HE Capability information element (from
2241 * association request when used with NL80211_CMD_NEW_STATION). Can be set
2242 * only if %NL80211_STA_FLAG_WME is set.
2240 * 2243 *
2241 * @NUM_NL80211_ATTR: total number of nl80211_attrs available 2244 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
2242 * @NL80211_ATTR_MAX: highest attribute number currently defined 2245 * @NL80211_ATTR_MAX: highest attribute number currently defined
@@ -2677,6 +2680,8 @@ enum nl80211_attrs {
2677 NL80211_ATTR_TXQ_MEMORY_LIMIT, 2680 NL80211_ATTR_TXQ_MEMORY_LIMIT,
2678 NL80211_ATTR_TXQ_QUANTUM, 2681 NL80211_ATTR_TXQ_QUANTUM,
2679 2682
2683 NL80211_ATTR_HE_CAPABILITY,
2684
2680 /* add attributes here, update the policy in nl80211.c */ 2685 /* add attributes here, update the policy in nl80211.c */
2681 2686
2682 __NL80211_ATTR_AFTER_LAST, 2687 __NL80211_ATTR_AFTER_LAST,
@@ -2726,7 +2731,8 @@ enum nl80211_attrs {
2726#define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 24 2731#define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 24
2727#define NL80211_HT_CAPABILITY_LEN 26 2732#define NL80211_HT_CAPABILITY_LEN 26
2728#define NL80211_VHT_CAPABILITY_LEN 12 2733#define NL80211_VHT_CAPABILITY_LEN 12
2729 2734#define NL80211_HE_MIN_CAPABILITY_LEN 16
2735#define NL80211_HE_MAX_CAPABILITY_LEN 51
2730#define NL80211_MAX_NR_CIPHER_SUITES 5 2736#define NL80211_MAX_NR_CIPHER_SUITES 5
2731#define NL80211_MAX_NR_AKM_SUITES 2 2737#define NL80211_MAX_NR_AKM_SUITES 2
2732 2738
@@ -2854,6 +2860,38 @@ struct nl80211_sta_flag_update {
2854} __attribute__((packed)); 2860} __attribute__((packed));
2855 2861
2856/** 2862/**
2863 * enum nl80211_he_gi - HE guard interval
2864 * @NL80211_RATE_INFO_HE_GI_0_8: 0.8 usec
2865 * @NL80211_RATE_INFO_HE_GI_1_6: 1.6 usec
2866 * @NL80211_RATE_INFO_HE_GI_3_2: 3.2 usec
2867 */
2868enum nl80211_he_gi {
2869 NL80211_RATE_INFO_HE_GI_0_8,
2870 NL80211_RATE_INFO_HE_GI_1_6,
2871 NL80211_RATE_INFO_HE_GI_3_2,
2872};
2873
2874/**
2875 * enum nl80211_he_ru_alloc - HE RU allocation values
2876 * @NL80211_RATE_INFO_HE_RU_ALLOC_26: 26-tone RU allocation
2877 * @NL80211_RATE_INFO_HE_RU_ALLOC_52: 52-tone RU allocation
2878 * @NL80211_RATE_INFO_HE_RU_ALLOC_106: 106-tone RU allocation
2879 * @NL80211_RATE_INFO_HE_RU_ALLOC_242: 242-tone RU allocation
2880 * @NL80211_RATE_INFO_HE_RU_ALLOC_484: 484-tone RU allocation
2881 * @NL80211_RATE_INFO_HE_RU_ALLOC_996: 996-tone RU allocation
2882 * @NL80211_RATE_INFO_HE_RU_ALLOC_2x996: 2x996-tone RU allocation
2883 */
2884enum nl80211_he_ru_alloc {
2885 NL80211_RATE_INFO_HE_RU_ALLOC_26,
2886 NL80211_RATE_INFO_HE_RU_ALLOC_52,
2887 NL80211_RATE_INFO_HE_RU_ALLOC_106,
2888 NL80211_RATE_INFO_HE_RU_ALLOC_242,
2889 NL80211_RATE_INFO_HE_RU_ALLOC_484,
2890 NL80211_RATE_INFO_HE_RU_ALLOC_996,
2891 NL80211_RATE_INFO_HE_RU_ALLOC_2x996,
2892};
2893
2894/**
2857 * enum nl80211_rate_info - bitrate information 2895 * enum nl80211_rate_info - bitrate information
2858 * 2896 *
2859 * These attribute types are used with %NL80211_STA_INFO_TXRATE 2897 * These attribute types are used with %NL80211_STA_INFO_TXRATE
@@ -2885,6 +2923,13 @@ struct nl80211_sta_flag_update {
2885 * @NL80211_RATE_INFO_5_MHZ_WIDTH: 5 MHz width - note that this is 2923 * @NL80211_RATE_INFO_5_MHZ_WIDTH: 5 MHz width - note that this is
2886 * a legacy rate and will be reported as the actual bitrate, i.e. 2924 * a legacy rate and will be reported as the actual bitrate, i.e.
2887 * a quarter of the base (20 MHz) rate 2925 * a quarter of the base (20 MHz) rate
2926 * @NL80211_RATE_INFO_HE_MCS: HE MCS index (u8, 0-11)
2927 * @NL80211_RATE_INFO_HE_NSS: HE NSS value (u8, 1-8)
2928 * @NL80211_RATE_INFO_HE_GI: HE guard interval identifier
2929 * (u8, see &enum nl80211_he_gi)
2930 * @NL80211_RATE_INFO_HE_DCM: HE DCM value (u8, 0/1)
2931 * @NL80211_RATE_INFO_RU_ALLOC: HE RU allocation, if not present then
2932 * non-OFDMA was used (u8, see &enum nl80211_he_ru_alloc)
2888 * @__NL80211_RATE_INFO_AFTER_LAST: internal use 2933 * @__NL80211_RATE_INFO_AFTER_LAST: internal use
2889 */ 2934 */
2890enum nl80211_rate_info { 2935enum nl80211_rate_info {
@@ -2901,6 +2946,11 @@ enum nl80211_rate_info {
2901 NL80211_RATE_INFO_160_MHZ_WIDTH, 2946 NL80211_RATE_INFO_160_MHZ_WIDTH,
2902 NL80211_RATE_INFO_10_MHZ_WIDTH, 2947 NL80211_RATE_INFO_10_MHZ_WIDTH,
2903 NL80211_RATE_INFO_5_MHZ_WIDTH, 2948 NL80211_RATE_INFO_5_MHZ_WIDTH,
2949 NL80211_RATE_INFO_HE_MCS,
2950 NL80211_RATE_INFO_HE_NSS,
2951 NL80211_RATE_INFO_HE_GI,
2952 NL80211_RATE_INFO_HE_DCM,
2953 NL80211_RATE_INFO_HE_RU_ALLOC,
2904 2954
2905 /* keep last */ 2955 /* keep last */
2906 __NL80211_RATE_INFO_AFTER_LAST, 2956 __NL80211_RATE_INFO_AFTER_LAST,
@@ -3167,6 +3217,38 @@ enum nl80211_mpath_info {
3167}; 3217};
3168 3218
3169/** 3219/**
3220 * enum nl80211_band_iftype_attr - Interface type data attributes
3221 *
3222 * @__NL80211_BAND_IFTYPE_ATTR_INVALID: attribute number 0 is reserved
3223 * @NL80211_BAND_IFTYPE_ATTR_IFTYPES: nested attribute containing a flag attribute
3224 * for each interface type that supports the band data
3225 * @NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC: HE MAC capabilities as in HE
3226 * capabilities IE
3227 * @NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY: HE PHY capabilities as in HE
3228 * capabilities IE
3229 * @NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET: HE supported NSS/MCS as in HE
3230 * capabilities IE
3231 * @NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE: HE PPE thresholds information as
3232 * defined in HE capabilities IE
3233 * @NL80211_BAND_IFTYPE_ATTR_MAX: highest band HE capability attribute currently
3234 * defined
3235 * @__NL80211_BAND_IFTYPE_ATTR_AFTER_LAST: internal use
3236 */
3237enum nl80211_band_iftype_attr {
3238 __NL80211_BAND_IFTYPE_ATTR_INVALID,
3239
3240 NL80211_BAND_IFTYPE_ATTR_IFTYPES,
3241 NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC,
3242 NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY,
3243 NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET,
3244 NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE,
3245
3246 /* keep last */
3247 __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
3248 NL80211_BAND_IFTYPE_ATTR_MAX = __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST - 1
3249};
3250
3251/**
3170 * enum nl80211_band_attr - band attributes 3252 * enum nl80211_band_attr - band attributes
3171 * @__NL80211_BAND_ATTR_INVALID: attribute number 0 is reserved 3253 * @__NL80211_BAND_ATTR_INVALID: attribute number 0 is reserved
3172 * @NL80211_BAND_ATTR_FREQS: supported frequencies in this band, 3254 * @NL80211_BAND_ATTR_FREQS: supported frequencies in this band,
@@ -3181,6 +3263,8 @@ enum nl80211_mpath_info {
3181 * @NL80211_BAND_ATTR_VHT_MCS_SET: 32-byte attribute containing the MCS set as 3263 * @NL80211_BAND_ATTR_VHT_MCS_SET: 32-byte attribute containing the MCS set as
3182 * defined in 802.11ac 3264 * defined in 802.11ac
3183 * @NL80211_BAND_ATTR_VHT_CAPA: VHT capabilities, as in the HT information IE 3265 * @NL80211_BAND_ATTR_VHT_CAPA: VHT capabilities, as in the HT information IE
3266 * @NL80211_BAND_ATTR_IFTYPE_DATA: nested array attribute, with each entry using
3267 * attributes from &enum nl80211_band_iftype_attr
3184 * @NL80211_BAND_ATTR_MAX: highest band attribute currently defined 3268 * @NL80211_BAND_ATTR_MAX: highest band attribute currently defined
3185 * @__NL80211_BAND_ATTR_AFTER_LAST: internal use 3269 * @__NL80211_BAND_ATTR_AFTER_LAST: internal use
3186 */ 3270 */
@@ -3196,6 +3280,7 @@ enum nl80211_band_attr {
3196 3280
3197 NL80211_BAND_ATTR_VHT_MCS_SET, 3281 NL80211_BAND_ATTR_VHT_MCS_SET,
3198 NL80211_BAND_ATTR_VHT_CAPA, 3282 NL80211_BAND_ATTR_VHT_CAPA,
3283 NL80211_BAND_ATTR_IFTYPE_DATA,
3199 3284
3200 /* keep last */ 3285 /* keep last */
3201 __NL80211_BAND_ATTR_AFTER_LAST, 3286 __NL80211_BAND_ATTR_AFTER_LAST,
@@ -5133,6 +5218,11 @@ enum nl80211_feature_flags {
5133 * support to nl80211. 5218 * support to nl80211.
5134 * @NL80211_EXT_FEATURE_TXQS: Driver supports FQ-CoDel-enabled intermediate 5219 * @NL80211_EXT_FEATURE_TXQS: Driver supports FQ-CoDel-enabled intermediate
5135 * TXQs. 5220 * TXQs.
5221 * @NL80211_EXT_FEATURE_SCAN_RANDOM_SN: Driver/device supports randomizing the
5222 * SN in probe request frames if requested by %NL80211_SCAN_FLAG_RANDOM_SN.
5223 * @NL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT: Driver/device can omit all data
5224 * except for supported rates from the probe request content if requested
5225 * by the %NL80211_SCAN_FLAG_MIN_PREQ_CONTENT flag.
5136 * 5226 *
5137 * @NUM_NL80211_EXT_FEATURES: number of extended features. 5227 * @NUM_NL80211_EXT_FEATURES: number of extended features.
5138 * @MAX_NL80211_EXT_FEATURES: highest extended feature index. 5228 * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
@@ -5167,6 +5257,8 @@ enum nl80211_ext_feature_index {
5167 NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211, 5257 NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211,
5168 NL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT, 5258 NL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT,
5169 NL80211_EXT_FEATURE_TXQS, 5259 NL80211_EXT_FEATURE_TXQS,
5260 NL80211_EXT_FEATURE_SCAN_RANDOM_SN,
5261 NL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT,
5170 5262
5171 /* add new features before the definition below */ 5263 /* add new features before the definition below */
5172 NUM_NL80211_EXT_FEATURES, 5264 NUM_NL80211_EXT_FEATURES,
@@ -5272,6 +5364,12 @@ enum nl80211_timeout_reason {
5272 * possible scan results. This flag hints the driver to use the best 5364 * possible scan results. This flag hints the driver to use the best
5273 * possible scan configuration to improve the accuracy in scanning. 5365 * possible scan configuration to improve the accuracy in scanning.
5274 * Latency and power use may get impacted with this flag. 5366 * Latency and power use may get impacted with this flag.
5367 * @NL80211_SCAN_FLAG_RANDOM_SN: randomize the sequence number in probe
5368 * request frames from this scan to avoid correlation/tracking being
5369 * possible.
5370 * @NL80211_SCAN_FLAG_MIN_PREQ_CONTENT: minimize probe request content to
5371 * only have supported rates and no additional capabilities (unless
5372 * added by userspace explicitly.)
5275 */ 5373 */
5276enum nl80211_scan_flags { 5374enum nl80211_scan_flags {
5277 NL80211_SCAN_FLAG_LOW_PRIORITY = 1<<0, 5375 NL80211_SCAN_FLAG_LOW_PRIORITY = 1<<0,
@@ -5285,6 +5383,8 @@ enum nl80211_scan_flags {
5285 NL80211_SCAN_FLAG_LOW_SPAN = 1<<8, 5383 NL80211_SCAN_FLAG_LOW_SPAN = 1<<8,
5286 NL80211_SCAN_FLAG_LOW_POWER = 1<<9, 5384 NL80211_SCAN_FLAG_LOW_POWER = 1<<9,
5287 NL80211_SCAN_FLAG_HIGH_ACCURACY = 1<<10, 5385 NL80211_SCAN_FLAG_HIGH_ACCURACY = 1<<10,
5386 NL80211_SCAN_FLAG_RANDOM_SN = 1<<11,
5387 NL80211_SCAN_FLAG_MIN_PREQ_CONTENT = 1<<12,
5288}; 5388};
5289 5389
5290/** 5390/**
diff --git a/include/uapi/linux/openvswitch.h b/include/uapi/linux/openvswitch.h
index 863aabaa5cc9..dbe0cbe4f1b7 100644
--- a/include/uapi/linux/openvswitch.h
+++ b/include/uapi/linux/openvswitch.h
@@ -840,6 +840,8 @@ struct ovs_action_push_eth {
840 * @OVS_ACTION_ATTR_POP_NSH: pop the outermost NSH header off the packet. 840 * @OVS_ACTION_ATTR_POP_NSH: pop the outermost NSH header off the packet.
841 * @OVS_ACTION_ATTR_METER: Run packet through a meter, which may drop the 841 * @OVS_ACTION_ATTR_METER: Run packet through a meter, which may drop the
842 * packet, or modify the packet (e.g., change the DSCP field). 842 * packet, or modify the packet (e.g., change the DSCP field).
843 * @OVS_ACTION_ATTR_CLONE: make a copy of the packet and execute a list of
844 * actions without affecting the original packet and key.
843 * 845 *
844 * Only a single header can be set with a single %OVS_ACTION_ATTR_SET. Not all 846 * Only a single header can be set with a single %OVS_ACTION_ATTR_SET. Not all
845 * fields within a header are modifiable, e.g. the IPv4 protocol and fragment 847 * fields within a header are modifiable, e.g. the IPv4 protocol and fragment
@@ -873,6 +875,7 @@ enum ovs_action_attr {
873 OVS_ACTION_ATTR_PUSH_NSH, /* Nested OVS_NSH_KEY_ATTR_*. */ 875 OVS_ACTION_ATTR_PUSH_NSH, /* Nested OVS_NSH_KEY_ATTR_*. */
874 OVS_ACTION_ATTR_POP_NSH, /* No argument. */ 876 OVS_ACTION_ATTR_POP_NSH, /* No argument. */
875 OVS_ACTION_ATTR_METER, /* u32 meter ID. */ 877 OVS_ACTION_ATTR_METER, /* u32 meter ID. */
878 OVS_ACTION_ATTR_CLONE, /* Nested OVS_CLONE_ATTR_*. */
876 879
877 __OVS_ACTION_ATTR_MAX, /* Nothing past this will be accepted 880 __OVS_ACTION_ATTR_MAX, /* Nothing past this will be accepted
878 * from userspace. */ 881 * from userspace. */
diff --git a/include/uapi/linux/pkt_cls.h b/include/uapi/linux/pkt_cls.h
index 84e4c1d0f874..be382fb0592d 100644
--- a/include/uapi/linux/pkt_cls.h
+++ b/include/uapi/linux/pkt_cls.h
@@ -45,6 +45,7 @@ enum {
45 * the skb and act like everything 45 * the skb and act like everything
46 * is alright. 46 * is alright.
47 */ 47 */
48#define TC_ACT_VALUE_MAX TC_ACT_TRAP
48 49
49/* There is a special kind of actions called "extended actions", 50/* There is a special kind of actions called "extended actions",
50 * which need a value parameter. These have a local opcode located in 51 * which need a value parameter. These have a local opcode located in
@@ -55,11 +56,12 @@ enum {
55#define __TC_ACT_EXT_SHIFT 28 56#define __TC_ACT_EXT_SHIFT 28
56#define __TC_ACT_EXT(local) ((local) << __TC_ACT_EXT_SHIFT) 57#define __TC_ACT_EXT(local) ((local) << __TC_ACT_EXT_SHIFT)
57#define TC_ACT_EXT_VAL_MASK ((1 << __TC_ACT_EXT_SHIFT) - 1) 58#define TC_ACT_EXT_VAL_MASK ((1 << __TC_ACT_EXT_SHIFT) - 1)
58#define TC_ACT_EXT_CMP(combined, opcode) \ 59#define TC_ACT_EXT_OPCODE(combined) ((combined) & (~TC_ACT_EXT_VAL_MASK))
59 (((combined) & (~TC_ACT_EXT_VAL_MASK)) == opcode) 60#define TC_ACT_EXT_CMP(combined, opcode) (TC_ACT_EXT_OPCODE(combined) == opcode)
60 61
61#define TC_ACT_JUMP __TC_ACT_EXT(1) 62#define TC_ACT_JUMP __TC_ACT_EXT(1)
62#define TC_ACT_GOTO_CHAIN __TC_ACT_EXT(2) 63#define TC_ACT_GOTO_CHAIN __TC_ACT_EXT(2)
64#define TC_ACT_EXT_OPCODE_MAX TC_ACT_GOTO_CHAIN
63 65
64/* Action type identifiers*/ 66/* Action type identifiers*/
65enum { 67enum {
@@ -469,12 +471,47 @@ enum {
469 TCA_FLOWER_KEY_IP_TTL, /* u8 */ 471 TCA_FLOWER_KEY_IP_TTL, /* u8 */
470 TCA_FLOWER_KEY_IP_TTL_MASK, /* u8 */ 472 TCA_FLOWER_KEY_IP_TTL_MASK, /* u8 */
471 473
474 TCA_FLOWER_KEY_CVLAN_ID, /* be16 */
475 TCA_FLOWER_KEY_CVLAN_PRIO, /* u8 */
476 TCA_FLOWER_KEY_CVLAN_ETH_TYPE, /* be16 */
477
478 TCA_FLOWER_KEY_ENC_IP_TOS, /* u8 */
479 TCA_FLOWER_KEY_ENC_IP_TOS_MASK, /* u8 */
480 TCA_FLOWER_KEY_ENC_IP_TTL, /* u8 */
481 TCA_FLOWER_KEY_ENC_IP_TTL_MASK, /* u8 */
482
483 TCA_FLOWER_KEY_ENC_OPTS,
484 TCA_FLOWER_KEY_ENC_OPTS_MASK,
485
472 __TCA_FLOWER_MAX, 486 __TCA_FLOWER_MAX,
473}; 487};
474 488
475#define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1) 489#define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
476 490
477enum { 491enum {
492 TCA_FLOWER_KEY_ENC_OPTS_UNSPEC,
493 TCA_FLOWER_KEY_ENC_OPTS_GENEVE, /* Nested
494 * TCA_FLOWER_KEY_ENC_OPT_GENEVE_
495 * attributes
496 */
497 __TCA_FLOWER_KEY_ENC_OPTS_MAX,
498};
499
500#define TCA_FLOWER_KEY_ENC_OPTS_MAX (__TCA_FLOWER_KEY_ENC_OPTS_MAX - 1)
501
502enum {
503 TCA_FLOWER_KEY_ENC_OPT_GENEVE_UNSPEC,
504 TCA_FLOWER_KEY_ENC_OPT_GENEVE_CLASS, /* u16 */
505 TCA_FLOWER_KEY_ENC_OPT_GENEVE_TYPE, /* u8 */
506 TCA_FLOWER_KEY_ENC_OPT_GENEVE_DATA, /* 4 to 128 bytes */
507
508 __TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX,
509};
510
511#define TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX \
512 (__TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX - 1)
513
514enum {
478 TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0), 515 TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0),
479 TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1), 516 TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1),
480}; 517};
diff --git a/include/uapi/linux/pkt_sched.h b/include/uapi/linux/pkt_sched.h
index 37b5096ae97b..8975fd1a1421 100644
--- a/include/uapi/linux/pkt_sched.h
+++ b/include/uapi/linux/pkt_sched.h
@@ -124,6 +124,21 @@ struct tc_fifo_qopt {
124 __u32 limit; /* Queue length: bytes for bfifo, packets for pfifo */ 124 __u32 limit; /* Queue length: bytes for bfifo, packets for pfifo */
125}; 125};
126 126
127/* SKBPRIO section */
128
129/*
130 * Priorities go from zero to (SKBPRIO_MAX_PRIORITY - 1).
131 * SKBPRIO_MAX_PRIORITY should be at least 64 in order for skbprio to be able
132 * to map one to one the DS field of IPV4 and IPV6 headers.
133 * Memory allocation grows linearly with SKBPRIO_MAX_PRIORITY.
134 */
135
136#define SKBPRIO_MAX_PRIORITY 64
137
138struct tc_skbprio_qopt {
139 __u32 limit; /* Queue length in packets. */
140};
141
127/* PRIO section */ 142/* PRIO section */
128 143
129#define TCQ_PRIO_BANDS 16 144#define TCQ_PRIO_BANDS 16
@@ -539,6 +554,7 @@ enum {
539 TCA_NETEM_LATENCY64, 554 TCA_NETEM_LATENCY64,
540 TCA_NETEM_JITTER64, 555 TCA_NETEM_JITTER64,
541 TCA_NETEM_SLOT, 556 TCA_NETEM_SLOT,
557 TCA_NETEM_SLOT_DIST,
542 __TCA_NETEM_MAX, 558 __TCA_NETEM_MAX,
543}; 559};
544 560
@@ -581,6 +597,8 @@ struct tc_netem_slot {
581 __s64 max_delay; 597 __s64 max_delay;
582 __s32 max_packets; 598 __s32 max_packets;
583 __s32 max_bytes; 599 __s32 max_bytes;
600 __s64 dist_delay; /* nsec */
601 __s64 dist_jitter; /* nsec */
584}; 602};
585 603
586enum { 604enum {
@@ -934,4 +952,136 @@ enum {
934 952
935#define TCA_CBS_MAX (__TCA_CBS_MAX - 1) 953#define TCA_CBS_MAX (__TCA_CBS_MAX - 1)
936 954
955
956/* ETF */
957struct tc_etf_qopt {
958 __s32 delta;
959 __s32 clockid;
960 __u32 flags;
961#define TC_ETF_DEADLINE_MODE_ON BIT(0)
962#define TC_ETF_OFFLOAD_ON BIT(1)
963};
964
965enum {
966 TCA_ETF_UNSPEC,
967 TCA_ETF_PARMS,
968 __TCA_ETF_MAX,
969};
970
971#define TCA_ETF_MAX (__TCA_ETF_MAX - 1)
972
973
974/* CAKE */
975enum {
976 TCA_CAKE_UNSPEC,
977 TCA_CAKE_PAD,
978 TCA_CAKE_BASE_RATE64,
979 TCA_CAKE_DIFFSERV_MODE,
980 TCA_CAKE_ATM,
981 TCA_CAKE_FLOW_MODE,
982 TCA_CAKE_OVERHEAD,
983 TCA_CAKE_RTT,
984 TCA_CAKE_TARGET,
985 TCA_CAKE_AUTORATE,
986 TCA_CAKE_MEMORY,
987 TCA_CAKE_NAT,
988 TCA_CAKE_RAW,
989 TCA_CAKE_WASH,
990 TCA_CAKE_MPU,
991 TCA_CAKE_INGRESS,
992 TCA_CAKE_ACK_FILTER,
993 TCA_CAKE_SPLIT_GSO,
994 __TCA_CAKE_MAX
995};
996#define TCA_CAKE_MAX (__TCA_CAKE_MAX - 1)
997
998enum {
999 __TCA_CAKE_STATS_INVALID,
1000 TCA_CAKE_STATS_PAD,
1001 TCA_CAKE_STATS_CAPACITY_ESTIMATE64,
1002 TCA_CAKE_STATS_MEMORY_LIMIT,
1003 TCA_CAKE_STATS_MEMORY_USED,
1004 TCA_CAKE_STATS_AVG_NETOFF,
1005 TCA_CAKE_STATS_MIN_NETLEN,
1006 TCA_CAKE_STATS_MAX_NETLEN,
1007 TCA_CAKE_STATS_MIN_ADJLEN,
1008 TCA_CAKE_STATS_MAX_ADJLEN,
1009 TCA_CAKE_STATS_TIN_STATS,
1010 TCA_CAKE_STATS_DEFICIT,
1011 TCA_CAKE_STATS_COBALT_COUNT,
1012 TCA_CAKE_STATS_DROPPING,
1013 TCA_CAKE_STATS_DROP_NEXT_US,
1014 TCA_CAKE_STATS_P_DROP,
1015 TCA_CAKE_STATS_BLUE_TIMER_US,
1016 __TCA_CAKE_STATS_MAX
1017};
1018#define TCA_CAKE_STATS_MAX (__TCA_CAKE_STATS_MAX - 1)
1019
1020enum {
1021 __TCA_CAKE_TIN_STATS_INVALID,
1022 TCA_CAKE_TIN_STATS_PAD,
1023 TCA_CAKE_TIN_STATS_SENT_PACKETS,
1024 TCA_CAKE_TIN_STATS_SENT_BYTES64,
1025 TCA_CAKE_TIN_STATS_DROPPED_PACKETS,
1026 TCA_CAKE_TIN_STATS_DROPPED_BYTES64,
1027 TCA_CAKE_TIN_STATS_ACKS_DROPPED_PACKETS,
1028 TCA_CAKE_TIN_STATS_ACKS_DROPPED_BYTES64,
1029 TCA_CAKE_TIN_STATS_ECN_MARKED_PACKETS,
1030 TCA_CAKE_TIN_STATS_ECN_MARKED_BYTES64,
1031 TCA_CAKE_TIN_STATS_BACKLOG_PACKETS,
1032 TCA_CAKE_TIN_STATS_BACKLOG_BYTES,
1033 TCA_CAKE_TIN_STATS_THRESHOLD_RATE64,
1034 TCA_CAKE_TIN_STATS_TARGET_US,
1035 TCA_CAKE_TIN_STATS_INTERVAL_US,
1036 TCA_CAKE_TIN_STATS_WAY_INDIRECT_HITS,
1037 TCA_CAKE_TIN_STATS_WAY_MISSES,
1038 TCA_CAKE_TIN_STATS_WAY_COLLISIONS,
1039 TCA_CAKE_TIN_STATS_PEAK_DELAY_US,
1040 TCA_CAKE_TIN_STATS_AVG_DELAY_US,
1041 TCA_CAKE_TIN_STATS_BASE_DELAY_US,
1042 TCA_CAKE_TIN_STATS_SPARSE_FLOWS,
1043 TCA_CAKE_TIN_STATS_BULK_FLOWS,
1044 TCA_CAKE_TIN_STATS_UNRESPONSIVE_FLOWS,
1045 TCA_CAKE_TIN_STATS_MAX_SKBLEN,
1046 TCA_CAKE_TIN_STATS_FLOW_QUANTUM,
1047 __TCA_CAKE_TIN_STATS_MAX
1048};
1049#define TCA_CAKE_TIN_STATS_MAX (__TCA_CAKE_TIN_STATS_MAX - 1)
1050#define TC_CAKE_MAX_TINS (8)
1051
1052enum {
1053 CAKE_FLOW_NONE = 0,
1054 CAKE_FLOW_SRC_IP,
1055 CAKE_FLOW_DST_IP,
1056 CAKE_FLOW_HOSTS, /* = CAKE_FLOW_SRC_IP | CAKE_FLOW_DST_IP */
1057 CAKE_FLOW_FLOWS,
1058 CAKE_FLOW_DUAL_SRC, /* = CAKE_FLOW_SRC_IP | CAKE_FLOW_FLOWS */
1059 CAKE_FLOW_DUAL_DST, /* = CAKE_FLOW_DST_IP | CAKE_FLOW_FLOWS */
1060 CAKE_FLOW_TRIPLE, /* = CAKE_FLOW_HOSTS | CAKE_FLOW_FLOWS */
1061 CAKE_FLOW_MAX,
1062};
1063
1064enum {
1065 CAKE_DIFFSERV_DIFFSERV3 = 0,
1066 CAKE_DIFFSERV_DIFFSERV4,
1067 CAKE_DIFFSERV_DIFFSERV8,
1068 CAKE_DIFFSERV_BESTEFFORT,
1069 CAKE_DIFFSERV_PRECEDENCE,
1070 CAKE_DIFFSERV_MAX
1071};
1072
1073enum {
1074 CAKE_ACK_NONE = 0,
1075 CAKE_ACK_FILTER,
1076 CAKE_ACK_AGGRESSIVE,
1077 CAKE_ACK_MAX
1078};
1079
1080enum {
1081 CAKE_ATM_NONE = 0,
1082 CAKE_ATM_ATM,
1083 CAKE_ATM_PTM,
1084 CAKE_ATM_MAX
1085};
1086
937#endif 1087#endif
diff --git a/include/uapi/linux/ppp-ioctl.h b/include/uapi/linux/ppp-ioctl.h
index 784c2e3e572e..88b5f9990320 100644
--- a/include/uapi/linux/ppp-ioctl.h
+++ b/include/uapi/linux/ppp-ioctl.h
@@ -68,7 +68,7 @@ struct ppp_option_data {
68struct pppol2tp_ioc_stats { 68struct pppol2tp_ioc_stats {
69 __u16 tunnel_id; /* redundant */ 69 __u16 tunnel_id; /* redundant */
70 __u16 session_id; /* if zero, get tunnel stats */ 70 __u16 session_id; /* if zero, get tunnel stats */
71 __u32 using_ipsec:1; /* valid only for session_id == 0 */ 71 __u32 using_ipsec:1;
72 __aligned_u64 tx_packets; 72 __aligned_u64 tx_packets;
73 __aligned_u64 tx_bytes; 73 __aligned_u64 tx_bytes;
74 __aligned_u64 tx_errors; 74 __aligned_u64 tx_errors;
diff --git a/include/uapi/linux/rds.h b/include/uapi/linux/rds.h
index 20c6bd0b0007..dc520e1a4123 100644
--- a/include/uapi/linux/rds.h
+++ b/include/uapi/linux/rds.h
@@ -1,6 +1,6 @@
1/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR Linux-OpenIB) */ 1/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR Linux-OpenIB) */
2/* 2/*
3 * Copyright (c) 2008 Oracle. All rights reserved. 3 * Copyright (c) 2008, 2018 Oracle and/or its affiliates. All rights reserved.
4 * 4 *
5 * This software is available to you under a choice of one of two 5 * This software is available to you under a choice of one of two
6 * licenses. You may choose to be licensed under the terms of the GNU 6 * licenses. You may choose to be licensed under the terms of the GNU
@@ -118,7 +118,17 @@
118#define RDS_INFO_IB_CONNECTIONS 10008 118#define RDS_INFO_IB_CONNECTIONS 10008
119#define RDS_INFO_CONNECTION_STATS 10009 119#define RDS_INFO_CONNECTION_STATS 10009
120#define RDS_INFO_IWARP_CONNECTIONS 10010 120#define RDS_INFO_IWARP_CONNECTIONS 10010
121#define RDS_INFO_LAST 10010 121
122/* PF_RDS6 options */
123#define RDS6_INFO_CONNECTIONS 10011
124#define RDS6_INFO_SEND_MESSAGES 10012
125#define RDS6_INFO_RETRANS_MESSAGES 10013
126#define RDS6_INFO_RECV_MESSAGES 10014
127#define RDS6_INFO_SOCKETS 10015
128#define RDS6_INFO_TCP_SOCKETS 10016
129#define RDS6_INFO_IB_CONNECTIONS 10017
130
131#define RDS_INFO_LAST 10017
122 132
123struct rds_info_counter { 133struct rds_info_counter {
124 __u8 name[32]; 134 __u8 name[32];
@@ -140,6 +150,15 @@ struct rds_info_connection {
140 __u8 flags; 150 __u8 flags;
141} __attribute__((packed)); 151} __attribute__((packed));
142 152
153struct rds6_info_connection {
154 __u64 next_tx_seq;
155 __u64 next_rx_seq;
156 struct in6_addr laddr;
157 struct in6_addr faddr;
158 __u8 transport[TRANSNAMSIZ]; /* null term ascii */
159 __u8 flags;
160} __attribute__((packed));
161
143#define RDS_INFO_MESSAGE_FLAG_ACK 0x01 162#define RDS_INFO_MESSAGE_FLAG_ACK 0x01
144#define RDS_INFO_MESSAGE_FLAG_FAST_ACK 0x02 163#define RDS_INFO_MESSAGE_FLAG_FAST_ACK 0x02
145 164
@@ -153,6 +172,17 @@ struct rds_info_message {
153 __u8 flags; 172 __u8 flags;
154} __attribute__((packed)); 173} __attribute__((packed));
155 174
175struct rds6_info_message {
176 __u64 seq;
177 __u32 len;
178 struct in6_addr laddr;
179 struct in6_addr faddr;
180 __be16 lport;
181 __be16 fport;
182 __u8 flags;
183 __u8 tos;
184} __attribute__((packed));
185
156struct rds_info_socket { 186struct rds_info_socket {
157 __u32 sndbuf; 187 __u32 sndbuf;
158 __be32 bound_addr; 188 __be32 bound_addr;
@@ -163,6 +193,16 @@ struct rds_info_socket {
163 __u64 inum; 193 __u64 inum;
164} __attribute__((packed)); 194} __attribute__((packed));
165 195
196struct rds6_info_socket {
197 __u32 sndbuf;
198 struct in6_addr bound_addr;
199 struct in6_addr connected_addr;
200 __be16 bound_port;
201 __be16 connected_port;
202 __u32 rcvbuf;
203 __u64 inum;
204} __attribute__((packed));
205
166struct rds_info_tcp_socket { 206struct rds_info_tcp_socket {
167 __be32 local_addr; 207 __be32 local_addr;
168 __be16 local_port; 208 __be16 local_port;
@@ -175,6 +215,18 @@ struct rds_info_tcp_socket {
175 __u32 last_seen_una; 215 __u32 last_seen_una;
176} __attribute__((packed)); 216} __attribute__((packed));
177 217
218struct rds6_info_tcp_socket {
219 struct in6_addr local_addr;
220 __be16 local_port;
221 struct in6_addr peer_addr;
222 __be16 peer_port;
223 __u64 hdr_rem;
224 __u64 data_rem;
225 __u32 last_sent_nxt;
226 __u32 last_expected_una;
227 __u32 last_seen_una;
228} __attribute__((packed));
229
178#define RDS_IB_GID_LEN 16 230#define RDS_IB_GID_LEN 16
179struct rds_info_rdma_connection { 231struct rds_info_rdma_connection {
180 __be32 src_addr; 232 __be32 src_addr;
@@ -189,6 +241,19 @@ struct rds_info_rdma_connection {
189 __u32 rdma_mr_size; 241 __u32 rdma_mr_size;
190}; 242};
191 243
244struct rds6_info_rdma_connection {
245 struct in6_addr src_addr;
246 struct in6_addr dst_addr;
247 __u8 src_gid[RDS_IB_GID_LEN];
248 __u8 dst_gid[RDS_IB_GID_LEN];
249
250 __u32 max_send_wr;
251 __u32 max_recv_wr;
252 __u32 max_send_sge;
253 __u32 rdma_mr_max;
254 __u32 rdma_mr_size;
255};
256
192/* RDS message Receive Path Latency points */ 257/* RDS message Receive Path Latency points */
193enum rds_message_rxpath_latency { 258enum rds_message_rxpath_latency {
194 RDS_MSG_RX_HDR_TO_DGRAM_START = 0, 259 RDS_MSG_RX_HDR_TO_DGRAM_START = 0,
diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h
index 7d8502313c99..46399367627f 100644
--- a/include/uapi/linux/rtnetlink.h
+++ b/include/uapi/linux/rtnetlink.h
@@ -150,6 +150,13 @@ enum {
150 RTM_NEWCACHEREPORT = 96, 150 RTM_NEWCACHEREPORT = 96,
151#define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT 151#define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT
152 152
153 RTM_NEWCHAIN = 100,
154#define RTM_NEWCHAIN RTM_NEWCHAIN
155 RTM_DELCHAIN,
156#define RTM_DELCHAIN RTM_DELCHAIN
157 RTM_GETCHAIN,
158#define RTM_GETCHAIN RTM_GETCHAIN
159
153 __RTM_MAX, 160 __RTM_MAX,
154#define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1) 161#define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
155}; 162};
diff --git a/include/uapi/linux/sctp.h b/include/uapi/linux/sctp.h
index b64d583bf053..b479db5c71d9 100644
--- a/include/uapi/linux/sctp.h
+++ b/include/uapi/linux/sctp.h
@@ -100,6 +100,7 @@ typedef __s32 sctp_assoc_t;
100#define SCTP_RECVNXTINFO 33 100#define SCTP_RECVNXTINFO 33
101#define SCTP_DEFAULT_SNDINFO 34 101#define SCTP_DEFAULT_SNDINFO 34
102#define SCTP_AUTH_DEACTIVATE_KEY 35 102#define SCTP_AUTH_DEACTIVATE_KEY 35
103#define SCTP_REUSE_PORT 36
103 104
104/* Internal Socket Options. Some of the sctp library functions are 105/* Internal Socket Options. Some of the sctp library functions are
105 * implemented using these socket options. 106 * implemented using these socket options.
@@ -762,6 +763,8 @@ enum sctp_spp_flags {
762 SPP_SACKDELAY_DISABLE = 1<<6, /*Disable SACK*/ 763 SPP_SACKDELAY_DISABLE = 1<<6, /*Disable SACK*/
763 SPP_SACKDELAY = SPP_SACKDELAY_ENABLE | SPP_SACKDELAY_DISABLE, 764 SPP_SACKDELAY = SPP_SACKDELAY_ENABLE | SPP_SACKDELAY_DISABLE,
764 SPP_HB_TIME_IS_ZERO = 1<<7, /* Set HB delay to 0 */ 765 SPP_HB_TIME_IS_ZERO = 1<<7, /* Set HB delay to 0 */
766 SPP_IPV6_FLOWLABEL = 1<<8,
767 SPP_DSCP = 1<<9,
765}; 768};
766 769
767struct sctp_paddrparams { 770struct sctp_paddrparams {
@@ -772,6 +775,8 @@ struct sctp_paddrparams {
772 __u32 spp_pathmtu; 775 __u32 spp_pathmtu;
773 __u32 spp_sackdelay; 776 __u32 spp_sackdelay;
774 __u32 spp_flags; 777 __u32 spp_flags;
778 __u32 spp_ipv6_flowlabel;
779 __u8 spp_dscp;
775} __attribute__((packed, aligned(4))); 780} __attribute__((packed, aligned(4)));
776 781
777/* 782/*
diff --git a/include/uapi/linux/smc_diag.h b/include/uapi/linux/smc_diag.h
index 0ae5d4685ba3..ac9e8c96d9bd 100644
--- a/include/uapi/linux/smc_diag.h
+++ b/include/uapi/linux/smc_diag.h
@@ -20,7 +20,7 @@ struct smc_diag_req {
20struct smc_diag_msg { 20struct smc_diag_msg {
21 __u8 diag_family; 21 __u8 diag_family;
22 __u8 diag_state; 22 __u8 diag_state;
23 __u8 diag_fallback; 23 __u8 diag_mode;
24 __u8 diag_shutdown; 24 __u8 diag_shutdown;
25 struct inet_diag_sockid id; 25 struct inet_diag_sockid id;
26 26
@@ -28,6 +28,13 @@ struct smc_diag_msg {
28 __u64 diag_inode; 28 __u64 diag_inode;
29}; 29};
30 30
31/* Mode of a connection */
32enum {
33 SMC_DIAG_MODE_SMCR,
34 SMC_DIAG_MODE_FALLBACK_TCP,
35 SMC_DIAG_MODE_SMCD,
36};
37
31/* Extensions */ 38/* Extensions */
32 39
33enum { 40enum {
@@ -35,6 +42,8 @@ enum {
35 SMC_DIAG_CONNINFO, 42 SMC_DIAG_CONNINFO,
36 SMC_DIAG_LGRINFO, 43 SMC_DIAG_LGRINFO,
37 SMC_DIAG_SHUTDOWN, 44 SMC_DIAG_SHUTDOWN,
45 SMC_DIAG_DMBINFO,
46 SMC_DIAG_FALLBACK,
38 __SMC_DIAG_MAX, 47 __SMC_DIAG_MAX,
39}; 48};
40 49
@@ -83,4 +92,18 @@ struct smc_diag_lgrinfo {
83 struct smc_diag_linkinfo lnk[1]; 92 struct smc_diag_linkinfo lnk[1];
84 __u8 role; 93 __u8 role;
85}; 94};
95
96struct smc_diag_fallback {
97 __u32 reason;
98 __u32 peer_diagnosis;
99};
100
101struct smcd_diag_dmbinfo { /* SMC-D Socket internals */
102 __u32 linkid; /* Link identifier */
103 __u64 peer_gid; /* Peer GID */
104 __u64 my_gid; /* My GID */
105 __u64 token; /* Token of DMB */
106 __u64 peer_token; /* Token of remote DMBE */
107};
108
86#endif /* _UAPI_SMC_DIAG_H_ */ 109#endif /* _UAPI_SMC_DIAG_H_ */
diff --git a/include/uapi/linux/snmp.h b/include/uapi/linux/snmp.h
index 750d89120335..f80135e5feaa 100644
--- a/include/uapi/linux/snmp.h
+++ b/include/uapi/linux/snmp.h
@@ -56,6 +56,7 @@ enum
56 IPSTATS_MIB_ECT1PKTS, /* InECT1Pkts */ 56 IPSTATS_MIB_ECT1PKTS, /* InECT1Pkts */
57 IPSTATS_MIB_ECT0PKTS, /* InECT0Pkts */ 57 IPSTATS_MIB_ECT0PKTS, /* InECT0Pkts */
58 IPSTATS_MIB_CEPKTS, /* InCEPkts */ 58 IPSTATS_MIB_CEPKTS, /* InCEPkts */
59 IPSTATS_MIB_REASM_OVERLAPS, /* ReasmOverlaps */
59 __IPSTATS_MIB_MAX 60 __IPSTATS_MIB_MAX
60}; 61};
61 62
@@ -279,6 +280,8 @@ enum
279 LINUX_MIB_TCPDELIVERED, /* TCPDelivered */ 280 LINUX_MIB_TCPDELIVERED, /* TCPDelivered */
280 LINUX_MIB_TCPDELIVEREDCE, /* TCPDeliveredCE */ 281 LINUX_MIB_TCPDELIVEREDCE, /* TCPDeliveredCE */
281 LINUX_MIB_TCPACKCOMPRESSED, /* TCPAckCompressed */ 282 LINUX_MIB_TCPACKCOMPRESSED, /* TCPAckCompressed */
283 LINUX_MIB_TCPZEROWINDOWDROP, /* TCPZeroWindowDrop */
284 LINUX_MIB_TCPRCVQDROP, /* TCPRcvQDrop */
282 __LINUX_MIB_MAX 285 __LINUX_MIB_MAX
283}; 286};
284 287
diff --git a/include/uapi/linux/sysctl.h b/include/uapi/linux/sysctl.h
index 6b58371b1f0d..d71013fffaf6 100644
--- a/include/uapi/linux/sysctl.h
+++ b/include/uapi/linux/sysctl.h
@@ -575,7 +575,8 @@ enum {
575 575
576/* /proc/sys/net/ipv6/icmp */ 576/* /proc/sys/net/ipv6/icmp */
577enum { 577enum {
578 NET_IPV6_ICMP_RATELIMIT=1 578 NET_IPV6_ICMP_RATELIMIT = 1,
579 NET_IPV6_ICMP_ECHO_IGNORE_ALL = 2
579}; 580};
580 581
581/* /proc/sys/net/<protocol>/neigh/<dev> */ 582/* /proc/sys/net/<protocol>/neigh/<dev> */
diff --git a/include/uapi/linux/tc_act/tc_pedit.h b/include/uapi/linux/tc_act/tc_pedit.h
index 162d1094c41c..24ec792dacc1 100644
--- a/include/uapi/linux/tc_act/tc_pedit.h
+++ b/include/uapi/linux/tc_act/tc_pedit.h
@@ -17,13 +17,15 @@ enum {
17 TCA_PEDIT_KEY_EX, 17 TCA_PEDIT_KEY_EX,
18 __TCA_PEDIT_MAX 18 __TCA_PEDIT_MAX
19}; 19};
20
20#define TCA_PEDIT_MAX (__TCA_PEDIT_MAX - 1) 21#define TCA_PEDIT_MAX (__TCA_PEDIT_MAX - 1)
21 22
22enum { 23enum {
23 TCA_PEDIT_KEY_EX_HTYPE = 1, 24 TCA_PEDIT_KEY_EX_HTYPE = 1,
24 TCA_PEDIT_KEY_EX_CMD = 2, 25 TCA_PEDIT_KEY_EX_CMD = 2,
25 __TCA_PEDIT_KEY_EX_MAX 26 __TCA_PEDIT_KEY_EX_MAX
26}; 27};
28
27#define TCA_PEDIT_KEY_EX_MAX (__TCA_PEDIT_KEY_EX_MAX - 1) 29#define TCA_PEDIT_KEY_EX_MAX (__TCA_PEDIT_KEY_EX_MAX - 1)
28 30
29 /* TCA_PEDIT_KEY_EX_HDR_TYPE_NETWROK is a special case for legacy users. It 31 /* TCA_PEDIT_KEY_EX_HDR_TYPE_NETWROK is a special case for legacy users. It
@@ -38,6 +40,7 @@ enum pedit_header_type {
38 TCA_PEDIT_KEY_EX_HDR_TYPE_UDP = 5, 40 TCA_PEDIT_KEY_EX_HDR_TYPE_UDP = 5,
39 __PEDIT_HDR_TYPE_MAX, 41 __PEDIT_HDR_TYPE_MAX,
40}; 42};
43
41#define TCA_PEDIT_HDR_TYPE_MAX (__PEDIT_HDR_TYPE_MAX - 1) 44#define TCA_PEDIT_HDR_TYPE_MAX (__PEDIT_HDR_TYPE_MAX - 1)
42 45
43enum pedit_cmd { 46enum pedit_cmd {
@@ -45,6 +48,7 @@ enum pedit_cmd {
45 TCA_PEDIT_KEY_EX_CMD_ADD = 1, 48 TCA_PEDIT_KEY_EX_CMD_ADD = 1,
46 __PEDIT_CMD_MAX, 49 __PEDIT_CMD_MAX,
47}; 50};
51
48#define TCA_PEDIT_CMD_MAX (__PEDIT_CMD_MAX - 1) 52#define TCA_PEDIT_CMD_MAX (__PEDIT_CMD_MAX - 1)
49 53
50struct tc_pedit_key { 54struct tc_pedit_key {
@@ -55,13 +59,14 @@ struct tc_pedit_key {
55 __u32 offmask; 59 __u32 offmask;
56 __u32 shift; 60 __u32 shift;
57}; 61};
58 62
59struct tc_pedit_sel { 63struct tc_pedit_sel {
60 tc_gen; 64 tc_gen;
61 unsigned char nkeys; 65 unsigned char nkeys;
62 unsigned char flags; 66 unsigned char flags;
63 struct tc_pedit_key keys[0]; 67 struct tc_pedit_key keys[0];
64}; 68};
69
65#define tc_pedit tc_pedit_sel 70#define tc_pedit tc_pedit_sel
66 71
67#endif 72#endif
diff --git a/include/uapi/linux/tc_act/tc_skbedit.h b/include/uapi/linux/tc_act/tc_skbedit.h
index fbcfe27a4e6c..6de6071ebed6 100644
--- a/include/uapi/linux/tc_act/tc_skbedit.h
+++ b/include/uapi/linux/tc_act/tc_skbedit.h
@@ -30,6 +30,7 @@
30#define SKBEDIT_F_MARK 0x4 30#define SKBEDIT_F_MARK 0x4
31#define SKBEDIT_F_PTYPE 0x8 31#define SKBEDIT_F_PTYPE 0x8
32#define SKBEDIT_F_MASK 0x10 32#define SKBEDIT_F_MASK 0x10
33#define SKBEDIT_F_INHERITDSFIELD 0x20
33 34
34struct tc_skbedit { 35struct tc_skbedit {
35 tc_gen; 36 tc_gen;
@@ -45,6 +46,7 @@ enum {
45 TCA_SKBEDIT_PAD, 46 TCA_SKBEDIT_PAD,
46 TCA_SKBEDIT_PTYPE, 47 TCA_SKBEDIT_PTYPE,
47 TCA_SKBEDIT_MASK, 48 TCA_SKBEDIT_MASK,
49 TCA_SKBEDIT_FLAGS,
48 __TCA_SKBEDIT_MAX 50 __TCA_SKBEDIT_MAX
49}; 51};
50#define TCA_SKBEDIT_MAX (__TCA_SKBEDIT_MAX - 1) 52#define TCA_SKBEDIT_MAX (__TCA_SKBEDIT_MAX - 1)
diff --git a/include/uapi/linux/tc_act/tc_tunnel_key.h b/include/uapi/linux/tc_act/tc_tunnel_key.h
index 72bbefe5d1d1..be384d63e1b5 100644
--- a/include/uapi/linux/tc_act/tc_tunnel_key.h
+++ b/include/uapi/linux/tc_act/tc_tunnel_key.h
@@ -36,9 +36,37 @@ enum {
36 TCA_TUNNEL_KEY_PAD, 36 TCA_TUNNEL_KEY_PAD,
37 TCA_TUNNEL_KEY_ENC_DST_PORT, /* be16 */ 37 TCA_TUNNEL_KEY_ENC_DST_PORT, /* be16 */
38 TCA_TUNNEL_KEY_NO_CSUM, /* u8 */ 38 TCA_TUNNEL_KEY_NO_CSUM, /* u8 */
39 TCA_TUNNEL_KEY_ENC_OPTS, /* Nested TCA_TUNNEL_KEY_ENC_OPTS_
40 * attributes
41 */
42 TCA_TUNNEL_KEY_ENC_TOS, /* u8 */
43 TCA_TUNNEL_KEY_ENC_TTL, /* u8 */
39 __TCA_TUNNEL_KEY_MAX, 44 __TCA_TUNNEL_KEY_MAX,
40}; 45};
41 46
42#define TCA_TUNNEL_KEY_MAX (__TCA_TUNNEL_KEY_MAX - 1) 47#define TCA_TUNNEL_KEY_MAX (__TCA_TUNNEL_KEY_MAX - 1)
43 48
49enum {
50 TCA_TUNNEL_KEY_ENC_OPTS_UNSPEC,
51 TCA_TUNNEL_KEY_ENC_OPTS_GENEVE, /* Nested
52 * TCA_TUNNEL_KEY_ENC_OPTS_
53 * attributes
54 */
55 __TCA_TUNNEL_KEY_ENC_OPTS_MAX,
56};
57
58#define TCA_TUNNEL_KEY_ENC_OPTS_MAX (__TCA_TUNNEL_KEY_ENC_OPTS_MAX - 1)
59
60enum {
61 TCA_TUNNEL_KEY_ENC_OPT_GENEVE_UNSPEC,
62 TCA_TUNNEL_KEY_ENC_OPT_GENEVE_CLASS, /* be16 */
63 TCA_TUNNEL_KEY_ENC_OPT_GENEVE_TYPE, /* u8 */
64 TCA_TUNNEL_KEY_ENC_OPT_GENEVE_DATA, /* 4 to 128 bytes */
65
66 __TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX,
67};
68
69#define TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX \
70 (__TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX - 1)
71
44#endif 72#endif
diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h
index e3f6ed8a7064..e02d31986ff9 100644
--- a/include/uapi/linux/tcp.h
+++ b/include/uapi/linux/tcp.h
@@ -235,6 +235,11 @@ struct tcp_info {
235 235
236 __u32 tcpi_delivered; 236 __u32 tcpi_delivered;
237 __u32 tcpi_delivered_ce; 237 __u32 tcpi_delivered_ce;
238
239 __u64 tcpi_bytes_sent; /* RFC4898 tcpEStatsPerfHCDataOctetsOut */
240 __u64 tcpi_bytes_retrans; /* RFC4898 tcpEStatsPerfOctetsRetrans */
241 __u32 tcpi_dsack_dups; /* RFC4898 tcpEStatsStackDSACKDups */
242 __u32 tcpi_reord_seen; /* reordering events seen */
238}; 243};
239 244
240/* netlink attributes types for SCM_TIMESTAMPING_OPT_STATS */ 245/* netlink attributes types for SCM_TIMESTAMPING_OPT_STATS */
@@ -257,7 +262,10 @@ enum {
257 TCP_NLA_SND_SSTHRESH, /* Slow start size threshold */ 262 TCP_NLA_SND_SSTHRESH, /* Slow start size threshold */
258 TCP_NLA_DELIVERED, /* Data pkts delivered incl. out-of-order */ 263 TCP_NLA_DELIVERED, /* Data pkts delivered incl. out-of-order */
259 TCP_NLA_DELIVERED_CE, /* Like above but only ones w/ CE marks */ 264 TCP_NLA_DELIVERED_CE, /* Like above but only ones w/ CE marks */
260 265 TCP_NLA_BYTES_SENT, /* Data bytes sent including retransmission */
266 TCP_NLA_BYTES_RETRANS, /* Data bytes retransmitted */
267 TCP_NLA_DSACK_DUPS, /* DSACK blocks received */
268 TCP_NLA_REORD_SEEN, /* reordering events seen */
261}; 269};
262 270
263/* for TCP_MD5SIG socket option */ 271/* for TCP_MD5SIG socket option */
diff --git a/include/uapi/linux/tipc_netlink.h b/include/uapi/linux/tipc_netlink.h
index 85c11982c89b..0ebe02ef1a86 100644
--- a/include/uapi/linux/tipc_netlink.h
+++ b/include/uapi/linux/tipc_netlink.h
@@ -121,6 +121,7 @@ enum {
121 TIPC_NLA_SOCK_TIPC_STATE, /* u32 */ 121 TIPC_NLA_SOCK_TIPC_STATE, /* u32 */
122 TIPC_NLA_SOCK_COOKIE, /* u64 */ 122 TIPC_NLA_SOCK_COOKIE, /* u64 */
123 TIPC_NLA_SOCK_PAD, /* flag */ 123 TIPC_NLA_SOCK_PAD, /* flag */
124 TIPC_NLA_SOCK_GROUP, /* nest */
124 125
125 __TIPC_NLA_SOCK_MAX, 126 __TIPC_NLA_SOCK_MAX,
126 TIPC_NLA_SOCK_MAX = __TIPC_NLA_SOCK_MAX - 1 127 TIPC_NLA_SOCK_MAX = __TIPC_NLA_SOCK_MAX - 1
@@ -233,6 +234,19 @@ enum {
233 TIPC_NLA_MON_PEER_MAX = __TIPC_NLA_MON_PEER_MAX - 1 234 TIPC_NLA_MON_PEER_MAX = __TIPC_NLA_MON_PEER_MAX - 1
234}; 235};
235 236
237/* Nest, socket group info */
238enum {
239 TIPC_NLA_SOCK_GROUP_ID, /* u32 */
240 TIPC_NLA_SOCK_GROUP_OPEN, /* flag */
241 TIPC_NLA_SOCK_GROUP_NODE_SCOPE, /* flag */
242 TIPC_NLA_SOCK_GROUP_CLUSTER_SCOPE, /* flag */
243 TIPC_NLA_SOCK_GROUP_INSTANCE, /* u32 */
244 TIPC_NLA_SOCK_GROUP_BC_SEND_NEXT, /* u32 */
245
246 __TIPC_NLA_SOCK_GROUP_MAX,
247 TIPC_NLA_SOCK_GROUP_MAX = __TIPC_NLA_SOCK_GROUP_MAX - 1
248};
249
236/* Nest, connection info */ 250/* Nest, connection info */
237enum { 251enum {
238 TIPC_NLA_CON_UNSPEC, 252 TIPC_NLA_CON_UNSPEC,
diff --git a/include/uapi/linux/vhost.h b/include/uapi/linux/vhost.h
index c51f8e5cc608..b1e22c40c4b6 100644
--- a/include/uapi/linux/vhost.h
+++ b/include/uapi/linux/vhost.h
@@ -65,6 +65,7 @@ struct vhost_iotlb_msg {
65}; 65};
66 66
67#define VHOST_IOTLB_MSG 0x1 67#define VHOST_IOTLB_MSG 0x1
68#define VHOST_IOTLB_MSG_V2 0x2
68 69
69struct vhost_msg { 70struct vhost_msg {
70 int type; 71 int type;
@@ -74,6 +75,15 @@ struct vhost_msg {
74 }; 75 };
75}; 76};
76 77
78struct vhost_msg_v2 {
79 __u32 type;
80 __u32 reserved;
81 union {
82 struct vhost_iotlb_msg iotlb;
83 __u8 padding[64];
84 };
85};
86
77struct vhost_memory_region { 87struct vhost_memory_region {
78 __u64 guest_phys_addr; 88 __u64 guest_phys_addr;
79 __u64 memory_size; /* bytes */ 89 __u64 memory_size; /* bytes */
@@ -160,6 +170,14 @@ struct vhost_memory {
160#define VHOST_GET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x24, \ 170#define VHOST_GET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x24, \
161 struct vhost_vring_state) 171 struct vhost_vring_state)
162 172
173/* Set or get vhost backend capability */
174
175/* Use message type V2 */
176#define VHOST_BACKEND_F_IOTLB_MSG_V2 0x1
177
178#define VHOST_SET_BACKEND_FEATURES _IOW(VHOST_VIRTIO, 0x25, __u64)
179#define VHOST_GET_BACKEND_FEATURES _IOW(VHOST_VIRTIO, 0x26, __u64)
180
163/* VHOST_NET specific defines */ 181/* VHOST_NET specific defines */
164 182
165/* Attach virtio net ring to a raw socket, or tap device. 183/* Attach virtio net ring to a raw socket, or tap device.
diff --git a/include/uapi/linux/xfrm.h b/include/uapi/linux/xfrm.h
index e3af2859188b..5f3b9fec7b5f 100644
--- a/include/uapi/linux/xfrm.h
+++ b/include/uapi/linux/xfrm.h
@@ -305,9 +305,12 @@ enum xfrm_attr_type_t {
305 XFRMA_ADDRESS_FILTER, /* struct xfrm_address_filter */ 305 XFRMA_ADDRESS_FILTER, /* struct xfrm_address_filter */
306 XFRMA_PAD, 306 XFRMA_PAD,
307 XFRMA_OFFLOAD_DEV, /* struct xfrm_state_offload */ 307 XFRMA_OFFLOAD_DEV, /* struct xfrm_state_offload */
308 XFRMA_OUTPUT_MARK, /* __u32 */ 308 XFRMA_SET_MARK, /* __u32 */
309 XFRMA_SET_MARK_MASK, /* __u32 */
310 XFRMA_IF_ID, /* __u32 */
309 __XFRMA_MAX 311 __XFRMA_MAX
310 312
313#define XFRMA_OUTPUT_MARK XFRMA_SET_MARK /* Compatibility */
311#define XFRMA_MAX (__XFRMA_MAX - 1) 314#define XFRMA_MAX (__XFRMA_MAX - 1)
312}; 315};
313 316