History

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next

Pull networking updates from David Miller: "Highlights: 1) Support AES128-CCM ciphers in kTLS, from Vakul Garg. 2) Add fib_sync_mem to control the amount of dirty memory we allow to queue up between synchronize RCU calls, from David Ahern. 3) Make flow classifier more lockless, from Vlad Buslov. 4) Add PHY downshift support to aquantia driver, from Heiner Kallweit. 5) Add SKB cache for TCP rx and tx, from Eric Dumazet. This reduces contention on SLAB spinlocks in heavy RPC workloads. 6) Partial GSO offload support in XFRM, from Boris Pismenny. 7) Add fast link down support to ethtool, from Heiner Kallweit. 8) Use siphash for IP ID generator, from Eric Dumazet. 9) Pull nexthops even further out from ipv4/ipv6 routes and FIB entries, from David Ahern. 10) Move skb->xmit_more into a per-cpu variable, from Florian Westphal. 11) Improve eBPF verifier speed and increase maximum program size, from Alexei Starovoitov. 12) Eliminate per-bucket spinlocks in rhashtable, and instead use bit spinlocks. From Neil Brown. 13) Allow tunneling with GUE encap in ipvs, from Jacky Hu. 14) Improve link partner cap detection in generic PHY code, from Heiner Kallweit. 15) Add layer 2 encap support to bpf_skb_adjust_room(), from Alan Maguire. 16) Remove SKB list implementation assumptions in SCTP, your's truly. 17) Various cleanups, optimizations, and simplifications in r8169 driver. From Heiner Kallweit. 18) Add memory accounting on TX and RX path of SCTP, from Xin Long. 19) Switch PHY drivers over to use dynamic featue detection, from Heiner Kallweit. 20) Support flow steering without masking in dpaa2-eth, from Ioana Ciocoi. 21) Implement ndo_get_devlink_port in netdevsim driver, from Jiri Pirko. 22) Increase the strict parsing of current and future netlink attributes, also export such policies to userspace. From Johannes Berg. 23) Allow DSA tag drivers to be modular, from Andrew Lunn. 24) Remove legacy DSA probing support, also from Andrew Lunn. 25) Allow ll_temac driver to be used on non-x86 platforms, from Esben Haabendal. 26) Add a generic tracepoint for TX queue timeouts to ease debugging, from Cong Wang. 27) More indirect call optimizations, from Paolo Abeni" * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1763 commits) cxgb4: Fix error path in cxgb4_init_module net: phy: improve pause mode reporting in phy_print_status dt-bindings: net: Fix a typo in the phy-mode list for ethernet bindings net: macb: Change interrupt and napi enable order in open net: ll_temac: Improve error message on error IRQ net/sched: remove block pointer from common offload structure net: ethernet: support of_get_mac_address new ERR_PTR error net: usb: smsc: fix warning reported by kbuild test robot staging: octeon-ethernet: Fix of_get_mac_address ERR_PTR check net: dsa: support of_get_mac_address new ERR_PTR error net: dsa: sja1105: Fix status initialization in sja1105_get_ethtool_stats vrf: sit mtu should not be updated when vrf netdev is the link net: dsa: Fix error cleanup path in dsa_init_module l2tp: Fix possible NULL pointer dereference taprio: add null check on sched_nest to avoid potential null pointer dereference net: mvpp2: cls: fix less than zero check on a u32 variable net_sched: sch_fq: handle non connected flows net_sched: sch_fq: do not assume EDT packets are ordered net: hns3: use devm_kcalloc when allocating desc_cb net: hns3: some cleanup for struct hns3_enet_ring ...

Linus Torvalds committed 7 years ago

Commit 80f23212 parents 82efe43 a9e41a51636 files · +126811 −26978Browse files

Showing the changes to include/uapi/linux (20 of 1636 files). Show all

Unified · Split

20 files
  1. include/uapi/linux/batadv_packet.h +0 −12
  2. include/uapi/linux/batman_adv.h +7 −18
  3. include/uapi/linux/bpf.h +284 −7
  4. include/uapi/linux/btf.h +28 −4
  5. include/uapi/linux/ethtool.h +11 −0
  6. include/uapi/linux/fou.h +6 −0
  7. include/uapi/linux/icmpv6.h +4 −0
  8. include/uapi/linux/if_ether.h +1 −0
  9. include/uapi/linux/if_tun.h +1 −0
  10. include/uapi/linux/if_vlan.h +5 −4
  11. include/uapi/linux/ip_vs.h +11 −0
  12. include/uapi/linux/netfilter/nf_tables.h +8 −0
  13. include/uapi/linux/nl80211.h +84 −2
  14. include/uapi/linux/openvswitch.h +46 −0
  15. include/uapi/linux/pkt_sched.h +13 −0
  16. include/uapi/linux/sockios.h +21 −0
  17. include/uapi/linux/tcp.h +27 −0
  18. include/uapi/linux/tipc.h +1 −0
  19. include/uapi/linux/tipc_netlink.h +2 −0
  20. include/uapi/linux/tls.h +15 −0
include/uapi/linux/batadv_packet.h+0−12
@@ -2,18 +2,6 @@ · 1 unmodified line
22 /* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
33 *
44 * Marek Lindner, Simon Wunderlich
5− *
6− * This program is free software; you can redistribute it and/or
7− * modify it under the terms of version 2 of the GNU General Public
8− * License as published by the Free Software Foundation.
9− *
10− * This program is distributed in the hope that it will be useful, but
11− * WITHOUT ANY WARRANTY; without even the implied warranty of
12− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13− * General Public License for more details.
14− *
15− * You should have received a copy of the GNU General Public License
16− * along with this program; if not, see <http://www.gnu.org/licenses/>.
175 */
186
197 #ifndef _UAPI_LINUX_BATADV_PACKET_H_
include/uapi/linux/batman_adv.h+7−18
@@ -2,24 +2,6 @@ · 1 unmodified line
22 /* Copyright (C) 2016-2019 B.A.T.M.A.N. contributors:
33 *
44 * Matthias Schiffer
5− *
6− * Permission is hereby granted, free of charge, to any person obtaining a
7− * copy of this software and associated documentation files (the "Software"),
8− * to deal in the Software without restriction, including without limitation
9− * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10− * and/or sell copies of the Software, and to permit persons to whom the
11− * Software is furnished to do so, subject to the following conditions:
12− *
13− * The above copyright notice and this permission notice shall be included in
14− * all copies or substantial portions of the Software.
15− *
16− * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17− * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18− * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19− * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20− * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21− * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22− * DEALINGS IN THE SOFTWARE.
235 */
246
257 #ifndef _UAPI_LINUX_BATMAN_ADV_H_
@@ -491,6 +473,13 @@ enum batadv_nl_attrs { · 465 unmodified lines
491473 */
492474 BATADV_ATTR_THROUGHPUT_OVERRIDE,
493475
476+ /**
477+ * @BATADV_ATTR_MULTICAST_FANOUT: defines the maximum number of packet
478+ * copies that may be generated for a multicast-to-unicast conversion.
479+ * Once this limit is exceeded distribution will fall back to broadcast.
480+ */
481+ BATADV_ATTR_MULTICAST_FANOUT,
482+
494483 /* add attributes above here, update the policy in netlink.c */
495484
496485 /**
include/uapi/linux/bpf.h+284−7
@@ -105,6 +105,7 @@ enum bpf_cmd { · 104 unmodified lines
105105 BPF_BTF_GET_FD_BY_ID,
106106 BPF_TASK_FD_QUERY,
107107 BPF_MAP_LOOKUP_AND_DELETE_ELEM,
108+ BPF_MAP_FREEZE,
108109 };
109110
110111 enum bpf_map_type {
@@ -132,6 +133,7 @@ enum bpf_map_type { · 21 unmodified lines
132133 BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE,
133134 BPF_MAP_TYPE_QUEUE,
134135 BPF_MAP_TYPE_STACK,
136+ BPF_MAP_TYPE_SK_STORAGE,
135137 };
136138
137139 /* Note that tracing related programs such as
@@ -166,6 +168,8 @@ enum bpf_prog_type { · 28 unmodified lines
166168 BPF_PROG_TYPE_LIRC_MODE2,
167169 BPF_PROG_TYPE_SK_REUSEPORT,
168170 BPF_PROG_TYPE_FLOW_DISSECTOR,
171+ BPF_PROG_TYPE_CGROUP_SYSCTL,
172+ BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE,
169173 };
170174
171175 enum bpf_attach_type {
@@ -187,6 +191,7 @@ enum bpf_attach_type { · 15 unmodified lines
187191 BPF_CGROUP_UDP6_SENDMSG,
188192 BPF_LIRC_MODE2,
189193 BPF_FLOW_DISSECTOR,
194+ BPF_CGROUP_SYSCTL,
190195 __MAX_BPF_ATTACH_TYPE
191196 };
192197
@@ -255,8 +260,19 @@ enum bpf_attach_type { · 62 unmodified lines
255260 */
256261 #define BPF_F_ANY_ALIGNMENT (1U << 1)
257262
258−/* when bpf_ldimm64->src_reg == BPF_PSEUDO_MAP_FD, bpf_ldimm64->imm == fd */
263+/* When BPF ldimm64's insn[0].src_reg != 0 then this can have
264+ * two extensions:
265+ *
266+ * insn[0].src_reg: BPF_PSEUDO_MAP_FD BPF_PSEUDO_MAP_VALUE
267+ * insn[0].imm: map fd map fd
268+ * insn[1].imm: 0 offset into value
269+ * insn[0].off: 0 0
270+ * insn[1].off: 0 0
271+ * ldimm64 rewrite: address of map address of map[0]+offset
272+ * verifier type: CONST_PTR_TO_MAP PTR_TO_MAP_VALUE
273+ */
259274 #define BPF_PSEUDO_MAP_FD 1
275+#define BPF_PSEUDO_MAP_VALUE 2
260276
261277 /* when bpf_call->src_reg == BPF_PSEUDO_CALL, bpf_call->imm == pc-relative
262278 * offset to another bpf function
@@ -283,7 +299,7 @@ enum bpf_attach_type { · 20 unmodified lines
283299
284300 #define BPF_OBJ_NAME_LEN 16U
285301
286−/* Flags for accessing BPF object */
302+/* Flags for accessing BPF object from syscall side. */
287303 #define BPF_F_RDONLY (1U << 3)
288304 #define BPF_F_WRONLY (1U << 4)
289305
@@ -293,6 +309,10 @@ enum bpf_attach_type { · 3 unmodified lines
293309 /* Zero-initialize hash function seed. This should only be used for testing. */
294310 #define BPF_F_ZERO_SEED (1U << 6)
295311
312+/* Flags for accessing BPF object from program side. */
313+#define BPF_F_RDONLY_PROG (1U << 7)
314+#define BPF_F_WRONLY_PROG (1U << 8)
315+
296316 /* flags for BPF_PROG_QUERY */
297317 #define BPF_F_QUERY_EFFECTIVE (1U << 0)
298318
@@ -396,6 +416,13 @@ union bpf_attr { · 97 unmodified lines
396416 __aligned_u64 data_out;
397417 __u32 repeat;
398418 __u32 duration;
419+ __u32 ctx_size_in; /* input: len of ctx_in */
420+ __u32 ctx_size_out; /* input/output: len of ctx_out
421+ * returns ENOSPC if ctx_out
422+ * is too small.
423+ */
424+ __aligned_u64 ctx_in;
425+ __aligned_u64 ctx_out;
399426 } test;
400427
401428 struct { /* anonymous struct used by BPF_*_GET_*_ID */
@@ -1478,13 +1505,31 @@ union bpf_attr { · 1076 unmodified lines
14781505 * Grow or shrink the room for data in the packet associated to
14791506 * *skb* by *len_diff*, and according to the selected *mode*.
14801507 *
1481− * There is a single supported mode at this time:
1508+ * There are two supported modes at this time:
1509+ *
1510+ * * **BPF_ADJ_ROOM_MAC**: Adjust room at the mac layer
1511+ * (room space is added or removed below the layer 2 header).
14821512 *
14831513 * * **BPF_ADJ_ROOM_NET**: Adjust room at the network layer
14841514 * (room space is added or removed below the layer 3 header).
14851515 *
1486− * All values for *flags* are reserved for future usage, and must
1487− * be left at zero.
1516+ * The following flags are supported at this time:
1517+ *
1518+ * * **BPF_F_ADJ_ROOM_FIXED_GSO**: Do not adjust gso_size.
1519+ * Adjusting mss in this way is not allowed for datagrams.
1520+ *
1521+ * * **BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 **:
1522+ * * **BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 **:
1523+ * Any new space is reserved to hold a tunnel header.
1524+ * Configure skb offsets and other fields accordingly.
1525+ *
1526+ * * **BPF_F_ADJ_ROOM_ENCAP_L4_GRE **:
1527+ * * **BPF_F_ADJ_ROOM_ENCAP_L4_UDP **:
1528+ * Use with ENCAP_L3 flags to further specify the tunnel type.
1529+ *
1530+ * * **BPF_F_ADJ_ROOM_ENCAP_L2(len) **:
1531+ * Use with ENCAP_L3/L4 flags to further specify the tunnel
1532+ * type; **len** is the length of the inner MAC header.
14881533 *
14891534 * A call to this helper is susceptible to change the underlaying
14901535 * packet buffer. Therefore, at load time, all checks on pointers
@@ -1694,12 +1739,19 @@ union bpf_attr { · 203 unmodified lines
16941739 * error if an eBPF program tries to set a callback that is not
16951740 * supported in the current kernel.
16961741 *
1697− * The supported callback values that *argval* can combine are:
1742+ * *argval* is a flag array which can combine these flags:
16981743 *
16991744 * * **BPF_SOCK_OPS_RTO_CB_FLAG** (retransmission time out)
17001745 * * **BPF_SOCK_OPS_RETRANS_CB_FLAG** (retransmission)
17011746 * * **BPF_SOCK_OPS_STATE_CB_FLAG** (TCP state change)
17021747 *
1748+ * Therefore, this function can be used to clear a callback flag by
1749+ * setting the appropriate bit to zero. e.g. to disable the RTO
1750+ * callback:
1751+ *
1752+ * **bpf_sock_ops_cb_flags_set(bpf_sock,**
1753+ * **bpf_sock->bpf_sock_ops_cb_flags & ~BPF_SOCK_OPS_RTO_CB_FLAG)**
1754+ *
17031755 * Here are some examples of where one could call such eBPF
17041756 * program:
17051757 *
@@ -2431,6 +2483,190 @@ union bpf_attr { · 725 unmodified lines
24312483 * Return
24322484 * A **struct bpf_sock** pointer on success, or **NULL** in
24332485 * case of failure.
2486+ *
2487+ * struct bpf_sock *bpf_skc_lookup_tcp(void *ctx, struct bpf_sock_tuple *tuple, u32 tuple_size, u64 netns, u64 flags)
2488+ * Description
2489+ * Look for TCP socket matching *tuple*, optionally in a child
2490+ * network namespace *netns*. The return value must be checked,
2491+ * and if non-**NULL**, released via **bpf_sk_release**\ ().
2492+ *
2493+ * This function is identical to bpf_sk_lookup_tcp, except that it
2494+ * also returns timewait or request sockets. Use bpf_sk_fullsock
2495+ * or bpf_tcp_socket to access the full structure.
2496+ *
2497+ * This helper is available only if the kernel was compiled with
2498+ * **CONFIG_NET** configuration option.
2499+ * Return
2500+ * Pointer to **struct bpf_sock**, or **NULL** in case of failure.
2501+ * For sockets with reuseport option, the **struct bpf_sock**
2502+ * result is from **reuse->socks**\ [] using the hash of the tuple.
2503+ *
2504+ * int bpf_tcp_check_syncookie(struct bpf_sock *sk, void *iph, u32 iph_len, struct tcphdr *th, u32 th_len)
2505+ * Description
2506+ * Check whether iph and th contain a valid SYN cookie ACK for
2507+ * the listening socket in sk.
2508+ *
2509+ * iph points to the start of the IPv4 or IPv6 header, while
2510+ * iph_len contains sizeof(struct iphdr) or sizeof(struct ip6hdr).
2511+ *
2512+ * th points to the start of the TCP header, while th_len contains
2513+ * sizeof(struct tcphdr).
2514+ *
2515+ * Return
2516+ * 0 if iph and th are a valid SYN cookie ACK, or a negative error
2517+ * otherwise.
2518+ *
2519+ * int bpf_sysctl_get_name(struct bpf_sysctl *ctx, char *buf, size_t buf_len, u64 flags)
2520+ * Description
2521+ * Get name of sysctl in /proc/sys/ and copy it into provided by
2522+ * program buffer *buf* of size *buf_len*.
2523+ *
2524+ * The buffer is always NUL terminated, unless it's zero-sized.
2525+ *
2526+ * If *flags* is zero, full name (e.g. "net/ipv4/tcp_mem") is
2527+ * copied. Use **BPF_F_SYSCTL_BASE_NAME** flag to copy base name
2528+ * only (e.g. "tcp_mem").
2529+ * Return
2530+ * Number of character copied (not including the trailing NUL).
2531+ *
2532+ * **-E2BIG** if the buffer wasn't big enough (*buf* will contain
2533+ * truncated name in this case).
2534+ *
2535+ * int bpf_sysctl_get_current_value(struct bpf_sysctl *ctx, char *buf, size_t buf_len)
2536+ * Description
2537+ * Get current value of sysctl as it is presented in /proc/sys
2538+ * (incl. newline, etc), and copy it as a string into provided
2539+ * by program buffer *buf* of size *buf_len*.
2540+ *
2541+ * The whole value is copied, no matter what file position user
2542+ * space issued e.g. sys_read at.
2543+ *
2544+ * The buffer is always NUL terminated, unless it's zero-sized.
2545+ * Return
2546+ * Number of character copied (not including the trailing NUL).
2547+ *
2548+ * **-E2BIG** if the buffer wasn't big enough (*buf* will contain
2549+ * truncated name in this case).
2550+ *
2551+ * **-EINVAL** if current value was unavailable, e.g. because
2552+ * sysctl is uninitialized and read returns -EIO for it.
2553+ *
2554+ * int bpf_sysctl_get_new_value(struct bpf_sysctl *ctx, char *buf, size_t buf_len)
2555+ * Description
2556+ * Get new value being written by user space to sysctl (before
2557+ * the actual write happens) and copy it as a string into
2558+ * provided by program buffer *buf* of size *buf_len*.
2559+ *
2560+ * User space may write new value at file position > 0.
2561+ *
2562+ * The buffer is always NUL terminated, unless it's zero-sized.
2563+ * Return
2564+ * Number of character copied (not including the trailing NUL).
2565+ *
2566+ * **-E2BIG** if the buffer wasn't big enough (*buf* will contain
2567+ * truncated name in this case).
2568+ *
2569+ * **-EINVAL** if sysctl is being read.
2570+ *
2571+ * int bpf_sysctl_set_new_value(struct bpf_sysctl *ctx, const char *buf, size_t buf_len)
2572+ * Description
2573+ * Override new value being written by user space to sysctl with
2574+ * value provided by program in buffer *buf* of size *buf_len*.
2575+ *
2576+ * *buf* should contain a string in same form as provided by user
2577+ * space on sysctl write.
2578+ *
2579+ * User space may write new value at file position > 0. To override
2580+ * the whole sysctl value file position should be set to zero.
2581+ * Return
2582+ * 0 on success.
2583+ *
2584+ * **-E2BIG** if the *buf_len* is too big.
2585+ *
2586+ * **-EINVAL** if sysctl is being read.
2587+ *
2588+ * int bpf_strtol(const char *buf, size_t buf_len, u64 flags, long *res)
2589+ * Description
2590+ * Convert the initial part of the string from buffer *buf* of
2591+ * size *buf_len* to a long integer according to the given base
2592+ * and save the result in *res*.
2593+ *
2594+ * The string may begin with an arbitrary amount of white space
2595+ * (as determined by isspace(3)) followed by a single optional '-'
2596+ * sign.
2597+ *
2598+ * Five least significant bits of *flags* encode base, other bits
2599+ * are currently unused.
2600+ *
2601+ * Base must be either 8, 10, 16 or 0 to detect it automatically
2602+ * similar to user space strtol(3).
2603+ * Return
2604+ * Number of characters consumed on success. Must be positive but
2605+ * no more than buf_len.
2606+ *
2607+ * **-EINVAL** if no valid digits were found or unsupported base
2608+ * was provided.
2609+ *
2610+ * **-ERANGE** if resulting value was out of range.
2611+ *
2612+ * int bpf_strtoul(const char *buf, size_t buf_len, u64 flags, unsigned long *res)
2613+ * Description
2614+ * Convert the initial part of the string from buffer *buf* of
2615+ * size *buf_len* to an unsigned long integer according to the
2616+ * given base and save the result in *res*.
2617+ *
2618+ * The string may begin with an arbitrary amount of white space
2619+ * (as determined by isspace(3)).
2620+ *
2621+ * Five least significant bits of *flags* encode base, other bits
2622+ * are currently unused.
2623+ *
2624+ * Base must be either 8, 10, 16 or 0 to detect it automatically
2625+ * similar to user space strtoul(3).
2626+ * Return
2627+ * Number of characters consumed on success. Must be positive but
2628+ * no more than buf_len.
2629+ *
2630+ * **-EINVAL** if no valid digits were found or unsupported base
2631+ * was provided.
2632+ *
2633+ * **-ERANGE** if resulting value was out of range.
2634+ *
2635+ * void *bpf_sk_storage_get(struct bpf_map *map, struct bpf_sock *sk, void *value, u64 flags)
2636+ * Description
2637+ * Get a bpf-local-storage from a sk.
2638+ *
2639+ * Logically, it could be thought of getting the value from
2640+ * a *map* with *sk* as the **key**. From this
2641+ * perspective, the usage is not much different from
2642+ * **bpf_map_lookup_elem(map, &sk)** except this
2643+ * helper enforces the key must be a **bpf_fullsock()**
2644+ * and the map must be a BPF_MAP_TYPE_SK_STORAGE also.
2645+ *
2646+ * Underneath, the value is stored locally at *sk* instead of
2647+ * the map. The *map* is used as the bpf-local-storage **type**.
2648+ * The bpf-local-storage **type** (i.e. the *map*) is searched
2649+ * against all bpf-local-storages residing at sk.
2650+ *
2651+ * An optional *flags* (BPF_SK_STORAGE_GET_F_CREATE) can be
2652+ * used such that a new bpf-local-storage will be
2653+ * created if one does not exist. *value* can be used
2654+ * together with BPF_SK_STORAGE_GET_F_CREATE to specify
2655+ * the initial value of a bpf-local-storage. If *value* is
2656+ * NULL, the new bpf-local-storage will be zero initialized.
2657+ * Return
2658+ * A bpf-local-storage pointer is returned on success.
2659+ *
2660+ * **NULL** if not found or there was an error in adding
2661+ * a new bpf-local-storage.
2662+ *
2663+ * int bpf_sk_storage_delete(struct bpf_map *map, struct bpf_sock *sk)
2664+ * Description
2665+ * Delete a bpf-local-storage from a sk.
2666+ * Return
2667+ * 0 on success.
2668+ *
2669+ * **-ENOENT** if the bpf-local-storage cannot be found.
24342670 */
24352671 #define __BPF_FUNC_MAPPER(FN) \
24362672 FN(unspec), \
@@ -2531,7 +2767,17 @@ union bpf_attr { · 94 unmodified lines
25312767 FN(sk_fullsock), \
25322768 FN(tcp_sock), \
25332769 FN(skb_ecn_set_ce), \
2534− FN(get_listener_sock),
2770+ FN(get_listener_sock), \
2771+ FN(skc_lookup_tcp), \
2772+ FN(tcp_check_syncookie), \
2773+ FN(sysctl_get_name), \
2774+ FN(sysctl_get_current_value), \
2775+ FN(sysctl_get_new_value), \
2776+ FN(sysctl_set_new_value), \
2777+ FN(strtol), \
2778+ FN(strtoul), \
2779+ FN(sk_storage_get), \
2780+ FN(sk_storage_delete),
25352781
25362782 /* integer value in 'imm' field of BPF_CALL instruction selects which helper
25372783 * function eBPF program intends to call
@@ -2590,9 +2836,30 @@ enum bpf_func_id { · 52 unmodified lines
25902836 /* Current network namespace */
25912837 #define BPF_F_CURRENT_NETNS (-1L)
25922838
2839+/* BPF_FUNC_skb_adjust_room flags. */
2840+#define BPF_F_ADJ_ROOM_FIXED_GSO (1ULL << 0)
2841+
2842+#define BPF_ADJ_ROOM_ENCAP_L2_MASK 0xff
2843+#define BPF_ADJ_ROOM_ENCAP_L2_SHIFT 56
2844+
2845+#define BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 (1ULL << 1)
2846+#define BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 (1ULL << 2)
2847+#define BPF_F_ADJ_ROOM_ENCAP_L4_GRE (1ULL << 3)
2848+#define BPF_F_ADJ_ROOM_ENCAP_L4_UDP (1ULL << 4)
2849+#define BPF_F_ADJ_ROOM_ENCAP_L2(len) (((__u64)len & \
2850+ BPF_ADJ_ROOM_ENCAP_L2_MASK) \
2851+ << BPF_ADJ_ROOM_ENCAP_L2_SHIFT)
2852+
2853+/* BPF_FUNC_sysctl_get_name flags. */
2854+#define BPF_F_SYSCTL_BASE_NAME (1ULL << 0)
2855+
2856+/* BPF_FUNC_sk_storage_get flags */
2857+#define BPF_SK_STORAGE_GET_F_CREATE (1ULL << 0)
2858+
25932859 /* Mode for BPF_FUNC_skb_adjust_room helper. */
25942860 enum bpf_adj_room_mode {
25952861 BPF_ADJ_ROOM_NET,
2862+ BPF_ADJ_ROOM_MAC,
25962863 };
25972864
25982865 /* Mode for BPF_FUNC_skb_load_bytes_relative helper. */
@@ -3218,4 +3485,14 @@ struct bpf_line_info { · 619 unmodified lines
32183485 struct bpf_spin_lock {
32193486 __u32 val;
32203487 };
3488+
3489+struct bpf_sysctl {
3490+ __u32 write; /* Sysctl is being read (= 0) or written (= 1).
3491+ * Allows 1,2,4-byte read, but no write.
3492+ */
3493+ __u32 file_pos; /* Sysctl file position to read from, write to.
3494+ * Allows 1,2,4-byte read an 4-byte write.
3495+ */
3496+};
3497+
32213498 #endif /* _UAPI__LINUX_BPF_H__ */
include/uapi/linux/btf.h+28−4
@@ -39,11 +39,11 @@ struct btf_type { · 38 unmodified lines
3939 * struct, union and fwd
4040 */
4141 __u32 info;
42− /* "size" is used by INT, ENUM, STRUCT and UNION.
42+ /* "size" is used by INT, ENUM, STRUCT, UNION and DATASEC.
4343 * "size" tells the size of the type it is describing.
4444 *
4545 * "type" is used by PTR, TYPEDEF, VOLATILE, CONST, RESTRICT,
46− * FUNC and FUNC_PROTO.
46+ * FUNC, FUNC_PROTO and VAR.
4747 * "type" is a type_id referring to another type.
4848 */
4949 union {
@@ -70,8 +70,10 @@ struct btf_type { · 20 unmodified lines
7070 #define BTF_KIND_RESTRICT 11 /* Restrict */
7171 #define BTF_KIND_FUNC 12 /* Function */
7272 #define BTF_KIND_FUNC_PROTO 13 /* Function Proto */
73−#define BTF_KIND_MAX 13
74−#define NR_BTF_KINDS 14
73+#define BTF_KIND_VAR 14 /* Variable */
74+#define BTF_KIND_DATASEC 15 /* Section */
75+#define BTF_KIND_MAX BTF_KIND_DATASEC
76+#define NR_BTF_KINDS (BTF_KIND_MAX + 1)
7577
7678 /* For some specific BTF_KIND, "struct btf_type" is immediately
7779 * followed by extra data.
@@ -138,4 +140,26 @@ struct btf_param { · 60 unmodified lines
138140 __u32 type;
139141 };
140142
143+enum {
144+ BTF_VAR_STATIC = 0,
145+ BTF_VAR_GLOBAL_ALLOCATED,
146+};
147+
148+/* BTF_KIND_VAR is followed by a single "struct btf_var" to describe
149+ * additional information related to the variable such as its linkage.
150+ */
151+struct btf_var {
152+ __u32 linkage;
153+};
154+
155+/* BTF_KIND_DATASEC is followed by multiple "struct btf_var_secinfo"
156+ * to describe all BTF_KIND_VAR types it contains along with it's
157+ * in-section offset as well as size.
158+ */
159+struct btf_var_secinfo {
160+ __u32 type;
161+ __u32 offset;
162+ __u32 size;
163+};
164+
141165 #endif /* _UAPI__LINUX_BTF_H__ */
include/uapi/linux/ethtool.h+11−0
@@ -252,9 +252,17 @@ struct ethtool_tunable { · 251 unmodified lines
252252 #define DOWNSHIFT_DEV_DEFAULT_COUNT 0xff
253253 #define DOWNSHIFT_DEV_DISABLE 0
254254
255+/* Time in msecs after which link is reported as down
256+ * 0 = lowest time supported by the PHY
257+ * 0xff = off, link down detection according to standard
258+ */
259+#define ETHTOOL_PHY_FAST_LINK_DOWN_ON 0
260+#define ETHTOOL_PHY_FAST_LINK_DOWN_OFF 0xff
261+
255262 enum phy_tunable_id {
256263 ETHTOOL_PHY_ID_UNSPEC,
257264 ETHTOOL_PHY_DOWNSHIFT,
265+ ETHTOOL_PHY_FAST_LINK_DOWN,
258266 /*
259267 * Add your fresh new phy tunable attribute above and remember to update
260268 * phy_tunable_strings[] in net/core/ethtool.c
@@ -1704,6 +1712,9 @@ static inline int ethtool_validate_duplex(__u8 duplex) · 1443 unmodified lines
17041712 #define ETH_MODULE_SFF_8436 0x4
17051713 #define ETH_MODULE_SFF_8436_LEN 256
17061714
1715+#define ETH_MODULE_SFF_8636_MAX_LEN 640
1716+#define ETH_MODULE_SFF_8436_MAX_LEN 640
1717+
17071718 /* Reset flags */
17081719 /* The reset() operation must clear the flags for the components which
17091720 * were actually reset. On successful return, the flags indicate the
include/uapi/linux/fou.h+6−0
@@ -16,6 +16,12 @@ enum { · 15 unmodified lines
1616 FOU_ATTR_IPPROTO, /* u8 */
1717 FOU_ATTR_TYPE, /* u8 */
1818 FOU_ATTR_REMCSUM_NOPARTIAL, /* flag */
19+ FOU_ATTR_LOCAL_V4, /* u32 */
20+ FOU_ATTR_LOCAL_V6, /* in6_addr */
21+ FOU_ATTR_PEER_V4, /* u32 */
22+ FOU_ATTR_PEER_V6, /* in6_addr */
23+ FOU_ATTR_PEER_PORT, /* u16 */
24+ FOU_ATTR_IFINDEX, /* s32 */
1925
2026 __FOU_ATTR_MAX,
2127 };
include/uapi/linux/icmpv6.h+4−0
@@ -90,6 +90,8 @@ struct icmp6hdr { · 89 unmodified lines
9090 #define ICMPV6_TIME_EXCEED 3
9191 #define ICMPV6_PARAMPROB 4
9292
93+#define ICMPV6_ERRMSG_MAX 127
94+
9395 #define ICMPV6_INFOMSG_MASK 0x80
9496
9597 #define ICMPV6_ECHO_REQUEST 128
@@ -110,6 +112,8 @@ struct icmp6hdr { · 14 unmodified lines
110112
111113 #define ICMPV6_MRDISC_ADV 151
112114
115+#define ICMPV6_MSG_MAX 255
116+
113117 /*
114118 * Codes for Destination Unreachable
115119 */
include/uapi/linux/if_ether.h+1−0
@@ -109,6 +109,7 @@ · 108 unmodified lines
109109 #define ETH_P_QINQ2 0x9200 /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
110110 #define ETH_P_QINQ3 0x9300 /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
111111 #define ETH_P_EDSA 0xDADA /* Ethertype DSA [ NOT AN OFFICIALLY REGISTERED ID ] */
112+#define ETH_P_DSA_8021Q 0xDADB /* Fake VLAN Header for DSA [ NOT AN OFFICIALLY REGISTERED ID ] */
112113 #define ETH_P_IFE 0xED3E /* ForCES inter-FE LFB type */
113114 #define ETH_P_AF_IUCV 0xFBFB /* IBM af_iucv [ NOT AN OFFICIALLY REGISTERED ID ] */
114115
include/uapi/linux/if_tun.h+1−0
@@ -60,6 +60,7 @@ · 59 unmodified lines
6060 #define TUNSETSTEERINGEBPF _IOR('T', 224, int)
6161 #define TUNSETFILTEREBPF _IOR('T', 225, int)
6262 #define TUNSETCARRIER _IOW('T', 226, int)
63+#define TUNGETDEVNETNS _IO('T', 227)
6364
6465 /* TUNSETIFF ifr flags */
6566 #define IFF_TUN 0x0001
include/uapi/linux/if_vlan.h+5−4
@@ -32,10 +32,11 @@ enum vlan_ioctl_cmds { · 31 unmodified lines
3232 };
3333
3434 enum vlan_flags {
35− VLAN_FLAG_REORDER_HDR = 0x1,
36− VLAN_FLAG_GVRP = 0x2,
37− VLAN_FLAG_LOOSE_BINDING = 0x4,
38− VLAN_FLAG_MVRP = 0x8,
35+ VLAN_FLAG_REORDER_HDR = 0x1,
36+ VLAN_FLAG_GVRP = 0x2,
37+ VLAN_FLAG_LOOSE_BINDING = 0x4,
38+ VLAN_FLAG_MVRP = 0x8,
39+ VLAN_FLAG_BRIDGE_BINDING = 0x10,
3940 };
4041
4142 enum vlan_name_types {
include/uapi/linux/ip_vs.h+11−0
@@ -124,6 +124,13 @@ · 123 unmodified lines
124124
125125 #define IP_VS_PEDATA_MAXLEN 255
126126
127+/* Tunnel types */
128+enum {
129+ IP_VS_CONN_F_TUNNEL_TYPE_IPIP = 0, /* IPIP */
130+ IP_VS_CONN_F_TUNNEL_TYPE_GUE, /* GUE */
131+ IP_VS_CONN_F_TUNNEL_TYPE_MAX,
132+};
133+
127134 /*
128135 * The struct ip_vs_service_user and struct ip_vs_dest_user are
129136 * used to set IPVS rules through setsockopt.
@@ -392,6 +399,10 @@ enum { · 262 unmodified lines
392399
393400 IPVS_DEST_ATTR_STATS64, /* nested attribute for dest stats */
394401
402+ IPVS_DEST_ATTR_TUN_TYPE, /* tunnel type */
403+
404+ IPVS_DEST_ATTR_TUN_PORT, /* tunnel port */
405+
395406 __IPVS_DEST_ATTR_MAX,
396407 };
397408
include/uapi/linux/netfilter/nf_tables.h+8−0
@@ -967,6 +967,7 @@ enum nft_socket_keys { · 966 unmodified lines
967967 * @NFT_CT_SRC_IP6: conntrack layer 3 protocol source (IPv6 address)
968968 * @NFT_CT_DST_IP6: conntrack layer 3 protocol destination (IPv6 address)
969969 * @NFT_CT_TIMEOUT: connection tracking timeout policy assigned to conntrack
970+ * @NFT_CT_ID: conntrack id
970971 */
971972 enum nft_ct_keys {
972973 NFT_CT_STATE,
@@ -993,6 +994,7 @@ enum nft_ct_keys { · 20 unmodified lines
993994 NFT_CT_SRC_IP6,
994995 NFT_CT_DST_IP6,
995996 NFT_CT_TIMEOUT,
997+ NFT_CT_ID,
996998 __NFT_CT_MAX
997999 };
9981000 #define NFT_CT_MAX (__NFT_CT_MAX - 1)
@@ -1522,15 +1524,21 @@ enum nft_flowtable_hook_attributes { · 523 unmodified lines
15221524 *
15231525 * @NFTA_OSF_DREG: destination register (NLA_U32: nft_registers)
15241526 * @NFTA_OSF_TTL: Value of the TTL osf option (NLA_U8)
1527+ * @NFTA_OSF_FLAGS: flags (NLA_U32)
15251528 */
15261529 enum nft_osf_attributes {
15271530 NFTA_OSF_UNSPEC,
15281531 NFTA_OSF_DREG,
15291532 NFTA_OSF_TTL,
1533+ NFTA_OSF_FLAGS,
15301534 __NFTA_OSF_MAX,
15311535 };
15321536 #define NFTA_OSF_MAX (__NFTA_OSF_MAX - 1)
15331537
1538+enum nft_osf_flags {
1539+ NFT_OSF_F_VERSION = (1 << 0),
1540+};
1541+
15341542 /**
15351543 * enum nft_device_attributes - nf_tables device netlink attributes
15361544 *
include/uapi/linux/nl80211.h+84−2
@@ -11,7 +11,7 @@ · 10 unmodified lines
1111 * Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com>
1212 * Copyright 2008 Colin McCabe <colin@cozybit.com>
1313 * Copyright 2015-2017 Intel Deutschland GmbH
14− * Copyright (C) 2018 Intel Corporation
14+ * Copyright (C) 2018-2019 Intel Corporation
1515 *
1616 * Permission to use, copy, modify, and/or distribute this software for any
1717 * purpose with or without fee is hereby granted, provided that the above
@@ -1065,6 +1065,26 @@ · 1047 unmodified lines
10651065 * indicated by %NL80211_ATTR_WIPHY_FREQ and other attributes
10661066 * determining the width and type.
10671067 *
1068+ * @NL80211_CMD_UPDATE_OWE_INFO: This interface allows the host driver to
1069+ * offload OWE processing to user space. This intends to support
1070+ * OWE AKM by the host drivers that implement SME but rely
1071+ * on the user space for the cryptographic/DH IE processing in AP mode.
1072+ *
1073+ * @NL80211_CMD_PROBE_MESH_LINK: The requirement for mesh link metric
1074+ * refreshing, is that from one mesh point we be able to send some data
1075+ * frames to other mesh points which are not currently selected as a
1076+ * primary traffic path, but which are only 1 hop away. The absence of
1077+ * the primary path to the chosen node makes it necessary to apply some
1078+ * form of marking on a chosen packet stream so that the packets can be
1079+ * properly steered to the selected node for testing, and not by the
1080+ * regular mesh path lookup. Further, the packets must be of type data
1081+ * so that the rate control (often embedded in firmware) is used for
1082+ * rate selection.
1083+ *
1084+ * Here attribute %NL80211_ATTR_MAC is used to specify connected mesh
1085+ * peer MAC address and %NL80211_ATTR_FRAME is used to specify the frame
1086+ * content. The frame is ethernet data.
1087+ *
10681088 * @NL80211_CMD_MAX: highest used command number
10691089 * @__NL80211_CMD_AFTER_LAST: internal use
10701090 */
@@ -1285,6 +1305,10 @@ enum nl80211_commands { · 214 unmodified lines
12851305
12861306 NL80211_CMD_NOTIFY_RADAR,
12871307
1308+ NL80211_CMD_UPDATE_OWE_INFO,
1309+
1310+ NL80211_CMD_PROBE_MESH_LINK,
1311+
12881312 /* add new commands above here */
12891313
12901314 /* used to define NL80211_CMD_MAX below */
@@ -2308,6 +2332,15 @@ enum nl80211_commands { · 1017 unmodified lines
23082332 * @NL80211_ATTR_AIRTIME_WEIGHT: Station's weight when scheduled by the airtime
23092333 * scheduler.
23102334 *
2335+ * @NL80211_ATTR_STA_TX_POWER_SETTING: Transmit power setting type (u8) for
2336+ * station associated with the AP. See &enum nl80211_tx_power_setting for
2337+ * possible values.
2338+ * @NL80211_ATTR_STA_TX_POWER: Transmit power level (s16) in dBm units. This
2339+ * allows to set Tx power for a station. If this attribute is not included,
2340+ * the default per-interface tx power setting will be overriding. Driver
2341+ * should be picking up the lowest tx power, either tx power per-interface
2342+ * or per-station.
2343+ *
23112344 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
23122345 * @NL80211_ATTR_MAX: highest attribute number currently defined
23132346 * @__NL80211_ATTR_AFTER_LAST: internal use
@@ -2758,6 +2791,8 @@ enum nl80211_attrs { · 444 unmodified lines
27582791 NL80211_ATTR_PEER_MEASUREMENTS,
27592792
27602793 NL80211_ATTR_AIRTIME_WEIGHT,
2794+ NL80211_ATTR_STA_TX_POWER_SETTING,
2795+ NL80211_ATTR_STA_TX_POWER,
27612796
27622797 /* add attributes here, update the policy in nl80211.c */
27632798
@@ -2802,7 +2837,7 @@ enum nl80211_attrs { · 38 unmodified lines
28022837
28032838 #define NL80211_MAX_SUPP_RATES 32
28042839 #define NL80211_MAX_SUPP_HT_RATES 77
2805−#define NL80211_MAX_SUPP_REG_RULES 64
2840+#define NL80211_MAX_SUPP_REG_RULES 128
28062841 #define NL80211_TKIP_DATA_OFFSET_ENCR_KEY 0
28072842 #define NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY 16
28082843 #define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 24
@@ -3139,6 +3174,7 @@ enum nl80211_sta_bss_param { · 330 unmodified lines
31393174 * @NL80211_STA_INFO_TX_DURATION: aggregate PPDU duration for all frames
31403175 * sent to the station (u64, usec)
31413176 * @NL80211_STA_INFO_AIRTIME_WEIGHT: current airtime weight for station (u16)
3177+ * @NL80211_STA_INFO_AIRTIME_LINK_METRIC: airtime link metric for mesh station
31423178 * @__NL80211_STA_INFO_AFTER_LAST: internal
31433179 * @NL80211_STA_INFO_MAX: highest possible station info attribute
31443180 */
@@ -3184,6 +3220,7 @@ enum nl80211_sta_info { · 39 unmodified lines
31843220 NL80211_STA_INFO_CONNECTED_TO_GATE,
31853221 NL80211_STA_INFO_TX_DURATION,
31863222 NL80211_STA_INFO_AIRTIME_WEIGHT,
3223+ NL80211_STA_INFO_AIRTIME_LINK_METRIC,
31873224
31883225 /* keep last */
31893226 __NL80211_STA_INFO_AFTER_LAST,
@@ -3638,6 +3675,14 @@ enum nl80211_reg_rule_attr { · 448 unmodified lines
36383675 * value as specified by &struct nl80211_bss_select_rssi_adjust.
36393676 * @NL80211_SCHED_SCAN_MATCH_ATTR_BSSID: BSSID to be used for matching
36403677 * (this cannot be used together with SSID).
3678+ * @NL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI: Nested attribute that carries the
3679+ * band specific minimum rssi thresholds for the bands defined in
3680+ * enum nl80211_band. The minimum rssi threshold value(s32) specific to a
3681+ * band shall be encapsulated in attribute with type value equals to one
3682+ * of the NL80211_BAND_* defined in enum nl80211_band. For example, the
3683+ * minimum rssi threshold value for 2.4GHZ band shall be encapsulated
3684+ * within an attribute of type NL80211_BAND_2GHZ. And one or more of such
3685+ * attributes will be nested within this attribute.
36413686 * @NL80211_SCHED_SCAN_MATCH_ATTR_MAX: highest scheduled scan filter
36423687 * attribute number currently defined
36433688 * @__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST: internal use
@@ -3650,6 +3695,7 @@ enum nl80211_sched_scan_match_attr { · 6 unmodified lines
36503695 NL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI,
36513696 NL80211_SCHED_SCAN_MATCH_ATTR_RSSI_ADJUST,
36523697 NL80211_SCHED_SCAN_MATCH_ATTR_BSSID,
3698+ NL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI,
36533699
36543700 /* keep last */
36553701 __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST,
@@ -4134,6 +4180,27 @@ enum nl80211_channel_type { · 478 unmodified lines
41344180 NL80211_CHAN_HT40PLUS
41354181 };
41364182
4183+/**
4184+ * enum nl80211_key_mode - Key mode
4185+ *
4186+ * @NL80211_KEY_RX_TX: (Default)
4187+ * Key can be used for Rx and Tx immediately
4188+ *
4189+ * The following modes can only be selected for unicast keys and when the
4190+ * driver supports @NL80211_EXT_FEATURE_EXT_KEY_ID:
4191+ *
4192+ * @NL80211_KEY_NO_TX: Only allowed in combination with @NL80211_CMD_NEW_KEY:
4193+ * Unicast key can only be used for Rx, Tx not allowed, yet
4194+ * @NL80211_KEY_SET_TX: Only allowed in combination with @NL80211_CMD_SET_KEY:
4195+ * The unicast key identified by idx and mac is cleared for Tx and becomes
4196+ * the preferred Tx key for the station.
4197+ */
4198+enum nl80211_key_mode {
4199+ NL80211_KEY_RX_TX,
4200+ NL80211_KEY_NO_TX,
4201+ NL80211_KEY_SET_TX
4202+};
4203+
41374204 /**
41384205 * enum nl80211_chan_width - channel width definitions
41394206 *
@@ -4377,6 +4444,9 @@ enum nl80211_key_default_types { · 237 unmodified lines
43774444 * @NL80211_KEY_DEFAULT_TYPES: A nested attribute containing flags
43784445 * attributes, specifying what a key should be set as default as.
43794446 * See &enum nl80211_key_default_types.
4447+ * @NL80211_KEY_MODE: the mode from enum nl80211_key_mode.
4448+ * Defaults to @NL80211_KEY_RX_TX.
4449+ *
43804450 * @__NL80211_KEY_AFTER_LAST: internal
43814451 * @NL80211_KEY_MAX: highest key attribute
43824452 */
@@ -4390,6 +4460,7 @@ enum nl80211_key_attributes { · 7 unmodified lines
43904460 NL80211_KEY_DEFAULT_MGMT,
43914461 NL80211_KEY_TYPE,
43924462 NL80211_KEY_DEFAULT_TYPES,
4463+ NL80211_KEY_MODE,
43934464
43944465 /* keep last */
43954466 __NL80211_KEY_AFTER_LAST,
@@ -5335,6 +5406,8 @@ enum nl80211_feature_flags { · 939 unmodified lines
53355406 * able to rekey an in-use key correctly. Userspace must not rekey PTK keys
53365407 * if this flag is not set. Ignoring this can leak clear text packets and/or
53375408 * freeze the connection.
5409+ * @NL80211_EXT_FEATURE_EXT_KEY_ID: Driver supports "Extended Key ID for
5410+ * Individually Addressed Frames" from IEEE802.11-2016.
53385411 *
53395412 * @NL80211_EXT_FEATURE_AIRTIME_FAIRNESS: Driver supports getting airtime
53405413 * fairness for transmitted packets and has enabled airtime fairness
@@ -5343,6 +5416,12 @@ enum nl80211_feature_flags { · 2 unmodified lines
53435416 * @NL80211_EXT_FEATURE_AP_PMKSA_CACHING: Driver/device supports PMKSA caching
53445417 * (set/del PMKSA operations) in AP mode.
53455418 *
5419+ * @NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD: Driver supports
5420+ * filtering of sched scan results using band specific RSSI thresholds.
5421+ *
5422+ * @NL80211_EXT_FEATURE_STA_TX_PWR: This driver supports controlling tx power
5423+ * to a station.
5424+ *
53465425 * @NUM_NL80211_EXT_FEATURES: number of extended features.
53475426 * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
53485427 */
@@ -5384,6 +5463,9 @@ enum nl80211_ext_feature_index { · 35 unmodified lines
53845463 NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER,
53855464 NL80211_EXT_FEATURE_AIRTIME_FAIRNESS,
53865465 NL80211_EXT_FEATURE_AP_PMKSA_CACHING,
5466+ NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD,
5467+ NL80211_EXT_FEATURE_EXT_KEY_ID,
5468+ NL80211_EXT_FEATURE_STA_TX_PWR,
53875469
53885470 /* add new features before the definition below */
53895471 NUM_NL80211_EXT_FEATURES,
include/uapi/linux/openvswitch.h+46−0
@@ -364,6 +364,7 @@ enum ovs_tunnel_key_attr { · 363 unmodified lines
364364 OVS_TUNNEL_KEY_ATTR_IPV6_DST, /* struct in6_addr dst IPv6 address. */
365365 OVS_TUNNEL_KEY_ATTR_PAD,
366366 OVS_TUNNEL_KEY_ATTR_ERSPAN_OPTS, /* struct erspan_metadata */
367+ OVS_TUNNEL_KEY_ATTR_IPV4_INFO_BRIDGE, /* No argument. IPV4_INFO_BRIDGE mode.*/
367368 __OVS_TUNNEL_KEY_ATTR_MAX
368369 };
369370
@@ -734,6 +735,7 @@ struct ovs_action_hash { · 364 unmodified lines
734735 * be received on NFNLGRP_CONNTRACK_NEW and NFNLGRP_CONNTRACK_DESTROY groups,
735736 * respectively. Remaining bits control the changes for which an event is
736737 * delivered on the NFNLGRP_CONNTRACK_UPDATE group.
738+ * @OVS_CT_ATTR_TIMEOUT: Variable length string defining conntrack timeout.
737739 */
738740 enum ovs_ct_attr {
739741 OVS_CT_ATTR_UNSPEC,
@@ -746,6 +748,8 @@ enum ovs_ct_attr { · 6 unmodified lines
746748 OVS_CT_ATTR_NAT, /* Nested OVS_NAT_ATTR_* */
747749 OVS_CT_ATTR_FORCE_COMMIT, /* No argument */
748750 OVS_CT_ATTR_EVENTMASK, /* u32 mask of IPCT_* events. */
751+ OVS_CT_ATTR_TIMEOUT, /* Associate timeout with this connection for
752+ * fine-grain timeout tuning. */
749753 __OVS_CT_ATTR_MAX
750754 };
751755
@@ -798,6 +802,44 @@ struct ovs_action_push_eth { · 46 unmodified lines
798802 struct ovs_key_ethernet addresses;
799803 };
800804
805+/*
806+ * enum ovs_check_pkt_len_attr - Attributes for %OVS_ACTION_ATTR_CHECK_PKT_LEN.
807+ *
808+ * @OVS_CHECK_PKT_LEN_ATTR_PKT_LEN: u16 Packet length to check for.
809+ * @OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_GREATER: Nested OVS_ACTION_ATTR_*
810+ * actions to apply if the packer length is greater than the specified
811+ * length in the attr - OVS_CHECK_PKT_LEN_ATTR_PKT_LEN.
812+ * @OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_LESS_EQUAL - Nested OVS_ACTION_ATTR_*
813+ * actions to apply if the packer length is lesser or equal to the specified
814+ * length in the attr - OVS_CHECK_PKT_LEN_ATTR_PKT_LEN.
815+ */
816+enum ovs_check_pkt_len_attr {
817+ OVS_CHECK_PKT_LEN_ATTR_UNSPEC,
818+ OVS_CHECK_PKT_LEN_ATTR_PKT_LEN,
819+ OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_GREATER,
820+ OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_LESS_EQUAL,
821+ __OVS_CHECK_PKT_LEN_ATTR_MAX,
822+
823+#ifdef __KERNEL__
824+ OVS_CHECK_PKT_LEN_ATTR_ARG /* struct check_pkt_len_arg */
825+#endif
826+};
827+
828+#define OVS_CHECK_PKT_LEN_ATTR_MAX (__OVS_CHECK_PKT_LEN_ATTR_MAX - 1)
829+
830+#ifdef __KERNEL__
831+struct check_pkt_len_arg {
832+ u16 pkt_len; /* Same value as OVS_CHECK_PKT_LEN_ATTR_PKT_LEN'. */
833+ bool exec_for_greater; /* When true, actions in IF_GREATER will
834+ * not change flow keys. False otherwise.
835+ */
836+ bool exec_for_lesser_equal; /* When true, actions in IF_LESS_EQUAL
837+ * will not change flow keys. False
838+ * otherwise.
839+ */
840+};
841+#endif
842+
801843 /**
802844 * enum ovs_action_attr - Action types.
803845 *
@@ -842,6 +884,9 @@ struct ovs_action_push_eth { · 38 unmodified lines
842884 * packet, or modify the packet (e.g., change the DSCP field).
843885 * @OVS_ACTION_ATTR_CLONE: make a copy of the packet and execute a list of
844886 * actions without affecting the original packet and key.
887+ * @OVS_ACTION_ATTR_CHECK_PKT_LEN: Check the packet length and execute a set
888+ * of actions if greater than the specified packet length, else execute
889+ * another set of actions.
845890 *
846891 * Only a single header can be set with a single %OVS_ACTION_ATTR_SET. Not all
847892 * fields within a header are modifiable, e.g. the IPv4 protocol and fragment
@@ -876,6 +921,7 @@ enum ovs_action_attr { · 28 unmodified lines
876921 OVS_ACTION_ATTR_POP_NSH, /* No argument. */
877922 OVS_ACTION_ATTR_METER, /* u32 meter ID. */
878923 OVS_ACTION_ATTR_CLONE, /* Nested OVS_CLONE_ATTR_*. */
924+ OVS_ACTION_ATTR_CHECK_PKT_LEN, /* Nested OVS_CHECK_PKT_LEN_ATTR_*. */
879925
880926 __OVS_ACTION_ATTR_MAX, /* Nothing past this will be accepted
881927 * from userspace. */
include/uapi/linux/pkt_sched.h+13−0
@@ -1148,6 +1148,16 @@ enum { · 1147 unmodified lines
11481148
11491149 #define TCA_TAPRIO_SCHED_MAX (__TCA_TAPRIO_SCHED_MAX - 1)
11501150
1151+/* The format for the admin sched (dump only):
1152+ * [TCA_TAPRIO_SCHED_ADMIN_SCHED]
1153+ * [TCA_TAPRIO_ATTR_SCHED_BASE_TIME]
1154+ * [TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST]
1155+ * [TCA_TAPRIO_ATTR_SCHED_ENTRY]
1156+ * [TCA_TAPRIO_ATTR_SCHED_ENTRY_CMD]
1157+ * [TCA_TAPRIO_ATTR_SCHED_ENTRY_GATES]
1158+ * [TCA_TAPRIO_ATTR_SCHED_ENTRY_INTERVAL]
1159+ */
1160+
11511161 enum {
11521162 TCA_TAPRIO_ATTR_UNSPEC,
11531163 TCA_TAPRIO_ATTR_PRIOMAP, /* struct tc_mqprio_qopt */
@@ -1156,6 +1166,9 @@ enum { · 2 unmodified lines
11561166 TCA_TAPRIO_ATTR_SCHED_SINGLE_ENTRY, /* single entry */
11571167 TCA_TAPRIO_ATTR_SCHED_CLOCKID, /* s32 */
11581168 TCA_TAPRIO_PAD,
1169+ TCA_TAPRIO_ATTR_ADMIN_SCHED, /* The admin sched, only used in dump */
1170+ TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME, /* s64 */
1171+ TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION, /* s64 */
11591172 __TCA_TAPRIO_ATTR_MAX,
11601173 };
11611174
include/uapi/linux/sockios.h+21−0
@@ -19,6 +19,7 @@ · 18 unmodified lines
1919 #ifndef _LINUX_SOCKIOS_H
2020 #define _LINUX_SOCKIOS_H
2121
22+#include <asm/bitsperlong.h>
2223 #include <asm/sockios.h>
2324
2425 /* Linux-specific socket ioctls */
@@ -27,6 +28,26 @@ · 2 unmodified lines
2728
2829 #define SOCK_IOC_TYPE 0x89
2930
31+/*
32+ * the timeval/timespec data structure layout is defined by libc,
33+ * so we need to cover both possible versions on 32-bit.
34+ */
35+/* Get stamp (timeval) */
36+#define SIOCGSTAMP_NEW _IOR(SOCK_IOC_TYPE, 0x06, long long[2])
37+/* Get stamp (timespec) */
38+#define SIOCGSTAMPNS_NEW _IOR(SOCK_IOC_TYPE, 0x07, long long[2])
39+
40+#if __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
41+/* on 64-bit and x32, avoid the ?: operator */
42+#define SIOCGSTAMP SIOCGSTAMP_OLD
43+#define SIOCGSTAMPNS SIOCGSTAMPNS_OLD
44+#else
45+#define SIOCGSTAMP ((sizeof(struct timeval)) == 8 ? \
46+ SIOCGSTAMP_OLD : SIOCGSTAMP_NEW)
47+#define SIOCGSTAMPNS ((sizeof(struct timespec)) == 8 ? \
48+ SIOCGSTAMPNS_OLD : SIOCGSTAMPNS_NEW)
49+#endif
50+
3051 /* Routing table calls. */
3152 #define SIOCADDRT 0x890B /* add routing table entry */
3253 #define SIOCDELRT 0x890C /* delete routing table entry */
include/uapi/linux/tcp.h+27−0
@@ -160,15 +160,42 @@ enum { · 159 unmodified lines
160160 #define TCPI_OPT_ECN_SEEN 16 /* we received at least one packet with ECT */
161161 #define TCPI_OPT_SYN_DATA 32 /* SYN-ACK acked data in SYN sent or rcvd */
162162
163+/*
164+ * Sender's congestion state indicating normal or abnormal situations
165+ * in the last round of packets sent. The state is driven by the ACK
166+ * information and timer events.
167+ */
163168 enum tcp_ca_state {
169+ /*
170+ * Nothing bad has been observed recently.
171+ * No apparent reordering, packet loss, or ECN marks.
172+ */
164173 TCP_CA_Open = 0,
165174 #define TCPF_CA_Open (1<<TCP_CA_Open)
175+ /*
176+ * The sender enters disordered state when it has received DUPACKs or
177+ * SACKs in the last round of packets sent. This could be due to packet
178+ * loss or reordering but needs further information to confirm packets
179+ * have been lost.
180+ */
166181 TCP_CA_Disorder = 1,
167182 #define TCPF_CA_Disorder (1<<TCP_CA_Disorder)
183+ /*
184+ * The sender enters Congestion Window Reduction (CWR) state when it
185+ * has received ACKs with ECN-ECE marks, or has experienced congestion
186+ * or packet discard on the sender host (e.g. qdisc).
187+ */
168188 TCP_CA_CWR = 2,
169189 #define TCPF_CA_CWR (1<<TCP_CA_CWR)
190+ /*
191+ * The sender is in fast recovery and retransmitting lost packets,
192+ * typically triggered by ACK events.
193+ */
170194 TCP_CA_Recovery = 3,
171195 #define TCPF_CA_Recovery (1<<TCP_CA_Recovery)
196+ /*
197+ * The sender is in loss recovery triggered by retransmission timeout.
198+ */
172199 TCP_CA_Loss = 4
173200 #define TCPF_CA_Loss (1<<TCP_CA_Loss)
174201 };
include/uapi/linux/tipc.h+1−0
@@ -190,6 +190,7 @@ struct sockaddr_tipc { · 189 unmodified lines
190190 #define TIPC_MCAST_REPLICAST 134 /* Default: TIPC selects. No arg */
191191 #define TIPC_GROUP_JOIN 135 /* Takes struct tipc_group_req* */
192192 #define TIPC_GROUP_LEAVE 136 /* No argument */
193+#define TIPC_SOCK_RECVQ_USED 137 /* Default: none (read only) */
193194
194195 /*
195196 * Flag values
include/uapi/linux/tipc_netlink.h+2−0
@@ -281,6 +281,8 @@ enum { · 280 unmodified lines
281281 TIPC_NLA_PROP_TOL, /* u32 */
282282 TIPC_NLA_PROP_WIN, /* u32 */
283283 TIPC_NLA_PROP_MTU, /* u32 */
284+ TIPC_NLA_PROP_BROADCAST, /* u32 */
285+ TIPC_NLA_PROP_BROADCAST_RATIO, /* u32 */
284286
285287 __TIPC_NLA_PROP_MAX,
286288 TIPC_NLA_PROP_MAX = __TIPC_NLA_PROP_MAX - 1
include/uapi/linux/tls.h+15−0
@@ -70,6 +70,13 @@ · 69 unmodified lines
7070 #define TLS_CIPHER_AES_GCM_256_TAG_SIZE 16
7171 #define TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE 8
7272
73+#define TLS_CIPHER_AES_CCM_128 53
74+#define TLS_CIPHER_AES_CCM_128_IV_SIZE 8
75+#define TLS_CIPHER_AES_CCM_128_KEY_SIZE 16
76+#define TLS_CIPHER_AES_CCM_128_SALT_SIZE 4
77+#define TLS_CIPHER_AES_CCM_128_TAG_SIZE 16
78+#define TLS_CIPHER_AES_CCM_128_REC_SEQ_SIZE 8
79+
7380 #define TLS_SET_RECORD_TYPE 1
7481 #define TLS_GET_RECORD_TYPE 2
7582
@@ -94,4 +101,12 @@ struct tls12_crypto_info_aes_gcm_256 { · 18 unmodified lines
94101 unsigned char rec_seq[TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE];
95102 };
96103
104+struct tls12_crypto_info_aes_ccm_128 {
105+ struct tls_crypto_info info;
106+ unsigned char iv[TLS_CIPHER_AES_CCM_128_IV_SIZE];
107+ unsigned char key[TLS_CIPHER_AES_CCM_128_KEY_SIZE];
108+ unsigned char salt[TLS_CIPHER_AES_CCM_128_SALT_SIZE];
109+ unsigned char rec_seq[TLS_CIPHER_AES_CCM_128_REC_SEQ_SIZE];
110+};
111+
97112 #endif /* _UAPI_LINUX_TLS_H */