aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi/linux
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-10-05 13:11:24 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-10-05 13:11:24 -0400
commit687ee0ad4e897e29f4b41f7a20c866d74c5e0660 (patch)
treeb31a2af35c24a54823674cdd126993b80daeac67 /include/uapi/linux
parent3ddf40e8c31964b744ff10abb48c8e36a83ec6e7 (diff)
parent03a1eabc3f54469abd4f1784182851b2e29630cc (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
Pull networking updates from David Miller: 1) BBR TCP congestion control, from Neal Cardwell, Yuchung Cheng and co. at Google. https://lwn.net/Articles/701165/ 2) Do TCP Small Queues for retransmits, from Eric Dumazet. 3) Support collect_md mode for all IPV4 and IPV6 tunnels, from Alexei Starovoitov. 4) Allow cls_flower to classify packets in ip tunnels, from Amir Vadai. 5) Support DSA tagging in older mv88e6xxx switches, from Andrew Lunn. 6) Support GMAC protocol in iwlwifi mwm, from Ayala Beker. 7) Support ndo_poll_controller in mlx5, from Calvin Owens. 8) Move VRF processing to an output hook and allow l3mdev to be loopback, from David Ahern. 9) Support SOCK_DESTROY for UDP sockets. Also from David Ahern. 10) Congestion control in RXRPC, from David Howells. 11) Support geneve RX offload in ixgbe, from Emil Tantilov. 12) When hitting pressure for new incoming TCP data SKBs, perform a partial rathern than a full purge of the OFO queue (which could be huge). From Eric Dumazet. 13) Convert XFRM state and policy lookups to RCU, from Florian Westphal. 14) Support RX network flow classification to igb, from Gangfeng Huang. 15) Hardware offloading of eBPF in nfp driver, from Jakub Kicinski. 16) New skbmod packet action, from Jamal Hadi Salim. 17) Remove some inefficiencies in snmp proc output, from Jia He. 18) Add FIB notifications to properly propagate route changes to hardware which is doing forwarding offloading. From Jiri Pirko. 19) New dsa driver for qca8xxx chips, from John Crispin. 20) Implement RFC7559 ipv6 router solicitation backoff, from Maciej Żenczykowski. 21) Add L3 mode to ipvlan, from Mahesh Bandewar. 22) Support 802.1ad in mlx4, from Moshe Shemesh. 23) Support hardware LRO in mediatek driver, from Nelson Chang. 24) Add TC offloading to mlx5, from Or Gerlitz. 25) Convert various drivers to ethtool ksettings interfaces, from Philippe Reynes. 26) TX max rate limiting for cxgb4, from Rahul Lakkireddy. 27) NAPI support for ath10k, from Rajkumar Manoharan. 28) Support XDP in mlx5, from Rana Shahout and Saeed Mahameed. 29) UDP replicast support in TIPC, from Richard Alpe. 30) Per-queue statistics for qed driver, from Sudarsana Reddy Kalluru. 31) Support BQL in thunderx driver, from Sunil Goutham. 32) TSO support in alx driver, from Tobias Regnery. 33) Add stream parser engine and use it in kcm. 34) Support async DHCP replies in ipconfig module, from Uwe Kleine-König. 35) DSA port fast aging for mv88e6xxx driver, from Vivien Didelot. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1715 commits) mlxsw: switchx2: Fix misuse of hard_header_len mlxsw: spectrum: Fix misuse of hard_header_len net/faraday: Stop NCSI device on shutdown net/ncsi: Introduce ncsi_stop_dev() net/ncsi: Rework the channel monitoring net/ncsi: Allow to extend NCSI request properties net/ncsi: Rework request index allocation net/ncsi: Don't probe on the reserved channel ID (0x1f) net/ncsi: Introduce NCSI_RESERVED_CHANNEL net/ncsi: Avoid unused-value build warning from ia64-linux-gcc net: Add netdev all_adj_list refcnt propagation to fix panic net: phy: Add Edge-rate driver for Microsemi PHYs. vmxnet3: Wake queue from reset work i40e: avoid NULL pointer dereference and recursive errors on early PCI error qed: Add RoCE ll2 & GSI support qed: Add support for memory registeration verbs qed: Add support for QP verbs qed: PD,PKEY and CQ verb support qed: Add support for RoCE hw init qede: Add qedr framework ...
Diffstat (limited to 'include/uapi/linux')
-rw-r--r--include/uapi/linux/Kbuild1
-rw-r--r--include/uapi/linux/batman_adv.h94
-rw-r--r--include/uapi/linux/bpf.h51
-rw-r--r--include/uapi/linux/bpf_perf_event.h18
-rw-r--r--include/uapi/linux/ethtool.h11
-rw-r--r--include/uapi/linux/if_bridge.h2
-rw-r--r--include/uapi/linux/if_link.h30
-rw-r--r--include/uapi/linux/if_tunnel.h17
-rw-r--r--include/uapi/linux/inet_diag.h20
-rw-r--r--include/uapi/linux/ipv6.h1
-rw-r--r--include/uapi/linux/mii.h1
-rw-r--r--include/uapi/linux/netfilter/nf_log.h12
-rw-r--r--include/uapi/linux/netfilter/nf_tables.h106
-rw-r--r--include/uapi/linux/netfilter/nfnetlink_conntrack.h8
-rw-r--r--include/uapi/linux/netfilter/xt_hashlimit.h23
-rw-r--r--include/uapi/linux/nl80211.h270
-rw-r--r--include/uapi/linux/openvswitch.h17
-rw-r--r--include/uapi/linux/pkt_cls.h19
-rw-r--r--include/uapi/linux/pkt_sched.h4
-rw-r--r--include/uapi/linux/snmp.h1
-rw-r--r--include/uapi/linux/tc_act/tc_ife.h3
-rw-r--r--include/uapi/linux/tc_act/tc_skbmod.h39
-rw-r--r--include/uapi/linux/tc_act/tc_tunnel_key.h41
-rw-r--r--include/uapi/linux/tc_act/tc_vlan.h2
-rw-r--r--include/uapi/linux/tcp.h3
-rw-r--r--include/uapi/linux/tipc_netlink.h4
-rw-r--r--include/uapi/linux/xfrm.h2
27 files changed, 778 insertions, 22 deletions
diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild
index 185f8ea2702f..d0352a971ebd 100644
--- a/include/uapi/linux/Kbuild
+++ b/include/uapi/linux/Kbuild
@@ -71,6 +71,7 @@ header-y += binfmts.h
71header-y += blkpg.h 71header-y += blkpg.h
72header-y += blktrace_api.h 72header-y += blktrace_api.h
73header-y += bpf_common.h 73header-y += bpf_common.h
74header-y += bpf_perf_event.h
74header-y += bpf.h 75header-y += bpf.h
75header-y += bpqether.h 76header-y += bpqether.h
76header-y += bsg.h 77header-y += bsg.h
diff --git a/include/uapi/linux/batman_adv.h b/include/uapi/linux/batman_adv.h
index 0fbf6fd4711b..734fe83ab645 100644
--- a/include/uapi/linux/batman_adv.h
+++ b/include/uapi/linux/batman_adv.h
@@ -23,6 +23,42 @@
23#define BATADV_NL_MCAST_GROUP_TPMETER "tpmeter" 23#define BATADV_NL_MCAST_GROUP_TPMETER "tpmeter"
24 24
25/** 25/**
26 * enum batadv_tt_client_flags - TT client specific flags
27 * @BATADV_TT_CLIENT_DEL: the client has to be deleted from the table
28 * @BATADV_TT_CLIENT_ROAM: the client roamed to/from another node and the new
29 * update telling its new real location has not been received/sent yet
30 * @BATADV_TT_CLIENT_WIFI: this client is connected through a wifi interface.
31 * This information is used by the "AP Isolation" feature
32 * @BATADV_TT_CLIENT_ISOLA: this client is considered "isolated". This
33 * information is used by the Extended Isolation feature
34 * @BATADV_TT_CLIENT_NOPURGE: this client should never be removed from the table
35 * @BATADV_TT_CLIENT_NEW: this client has been added to the local table but has
36 * not been announced yet
37 * @BATADV_TT_CLIENT_PENDING: this client is marked for removal but it is kept
38 * in the table for one more originator interval for consistency purposes
39 * @BATADV_TT_CLIENT_TEMP: this global client has been detected to be part of
40 * the network but no nnode has already announced it
41 *
42 * Bits from 0 to 7 are called _remote flags_ because they are sent on the wire.
43 * Bits from 8 to 15 are called _local flags_ because they are used for local
44 * computations only.
45 *
46 * Bits from 4 to 7 - a subset of remote flags - are ensured to be in sync with
47 * the other nodes in the network. To achieve this goal these flags are included
48 * in the TT CRC computation.
49 */
50enum batadv_tt_client_flags {
51 BATADV_TT_CLIENT_DEL = (1 << 0),
52 BATADV_TT_CLIENT_ROAM = (1 << 1),
53 BATADV_TT_CLIENT_WIFI = (1 << 4),
54 BATADV_TT_CLIENT_ISOLA = (1 << 5),
55 BATADV_TT_CLIENT_NOPURGE = (1 << 8),
56 BATADV_TT_CLIENT_NEW = (1 << 9),
57 BATADV_TT_CLIENT_PENDING = (1 << 10),
58 BATADV_TT_CLIENT_TEMP = (1 << 11),
59};
60
61/**
26 * enum batadv_nl_attrs - batman-adv netlink attributes 62 * enum batadv_nl_attrs - batman-adv netlink attributes
27 * 63 *
28 * @BATADV_ATTR_UNSPEC: unspecified attribute to catch errors 64 * @BATADV_ATTR_UNSPEC: unspecified attribute to catch errors
@@ -40,6 +76,26 @@
40 * @BATADV_ATTR_TPMETER_BYTES: amount of acked bytes during run 76 * @BATADV_ATTR_TPMETER_BYTES: amount of acked bytes during run
41 * @BATADV_ATTR_TPMETER_COOKIE: session cookie to match tp_meter session 77 * @BATADV_ATTR_TPMETER_COOKIE: session cookie to match tp_meter session
42 * @BATADV_ATTR_PAD: attribute used for padding for 64-bit alignment 78 * @BATADV_ATTR_PAD: attribute used for padding for 64-bit alignment
79 * @BATADV_ATTR_ACTIVE: Flag indicating if the hard interface is active
80 * @BATADV_ATTR_TT_ADDRESS: Client MAC address
81 * @BATADV_ATTR_TT_TTVN: Translation table version
82 * @BATADV_ATTR_TT_LAST_TTVN: Previous translation table version
83 * @BATADV_ATTR_TT_CRC32: CRC32 over translation table
84 * @BATADV_ATTR_TT_VID: VLAN ID
85 * @BATADV_ATTR_TT_FLAGS: Translation table client flags
86 * @BATADV_ATTR_FLAG_BEST: Flags indicating entry is the best
87 * @BATADV_ATTR_LAST_SEEN_MSECS: Time in milliseconds since last seen
88 * @BATADV_ATTR_NEIGH_ADDRESS: Neighbour MAC address
89 * @BATADV_ATTR_TQ: TQ to neighbour
90 * @BATADV_ATTR_THROUGHPUT: Estimated throughput to Neighbour
91 * @BATADV_ATTR_BANDWIDTH_UP: Reported uplink bandwidth
92 * @BATADV_ATTR_BANDWIDTH_DOWN: Reported downlink bandwidth
93 * @BATADV_ATTR_ROUTER: Gateway router MAC address
94 * @BATADV_ATTR_BLA_OWN: Flag indicating own originator
95 * @BATADV_ATTR_BLA_ADDRESS: Bridge loop avoidance claim MAC address
96 * @BATADV_ATTR_BLA_VID: BLA VLAN ID
97 * @BATADV_ATTR_BLA_BACKBONE: BLA gateway originator MAC address
98 * @BATADV_ATTR_BLA_CRC: BLA CRC
43 * @__BATADV_ATTR_AFTER_LAST: internal use 99 * @__BATADV_ATTR_AFTER_LAST: internal use
44 * @NUM_BATADV_ATTR: total number of batadv_nl_attrs available 100 * @NUM_BATADV_ATTR: total number of batadv_nl_attrs available
45 * @BATADV_ATTR_MAX: highest attribute number currently defined 101 * @BATADV_ATTR_MAX: highest attribute number currently defined
@@ -60,6 +116,26 @@ enum batadv_nl_attrs {
60 BATADV_ATTR_TPMETER_BYTES, 116 BATADV_ATTR_TPMETER_BYTES,
61 BATADV_ATTR_TPMETER_COOKIE, 117 BATADV_ATTR_TPMETER_COOKIE,
62 BATADV_ATTR_PAD, 118 BATADV_ATTR_PAD,
119 BATADV_ATTR_ACTIVE,
120 BATADV_ATTR_TT_ADDRESS,
121 BATADV_ATTR_TT_TTVN,
122 BATADV_ATTR_TT_LAST_TTVN,
123 BATADV_ATTR_TT_CRC32,
124 BATADV_ATTR_TT_VID,
125 BATADV_ATTR_TT_FLAGS,
126 BATADV_ATTR_FLAG_BEST,
127 BATADV_ATTR_LAST_SEEN_MSECS,
128 BATADV_ATTR_NEIGH_ADDRESS,
129 BATADV_ATTR_TQ,
130 BATADV_ATTR_THROUGHPUT,
131 BATADV_ATTR_BANDWIDTH_UP,
132 BATADV_ATTR_BANDWIDTH_DOWN,
133 BATADV_ATTR_ROUTER,
134 BATADV_ATTR_BLA_OWN,
135 BATADV_ATTR_BLA_ADDRESS,
136 BATADV_ATTR_BLA_VID,
137 BATADV_ATTR_BLA_BACKBONE,
138 BATADV_ATTR_BLA_CRC,
63 /* add attributes above here, update the policy in netlink.c */ 139 /* add attributes above here, update the policy in netlink.c */
64 __BATADV_ATTR_AFTER_LAST, 140 __BATADV_ATTR_AFTER_LAST,
65 NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST, 141 NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST,
@@ -73,6 +149,15 @@ enum batadv_nl_attrs {
73 * @BATADV_CMD_GET_MESH_INFO: Query basic information about batman-adv device 149 * @BATADV_CMD_GET_MESH_INFO: Query basic information about batman-adv device
74 * @BATADV_CMD_TP_METER: Start a tp meter session 150 * @BATADV_CMD_TP_METER: Start a tp meter session
75 * @BATADV_CMD_TP_METER_CANCEL: Cancel a tp meter session 151 * @BATADV_CMD_TP_METER_CANCEL: Cancel a tp meter session
152 * @BATADV_CMD_GET_ROUTING_ALGOS: Query the list of routing algorithms.
153 * @BATADV_CMD_GET_HARDIFS: Query list of hard interfaces
154 * @BATADV_CMD_GET_TRANSTABLE_LOCAL: Query list of local translations
155 * @BATADV_CMD_GET_TRANSTABLE_GLOBAL Query list of global translations
156 * @BATADV_CMD_GET_ORIGINATORS: Query list of originators
157 * @BATADV_CMD_GET_NEIGHBORS: Query list of neighbours
158 * @BATADV_CMD_GET_GATEWAYS: Query list of gateways
159 * @BATADV_CMD_GET_BLA_CLAIM: Query list of bridge loop avoidance claims
160 * @BATADV_CMD_GET_BLA_BACKBONE: Query list of bridge loop avoidance backbones
76 * @__BATADV_CMD_AFTER_LAST: internal use 161 * @__BATADV_CMD_AFTER_LAST: internal use
77 * @BATADV_CMD_MAX: highest used command number 162 * @BATADV_CMD_MAX: highest used command number
78 */ 163 */
@@ -81,6 +166,15 @@ enum batadv_nl_commands {
81 BATADV_CMD_GET_MESH_INFO, 166 BATADV_CMD_GET_MESH_INFO,
82 BATADV_CMD_TP_METER, 167 BATADV_CMD_TP_METER,
83 BATADV_CMD_TP_METER_CANCEL, 168 BATADV_CMD_TP_METER_CANCEL,
169 BATADV_CMD_GET_ROUTING_ALGOS,
170 BATADV_CMD_GET_HARDIFS,
171 BATADV_CMD_GET_TRANSTABLE_LOCAL,
172 BATADV_CMD_GET_TRANSTABLE_GLOBAL,
173 BATADV_CMD_GET_ORIGINATORS,
174 BATADV_CMD_GET_NEIGHBORS,
175 BATADV_CMD_GET_GATEWAYS,
176 BATADV_CMD_GET_BLA_CLAIM,
177 BATADV_CMD_GET_BLA_BACKBONE,
84 /* add new commands above here */ 178 /* add new commands above here */
85 __BATADV_CMD_AFTER_LAST, 179 __BATADV_CMD_AFTER_LAST,
86 BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1 180 BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index 9e5fc168c8a3..f09c70b97eca 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -95,6 +95,7 @@ enum bpf_prog_type {
95 BPF_PROG_TYPE_SCHED_ACT, 95 BPF_PROG_TYPE_SCHED_ACT,
96 BPF_PROG_TYPE_TRACEPOINT, 96 BPF_PROG_TYPE_TRACEPOINT,
97 BPF_PROG_TYPE_XDP, 97 BPF_PROG_TYPE_XDP,
98 BPF_PROG_TYPE_PERF_EVENT,
98}; 99};
99 100
100#define BPF_PSEUDO_MAP_FD 1 101#define BPF_PSEUDO_MAP_FD 1
@@ -375,6 +376,56 @@ enum bpf_func_id {
375 */ 376 */
376 BPF_FUNC_probe_write_user, 377 BPF_FUNC_probe_write_user,
377 378
379 /**
380 * bpf_current_task_under_cgroup(map, index) - Check cgroup2 membership of current task
381 * @map: pointer to bpf_map in BPF_MAP_TYPE_CGROUP_ARRAY type
382 * @index: index of the cgroup in the bpf_map
383 * Return:
384 * == 0 current failed the cgroup2 descendant test
385 * == 1 current succeeded the cgroup2 descendant test
386 * < 0 error
387 */
388 BPF_FUNC_current_task_under_cgroup,
389
390 /**
391 * bpf_skb_change_tail(skb, len, flags)
392 * The helper will resize the skb to the given new size,
393 * to be used f.e. with control messages.
394 * @skb: pointer to skb
395 * @len: new skb length
396 * @flags: reserved
397 * Return: 0 on success or negative error
398 */
399 BPF_FUNC_skb_change_tail,
400
401 /**
402 * bpf_skb_pull_data(skb, len)
403 * The helper will pull in non-linear data in case the
404 * skb is non-linear and not all of len are part of the
405 * linear section. Only needed for read/write with direct
406 * packet access.
407 * @skb: pointer to skb
408 * @len: len to make read/writeable
409 * Return: 0 on success or negative error
410 */
411 BPF_FUNC_skb_pull_data,
412
413 /**
414 * bpf_csum_update(skb, csum)
415 * Adds csum into skb->csum in case of CHECKSUM_COMPLETE.
416 * @skb: pointer to skb
417 * @csum: csum to add
418 * Return: csum on success or negative error
419 */
420 BPF_FUNC_csum_update,
421
422 /**
423 * bpf_set_hash_invalid(skb)
424 * Invalidate current skb>hash.
425 * @skb: pointer to skb
426 */
427 BPF_FUNC_set_hash_invalid,
428
378 __BPF_FUNC_MAX_ID, 429 __BPF_FUNC_MAX_ID,
379}; 430};
380 431
diff --git a/include/uapi/linux/bpf_perf_event.h b/include/uapi/linux/bpf_perf_event.h
new file mode 100644
index 000000000000..067427259820
--- /dev/null
+++ b/include/uapi/linux/bpf_perf_event.h
@@ -0,0 +1,18 @@
1/* Copyright (c) 2016 Facebook
2 *
3 * This program is free software; you can redistribute it and/or
4 * modify it under the terms of version 2 of the GNU General Public
5 * License as published by the Free Software Foundation.
6 */
7#ifndef _UAPI__LINUX_BPF_PERF_EVENT_H__
8#define _UAPI__LINUX_BPF_PERF_EVENT_H__
9
10#include <linux/types.h>
11#include <linux/ptrace.h>
12
13struct bpf_perf_event_data {
14 struct pt_regs regs;
15 __u64 sample_period;
16};
17
18#endif /* _UAPI__LINUX_BPF_PERF_EVENT_H__ */
diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h
index b8f38e84d93a..099a4200732c 100644
--- a/include/uapi/linux/ethtool.h
+++ b/include/uapi/linux/ethtool.h
@@ -1362,7 +1362,14 @@ enum ethtool_link_mode_bit_indices {
1362 ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT = 37, 1362 ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT = 37,
1363 ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT = 38, 1363 ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT = 38,
1364 ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT = 39, 1364 ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT = 39,
1365 ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT = 40, 1365 ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT = 40,
1366 ETHTOOL_LINK_MODE_1000baseX_Full_BIT = 41,
1367 ETHTOOL_LINK_MODE_10000baseCR_Full_BIT = 42,
1368 ETHTOOL_LINK_MODE_10000baseSR_Full_BIT = 43,
1369 ETHTOOL_LINK_MODE_10000baseLR_Full_BIT = 44,
1370 ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT = 45,
1371 ETHTOOL_LINK_MODE_10000baseER_Full_BIT = 46,
1372
1366 1373
1367 /* Last allowed bit for __ETHTOOL_LINK_MODE_LEGACY_MASK is bit 1374 /* Last allowed bit for __ETHTOOL_LINK_MODE_LEGACY_MASK is bit
1368 * 31. Please do NOT define any SUPPORTED_* or ADVERTISED_* 1375 * 31. Please do NOT define any SUPPORTED_* or ADVERTISED_*
@@ -1371,7 +1378,7 @@ enum ethtool_link_mode_bit_indices {
1371 */ 1378 */
1372 1379
1373 __ETHTOOL_LINK_MODE_LAST 1380 __ETHTOOL_LINK_MODE_LAST
1374 = ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT, 1381 = ETHTOOL_LINK_MODE_10000baseER_Full_BIT,
1375}; 1382};
1376 1383
1377#define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name) \ 1384#define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name) \
diff --git a/include/uapi/linux/if_bridge.h b/include/uapi/linux/if_bridge.h
index c186f64fffca..ab92bca6d448 100644
--- a/include/uapi/linux/if_bridge.h
+++ b/include/uapi/linux/if_bridge.h
@@ -140,7 +140,7 @@ struct bridge_vlan_xstats {
140 __u64 tx_bytes; 140 __u64 tx_bytes;
141 __u64 tx_packets; 141 __u64 tx_packets;
142 __u16 vid; 142 __u16 vid;
143 __u16 pad1; 143 __u16 flags;
144 __u32 pad2; 144 __u32 pad2;
145}; 145};
146 146
diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
index a1b5202c5f6b..b4fba662cd32 100644
--- a/include/uapi/linux/if_link.h
+++ b/include/uapi/linux/if_link.h
@@ -318,6 +318,7 @@ enum {
318 IFLA_BRPORT_FLUSH, 318 IFLA_BRPORT_FLUSH,
319 IFLA_BRPORT_MULTICAST_ROUTER, 319 IFLA_BRPORT_MULTICAST_ROUTER,
320 IFLA_BRPORT_PAD, 320 IFLA_BRPORT_PAD,
321 IFLA_BRPORT_MCAST_FLOOD,
321 __IFLA_BRPORT_MAX 322 __IFLA_BRPORT_MAX
322}; 323};
323#define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1) 324#define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
@@ -463,6 +464,7 @@ enum {
463enum ipvlan_mode { 464enum ipvlan_mode {
464 IPVLAN_MODE_L2 = 0, 465 IPVLAN_MODE_L2 = 0,
465 IPVLAN_MODE_L3, 466 IPVLAN_MODE_L3,
467 IPVLAN_MODE_L3S,
466 IPVLAN_MODE_MAX 468 IPVLAN_MODE_MAX
467}; 469};
468 470
@@ -617,7 +619,7 @@ enum {
617enum { 619enum {
618 IFLA_VF_UNSPEC, 620 IFLA_VF_UNSPEC,
619 IFLA_VF_MAC, /* Hardware queue specific attributes */ 621 IFLA_VF_MAC, /* Hardware queue specific attributes */
620 IFLA_VF_VLAN, 622 IFLA_VF_VLAN, /* VLAN ID and QoS */
621 IFLA_VF_TX_RATE, /* Max TX Bandwidth Allocation */ 623 IFLA_VF_TX_RATE, /* Max TX Bandwidth Allocation */
622 IFLA_VF_SPOOFCHK, /* Spoof Checking on/off switch */ 624 IFLA_VF_SPOOFCHK, /* Spoof Checking on/off switch */
623 IFLA_VF_LINK_STATE, /* link state enable/disable/auto switch */ 625 IFLA_VF_LINK_STATE, /* link state enable/disable/auto switch */
@@ -629,6 +631,7 @@ enum {
629 IFLA_VF_TRUST, /* Trust VF */ 631 IFLA_VF_TRUST, /* Trust VF */
630 IFLA_VF_IB_NODE_GUID, /* VF Infiniband node GUID */ 632 IFLA_VF_IB_NODE_GUID, /* VF Infiniband node GUID */
631 IFLA_VF_IB_PORT_GUID, /* VF Infiniband port GUID */ 633 IFLA_VF_IB_PORT_GUID, /* VF Infiniband port GUID */
634 IFLA_VF_VLAN_LIST, /* nested list of vlans, option for QinQ */
632 __IFLA_VF_MAX, 635 __IFLA_VF_MAX,
633}; 636};
634 637
@@ -645,6 +648,22 @@ struct ifla_vf_vlan {
645 __u32 qos; 648 __u32 qos;
646}; 649};
647 650
651enum {
652 IFLA_VF_VLAN_INFO_UNSPEC,
653 IFLA_VF_VLAN_INFO, /* VLAN ID, QoS and VLAN protocol */
654 __IFLA_VF_VLAN_INFO_MAX,
655};
656
657#define IFLA_VF_VLAN_INFO_MAX (__IFLA_VF_VLAN_INFO_MAX - 1)
658#define MAX_VLAN_LIST_LEN 1
659
660struct ifla_vf_vlan_info {
661 __u32 vf;
662 __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
663 __u32 qos;
664 __be16 vlan_proto; /* VLAN protocol either 802.1Q or 802.1ad */
665};
666
648struct ifla_vf_tx_rate { 667struct ifla_vf_tx_rate {
649 __u32 vf; 668 __u32 vf;
650 __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */ 669 __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
@@ -825,6 +844,7 @@ enum {
825 IFLA_STATS_LINK_64, 844 IFLA_STATS_LINK_64,
826 IFLA_STATS_LINK_XSTATS, 845 IFLA_STATS_LINK_XSTATS,
827 IFLA_STATS_LINK_XSTATS_SLAVE, 846 IFLA_STATS_LINK_XSTATS_SLAVE,
847 IFLA_STATS_LINK_OFFLOAD_XSTATS,
828 __IFLA_STATS_MAX, 848 __IFLA_STATS_MAX,
829}; 849};
830 850
@@ -844,6 +864,14 @@ enum {
844}; 864};
845#define LINK_XSTATS_TYPE_MAX (__LINK_XSTATS_TYPE_MAX - 1) 865#define LINK_XSTATS_TYPE_MAX (__LINK_XSTATS_TYPE_MAX - 1)
846 866
867/* These are stats embedded into IFLA_STATS_LINK_OFFLOAD_XSTATS */
868enum {
869 IFLA_OFFLOAD_XSTATS_UNSPEC,
870 IFLA_OFFLOAD_XSTATS_CPU_HIT, /* struct rtnl_link_stats64 */
871 __IFLA_OFFLOAD_XSTATS_MAX
872};
873#define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
874
847/* XDP section */ 875/* XDP section */
848 876
849enum { 877enum {
diff --git a/include/uapi/linux/if_tunnel.h b/include/uapi/linux/if_tunnel.h
index 777b6cdb1b7b..92f3c8677523 100644
--- a/include/uapi/linux/if_tunnel.h
+++ b/include/uapi/linux/if_tunnel.h
@@ -27,9 +27,23 @@
27#define GRE_SEQ __cpu_to_be16(0x1000) 27#define GRE_SEQ __cpu_to_be16(0x1000)
28#define GRE_STRICT __cpu_to_be16(0x0800) 28#define GRE_STRICT __cpu_to_be16(0x0800)
29#define GRE_REC __cpu_to_be16(0x0700) 29#define GRE_REC __cpu_to_be16(0x0700)
30#define GRE_FLAGS __cpu_to_be16(0x00F8) 30#define GRE_ACK __cpu_to_be16(0x0080)
31#define GRE_FLAGS __cpu_to_be16(0x0078)
31#define GRE_VERSION __cpu_to_be16(0x0007) 32#define GRE_VERSION __cpu_to_be16(0x0007)
32 33
34#define GRE_IS_CSUM(f) ((f) & GRE_CSUM)
35#define GRE_IS_ROUTING(f) ((f) & GRE_ROUTING)
36#define GRE_IS_KEY(f) ((f) & GRE_KEY)
37#define GRE_IS_SEQ(f) ((f) & GRE_SEQ)
38#define GRE_IS_STRICT(f) ((f) & GRE_STRICT)
39#define GRE_IS_REC(f) ((f) & GRE_REC)
40#define GRE_IS_ACK(f) ((f) & GRE_ACK)
41
42#define GRE_VERSION_0 __cpu_to_be16(0x0000)
43#define GRE_VERSION_1 __cpu_to_be16(0x0001)
44#define GRE_PROTO_PPP __cpu_to_be16(0x880b)
45#define GRE_PPTP_KEY_MASK __cpu_to_be32(0xffff)
46
33struct ip_tunnel_parm { 47struct ip_tunnel_parm {
34 char name[IFNAMSIZ]; 48 char name[IFNAMSIZ];
35 int link; 49 int link;
@@ -60,6 +74,7 @@ enum {
60 IFLA_IPTUN_ENCAP_FLAGS, 74 IFLA_IPTUN_ENCAP_FLAGS,
61 IFLA_IPTUN_ENCAP_SPORT, 75 IFLA_IPTUN_ENCAP_SPORT,
62 IFLA_IPTUN_ENCAP_DPORT, 76 IFLA_IPTUN_ENCAP_DPORT,
77 IFLA_IPTUN_COLLECT_METADATA,
63 __IFLA_IPTUN_MAX, 78 __IFLA_IPTUN_MAX,
64}; 79};
65#define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1) 80#define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1)
diff --git a/include/uapi/linux/inet_diag.h b/include/uapi/linux/inet_diag.h
index abbd1dc5d683..509cd961068d 100644
--- a/include/uapi/linux/inet_diag.h
+++ b/include/uapi/linux/inet_diag.h
@@ -73,6 +73,7 @@ enum {
73 INET_DIAG_BC_S_COND, 73 INET_DIAG_BC_S_COND,
74 INET_DIAG_BC_D_COND, 74 INET_DIAG_BC_D_COND,
75 INET_DIAG_BC_DEV_COND, /* u32 ifindex */ 75 INET_DIAG_BC_DEV_COND, /* u32 ifindex */
76 INET_DIAG_BC_MARK_COND,
76}; 77};
77 78
78struct inet_diag_hostcond { 79struct inet_diag_hostcond {
@@ -82,6 +83,11 @@ struct inet_diag_hostcond {
82 __be32 addr[0]; 83 __be32 addr[0];
83}; 84};
84 85
86struct inet_diag_markcond {
87 __u32 mark;
88 __u32 mask;
89};
90
85/* Base info structure. It contains socket identity (addrs/ports/cookie) 91/* Base info structure. It contains socket identity (addrs/ports/cookie)
86 * and, alas, the information shown by netstat. */ 92 * and, alas, the information shown by netstat. */
87struct inet_diag_msg { 93struct inet_diag_msg {
@@ -117,6 +123,8 @@ enum {
117 INET_DIAG_LOCALS, 123 INET_DIAG_LOCALS,
118 INET_DIAG_PEERS, 124 INET_DIAG_PEERS,
119 INET_DIAG_PAD, 125 INET_DIAG_PAD,
126 INET_DIAG_MARK,
127 INET_DIAG_BBRINFO,
120 __INET_DIAG_MAX, 128 __INET_DIAG_MAX,
121}; 129};
122 130
@@ -150,8 +158,20 @@ struct tcp_dctcp_info {
150 __u32 dctcp_ab_tot; 158 __u32 dctcp_ab_tot;
151}; 159};
152 160
161/* INET_DIAG_BBRINFO */
162
163struct tcp_bbr_info {
164 /* u64 bw: max-filtered BW (app throughput) estimate in Byte per sec: */
165 __u32 bbr_bw_lo; /* lower 32 bits of bw */
166 __u32 bbr_bw_hi; /* upper 32 bits of bw */
167 __u32 bbr_min_rtt; /* min-filtered RTT in uSec */
168 __u32 bbr_pacing_gain; /* pacing gain shifted left 8 bits */
169 __u32 bbr_cwnd_gain; /* cwnd gain shifted left 8 bits */
170};
171
153union tcp_cc_info { 172union tcp_cc_info {
154 struct tcpvegas_info vegas; 173 struct tcpvegas_info vegas;
155 struct tcp_dctcp_info dctcp; 174 struct tcp_dctcp_info dctcp;
175 struct tcp_bbr_info bbr;
156}; 176};
157#endif /* _UAPI_INET_DIAG_H_ */ 177#endif /* _UAPI_INET_DIAG_H_ */
diff --git a/include/uapi/linux/ipv6.h b/include/uapi/linux/ipv6.h
index 395876060f50..8c2772340c3f 100644
--- a/include/uapi/linux/ipv6.h
+++ b/include/uapi/linux/ipv6.h
@@ -177,6 +177,7 @@ enum {
177 DEVCONF_DROP_UNICAST_IN_L2_MULTICAST, 177 DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,
178 DEVCONF_DROP_UNSOLICITED_NA, 178 DEVCONF_DROP_UNSOLICITED_NA,
179 DEVCONF_KEEP_ADDR_ON_DOWN, 179 DEVCONF_KEEP_ADDR_ON_DOWN,
180 DEVCONF_RTR_SOLICIT_MAX_INTERVAL,
180 DEVCONF_MAX 181 DEVCONF_MAX
181}; 182};
182 183
diff --git a/include/uapi/linux/mii.h b/include/uapi/linux/mii.h
index 237fac4bc17b..15d8510cdae0 100644
--- a/include/uapi/linux/mii.h
+++ b/include/uapi/linux/mii.h
@@ -48,6 +48,7 @@
48#define BMCR_SPEED100 0x2000 /* Select 100Mbps */ 48#define BMCR_SPEED100 0x2000 /* Select 100Mbps */
49#define BMCR_LOOPBACK 0x4000 /* TXD loopback bits */ 49#define BMCR_LOOPBACK 0x4000 /* TXD loopback bits */
50#define BMCR_RESET 0x8000 /* Reset to default state */ 50#define BMCR_RESET 0x8000 /* Reset to default state */
51#define BMCR_SPEED10 0x0000 /* Select 10Mbps */
51 52
52/* Basic mode status register. */ 53/* Basic mode status register. */
53#define BMSR_ERCAP 0x0001 /* Ext-reg capability */ 54#define BMSR_ERCAP 0x0001 /* Ext-reg capability */
diff --git a/include/uapi/linux/netfilter/nf_log.h b/include/uapi/linux/netfilter/nf_log.h
new file mode 100644
index 000000000000..8be21e02387d
--- /dev/null
+++ b/include/uapi/linux/netfilter/nf_log.h
@@ -0,0 +1,12 @@
1#ifndef _NETFILTER_NF_LOG_H
2#define _NETFILTER_NF_LOG_H
3
4#define NF_LOG_TCPSEQ 0x01 /* Log TCP sequence numbers */
5#define NF_LOG_TCPOPT 0x02 /* Log TCP options */
6#define NF_LOG_IPOPT 0x04 /* Log IP options */
7#define NF_LOG_UID 0x08 /* Log UID owning local socket */
8#define NF_LOG_NFLOG 0x10 /* Unsupported, don't reuse */
9#define NF_LOG_MACDECODE 0x20 /* Decode MAC header */
10#define NF_LOG_MASK 0x2f
11
12#endif /* _NETFILTER_NF_LOG_H */
diff --git a/include/uapi/linux/netfilter/nf_tables.h b/include/uapi/linux/netfilter/nf_tables.h
index c674ba2563b7..c6c4477c136b 100644
--- a/include/uapi/linux/netfilter/nf_tables.h
+++ b/include/uapi/linux/netfilter/nf_tables.h
@@ -546,6 +546,35 @@ enum nft_cmp_attributes {
546}; 546};
547#define NFTA_CMP_MAX (__NFTA_CMP_MAX - 1) 547#define NFTA_CMP_MAX (__NFTA_CMP_MAX - 1)
548 548
549/**
550 * enum nft_range_ops - nf_tables range operator
551 *
552 * @NFT_RANGE_EQ: equal
553 * @NFT_RANGE_NEQ: not equal
554 */
555enum nft_range_ops {
556 NFT_RANGE_EQ,
557 NFT_RANGE_NEQ,
558};
559
560/**
561 * enum nft_range_attributes - nf_tables range expression netlink attributes
562 *
563 * @NFTA_RANGE_SREG: source register of data to compare (NLA_U32: nft_registers)
564 * @NFTA_RANGE_OP: cmp operation (NLA_U32: nft_cmp_ops)
565 * @NFTA_RANGE_FROM_DATA: data range from (NLA_NESTED: nft_data_attributes)
566 * @NFTA_RANGE_TO_DATA: data range to (NLA_NESTED: nft_data_attributes)
567 */
568enum nft_range_attributes {
569 NFTA_RANGE_UNSPEC,
570 NFTA_RANGE_SREG,
571 NFTA_RANGE_OP,
572 NFTA_RANGE_FROM_DATA,
573 NFTA_RANGE_TO_DATA,
574 __NFTA_RANGE_MAX
575};
576#define NFTA_RANGE_MAX (__NFTA_RANGE_MAX - 1)
577
549enum nft_lookup_flags { 578enum nft_lookup_flags {
550 NFT_LOOKUP_F_INV = (1 << 0), 579 NFT_LOOKUP_F_INV = (1 << 0),
551}; 580};
@@ -575,6 +604,10 @@ enum nft_dynset_ops {
575 NFT_DYNSET_OP_UPDATE, 604 NFT_DYNSET_OP_UPDATE,
576}; 605};
577 606
607enum nft_dynset_flags {
608 NFT_DYNSET_F_INV = (1 << 0),
609};
610
578/** 611/**
579 * enum nft_dynset_attributes - dynset expression attributes 612 * enum nft_dynset_attributes - dynset expression attributes
580 * 613 *
@@ -585,6 +618,7 @@ enum nft_dynset_ops {
585 * @NFTA_DYNSET_SREG_DATA: source register of the data (NLA_U32) 618 * @NFTA_DYNSET_SREG_DATA: source register of the data (NLA_U32)
586 * @NFTA_DYNSET_TIMEOUT: timeout value for the new element (NLA_U64) 619 * @NFTA_DYNSET_TIMEOUT: timeout value for the new element (NLA_U64)
587 * @NFTA_DYNSET_EXPR: expression (NLA_NESTED: nft_expr_attributes) 620 * @NFTA_DYNSET_EXPR: expression (NLA_NESTED: nft_expr_attributes)
621 * @NFTA_DYNSET_FLAGS: flags (NLA_U32)
588 */ 622 */
589enum nft_dynset_attributes { 623enum nft_dynset_attributes {
590 NFTA_DYNSET_UNSPEC, 624 NFTA_DYNSET_UNSPEC,
@@ -596,6 +630,7 @@ enum nft_dynset_attributes {
596 NFTA_DYNSET_TIMEOUT, 630 NFTA_DYNSET_TIMEOUT,
597 NFTA_DYNSET_EXPR, 631 NFTA_DYNSET_EXPR,
598 NFTA_DYNSET_PAD, 632 NFTA_DYNSET_PAD,
633 NFTA_DYNSET_FLAGS,
599 __NFTA_DYNSET_MAX, 634 __NFTA_DYNSET_MAX,
600}; 635};
601#define NFTA_DYNSET_MAX (__NFTA_DYNSET_MAX - 1) 636#define NFTA_DYNSET_MAX (__NFTA_DYNSET_MAX - 1)
@@ -724,6 +759,28 @@ enum nft_meta_keys {
724}; 759};
725 760
726/** 761/**
762 * enum nft_hash_attributes - nf_tables hash expression netlink attributes
763 *
764 * @NFTA_HASH_SREG: source register (NLA_U32)
765 * @NFTA_HASH_DREG: destination register (NLA_U32)
766 * @NFTA_HASH_LEN: source data length (NLA_U32)
767 * @NFTA_HASH_MODULUS: modulus value (NLA_U32)
768 * @NFTA_HASH_SEED: seed value (NLA_U32)
769 * @NFTA_HASH_OFFSET: add this offset value to hash result (NLA_U32)
770 */
771enum nft_hash_attributes {
772 NFTA_HASH_UNSPEC,
773 NFTA_HASH_SREG,
774 NFTA_HASH_DREG,
775 NFTA_HASH_LEN,
776 NFTA_HASH_MODULUS,
777 NFTA_HASH_SEED,
778 NFTA_HASH_OFFSET,
779 __NFTA_HASH_MAX,
780};
781#define NFTA_HASH_MAX (__NFTA_HASH_MAX - 1)
782
783/**
727 * enum nft_meta_attributes - nf_tables meta expression netlink attributes 784 * enum nft_meta_attributes - nf_tables meta expression netlink attributes
728 * 785 *
729 * @NFTA_META_DREG: destination register (NLA_U32) 786 * @NFTA_META_DREG: destination register (NLA_U32)
@@ -866,12 +923,14 @@ enum nft_log_attributes {
866 * @NFTA_QUEUE_NUM: netlink queue to send messages to (NLA_U16) 923 * @NFTA_QUEUE_NUM: netlink queue to send messages to (NLA_U16)
867 * @NFTA_QUEUE_TOTAL: number of queues to load balance packets on (NLA_U16) 924 * @NFTA_QUEUE_TOTAL: number of queues to load balance packets on (NLA_U16)
868 * @NFTA_QUEUE_FLAGS: various flags (NLA_U16) 925 * @NFTA_QUEUE_FLAGS: various flags (NLA_U16)
926 * @NFTA_QUEUE_SREG_QNUM: source register of queue number (NLA_U32: nft_registers)
869 */ 927 */
870enum nft_queue_attributes { 928enum nft_queue_attributes {
871 NFTA_QUEUE_UNSPEC, 929 NFTA_QUEUE_UNSPEC,
872 NFTA_QUEUE_NUM, 930 NFTA_QUEUE_NUM,
873 NFTA_QUEUE_TOTAL, 931 NFTA_QUEUE_TOTAL,
874 NFTA_QUEUE_FLAGS, 932 NFTA_QUEUE_FLAGS,
933 NFTA_QUEUE_SREG_QNUM,
875 __NFTA_QUEUE_MAX 934 __NFTA_QUEUE_MAX
876}; 935};
877#define NFTA_QUEUE_MAX (__NFTA_QUEUE_MAX - 1) 936#define NFTA_QUEUE_MAX (__NFTA_QUEUE_MAX - 1)
@@ -880,6 +939,25 @@ enum nft_queue_attributes {
880#define NFT_QUEUE_FLAG_CPU_FANOUT 0x02 /* use current CPU (no hashing) */ 939#define NFT_QUEUE_FLAG_CPU_FANOUT 0x02 /* use current CPU (no hashing) */
881#define NFT_QUEUE_FLAG_MASK 0x03 940#define NFT_QUEUE_FLAG_MASK 0x03
882 941
942enum nft_quota_flags {
943 NFT_QUOTA_F_INV = (1 << 0),
944};
945
946/**
947 * enum nft_quota_attributes - nf_tables quota expression netlink attributes
948 *
949 * @NFTA_QUOTA_BYTES: quota in bytes (NLA_U16)
950 * @NFTA_QUOTA_FLAGS: flags (NLA_U32)
951 */
952enum nft_quota_attributes {
953 NFTA_QUOTA_UNSPEC,
954 NFTA_QUOTA_BYTES,
955 NFTA_QUOTA_FLAGS,
956 NFTA_QUOTA_PAD,
957 __NFTA_QUOTA_MAX
958};
959#define NFTA_QUOTA_MAX (__NFTA_QUOTA_MAX - 1)
960
883/** 961/**
884 * enum nft_reject_types - nf_tables reject expression reject types 962 * enum nft_reject_types - nf_tables reject expression reject types
885 * 963 *
@@ -1051,7 +1129,7 @@ enum nft_gen_attributes {
1051 * @NFTA_TRACE_NFPROTO: nf protocol processed (NLA_U32) 1129 * @NFTA_TRACE_NFPROTO: nf protocol processed (NLA_U32)
1052 * @NFTA_TRACE_POLICY: policy that decided fate of packet (NLA_U32) 1130 * @NFTA_TRACE_POLICY: policy that decided fate of packet (NLA_U32)
1053 */ 1131 */
1054enum nft_trace_attibutes { 1132enum nft_trace_attributes {
1055 NFTA_TRACE_UNSPEC, 1133 NFTA_TRACE_UNSPEC,
1056 NFTA_TRACE_TABLE, 1134 NFTA_TRACE_TABLE,
1057 NFTA_TRACE_CHAIN, 1135 NFTA_TRACE_CHAIN,
@@ -1082,4 +1160,30 @@ enum nft_trace_types {
1082 __NFT_TRACETYPE_MAX 1160 __NFT_TRACETYPE_MAX
1083}; 1161};
1084#define NFT_TRACETYPE_MAX (__NFT_TRACETYPE_MAX - 1) 1162#define NFT_TRACETYPE_MAX (__NFT_TRACETYPE_MAX - 1)
1163
1164/**
1165 * enum nft_ng_attributes - nf_tables number generator expression netlink attributes
1166 *
1167 * @NFTA_NG_DREG: destination register (NLA_U32)
1168 * @NFTA_NG_MODULUS: maximum counter value (NLA_U32)
1169 * @NFTA_NG_TYPE: operation type (NLA_U32)
1170 * @NFTA_NG_OFFSET: offset to be added to the counter (NLA_U32)
1171 */
1172enum nft_ng_attributes {
1173 NFTA_NG_UNSPEC,
1174 NFTA_NG_DREG,
1175 NFTA_NG_MODULUS,
1176 NFTA_NG_TYPE,
1177 NFTA_NG_OFFSET,
1178 __NFTA_NG_MAX
1179};
1180#define NFTA_NG_MAX (__NFTA_NG_MAX - 1)
1181
1182enum nft_ng_types {
1183 NFT_NG_INCREMENTAL,
1184 NFT_NG_RANDOM,
1185 __NFT_NG_MAX
1186};
1187#define NFT_NG_MAX (__NFT_NG_MAX - 1)
1188
1085#endif /* _LINUX_NF_TABLES_H */ 1189#endif /* _LINUX_NF_TABLES_H */
diff --git a/include/uapi/linux/netfilter/nfnetlink_conntrack.h b/include/uapi/linux/netfilter/nfnetlink_conntrack.h
index 9df789709abe..6deb8867c5fc 100644
--- a/include/uapi/linux/netfilter/nfnetlink_conntrack.h
+++ b/include/uapi/linux/netfilter/nfnetlink_conntrack.h
@@ -231,13 +231,13 @@ enum ctattr_secctx {
231 231
232enum ctattr_stats_cpu { 232enum ctattr_stats_cpu {
233 CTA_STATS_UNSPEC, 233 CTA_STATS_UNSPEC,
234 CTA_STATS_SEARCHED, 234 CTA_STATS_SEARCHED, /* no longer used */
235 CTA_STATS_FOUND, 235 CTA_STATS_FOUND,
236 CTA_STATS_NEW, 236 CTA_STATS_NEW, /* no longer used */
237 CTA_STATS_INVALID, 237 CTA_STATS_INVALID,
238 CTA_STATS_IGNORE, 238 CTA_STATS_IGNORE,
239 CTA_STATS_DELETE, 239 CTA_STATS_DELETE, /* no longer used */
240 CTA_STATS_DELETE_LIST, 240 CTA_STATS_DELETE_LIST, /* no longer used */
241 CTA_STATS_INSERT, 241 CTA_STATS_INSERT,
242 CTA_STATS_INSERT_FAILED, 242 CTA_STATS_INSERT_FAILED,
243 CTA_STATS_DROP, 243 CTA_STATS_DROP,
diff --git a/include/uapi/linux/netfilter/xt_hashlimit.h b/include/uapi/linux/netfilter/xt_hashlimit.h
index 6db90372f09c..3efc0ca18345 100644
--- a/include/uapi/linux/netfilter/xt_hashlimit.h
+++ b/include/uapi/linux/netfilter/xt_hashlimit.h
@@ -6,6 +6,7 @@
6 6
7/* timings are in milliseconds. */ 7/* timings are in milliseconds. */
8#define XT_HASHLIMIT_SCALE 10000 8#define XT_HASHLIMIT_SCALE 10000
9#define XT_HASHLIMIT_SCALE_v2 1000000llu
9/* 1/10,000 sec period => max of 10,000/sec. Min rate is then 429490 10/* 1/10,000 sec period => max of 10,000/sec. Min rate is then 429490
10 * seconds, or one packet every 59 hours. 11 * seconds, or one packet every 59 hours.
11 */ 12 */
@@ -63,6 +64,20 @@ struct hashlimit_cfg1 {
63 __u8 srcmask, dstmask; 64 __u8 srcmask, dstmask;
64}; 65};
65 66
67struct hashlimit_cfg2 {
68 __u64 avg; /* Average secs between packets * scale */
69 __u64 burst; /* Period multiplier for upper limit. */
70 __u32 mode; /* bitmask of XT_HASHLIMIT_HASH_* */
71
72 /* user specified */
73 __u32 size; /* how many buckets */
74 __u32 max; /* max number of entries */
75 __u32 gc_interval; /* gc interval */
76 __u32 expire; /* when do entries expire? */
77
78 __u8 srcmask, dstmask;
79};
80
66struct xt_hashlimit_mtinfo1 { 81struct xt_hashlimit_mtinfo1 {
67 char name[IFNAMSIZ]; 82 char name[IFNAMSIZ];
68 struct hashlimit_cfg1 cfg; 83 struct hashlimit_cfg1 cfg;
@@ -71,4 +86,12 @@ struct xt_hashlimit_mtinfo1 {
71 struct xt_hashlimit_htable *hinfo __attribute__((aligned(8))); 86 struct xt_hashlimit_htable *hinfo __attribute__((aligned(8)));
72}; 87};
73 88
89struct xt_hashlimit_mtinfo2 {
90 char name[NAME_MAX];
91 struct hashlimit_cfg2 cfg;
92
93 /* Used internally by the kernel */
94 struct xt_hashlimit_htable *hinfo __attribute__((aligned(8)));
95};
96
74#endif /* _UAPI_XT_HASHLIMIT_H */ 97#endif /* _UAPI_XT_HASHLIMIT_H */
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index 220694151434..56368e9b4622 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -48,6 +48,7 @@
48#define NL80211_MULTICAST_GROUP_REG "regulatory" 48#define NL80211_MULTICAST_GROUP_REG "regulatory"
49#define NL80211_MULTICAST_GROUP_MLME "mlme" 49#define NL80211_MULTICAST_GROUP_MLME "mlme"
50#define NL80211_MULTICAST_GROUP_VENDOR "vendor" 50#define NL80211_MULTICAST_GROUP_VENDOR "vendor"
51#define NL80211_MULTICAST_GROUP_NAN "nan"
51#define NL80211_MULTICAST_GROUP_TESTMODE "testmode" 52#define NL80211_MULTICAST_GROUP_TESTMODE "testmode"
52 53
53/** 54/**
@@ -838,6 +839,41 @@
838 * not running. The driver indicates the status of the scan through 839 * not running. The driver indicates the status of the scan through
839 * cfg80211_scan_done(). 840 * cfg80211_scan_done().
840 * 841 *
842 * @NL80211_CMD_START_NAN: Start NAN operation, identified by its
843 * %NL80211_ATTR_WDEV interface. This interface must have been previously
844 * created with %NL80211_CMD_NEW_INTERFACE. After it has been started, the
845 * NAN interface will create or join a cluster. This command must have a
846 * valid %NL80211_ATTR_NAN_MASTER_PREF attribute and optional
847 * %NL80211_ATTR_NAN_DUAL attributes.
848 * After this command NAN functions can be added.
849 * @NL80211_CMD_STOP_NAN: Stop the NAN operation, identified by
850 * its %NL80211_ATTR_WDEV interface.
851 * @NL80211_CMD_ADD_NAN_FUNCTION: Add a NAN function. The function is defined
852 * with %NL80211_ATTR_NAN_FUNC nested attribute. When called, this
853 * operation returns the strictly positive and unique instance id
854 * (%NL80211_ATTR_NAN_FUNC_INST_ID) and a cookie (%NL80211_ATTR_COOKIE)
855 * of the function upon success.
856 * Since instance ID's can be re-used, this cookie is the right
857 * way to identify the function. This will avoid races when a termination
858 * event is handled by the user space after it has already added a new
859 * function that got the same instance id from the kernel as the one
860 * which just terminated.
861 * This cookie may be used in NAN events even before the command
862 * returns, so userspace shouldn't process NAN events until it processes
863 * the response to this command.
864 * Look at %NL80211_ATTR_SOCKET_OWNER as well.
865 * @NL80211_CMD_DEL_NAN_FUNCTION: Delete a NAN function by cookie.
866 * This command is also used as a notification sent when a NAN function is
867 * terminated. This will contain a %NL80211_ATTR_NAN_FUNC_INST_ID
868 * and %NL80211_ATTR_COOKIE attributes.
869 * @NL80211_CMD_CHANGE_NAN_CONFIG: Change current NAN configuration. NAN
870 * must be operational (%NL80211_CMD_START_NAN was executed).
871 * It must contain at least one of the following attributes:
872 * %NL80211_ATTR_NAN_MASTER_PREF, %NL80211_ATTR_NAN_DUAL.
873 * @NL80211_CMD_NAN_FUNC_MATCH: Notification sent when a match is reported.
874 * This will contain a %NL80211_ATTR_NAN_MATCH nested attribute and
875 * %NL80211_ATTR_COOKIE.
876 *
841 * @NL80211_CMD_MAX: highest used command number 877 * @NL80211_CMD_MAX: highest used command number
842 * @__NL80211_CMD_AFTER_LAST: internal use 878 * @__NL80211_CMD_AFTER_LAST: internal use
843 */ 879 */
@@ -1026,6 +1062,13 @@ enum nl80211_commands {
1026 1062
1027 NL80211_CMD_ABORT_SCAN, 1063 NL80211_CMD_ABORT_SCAN,
1028 1064
1065 NL80211_CMD_START_NAN,
1066 NL80211_CMD_STOP_NAN,
1067 NL80211_CMD_ADD_NAN_FUNCTION,
1068 NL80211_CMD_DEL_NAN_FUNCTION,
1069 NL80211_CMD_CHANGE_NAN_CONFIG,
1070 NL80211_CMD_NAN_MATCH,
1071
1029 /* add new commands above here */ 1072 /* add new commands above here */
1030 1073
1031 /* used to define NL80211_CMD_MAX below */ 1074 /* used to define NL80211_CMD_MAX below */
@@ -1343,7 +1386,13 @@ enum nl80211_commands {
1343 * enum nl80211_band value is used as the index (nla_type() of the nested 1386 * enum nl80211_band value is used as the index (nla_type() of the nested
1344 * data. If a band is not included, it will be configured to allow all 1387 * data. If a band is not included, it will be configured to allow all
1345 * rates based on negotiated supported rates information. This attribute 1388 * rates based on negotiated supported rates information. This attribute
1346 * is used with %NL80211_CMD_SET_TX_BITRATE_MASK. 1389 * is used with %NL80211_CMD_SET_TX_BITRATE_MASK and with starting AP,
1390 * and joining mesh networks (not IBSS yet). In the later case, it must
1391 * specify just a single bitrate, which is to be used for the beacon.
1392 * The driver must also specify support for this with the extended
1393 * features NL80211_EXT_FEATURE_BEACON_RATE_LEGACY,
1394 * NL80211_EXT_FEATURE_BEACON_RATE_HT and
1395 * NL80211_EXT_FEATURE_BEACON_RATE_VHT.
1347 * 1396 *
1348 * @NL80211_ATTR_FRAME_MATCH: A binary attribute which typically must contain 1397 * @NL80211_ATTR_FRAME_MATCH: A binary attribute which typically must contain
1349 * at least one byte, currently used with @NL80211_CMD_REGISTER_FRAME. 1398 * at least one byte, currently used with @NL80211_CMD_REGISTER_FRAME.
@@ -1733,6 +1782,12 @@ enum nl80211_commands {
1733 * regulatory indoor configuration would be owned by the netlink socket 1782 * regulatory indoor configuration would be owned by the netlink socket
1734 * that configured the indoor setting, and the indoor operation would be 1783 * that configured the indoor setting, and the indoor operation would be
1735 * cleared when the socket is closed. 1784 * cleared when the socket is closed.
1785 * If set during NAN interface creation, the interface will be destroyed
1786 * if the socket is closed just like any other interface. Moreover, only
1787 * the netlink socket that created the interface will be allowed to add
1788 * and remove functions. NAN notifications will be sent in unicast to that
1789 * socket. Without this attribute, any socket can add functions and the
1790 * notifications will be sent to the %NL80211_MCGRP_NAN multicast group.
1736 * 1791 *
1737 * @NL80211_ATTR_TDLS_INITIATOR: flag attribute indicating the current end is 1792 * @NL80211_ATTR_TDLS_INITIATOR: flag attribute indicating the current end is
1738 * the TDLS link initiator. 1793 * the TDLS link initiator.
@@ -1867,6 +1922,21 @@ enum nl80211_commands {
1867 * @NL80211_ATTR_MESH_PEER_AID: Association ID for the mesh peer (u16). This is 1922 * @NL80211_ATTR_MESH_PEER_AID: Association ID for the mesh peer (u16). This is
1868 * used to pull the stored data for mesh peer in power save state. 1923 * used to pull the stored data for mesh peer in power save state.
1869 * 1924 *
1925 * @NL80211_ATTR_NAN_MASTER_PREF: the master preference to be used by
1926 * %NL80211_CMD_START_NAN and optionally with
1927 * %NL80211_CMD_CHANGE_NAN_CONFIG. Its type is u8 and it can't be 0.
1928 * Also, values 1 and 255 are reserved for certification purposes and
1929 * should not be used during a normal device operation.
1930 * @NL80211_ATTR_NAN_DUAL: NAN dual band operation config (see
1931 * &enum nl80211_nan_dual_band_conf). This attribute is used with
1932 * %NL80211_CMD_START_NAN and optionally with
1933 * %NL80211_CMD_CHANGE_NAN_CONFIG.
1934 * @NL80211_ATTR_NAN_FUNC: a function that can be added to NAN. See
1935 * &enum nl80211_nan_func_attributes for description of this nested
1936 * attribute.
1937 * @NL80211_ATTR_NAN_MATCH: used to report a match. This is a nested attribute.
1938 * See &enum nl80211_nan_match_attributes.
1939 *
1870 * @NUM_NL80211_ATTR: total number of nl80211_attrs available 1940 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
1871 * @NL80211_ATTR_MAX: highest attribute number currently defined 1941 * @NL80211_ATTR_MAX: highest attribute number currently defined
1872 * @__NL80211_ATTR_AFTER_LAST: internal use 1942 * @__NL80211_ATTR_AFTER_LAST: internal use
@@ -2261,6 +2331,11 @@ enum nl80211_attrs {
2261 2331
2262 NL80211_ATTR_MESH_PEER_AID, 2332 NL80211_ATTR_MESH_PEER_AID,
2263 2333
2334 NL80211_ATTR_NAN_MASTER_PREF,
2335 NL80211_ATTR_NAN_DUAL,
2336 NL80211_ATTR_NAN_FUNC,
2337 NL80211_ATTR_NAN_MATCH,
2338
2264 /* add attributes here, update the policy in nl80211.c */ 2339 /* add attributes here, update the policy in nl80211.c */
2265 2340
2266 __NL80211_ATTR_AFTER_LAST, 2341 __NL80211_ATTR_AFTER_LAST,
@@ -2339,6 +2414,7 @@ enum nl80211_attrs {
2339 * commands to create and destroy one 2414 * commands to create and destroy one
2340 * @NL80211_IF_TYPE_OCB: Outside Context of a BSS 2415 * @NL80211_IF_TYPE_OCB: Outside Context of a BSS
2341 * This mode corresponds to the MIB variable dot11OCBActivated=true 2416 * This mode corresponds to the MIB variable dot11OCBActivated=true
2417 * @NL80211_IFTYPE_NAN: NAN device interface type (not a netdev)
2342 * @NL80211_IFTYPE_MAX: highest interface type number currently defined 2418 * @NL80211_IFTYPE_MAX: highest interface type number currently defined
2343 * @NUM_NL80211_IFTYPES: number of defined interface types 2419 * @NUM_NL80211_IFTYPES: number of defined interface types
2344 * 2420 *
@@ -2359,6 +2435,7 @@ enum nl80211_iftype {
2359 NL80211_IFTYPE_P2P_GO, 2435 NL80211_IFTYPE_P2P_GO,
2360 NL80211_IFTYPE_P2P_DEVICE, 2436 NL80211_IFTYPE_P2P_DEVICE,
2361 NL80211_IFTYPE_OCB, 2437 NL80211_IFTYPE_OCB,
2438 NL80211_IFTYPE_NAN,
2362 2439
2363 /* keep last */ 2440 /* keep last */
2364 NUM_NL80211_IFTYPES, 2441 NUM_NL80211_IFTYPES,
@@ -4551,6 +4628,12 @@ enum nl80211_feature_flags {
4551 * (if available). 4628 * (if available).
4552 * @NL80211_EXT_FEATURE_SET_SCAN_DWELL: This driver supports configuration of 4629 * @NL80211_EXT_FEATURE_SET_SCAN_DWELL: This driver supports configuration of
4553 * channel dwell time. 4630 * channel dwell time.
4631 * @NL80211_EXT_FEATURE_BEACON_RATE_LEGACY: Driver supports beacon rate
4632 * configuration (AP/mesh), supporting a legacy (non HT/VHT) rate.
4633 * @NL80211_EXT_FEATURE_BEACON_RATE_HT: Driver supports beacon rate
4634 * configuration (AP/mesh) with HT rates.
4635 * @NL80211_EXT_FEATURE_BEACON_RATE_VHT: Driver supports beacon rate
4636 * configuration (AP/mesh) with VHT rates.
4554 * 4637 *
4555 * @NUM_NL80211_EXT_FEATURES: number of extended features. 4638 * @NUM_NL80211_EXT_FEATURES: number of extended features.
4556 * @MAX_NL80211_EXT_FEATURES: highest extended feature index. 4639 * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
@@ -4562,6 +4645,9 @@ enum nl80211_ext_feature_index {
4562 NL80211_EXT_FEATURE_SCAN_START_TIME, 4645 NL80211_EXT_FEATURE_SCAN_START_TIME,
4563 NL80211_EXT_FEATURE_BSS_PARENT_TSF, 4646 NL80211_EXT_FEATURE_BSS_PARENT_TSF,
4564 NL80211_EXT_FEATURE_SET_SCAN_DWELL, 4647 NL80211_EXT_FEATURE_SET_SCAN_DWELL,
4648 NL80211_EXT_FEATURE_BEACON_RATE_LEGACY,
4649 NL80211_EXT_FEATURE_BEACON_RATE_HT,
4650 NL80211_EXT_FEATURE_BEACON_RATE_VHT,
4565 4651
4566 /* add new features before the definition below */ 4652 /* add new features before the definition below */
4567 NUM_NL80211_EXT_FEATURES, 4653 NUM_NL80211_EXT_FEATURES,
@@ -4855,4 +4941,186 @@ enum nl80211_bss_select_attr {
4855 NL80211_BSS_SELECT_ATTR_MAX = __NL80211_BSS_SELECT_ATTR_AFTER_LAST - 1 4941 NL80211_BSS_SELECT_ATTR_MAX = __NL80211_BSS_SELECT_ATTR_AFTER_LAST - 1
4856}; 4942};
4857 4943
4944/**
4945 * enum nl80211_nan_dual_band_conf - NAN dual band configuration
4946 *
4947 * Defines the NAN dual band mode of operation
4948 *
4949 * @NL80211_NAN_BAND_DEFAULT: device default mode
4950 * @NL80211_NAN_BAND_2GHZ: 2.4GHz mode
4951 * @NL80211_NAN_BAND_5GHZ: 5GHz mode
4952 */
4953enum nl80211_nan_dual_band_conf {
4954 NL80211_NAN_BAND_DEFAULT = 1 << 0,
4955 NL80211_NAN_BAND_2GHZ = 1 << 1,
4956 NL80211_NAN_BAND_5GHZ = 1 << 2,
4957};
4958
4959/**
4960 * enum nl80211_nan_function_type - NAN function type
4961 *
4962 * Defines the function type of a NAN function
4963 *
4964 * @NL80211_NAN_FUNC_PUBLISH: function is publish
4965 * @NL80211_NAN_FUNC_SUBSCRIBE: function is subscribe
4966 * @NL80211_NAN_FUNC_FOLLOW_UP: function is follow-up
4967 */
4968enum nl80211_nan_function_type {
4969 NL80211_NAN_FUNC_PUBLISH,
4970 NL80211_NAN_FUNC_SUBSCRIBE,
4971 NL80211_NAN_FUNC_FOLLOW_UP,
4972
4973 /* keep last */
4974 __NL80211_NAN_FUNC_TYPE_AFTER_LAST,
4975 NL80211_NAN_FUNC_MAX_TYPE = __NL80211_NAN_FUNC_TYPE_AFTER_LAST - 1,
4976};
4977
4978/**
4979 * enum nl80211_nan_publish_type - NAN publish tx type
4980 *
4981 * Defines how to send publish Service Discovery Frames
4982 *
4983 * @NL80211_NAN_SOLICITED_PUBLISH: publish function is solicited
4984 * @NL80211_NAN_UNSOLICITED_PUBLISH: publish function is unsolicited
4985 */
4986enum nl80211_nan_publish_type {
4987 NL80211_NAN_SOLICITED_PUBLISH = 1 << 0,
4988 NL80211_NAN_UNSOLICITED_PUBLISH = 1 << 1,
4989};
4990
4991/**
4992 * enum nl80211_nan_func_term_reason - NAN functions termination reason
4993 *
4994 * Defines termination reasons of a NAN function
4995 *
4996 * @NL80211_NAN_FUNC_TERM_REASON_USER_REQUEST: requested by user
4997 * @NL80211_NAN_FUNC_TERM_REASON_TTL_EXPIRED: timeout
4998 * @NL80211_NAN_FUNC_TERM_REASON_ERROR: errored
4999 */
5000enum nl80211_nan_func_term_reason {
5001 NL80211_NAN_FUNC_TERM_REASON_USER_REQUEST,
5002 NL80211_NAN_FUNC_TERM_REASON_TTL_EXPIRED,
5003 NL80211_NAN_FUNC_TERM_REASON_ERROR,
5004};
5005
5006#define NL80211_NAN_FUNC_SERVICE_ID_LEN 6
5007#define NL80211_NAN_FUNC_SERVICE_SPEC_INFO_MAX_LEN 0xff
5008#define NL80211_NAN_FUNC_SRF_MAX_LEN 0xff
5009
5010/**
5011 * enum nl80211_nan_func_attributes - NAN function attributes
5012 * @__NL80211_NAN_FUNC_INVALID: invalid
5013 * @NL80211_NAN_FUNC_TYPE: &enum nl80211_nan_function_type (u8).
5014 * @NL80211_NAN_FUNC_SERVICE_ID: 6 bytes of the service ID hash as
5015 * specified in NAN spec. This is a binary attribute.
5016 * @NL80211_NAN_FUNC_PUBLISH_TYPE: relevant if the function's type is
5017 * publish. Defines the transmission type for the publish Service Discovery
5018 * Frame, see &enum nl80211_nan_publish_type. Its type is u8.
5019 * @NL80211_NAN_FUNC_PUBLISH_BCAST: relevant if the function is a solicited
5020 * publish. Should the solicited publish Service Discovery Frame be sent to
5021 * the NAN Broadcast address. This is a flag.
5022 * @NL80211_NAN_FUNC_SUBSCRIBE_ACTIVE: relevant if the function's type is
5023 * subscribe. Is the subscribe active. This is a flag.
5024 * @NL80211_NAN_FUNC_FOLLOW_UP_ID: relevant if the function's type is follow up.
5025 * The instance ID for the follow up Service Discovery Frame. This is u8.
5026 * @NL80211_NAN_FUNC_FOLLOW_UP_REQ_ID: relevant if the function's type
5027 * is follow up. This is a u8.
5028 * The requestor instance ID for the follow up Service Discovery Frame.
5029 * @NL80211_NAN_FUNC_FOLLOW_UP_DEST: the MAC address of the recipient of the
5030 * follow up Service Discovery Frame. This is a binary attribute.
5031 * @NL80211_NAN_FUNC_CLOSE_RANGE: is this function limited for devices in a
5032 * close range. The range itself (RSSI) is defined by the device.
5033 * This is a flag.
5034 * @NL80211_NAN_FUNC_TTL: strictly positive number of DWs this function should
5035 * stay active. If not present infinite TTL is assumed. This is a u32.
5036 * @NL80211_NAN_FUNC_SERVICE_INFO: array of bytes describing the service
5037 * specific info. This is a binary attribute.
5038 * @NL80211_NAN_FUNC_SRF: Service Receive Filter. This is a nested attribute.
5039 * See &enum nl80211_nan_srf_attributes.
5040 * @NL80211_NAN_FUNC_RX_MATCH_FILTER: Receive Matching filter. This is a nested
5041 * attribute. It is a list of binary values.
5042 * @NL80211_NAN_FUNC_TX_MATCH_FILTER: Transmit Matching filter. This is a
5043 * nested attribute. It is a list of binary values.
5044 * @NL80211_NAN_FUNC_INSTANCE_ID: The instance ID of the function.
5045 * Its type is u8 and it cannot be 0.
5046 * @NL80211_NAN_FUNC_TERM_REASON: NAN function termination reason.
5047 * See &enum nl80211_nan_func_term_reason.
5048 *
5049 * @NUM_NL80211_NAN_FUNC_ATTR: internal
5050 * @NL80211_NAN_FUNC_ATTR_MAX: highest NAN function attribute
5051 */
5052enum nl80211_nan_func_attributes {
5053 __NL80211_NAN_FUNC_INVALID,
5054 NL80211_NAN_FUNC_TYPE,
5055 NL80211_NAN_FUNC_SERVICE_ID,
5056 NL80211_NAN_FUNC_PUBLISH_TYPE,
5057 NL80211_NAN_FUNC_PUBLISH_BCAST,
5058 NL80211_NAN_FUNC_SUBSCRIBE_ACTIVE,
5059 NL80211_NAN_FUNC_FOLLOW_UP_ID,
5060 NL80211_NAN_FUNC_FOLLOW_UP_REQ_ID,
5061 NL80211_NAN_FUNC_FOLLOW_UP_DEST,
5062 NL80211_NAN_FUNC_CLOSE_RANGE,
5063 NL80211_NAN_FUNC_TTL,
5064 NL80211_NAN_FUNC_SERVICE_INFO,
5065 NL80211_NAN_FUNC_SRF,
5066 NL80211_NAN_FUNC_RX_MATCH_FILTER,
5067 NL80211_NAN_FUNC_TX_MATCH_FILTER,
5068 NL80211_NAN_FUNC_INSTANCE_ID,
5069 NL80211_NAN_FUNC_TERM_REASON,
5070
5071 /* keep last */
5072 NUM_NL80211_NAN_FUNC_ATTR,
5073 NL80211_NAN_FUNC_ATTR_MAX = NUM_NL80211_NAN_FUNC_ATTR - 1
5074};
5075
5076/**
5077 * enum nl80211_nan_srf_attributes - NAN Service Response filter attributes
5078 * @__NL80211_NAN_SRF_INVALID: invalid
5079 * @NL80211_NAN_SRF_INCLUDE: present if the include bit of the SRF set.
5080 * This is a flag.
5081 * @NL80211_NAN_SRF_BF: Bloom Filter. Present if and only if
5082 * &NL80211_NAN_SRF_MAC_ADDRS isn't present. This attribute is binary.
5083 * @NL80211_NAN_SRF_BF_IDX: index of the Bloom Filter. Mandatory if
5084 * &NL80211_NAN_SRF_BF is present. This is a u8.
5085 * @NL80211_NAN_SRF_MAC_ADDRS: list of MAC addresses for the SRF. Present if
5086 * and only if &NL80211_NAN_SRF_BF isn't present. This is a nested
5087 * attribute. Each nested attribute is a MAC address.
5088 * @NUM_NL80211_NAN_SRF_ATTR: internal
5089 * @NL80211_NAN_SRF_ATTR_MAX: highest NAN SRF attribute
5090 */
5091enum nl80211_nan_srf_attributes {
5092 __NL80211_NAN_SRF_INVALID,
5093 NL80211_NAN_SRF_INCLUDE,
5094 NL80211_NAN_SRF_BF,
5095 NL80211_NAN_SRF_BF_IDX,
5096 NL80211_NAN_SRF_MAC_ADDRS,
5097
5098 /* keep last */
5099 NUM_NL80211_NAN_SRF_ATTR,
5100 NL80211_NAN_SRF_ATTR_MAX = NUM_NL80211_NAN_SRF_ATTR - 1,
5101};
5102
5103/**
5104 * enum nl80211_nan_match_attributes - NAN match attributes
5105 * @__NL80211_NAN_MATCH_INVALID: invalid
5106 * @NL80211_NAN_MATCH_FUNC_LOCAL: the local function that had the
5107 * match. This is a nested attribute.
5108 * See &enum nl80211_nan_func_attributes.
5109 * @NL80211_NAN_MATCH_FUNC_PEER: the peer function
5110 * that caused the match. This is a nested attribute.
5111 * See &enum nl80211_nan_func_attributes.
5112 *
5113 * @NUM_NL80211_NAN_MATCH_ATTR: internal
5114 * @NL80211_NAN_MATCH_ATTR_MAX: highest NAN match attribute
5115 */
5116enum nl80211_nan_match_attributes {
5117 __NL80211_NAN_MATCH_INVALID,
5118 NL80211_NAN_MATCH_FUNC_LOCAL,
5119 NL80211_NAN_MATCH_FUNC_PEER,
5120
5121 /* keep last */
5122 NUM_NL80211_NAN_MATCH_ATTR,
5123 NL80211_NAN_MATCH_ATTR_MAX = NUM_NL80211_NAN_MATCH_ATTR - 1
5124};
5125
4858#endif /* __LINUX_NL80211_H */ 5126#endif /* __LINUX_NL80211_H */
diff --git a/include/uapi/linux/openvswitch.h b/include/uapi/linux/openvswitch.h
index 54c3b4f4aceb..59ed3992c760 100644
--- a/include/uapi/linux/openvswitch.h
+++ b/include/uapi/linux/openvswitch.h
@@ -605,13 +605,13 @@ struct ovs_action_push_mpls {
605 * @vlan_tci: Tag control identifier (TCI) to push. The CFI bit must be set 605 * @vlan_tci: Tag control identifier (TCI) to push. The CFI bit must be set
606 * (but it will not be set in the 802.1Q header that is pushed). 606 * (but it will not be set in the 802.1Q header that is pushed).
607 * 607 *
608 * The @vlan_tpid value is typically %ETH_P_8021Q. The only acceptable TPID 608 * The @vlan_tpid value is typically %ETH_P_8021Q or %ETH_P_8021AD.
609 * values are those that the kernel module also parses as 802.1Q headers, to 609 * The only acceptable TPID values are those that the kernel module also parses
610 * prevent %OVS_ACTION_ATTR_PUSH_VLAN followed by %OVS_ACTION_ATTR_POP_VLAN 610 * as 802.1Q or 802.1AD headers, to prevent %OVS_ACTION_ATTR_PUSH_VLAN followed
611 * from having surprising results. 611 * by %OVS_ACTION_ATTR_POP_VLAN from having surprising results.
612 */ 612 */
613struct ovs_action_push_vlan { 613struct ovs_action_push_vlan {
614 __be16 vlan_tpid; /* 802.1Q TPID. */ 614 __be16 vlan_tpid; /* 802.1Q or 802.1ad TPID. */
615 __be16 vlan_tci; /* 802.1Q TCI (VLAN ID and priority). */ 615 __be16 vlan_tci; /* 802.1Q TCI (VLAN ID and priority). */
616}; 616};
617 617
@@ -721,9 +721,10 @@ enum ovs_nat_attr {
721 * is copied from the value to the packet header field, rest of the bits are 721 * is copied from the value to the packet header field, rest of the bits are
722 * left unchanged. The non-masked value bits must be passed in as zeroes. 722 * left unchanged. The non-masked value bits must be passed in as zeroes.
723 * Masking is not supported for the %OVS_KEY_ATTR_TUNNEL attribute. 723 * Masking is not supported for the %OVS_KEY_ATTR_TUNNEL attribute.
724 * @OVS_ACTION_ATTR_PUSH_VLAN: Push a new outermost 802.1Q header onto the 724 * @OVS_ACTION_ATTR_PUSH_VLAN: Push a new outermost 802.1Q or 802.1ad header
725 * packet. 725 * onto the packet.
726 * @OVS_ACTION_ATTR_POP_VLAN: Pop the outermost 802.1Q header off the packet. 726 * @OVS_ACTION_ATTR_POP_VLAN: Pop the outermost 802.1Q or 802.1ad header
727 * from the packet.
727 * @OVS_ACTION_ATTR_SAMPLE: Probabilitically executes actions, as specified in 728 * @OVS_ACTION_ATTR_SAMPLE: Probabilitically executes actions, as specified in
728 * the nested %OVS_SAMPLE_ATTR_* attributes. 729 * the nested %OVS_SAMPLE_ATTR_* attributes.
729 * @OVS_ACTION_ATTR_PUSH_MPLS: Push a new MPLS label stack entry onto the 730 * @OVS_ACTION_ATTR_PUSH_MPLS: Push a new MPLS label stack entry onto the
diff --git a/include/uapi/linux/pkt_cls.h b/include/uapi/linux/pkt_cls.h
index d1c1ccaba787..8fd715f806a2 100644
--- a/include/uapi/linux/pkt_cls.h
+++ b/include/uapi/linux/pkt_cls.h
@@ -396,6 +396,7 @@ enum {
396 TCA_BPF_FD, 396 TCA_BPF_FD,
397 TCA_BPF_NAME, 397 TCA_BPF_NAME,
398 TCA_BPF_FLAGS, 398 TCA_BPF_FLAGS,
399 TCA_BPF_FLAGS_GEN,
399 __TCA_BPF_MAX, 400 __TCA_BPF_MAX,
400}; 401};
401 402
@@ -428,6 +429,24 @@ enum {
428 TCA_FLOWER_KEY_UDP_DST, /* be16 */ 429 TCA_FLOWER_KEY_UDP_DST, /* be16 */
429 430
430 TCA_FLOWER_FLAGS, 431 TCA_FLOWER_FLAGS,
432 TCA_FLOWER_KEY_VLAN_ID, /* be16 */
433 TCA_FLOWER_KEY_VLAN_PRIO, /* u8 */
434 TCA_FLOWER_KEY_VLAN_ETH_TYPE, /* be16 */
435
436 TCA_FLOWER_KEY_ENC_KEY_ID, /* be32 */
437 TCA_FLOWER_KEY_ENC_IPV4_SRC, /* be32 */
438 TCA_FLOWER_KEY_ENC_IPV4_SRC_MASK,/* be32 */
439 TCA_FLOWER_KEY_ENC_IPV4_DST, /* be32 */
440 TCA_FLOWER_KEY_ENC_IPV4_DST_MASK,/* be32 */
441 TCA_FLOWER_KEY_ENC_IPV6_SRC, /* struct in6_addr */
442 TCA_FLOWER_KEY_ENC_IPV6_SRC_MASK,/* struct in6_addr */
443 TCA_FLOWER_KEY_ENC_IPV6_DST, /* struct in6_addr */
444 TCA_FLOWER_KEY_ENC_IPV6_DST_MASK,/* struct in6_addr */
445
446 TCA_FLOWER_KEY_TCP_SRC_MASK, /* be16 */
447 TCA_FLOWER_KEY_TCP_DST_MASK, /* be16 */
448 TCA_FLOWER_KEY_UDP_SRC_MASK, /* be16 */
449 TCA_FLOWER_KEY_UDP_DST_MASK, /* be16 */
431 __TCA_FLOWER_MAX, 450 __TCA_FLOWER_MAX,
432}; 451};
433 452
diff --git a/include/uapi/linux/pkt_sched.h b/include/uapi/linux/pkt_sched.h
index 2382eed50278..df7451d35131 100644
--- a/include/uapi/linux/pkt_sched.h
+++ b/include/uapi/linux/pkt_sched.h
@@ -792,6 +792,8 @@ enum {
792 792
793 TCA_FQ_ORPHAN_MASK, /* mask applied to orphaned skb hashes */ 793 TCA_FQ_ORPHAN_MASK, /* mask applied to orphaned skb hashes */
794 794
795 TCA_FQ_LOW_RATE_THRESHOLD, /* per packet delay under this rate */
796
795 __TCA_FQ_MAX 797 __TCA_FQ_MAX
796}; 798};
797 799
@@ -809,7 +811,7 @@ struct tc_fq_qd_stats {
809 __u32 flows; 811 __u32 flows;
810 __u32 inactive_flows; 812 __u32 inactive_flows;
811 __u32 throttled_flows; 813 __u32 throttled_flows;
812 __u32 pad; 814 __u32 unthrottle_latency_ns;
813}; 815};
814 816
815/* Heavy-Hitter Filter */ 817/* Heavy-Hitter Filter */
diff --git a/include/uapi/linux/snmp.h b/include/uapi/linux/snmp.h
index 25a9ad8bcef1..e7a31f830690 100644
--- a/include/uapi/linux/snmp.h
+++ b/include/uapi/linux/snmp.h
@@ -235,6 +235,7 @@ enum
235 LINUX_MIB_TCPSPURIOUSRTOS, /* TCPSpuriousRTOs */ 235 LINUX_MIB_TCPSPURIOUSRTOS, /* TCPSpuriousRTOs */
236 LINUX_MIB_TCPMD5NOTFOUND, /* TCPMD5NotFound */ 236 LINUX_MIB_TCPMD5NOTFOUND, /* TCPMD5NotFound */
237 LINUX_MIB_TCPMD5UNEXPECTED, /* TCPMD5Unexpected */ 237 LINUX_MIB_TCPMD5UNEXPECTED, /* TCPMD5Unexpected */
238 LINUX_MIB_TCPMD5FAILURE, /* TCPMD5Failure */
238 LINUX_MIB_SACKSHIFTED, 239 LINUX_MIB_SACKSHIFTED,
239 LINUX_MIB_SACKMERGED, 240 LINUX_MIB_SACKMERGED,
240 LINUX_MIB_SACKSHIFTFALLBACK, 241 LINUX_MIB_SACKSHIFTFALLBACK,
diff --git a/include/uapi/linux/tc_act/tc_ife.h b/include/uapi/linux/tc_act/tc_ife.h
index 4ece02a77b9a..cd18360eca24 100644
--- a/include/uapi/linux/tc_act/tc_ife.h
+++ b/include/uapi/linux/tc_act/tc_ife.h
@@ -32,8 +32,9 @@ enum {
32#define IFE_META_HASHID 2 32#define IFE_META_HASHID 2
33#define IFE_META_PRIO 3 33#define IFE_META_PRIO 3
34#define IFE_META_QMAP 4 34#define IFE_META_QMAP 4
35#define IFE_META_TCINDEX 5
35/*Can be overridden at runtime by module option*/ 36/*Can be overridden at runtime by module option*/
36#define __IFE_META_MAX 5 37#define __IFE_META_MAX 6
37#define IFE_META_MAX (__IFE_META_MAX - 1) 38#define IFE_META_MAX (__IFE_META_MAX - 1)
38 39
39#endif 40#endif
diff --git a/include/uapi/linux/tc_act/tc_skbmod.h b/include/uapi/linux/tc_act/tc_skbmod.h
new file mode 100644
index 000000000000..10fc07da6c69
--- /dev/null
+++ b/include/uapi/linux/tc_act/tc_skbmod.h
@@ -0,0 +1,39 @@
1/*
2 * Copyright (c) 2016, Jamal Hadi Salim
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8*/
9
10#ifndef __LINUX_TC_SKBMOD_H
11#define __LINUX_TC_SKBMOD_H
12
13#include <linux/pkt_cls.h>
14
15#define TCA_ACT_SKBMOD 15
16
17#define SKBMOD_F_DMAC 0x1
18#define SKBMOD_F_SMAC 0x2
19#define SKBMOD_F_ETYPE 0x4
20#define SKBMOD_F_SWAPMAC 0x8
21
22struct tc_skbmod {
23 tc_gen;
24 __u64 flags;
25};
26
27enum {
28 TCA_SKBMOD_UNSPEC,
29 TCA_SKBMOD_TM,
30 TCA_SKBMOD_PARMS,
31 TCA_SKBMOD_DMAC,
32 TCA_SKBMOD_SMAC,
33 TCA_SKBMOD_ETYPE,
34 TCA_SKBMOD_PAD,
35 __TCA_SKBMOD_MAX
36};
37#define TCA_SKBMOD_MAX (__TCA_SKBMOD_MAX - 1)
38
39#endif
diff --git a/include/uapi/linux/tc_act/tc_tunnel_key.h b/include/uapi/linux/tc_act/tc_tunnel_key.h
new file mode 100644
index 000000000000..890106ff16e6
--- /dev/null
+++ b/include/uapi/linux/tc_act/tc_tunnel_key.h
@@ -0,0 +1,41 @@
1/*
2 * Copyright (c) 2016, Amir Vadai <amir@vadai.me>
3 * Copyright (c) 2016, Mellanox Technologies. All rights reserved.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 */
10
11#ifndef __LINUX_TC_TUNNEL_KEY_H
12#define __LINUX_TC_TUNNEL_KEY_H
13
14#include <linux/pkt_cls.h>
15
16#define TCA_ACT_TUNNEL_KEY 17
17
18#define TCA_TUNNEL_KEY_ACT_SET 1
19#define TCA_TUNNEL_KEY_ACT_RELEASE 2
20
21struct tc_tunnel_key {
22 tc_gen;
23 int t_action;
24};
25
26enum {
27 TCA_TUNNEL_KEY_UNSPEC,
28 TCA_TUNNEL_KEY_TM,
29 TCA_TUNNEL_KEY_PARMS,
30 TCA_TUNNEL_KEY_ENC_IPV4_SRC, /* be32 */
31 TCA_TUNNEL_KEY_ENC_IPV4_DST, /* be32 */
32 TCA_TUNNEL_KEY_ENC_IPV6_SRC, /* struct in6_addr */
33 TCA_TUNNEL_KEY_ENC_IPV6_DST, /* struct in6_addr */
34 TCA_TUNNEL_KEY_ENC_KEY_ID, /* be64 */
35 TCA_TUNNEL_KEY_PAD,
36 __TCA_TUNNEL_KEY_MAX,
37};
38
39#define TCA_TUNNEL_KEY_MAX (__TCA_TUNNEL_KEY_MAX - 1)
40
41#endif
diff --git a/include/uapi/linux/tc_act/tc_vlan.h b/include/uapi/linux/tc_act/tc_vlan.h
index 31151ff6264f..bddb272b843f 100644
--- a/include/uapi/linux/tc_act/tc_vlan.h
+++ b/include/uapi/linux/tc_act/tc_vlan.h
@@ -16,6 +16,7 @@
16 16
17#define TCA_VLAN_ACT_POP 1 17#define TCA_VLAN_ACT_POP 1
18#define TCA_VLAN_ACT_PUSH 2 18#define TCA_VLAN_ACT_PUSH 2
19#define TCA_VLAN_ACT_MODIFY 3
19 20
20struct tc_vlan { 21struct tc_vlan {
21 tc_gen; 22 tc_gen;
@@ -29,6 +30,7 @@ enum {
29 TCA_VLAN_PUSH_VLAN_ID, 30 TCA_VLAN_PUSH_VLAN_ID,
30 TCA_VLAN_PUSH_VLAN_PROTOCOL, 31 TCA_VLAN_PUSH_VLAN_PROTOCOL,
31 TCA_VLAN_PAD, 32 TCA_VLAN_PAD,
33 TCA_VLAN_PUSH_VLAN_PRIORITY,
32 __TCA_VLAN_MAX, 34 __TCA_VLAN_MAX,
33}; 35};
34#define TCA_VLAN_MAX (__TCA_VLAN_MAX - 1) 36#define TCA_VLAN_MAX (__TCA_VLAN_MAX - 1)
diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h
index 482898fc433a..73ac0db487f8 100644
--- a/include/uapi/linux/tcp.h
+++ b/include/uapi/linux/tcp.h
@@ -167,6 +167,7 @@ struct tcp_info {
167 __u8 tcpi_backoff; 167 __u8 tcpi_backoff;
168 __u8 tcpi_options; 168 __u8 tcpi_options;
169 __u8 tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4; 169 __u8 tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
170 __u8 tcpi_delivery_rate_app_limited:1;
170 171
171 __u32 tcpi_rto; 172 __u32 tcpi_rto;
172 __u32 tcpi_ato; 173 __u32 tcpi_ato;
@@ -211,6 +212,8 @@ struct tcp_info {
211 __u32 tcpi_min_rtt; 212 __u32 tcpi_min_rtt;
212 __u32 tcpi_data_segs_in; /* RFC4898 tcpEStatsDataSegsIn */ 213 __u32 tcpi_data_segs_in; /* RFC4898 tcpEStatsDataSegsIn */
213 __u32 tcpi_data_segs_out; /* RFC4898 tcpEStatsDataSegsOut */ 214 __u32 tcpi_data_segs_out; /* RFC4898 tcpEStatsDataSegsOut */
215
216 __u64 tcpi_delivery_rate;
214}; 217};
215 218
216/* for TCP_MD5SIG socket option */ 219/* for TCP_MD5SIG socket option */
diff --git a/include/uapi/linux/tipc_netlink.h b/include/uapi/linux/tipc_netlink.h
index 5f3f6d09fb79..f9edd20fe9ba 100644
--- a/include/uapi/linux/tipc_netlink.h
+++ b/include/uapi/linux/tipc_netlink.h
@@ -59,6 +59,9 @@ enum {
59 TIPC_NL_MON_SET, 59 TIPC_NL_MON_SET,
60 TIPC_NL_MON_GET, 60 TIPC_NL_MON_GET,
61 TIPC_NL_MON_PEER_GET, 61 TIPC_NL_MON_PEER_GET,
62 TIPC_NL_PEER_REMOVE,
63 TIPC_NL_BEARER_ADD,
64 TIPC_NL_UDP_GET_REMOTEIP,
62 65
63 __TIPC_NL_CMD_MAX, 66 __TIPC_NL_CMD_MAX,
64 TIPC_NL_CMD_MAX = __TIPC_NL_CMD_MAX - 1 67 TIPC_NL_CMD_MAX = __TIPC_NL_CMD_MAX - 1
@@ -98,6 +101,7 @@ enum {
98 TIPC_NLA_UDP_UNSPEC, 101 TIPC_NLA_UDP_UNSPEC,
99 TIPC_NLA_UDP_LOCAL, /* sockaddr_storage */ 102 TIPC_NLA_UDP_LOCAL, /* sockaddr_storage */
100 TIPC_NLA_UDP_REMOTE, /* sockaddr_storage */ 103 TIPC_NLA_UDP_REMOTE, /* sockaddr_storage */
104 TIPC_NLA_UDP_MULTI_REMOTEIP, /* flag */
101 105
102 __TIPC_NLA_UDP_MAX, 106 __TIPC_NLA_UDP_MAX,
103 TIPC_NLA_UDP_MAX = __TIPC_NLA_UDP_MAX - 1 107 TIPC_NLA_UDP_MAX = __TIPC_NLA_UDP_MAX - 1
diff --git a/include/uapi/linux/xfrm.h b/include/uapi/linux/xfrm.h
index 143338978b48..1fc62b239f1b 100644
--- a/include/uapi/linux/xfrm.h
+++ b/include/uapi/linux/xfrm.h
@@ -298,7 +298,7 @@ enum xfrm_attr_type_t {
298 XFRMA_ALG_AUTH_TRUNC, /* struct xfrm_algo_auth */ 298 XFRMA_ALG_AUTH_TRUNC, /* struct xfrm_algo_auth */
299 XFRMA_MARK, /* struct xfrm_mark */ 299 XFRMA_MARK, /* struct xfrm_mark */
300 XFRMA_TFCPAD, /* __u32 */ 300 XFRMA_TFCPAD, /* __u32 */
301 XFRMA_REPLAY_ESN_VAL, /* struct xfrm_replay_esn */ 301 XFRMA_REPLAY_ESN_VAL, /* struct xfrm_replay_state_esn */
302 XFRMA_SA_EXTRA_FLAGS, /* __u32 */ 302 XFRMA_SA_EXTRA_FLAGS, /* __u32 */
303 XFRMA_PROTO, /* __u8 */ 303 XFRMA_PROTO, /* __u8 */
304 XFRMA_ADDRESS_FILTER, /* struct xfrm_address_filter */ 304 XFRMA_ADDRESS_FILTER, /* struct xfrm_address_filter */