History

Merge tag 'net-next-for-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next

Pull networking updates from Jakub Kicinski: "Core: - Remove socket skb caches - Add a SO_RESERVE_MEM socket op to forward allocate buffer space and avoid memory accounting overhead on each message sent - Introduce managed neighbor entries - added by control plane and resolved by the kernel for use in acceleration paths (BPF / XDP right now, HW offload users will benefit as well) - Make neighbor eviction on link down controllable by userspace to work around WiFi networks with bad roaming implementations - vrf: Rework interaction with netfilter/conntrack - fq_codel: implement L4S style ce_threshold_ect1 marking - sch: Eliminate unnecessary RCU waits in mini_qdisc_pair_swap() BPF: - Add support for new btf kind BTF_KIND_TAG, arbitrary type tagging as implemented in LLVM14 - Introduce bpf_get_branch_snapshot() to capture Last Branch Records - Implement variadic trace_printk helper - Add a new Bloomfilter map type - Track <8-byte scalar spill and refill - Access hw timestamp through BPF's __sk_buff - Disallow unprivileged BPF by default - Document BPF licensing Netfilter: - Introduce egress hook for looking at raw outgoing packets - Allow matching on and modifying inner headers / payload data - Add NFT_META_IFTYPE to match on the interface type either from ingress or egress Protocols: - Multi-Path TCP: - increase default max additional subflows to 2 - rework forward memory allocation - add getsockopts: MPTCP_INFO, MPTCP_TCPINFO, MPTCP_SUBFLOW_ADDRS - MCTP flow support allowing lower layer drivers to configure msg muxing as needed - Automatic Multicast Tunneling (AMT) driver based on RFC7450 - HSR support the redbox supervision frames (IEC-62439-3:2018) - Support for the ip6ip6 encapsulation of IOAM - Netlink interface for CAN-FD's Transmitter Delay Compensation - Support SMC-Rv2 eliminating the current same-subnet restriction, by exploiting the UDP encapsulation feature of RoCE adapters - TLS: add SM4 GCM/CCM crypto support - Bluetooth: initial support for link quality and audio/codec offload Driver APIs: - Add a batched interface for RX buffer allocation in AF_XDP buffer pool - ethtool: Add ability to control transceiver modules' power mode - phy: Introduce supported interfaces bitmap to express MAC capabilities and simplify PHY code - Drop rtnl_lock from DSA .port_fdb_{add,del} callbacks New drivers: - WiFi driver for Realtek 8852AE 802.11ax devices (rtw89) - Ethernet driver for ASIX AX88796C SPI device (x88796c) Drivers: - Broadcom PHYs - support 72165, 7712 16nm PHYs - support IDDQ-SR for additional power savings - PHY support for QCA8081, QCA9561 PHYs - NXP DPAA2: support for IRQ coalescing - NXP Ethernet (enetc): support for software TCP segmentation - Renesas Ethernet (ravb) - support DMAC and EMAC blocks of Gigabit-capable IP found on RZ/G2L SoC - Intel 100G Ethernet - support for eswitch offload of TC/OvS flow API, including offload of GRE, VxLAN, Geneve tunneling - support application device queues - ability to assign Rx and Tx queues to application threads - PTP and PPS (pulse-per-second) extensions - Broadcom Ethernet (bnxt) - devlink health reporting and device reload extensions - Mellanox Ethernet (mlx5) - offload macvlan interfaces - support HW offload of TC rules involving OVS internal ports - support HW-GRO and header/data split - support application device queues - Marvell OcteonTx2: - add XDP support for PF - add PTP support for VF - Qualcomm Ethernet switch (qca8k): support for QCA8328 - Realtek Ethernet DSA switch (rtl8366rb) - support bridge offload - support STP, fast aging, disabling address learning - support for Realtek RTL8365MB-VC, a 4+1 port 10M/100M/1GE switch - Mellanox Ethernet/IB switch (mlxsw) - multi-level qdisc hierarchy offload (e.g. RED, prio and shaping) - offload root TBF qdisc as port shaper - support multiple routing interface MAC address prefixes - support for IP-in-IP with IPv6 underlay - MediaTek WiFi (mt76) - mt7921 - ASPM, 6GHz, SDIO and testmode support - mt7915 - LED and TWT support - Qualcomm WiFi (ath11k) - include channel rx and tx time in survey dump statistics - support for 80P80 and 160 MHz bandwidths - support channel 2 in 6 GHz band - spectral scan support for QCN9074 - support for rx decapsulation offload (data frames in 802.3 format) - Qualcomm phone SoC WiFi (wcn36xx) - enable Idle Mode Power Save (IMPS) to reduce power consumption during idle - Bluetooth driver support for MediaTek MT7922 and MT7921 - Enable support for AOSP Bluetooth extension in Qualcomm WCN399x and Realtek 8822C/8852A - Microsoft vNIC driver (mana) - support hibernation and kexec - Google vNIC driver (gve) - support for jumbo frames - implement Rx page reuse Refactor: - Make all writes to netdev->dev_addr go thru helpers, so that we can add this address to the address rbtree and handle the updates - Various TCP cleanups and optimizations including improvements to CPU cache use - Simplify the gnet_stats, Qdisc stats' handling and remove qdisc->running sequence counter - Driver changes and API updates to address devlink locking deficiencies" * tag 'net-next-for-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (2122 commits) Revert "net: avoid double accounting for pure zerocopy skbs" selftests: net: add arp_ndisc_evict_nocarrier net: ndisc: introduce ndisc_evict_nocarrier sysctl parameter net: arp: introduce arp_evict_nocarrier sysctl parameter libbpf: Deprecate AF_XDP support kbuild: Unify options for BTF generation for vmlinux and modules selftests/bpf: Add a testcase for 64-bit bounds propagation issue. bpf: Fix propagation of signed bounds from 64-bit min/max into 32-bit. bpf: Fix propagation of bounds from 64-bit min/max into 32-bit and var_off. net: vmxnet3: remove multiple false checks in vmxnet3_ethtool.c net: avoid double accounting for pure zerocopy skbs tcp: rename sk_wmem_free_skb netdevsim: fix uninit value in nsim_drv_configure_vfs() selftests/bpf: Fix also no-alu32 strobemeta selftest bpf: Add missing map_delete_elem method to bloom filter map selftests/bpf: Add bloom map success test for userspace calls bpf: Add alignment padding for "map_extra" + consolidate holes bpf: Bloom filter map naming fixups selftests/bpf: Add test cases for struct_ops prog bpf: Add dummy BPF STRUCT_OPS for test purpose ...

Linus Torvalds committed 5 years ago

Commit fc02cb22 parents bfc484f 84882cf2296 files · +215137 −50034Browse files

Showing the changes to include/uapi/linux (24 of 2296 files). Show all

Unified · Split

24 files
  1. include/uapi/linux/amt.h +62 −0
  2. include/uapi/linux/bpf.h +73 −3
  3. include/uapi/linux/btf.h +35 −20
  4. include/uapi/linux/can/netlink.h +29 −2
  5. include/uapi/linux/devlink.h +2 −0
  6. include/uapi/linux/ethtool.h +29 −0
  7. include/uapi/linux/ethtool_netlink.h +17 −0
  8. include/uapi/linux/if_ether.h +1 −0
  9. include/uapi/linux/ioam6_iptunnel.h +29 −0
  10. include/uapi/linux/ip.h +1 −0
  11. include/uapi/linux/ipv6.h +1 −0
  12. include/uapi/linux/mctp.h +11 −0
  13. include/uapi/linux/mdio.h +9 −0
  14. include/uapi/linux/mptcp.h +35 −0
  15. include/uapi/linux/neighbour.h +24 −11
  16. include/uapi/linux/netfilter.h +1 −0
  17. include/uapi/linux/netfilter/nf_tables.h +5 −1
  18. include/uapi/linux/nl80211-vnd-intel.h +29 −0
  19. include/uapi/linux/nl80211.h +114 −1
  20. include/uapi/linux/pkt_sched.h +2 −0
  21. include/uapi/linux/smc.h +42 −2
  22. include/uapi/linux/sysctl.h +1 −0
  23. include/uapi/linux/tls.h +30 −0
  24. include/uapi/linux/vm_sockets.h +12 −1
include/uapi/linux/amt.h+62−0
@@ -0,0 +1,62 @@
1+/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
2+/*
3+ * Copyright (c) 2021 Taehee Yoo <ap420073@gmail.com>
4+ */
5+#ifndef _UAPI_AMT_H_
6+#define _UAPI_AMT_H_
7+
8+enum ifla_amt_mode {
9+ /* AMT interface works as Gateway mode.
10+ * The Gateway mode encapsulates IGMP/MLD traffic and decapsulates
11+ * multicast traffic.
12+ */
13+ AMT_MODE_GATEWAY = 0,
14+ /* AMT interface works as Relay mode.
15+ * The Relay mode encapsulates multicast traffic and decapsulates
16+ * IGMP/MLD traffic.
17+ */
18+ AMT_MODE_RELAY,
19+ __AMT_MODE_MAX,
20+};
21+
22+#define AMT_MODE_MAX (__AMT_MODE_MAX - 1)
23+
24+enum {
25+ IFLA_AMT_UNSPEC,
26+ /* This attribute specify mode etier Gateway or Relay. */
27+ IFLA_AMT_MODE,
28+ /* This attribute specify Relay port.
29+ * AMT interface is created as Gateway mode, this attribute is used
30+ * to specify relay(remote) port.
31+ * AMT interface is created as Relay mode, this attribute is used
32+ * as local port.
33+ */
34+ IFLA_AMT_RELAY_PORT,
35+ /* This attribute specify Gateway port.
36+ * AMT interface is created as Gateway mode, this attribute is used
37+ * as local port.
38+ * AMT interface is created as Relay mode, this attribute is not used.
39+ */
40+ IFLA_AMT_GATEWAY_PORT,
41+ /* This attribute specify physical device */
42+ IFLA_AMT_LINK,
43+ /* This attribute specify local ip address */
44+ IFLA_AMT_LOCAL_IP,
45+ /* This attribute specify Relay ip address.
46+ * So, this is not used by Relay.
47+ */
48+ IFLA_AMT_REMOTE_IP,
49+ /* This attribute specify Discovery ip address.
50+ * When Gateway get started, it send discovery message to find the
51+ * Relay's ip address.
52+ * So, this is not used by Relay.
53+ */
54+ IFLA_AMT_DISCOVERY_IP,
55+ /* This attribute specify number of maximum tunnel. */
56+ IFLA_AMT_MAX_TUNNELS,
57+ __IFLA_AMT_MAX,
58+};
59+
60+#define IFLA_AMT_MAX (__IFLA_AMT_MAX - 1)
61+
62+#endif /* _UAPI_AMT_H_ */
include/uapi/linux/bpf.h+73−3
@@ -906,6 +906,7 @@ enum bpf_map_type { · 905 unmodified lines
906906 BPF_MAP_TYPE_RINGBUF,
907907 BPF_MAP_TYPE_INODE_STORAGE,
908908 BPF_MAP_TYPE_TASK_STORAGE,
909+ BPF_MAP_TYPE_BLOOM_FILTER,
909910 };
910911
911912 /* Note that tracing related programs such as
@@ -1274,6 +1275,13 @@ union bpf_attr { · 362 unmodified lines
12741275 * struct stored as the
12751276 * map value
12761277 */
1278+ /* Any per-map-type extra fields
1279+ *
1280+ * BPF_MAP_TYPE_BLOOM_FILTER - the lowest 4 bits indicate the
1281+ * number of hash functions (if 0, the bloom filter will default
1282+ * to using 5 hash functions).
1283+ */
1284+ __u64 map_extra;
12771285 };
12781286
12791287 struct { /* anonymous struct used by BPF_MAP_*_ELEM commands */
@@ -1629,7 +1637,7 @@ union bpf_attr { · 349 unmodified lines
16291637 * u32 bpf_get_smp_processor_id(void)
16301638 * Description
16311639 * Get the SMP (symmetric multiprocessing) processor id. Note that
1632− * all programs run with preemption disabled, which means that the
1640+ * all programs run with migration disabled, which means that the
16331641 * SMP processor id is stable during all the execution of the
16341642 * program.
16351643 * Return
@@ -4046,7 +4054,7 @@ union bpf_attr { · 2410 unmodified lines
40464054 * arguments. The *data* are a **u64** array and corresponding format string
40474055 * values are stored in the array. For strings and pointers where pointees
40484056 * are accessed, only the pointer values are stored in the *data* array.
4049− * The *data_len* is the size of *data* in bytes.
4057+ * The *data_len* is the size of *data* in bytes - must be a multiple of 8.
40504058 *
40514059 * Formats **%s**, **%p{i,I}{4,6}** requires to read kernel memory.
40524060 * Reading kernel memory may fail due to either invalid address or
@@ -4751,7 +4759,8 @@ union bpf_attr { · 698 unmodified lines
47514759 * Each format specifier in **fmt** corresponds to one u64 element
47524760 * in the **data** array. For strings and pointers where pointees
47534761 * are accessed, only the pointer values are stored in the *data*
4754− * array. The *data_len* is the size of *data* in bytes.
4762+ * array. The *data_len* is the size of *data* in bytes - must be
4763+ * a multiple of 8.
47554764 *
47564765 * Formats **%s** and **%p{i,I}{4,6}** require to read kernel
47574766 * memory. Reading kernel memory may fail due to either invalid
@@ -4877,6 +4886,58 @@ union bpf_attr { · 119 unmodified lines
48774886 * Get the struct pt_regs associated with **task**.
48784887 * Return
48794888 * A pointer to struct pt_regs.
4889+ *
4890+ * long bpf_get_branch_snapshot(void *entries, u32 size, u64 flags)
4891+ * Description
4892+ * Get branch trace from hardware engines like Intel LBR. The
4893+ * hardware engine is stopped shortly after the helper is
4894+ * called. Therefore, the user need to filter branch entries
4895+ * based on the actual use case. To capture branch trace
4896+ * before the trigger point of the BPF program, the helper
4897+ * should be called at the beginning of the BPF program.
4898+ *
4899+ * The data is stored as struct perf_branch_entry into output
4900+ * buffer *entries*. *size* is the size of *entries* in bytes.
4901+ * *flags* is reserved for now and must be zero.
4902+ *
4903+ * Return
4904+ * On success, number of bytes written to *buf*. On error, a
4905+ * negative value.
4906+ *
4907+ * **-EINVAL** if *flags* is not zero.
4908+ *
4909+ * **-ENOENT** if architecture does not support branch records.
4910+ *
4911+ * long bpf_trace_vprintk(const char *fmt, u32 fmt_size, const void *data, u32 data_len)
4912+ * Description
4913+ * Behaves like **bpf_trace_printk**\ () helper, but takes an array of u64
4914+ * to format and can handle more format args as a result.
4915+ *
4916+ * Arguments are to be used as in **bpf_seq_printf**\ () helper.
4917+ * Return
4918+ * The number of bytes written to the buffer, or a negative error
4919+ * in case of failure.
4920+ *
4921+ * struct unix_sock *bpf_skc_to_unix_sock(void *sk)
4922+ * Description
4923+ * Dynamically cast a *sk* pointer to a *unix_sock* pointer.
4924+ * Return
4925+ * *sk* if casting is valid, or **NULL** otherwise.
4926+ *
4927+ * long bpf_kallsyms_lookup_name(const char *name, int name_sz, int flags, u64 *res)
4928+ * Description
4929+ * Get the address of a kernel symbol, returned in *res*. *res* is
4930+ * set to 0 if the symbol is not found.
4931+ * Return
4932+ * On success, zero. On error, a negative value.
4933+ *
4934+ * **-EINVAL** if *flags* is not zero.
4935+ *
4936+ * **-EINVAL** if string *name* is not the same size as *name_sz*.
4937+ *
4938+ * **-ENOENT** if symbol is not found.
4939+ *
4940+ * **-EPERM** if caller does not have permission to obtain kernel address.
48804941 */
48814942 #define __BPF_FUNC_MAPPER(FN) \
48824943 FN(unspec), \
@@ -5055,6 +5116,10 @@ union bpf_attr { · 172 unmodified lines
50555116 FN(get_func_ip), \
50565117 FN(get_attach_cookie), \
50575118 FN(task_pt_regs), \
5119+ FN(get_branch_snapshot), \
5120+ FN(trace_vprintk), \
5121+ FN(skc_to_unix_sock), \
5122+ FN(kallsyms_lookup_name), \
50585123 /* */
50595124
50605125 /* integer value in 'imm' field of BPF_CALL instruction selects which helper
@@ -5284,6 +5349,8 @@ struct __sk_buff { · 223 unmodified lines
52845349 __u32 gso_segs;
52855350 __bpf_md_ptr(struct bpf_sock *, sk);
52865351 __u32 gso_size;
5352+ __u32 :32; /* Padding, future use. */
5353+ __u64 hwtstamp;
52875354 };
52885355
52895356 struct bpf_tunnel_key {
@@ -5577,6 +5644,7 @@ struct bpf_prog_info { · 287 unmodified lines
55775644 __u64 run_time_ns;
55785645 __u64 run_cnt;
55795646 __u64 recursion_misses;
5647+ __u32 verified_insns;
55805648 } __attribute__((aligned(8)));
55815649
55825650 struct bpf_map_info {
@@ -5594,6 +5662,8 @@ struct bpf_map_info { · 11 unmodified lines
55945662 __u32 btf_id;
55955663 __u32 btf_key_type_id;
55965664 __u32 btf_value_type_id;
5665+ __u32 :32; /* alignment pad */
5666+ __u64 map_extra;
55975667 } __attribute__((aligned(8)));
55985668
55995669 struct bpf_btf_info {
include/uapi/linux/btf.h+35−20
@@ -43,7 +43,7 @@ struct btf_type { · 42 unmodified lines
4343 * "size" tells the size of the type it is describing.
4444 *
4545 * "type" is used by PTR, TYPEDEF, VOLATILE, CONST, RESTRICT,
46− * FUNC, FUNC_PROTO and VAR.
46+ * FUNC, FUNC_PROTO, VAR and DECL_TAG.
4747 * "type" is a type_id referring to another type.
4848 */
4949 union {
@@ -56,25 +56,29 @@ struct btf_type { · 6 unmodified lines
5656 #define BTF_INFO_VLEN(info) ((info) & 0xffff)
5757 #define BTF_INFO_KFLAG(info) ((info) >> 31)
5858
59−#define BTF_KIND_UNKN 0 /* Unknown */
60−#define BTF_KIND_INT 1 /* Integer */
61−#define BTF_KIND_PTR 2 /* Pointer */
62−#define BTF_KIND_ARRAY 3 /* Array */
63−#define BTF_KIND_STRUCT 4 /* Struct */
64−#define BTF_KIND_UNION 5 /* Union */
65−#define BTF_KIND_ENUM 6 /* Enumeration */
66−#define BTF_KIND_FWD 7 /* Forward */
67−#define BTF_KIND_TYPEDEF 8 /* Typedef */
68−#define BTF_KIND_VOLATILE 9 /* Volatile */
69−#define BTF_KIND_CONST 10 /* Const */
70−#define BTF_KIND_RESTRICT 11 /* Restrict */
71−#define BTF_KIND_FUNC 12 /* Function */
72−#define BTF_KIND_FUNC_PROTO 13 /* Function Proto */
73−#define BTF_KIND_VAR 14 /* Variable */
74−#define BTF_KIND_DATASEC 15 /* Section */
75−#define BTF_KIND_FLOAT 16 /* Floating point */
76−#define BTF_KIND_MAX BTF_KIND_FLOAT
77−#define NR_BTF_KINDS (BTF_KIND_MAX + 1)
59+enum {
60+ BTF_KIND_UNKN = 0, /* Unknown */
61+ BTF_KIND_INT = 1, /* Integer */
62+ BTF_KIND_PTR = 2, /* Pointer */
63+ BTF_KIND_ARRAY = 3, /* Array */
64+ BTF_KIND_STRUCT = 4, /* Struct */
65+ BTF_KIND_UNION = 5, /* Union */
66+ BTF_KIND_ENUM = 6, /* Enumeration */
67+ BTF_KIND_FWD = 7, /* Forward */
68+ BTF_KIND_TYPEDEF = 8, /* Typedef */
69+ BTF_KIND_VOLATILE = 9, /* Volatile */
70+ BTF_KIND_CONST = 10, /* Const */
71+ BTF_KIND_RESTRICT = 11, /* Restrict */
72+ BTF_KIND_FUNC = 12, /* Function */
73+ BTF_KIND_FUNC_PROTO = 13, /* Function Proto */
74+ BTF_KIND_VAR = 14, /* Variable */
75+ BTF_KIND_DATASEC = 15, /* Section */
76+ BTF_KIND_FLOAT = 16, /* Floating point */
77+ BTF_KIND_DECL_TAG = 17, /* Decl Tag */
78+
79+ NR_BTF_KINDS,
80+ BTF_KIND_MAX = NR_BTF_KINDS - 1,
81+};
7882
7983 /* For some specific BTF_KIND, "struct btf_type" is immediately
8084 * followed by extra data.
@@ -170,4 +174,15 @@ struct btf_var_secinfo { · 89 unmodified lines
170174 __u32 size;
171175 };
172176
177+/* BTF_KIND_DECL_TAG is followed by a single "struct btf_decl_tag" to describe
178+ * additional information related to the tag applied location.
179+ * If component_idx == -1, the tag is applied to a struct, union,
180+ * variable or function. Otherwise, it is applied to a struct/union
181+ * member or a func argument, and component_idx indicates which member
182+ * or argument (0 ... vlen-1).
183+ */
184+struct btf_decl_tag {
185+ __s32 component_idx;
186+};
187+
173188 #endif /* _UAPI__LINUX_BTF_H__ */
include/uapi/linux/can/netlink.h+29−2
@@ -101,6 +101,8 @@ struct can_ctrlmode { · 100 unmodified lines
101101 #define CAN_CTRLMODE_PRESUME_ACK 0x40 /* Ignore missing CAN ACKs */
102102 #define CAN_CTRLMODE_FD_NON_ISO 0x80 /* CAN FD in non-ISO mode */
103103 #define CAN_CTRLMODE_CC_LEN8_DLC 0x100 /* Classic CAN DLC option */
104+#define CAN_CTRLMODE_TDC_AUTO 0x200 /* CAN transiver automatically calculates TDCV */
105+#define CAN_CTRLMODE_TDC_MANUAL 0x400 /* TDCV is manually set up by user */
104106
105107 /*
106108 * CAN device statistics
@@ -134,10 +136,35 @@ enum { · 27 unmodified lines
134136 IFLA_CAN_BITRATE_CONST,
135137 IFLA_CAN_DATA_BITRATE_CONST,
136138 IFLA_CAN_BITRATE_MAX,
137− __IFLA_CAN_MAX
139+ IFLA_CAN_TDC,
140+
141+ /* add new constants above here */
142+ __IFLA_CAN_MAX,
143+ IFLA_CAN_MAX = __IFLA_CAN_MAX - 1
138144 };
139145
140−#define IFLA_CAN_MAX (__IFLA_CAN_MAX - 1)
146+/*
147+ * CAN FD Transmitter Delay Compensation (TDC)
148+ *
149+ * Please refer to struct can_tdc_const and can_tdc in
150+ * include/linux/can/bittiming.h for further details.
151+ */
152+enum {
153+ IFLA_CAN_TDC_UNSPEC,
154+ IFLA_CAN_TDC_TDCV_MIN, /* u32 */
155+ IFLA_CAN_TDC_TDCV_MAX, /* u32 */
156+ IFLA_CAN_TDC_TDCO_MIN, /* u32 */
157+ IFLA_CAN_TDC_TDCO_MAX, /* u32 */
158+ IFLA_CAN_TDC_TDCF_MIN, /* u32 */
159+ IFLA_CAN_TDC_TDCF_MAX, /* u32 */
160+ IFLA_CAN_TDC_TDCV, /* u32 */
161+ IFLA_CAN_TDC_TDCO, /* u32 */
162+ IFLA_CAN_TDC_TDCF, /* u32 */
163+
164+ /* add new constants above here */
165+ __IFLA_CAN_TDC,
166+ IFLA_CAN_TDC_MAX = __IFLA_CAN_TDC - 1
167+};
141168
142169 /* u16 termination range: 1..65535 Ohms */
143170 #define CAN_TERMINATION_DISABLED 0
include/uapi/linux/devlink.h+2−0
@@ -551,6 +551,8 @@ enum devlink_attr { · 550 unmodified lines
551551 DEVLINK_ATTR_RATE_NODE_NAME, /* string */
552552 DEVLINK_ATTR_RATE_PARENT_NODE_NAME, /* string */
553553
554+ DEVLINK_ATTR_REGION_MAX_SNAPSHOTS, /* u32 */
555+
554556 /* add new attributes above here, update the policy in devlink.c */
555557
556558 __DEVLINK_ATTR_MAX,
include/uapi/linux/ethtool.h+29−0
@@ -603,6 +603,7 @@ enum ethtool_link_ext_state { · 602 unmodified lines
603603 ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE,
604604 ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED,
605605 ETHTOOL_LINK_EXT_STATE_OVERHEAT,
606+ ETHTOOL_LINK_EXT_STATE_MODULE,
606607 };
607608
608609 /* More information in addition to ETHTOOL_LINK_EXT_STATE_AUTONEG. */
@@ -649,6 +650,11 @@ enum ethtool_link_ext_substate_cable_issue { · 40 unmodified lines
649650 ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE,
650651 };
651652
653+/* More information in addition to ETHTOOL_LINK_EXT_STATE_MODULE. */
654+enum ethtool_link_ext_substate_module {
655+ ETHTOOL_LINK_EXT_SUBSTATE_MODULE_CMIS_NOT_READY = 1,
656+};
657+
652658 #define ETH_GSTRING_LEN 32
653659
654660 /**
@@ -706,6 +712,29 @@ enum ethtool_stringset { · 51 unmodified lines
706712 ETH_SS_COUNT
707713 };
708714
715+/**
716+ * enum ethtool_module_power_mode_policy - plug-in module power mode policy
717+ * @ETHTOOL_MODULE_POWER_MODE_POLICY_HIGH: Module is always in high power mode.
718+ * @ETHTOOL_MODULE_POWER_MODE_POLICY_AUTO: Module is transitioned by the host
719+ * to high power mode when the first port using it is put administratively
720+ * up and to low power mode when the last port using it is put
721+ * administratively down.
722+ */
723+enum ethtool_module_power_mode_policy {
724+ ETHTOOL_MODULE_POWER_MODE_POLICY_HIGH = 1,
725+ ETHTOOL_MODULE_POWER_MODE_POLICY_AUTO,
726+};
727+
728+/**
729+ * enum ethtool_module_power_mode - plug-in module power mode
730+ * @ETHTOOL_MODULE_POWER_MODE_LOW: Module is in low power mode.
731+ * @ETHTOOL_MODULE_POWER_MODE_HIGH: Module is in high power mode.
732+ */
733+enum ethtool_module_power_mode {
734+ ETHTOOL_MODULE_POWER_MODE_LOW = 1,
735+ ETHTOOL_MODULE_POWER_MODE_HIGH,
736+};
737+
709738 /**
710739 * struct ethtool_gstrings - string set for data tagging
711740 * @cmd: Command number = %ETHTOOL_GSTRINGS
include/uapi/linux/ethtool_netlink.h+17−0
@@ -47,6 +47,8 @@ enum { · 46 unmodified lines
4747 ETHTOOL_MSG_MODULE_EEPROM_GET,
4848 ETHTOOL_MSG_STATS_GET,
4949 ETHTOOL_MSG_PHC_VCLOCKS_GET,
50+ ETHTOOL_MSG_MODULE_GET,
51+ ETHTOOL_MSG_MODULE_SET,
5052
5153 /* add new constants above here */
5254 __ETHTOOL_MSG_USER_CNT,
@@ -90,6 +92,8 @@ enum { · 37 unmodified lines
9092 ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY,
9193 ETHTOOL_MSG_STATS_GET_REPLY,
9294 ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY,
95+ ETHTOOL_MSG_MODULE_GET_REPLY,
96+ ETHTOOL_MSG_MODULE_NTF,
9397
9498 /* add new constants above here */
9599 __ETHTOOL_MSG_KERNEL_CNT,
@@ -833,6 +837,19 @@ enum { · 737 unmodified lines
833837 ETHTOOL_A_STATS_RMON_MAX = (__ETHTOOL_A_STATS_RMON_CNT - 1)
834838 };
835839
840+/* MODULE */
841+
842+enum {
843+ ETHTOOL_A_MODULE_UNSPEC,
844+ ETHTOOL_A_MODULE_HEADER, /* nest - _A_HEADER_* */
845+ ETHTOOL_A_MODULE_POWER_MODE_POLICY, /* u8 */
846+ ETHTOOL_A_MODULE_POWER_MODE, /* u8 */
847+
848+ /* add new constants above here */
849+ __ETHTOOL_A_MODULE_CNT,
850+ ETHTOOL_A_MODULE_MAX = (__ETHTOOL_A_MODULE_CNT - 1)
851+};
852+
836853 /* generic netlink info */
837854 #define ETHTOOL_GENL_NAME "ethtool"
838855 #define ETHTOOL_GENL_VERSION 1
include/uapi/linux/if_ether.h+1−0
@@ -86,6 +86,7 @@ · 85 unmodified lines
8686 * over Ethernet
8787 */
8888 #define ETH_P_PAE 0x888E /* Port Access Entity (IEEE 802.1X) */
89+#define ETH_P_REALTEK 0x8899 /* Multiple proprietary protocols */
8990 #define ETH_P_AOE 0x88A2 /* ATA over Ethernet */
9091 #define ETH_P_8021AD 0x88A8 /* 802.1ad Service VLAN */
9192 #define ETH_P_802_EX1 0x88B5 /* 802.1 Local Experimental 1. */
include/uapi/linux/ioam6_iptunnel.h+29−0
@@ -9,9 +9,38 @@ · 8 unmodified lines
99 #ifndef _UAPI_LINUX_IOAM6_IPTUNNEL_H
1010 #define _UAPI_LINUX_IOAM6_IPTUNNEL_H
1111
12+/* Encap modes:
13+ * - inline: direct insertion
14+ * - encap: ip6ip6 encapsulation
15+ * - auto: inline for local packets, encap for in-transit packets
16+ */
17+enum {
18+ __IOAM6_IPTUNNEL_MODE_MIN,
19+
20+ IOAM6_IPTUNNEL_MODE_INLINE,
21+ IOAM6_IPTUNNEL_MODE_ENCAP,
22+ IOAM6_IPTUNNEL_MODE_AUTO,
23+
24+ __IOAM6_IPTUNNEL_MODE_MAX,
25+};
26+
27+#define IOAM6_IPTUNNEL_MODE_MIN (__IOAM6_IPTUNNEL_MODE_MIN + 1)
28+#define IOAM6_IPTUNNEL_MODE_MAX (__IOAM6_IPTUNNEL_MODE_MAX - 1)
29+
1230 enum {
1331 IOAM6_IPTUNNEL_UNSPEC,
32+
33+ /* Encap mode */
34+ IOAM6_IPTUNNEL_MODE, /* u8 */
35+
36+ /* Tunnel dst address.
37+ * For encap,auto modes.
38+ */
39+ IOAM6_IPTUNNEL_DST, /* struct in6_addr */
40+
41+ /* IOAM Trace Header */
1442 IOAM6_IPTUNNEL_TRACE, /* struct ioam6_trace_hdr */
43+
1544 __IOAM6_IPTUNNEL_MAX,
1645 };
1746
include/uapi/linux/ip.h+1−0
@@ -169,6 +169,7 @@ enum · 168 unmodified lines
169169 IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,
170170 IPV4_DEVCONF_DROP_GRATUITOUS_ARP,
171171 IPV4_DEVCONF_BC_FORWARDING,
172+ IPV4_DEVCONF_ARP_EVICT_NOCARRIER,
172173 __IPV4_DEVCONF_MAX
173174 };
174175
include/uapi/linux/ipv6.h+1−0
@@ -193,6 +193,7 @@ enum { · 192 unmodified lines
193193 DEVCONF_IOAM6_ENABLED,
194194 DEVCONF_IOAM6_ID,
195195 DEVCONF_IOAM6_ID_WIDE,
196+ DEVCONF_NDISC_EVICT_NOCARRIER,
196197 DEVCONF_MAX
197198 };
198199
include/uapi/linux/mctp.h+11−0
@@ -11,6 +11,7 @@ · 10 unmodified lines
1111
1212 #include <linux/types.h>
1313 #include <linux/socket.h>
14+#include <linux/netdevice.h>
1415
1516 typedef __u8 mctp_eid_t;
1617
@@ -28,6 +29,14 @@ struct sockaddr_mctp { · 11 unmodified lines
2829 __u8 __smctp_pad1;
2930 };
3031
32+struct sockaddr_mctp_ext {
33+ struct sockaddr_mctp smctp_base;
34+ int smctp_ifindex;
35+ __u8 smctp_halen;
36+ __u8 __smctp_pad0[3];
37+ __u8 smctp_haddr[MAX_ADDR_LEN];
38+};
39+
3140 #define MCTP_NET_ANY 0x0
3241
3342 #define MCTP_ADDR_NULL 0x00
@@ -36,4 +45,6 @@ struct sockaddr_mctp { · 2 unmodified lines
3645 #define MCTP_TAG_MASK 0x07
3746 #define MCTP_TAG_OWNER 0x08
3847
48+#define MCTP_OPT_ADDR_EXT 1
49+
3950 #endif /* __UAPI_MCTP_H */
include/uapi/linux/mdio.h+9−0
@@ -53,12 +53,14 @@ · 52 unmodified lines
5353 #define MDIO_AN_EEE_LPABLE 61 /* EEE link partner ability */
5454 #define MDIO_AN_EEE_ADV2 62 /* EEE advertisement 2 */
5555 #define MDIO_AN_EEE_LPABLE2 63 /* EEE link partner ability 2 */
56+#define MDIO_AN_CTRL2 64 /* AN THP bypass request control */
5657
5758 /* Media-dependent registers. */
5859 #define MDIO_PMA_10GBT_SWAPPOL 130 /* 10GBASE-T pair swap & polarity */
5960 #define MDIO_PMA_10GBT_TXPWR 131 /* 10GBASE-T TX power control */
6061 #define MDIO_PMA_10GBT_SNR 133 /* 10GBASE-T SNR margin, lane A.
6162 * Lanes B-D are numbered 134-136. */
63+#define MDIO_PMA_10GBR_FSRT_CSR 147 /* 10GBASE-R fast retrain status and control */
6264 #define MDIO_PMA_10GBR_FECABLE 170 /* 10GBASE-R FEC ability */
6365 #define MDIO_PCS_10GBX_STAT1 24 /* 10GBASE-X PCS status 1 */
6466 #define MDIO_PCS_10GBRT_STAT1 32 /* 10GBASE-R/-T PCS status 1 */
@@ -239,6 +241,9 @@ · 174 unmodified lines
239241 #define MDIO_PMA_10GBR_FECABLE_ABLE 0x0001 /* FEC ability */
240242 #define MDIO_PMA_10GBR_FECABLE_ERRABLE 0x0002 /* FEC error indic. ability */
241243
244+/* PMA 10GBASE-R Fast Retrain status and control register. */
245+#define MDIO_PMA_10GBR_FSRT_ENABLE 0x0001 /* Fast retrain enable */
246+
242247 /* PCS 10GBASE-R/-T status register 1. */
243248 #define MDIO_PCS_10GBRT_STAT1_BLKLK 0x0001 /* Block lock attained */
244249
@@ -247,6 +252,7 @@ · 2 unmodified lines
247252 #define MDIO_PCS_10GBRT_STAT2_BER 0x3f00
248253
249254 /* AN 10GBASE-T control register. */
255+#define MDIO_AN_10GBT_CTRL_ADVFSRT2_5G 0x0020 /* Advertise 2.5GBASE-T fast retrain */
250256 #define MDIO_AN_10GBT_CTRL_ADV2_5G 0x0080 /* Advertise 2.5GBASE-T */
251257 #define MDIO_AN_10GBT_CTRL_ADV5G 0x0100 /* Advertise 5GBASE-T */
252258 #define MDIO_AN_10GBT_CTRL_ADV10G 0x1000 /* Advertise 10GBASE-T */
@@ -289,6 +295,9 @@ · 36 unmodified lines
289295 #define MDIO_EEE_2_5GT 0x0001 /* 2.5GT EEE cap */
290296 #define MDIO_EEE_5GT 0x0002 /* 5GT EEE cap */
291297
298+/* AN MultiGBASE-T AN control 2 */
299+#define MDIO_AN_THP_BP2_5GT 0x0008 /* 2.5GT THP bypass request */
300+
292301 /* 2.5G/5G Extended abilities register. */
293302 #define MDIO_PMA_NG_EXTABLE_2_5GBT 0x0001 /* 2.5GBASET ability */
294303 #define MDIO_PMA_NG_EXTABLE_5GBT 0x0002 /* 5GBASET ability */
include/uapi/linux/mptcp.h+35−0
@@ -4,6 +4,13 @@ · 3 unmodified lines
44
55 #include <linux/const.h>
66 #include <linux/types.h>
7+#include <linux/in.h> /* for sockaddr_in */
8+#include <linux/in6.h> /* for sockaddr_in6 */
9+#include <linux/socket.h> /* for sockaddr_storage and sa_family */
10+
11+#ifndef __KERNEL__
12+#include <sys/socket.h> /* for struct sockaddr */
13+#endif
714
815 #define MPTCP_SUBFLOW_FLAG_MCAP_REM _BITUL(0)
916 #define MPTCP_SUBFLOW_FLAG_MCAP_LOC _BITUL(1)
@@ -193,4 +200,32 @@ enum mptcp_event_attr { · 183 unmodified lines
193200 #define MPTCP_RST_EBADPERF 5
194201 #define MPTCP_RST_EMIDDLEBOX 6
195202
203+struct mptcp_subflow_data {
204+ __u32 size_subflow_data; /* size of this structure in userspace */
205+ __u32 num_subflows; /* must be 0, set by kernel */
206+ __u32 size_kernel; /* must be 0, set by kernel */
207+ __u32 size_user; /* size of one element in data[] */
208+} __attribute__((aligned(8)));
209+
210+struct mptcp_subflow_addrs {
211+ union {
212+ __kernel_sa_family_t sa_family;
213+ struct sockaddr sa_local;
214+ struct sockaddr_in sin_local;
215+ struct sockaddr_in6 sin6_local;
216+ struct __kernel_sockaddr_storage ss_local;
217+ };
218+ union {
219+ struct sockaddr sa_remote;
220+ struct sockaddr_in sin_remote;
221+ struct sockaddr_in6 sin6_remote;
222+ struct __kernel_sockaddr_storage ss_remote;
223+ };
224+};
225+
226+/* MPTCP socket options */
227+#define MPTCP_INFO 1
228+#define MPTCP_TCPINFO 2
229+#define MPTCP_SUBFLOW_ADDRS 3
230+
196231 #endif /* _UAPI_MPTCP_H */
include/uapi/linux/neighbour.h+24−11
@@ -31,6 +31,7 @@ enum { · 30 unmodified lines
3131 NDA_PROTOCOL, /* Originator of entry */
3232 NDA_NH_ID,
3333 NDA_FDB_EXT_ATTRS,
34+ NDA_FLAGS_EXT,
3435 __NDA_MAX
3536 };
3637
@@ -40,14 +41,16 @@ enum { · 3 unmodified lines
4041 * Neighbor Cache Entry Flags
4142 */
4243
43−#define NTF_USE 0x01
44−#define NTF_SELF 0x02
45−#define NTF_MASTER 0x04
46−#define NTF_PROXY 0x08 /* == ATF_PUBL */
47−#define NTF_EXT_LEARNED 0x10
48−#define NTF_OFFLOADED 0x20
49−#define NTF_STICKY 0x40
50−#define NTF_ROUTER 0x80
44+#define NTF_USE (1 << 0)
45+#define NTF_SELF (1 << 1)
46+#define NTF_MASTER (1 << 2)
47+#define NTF_PROXY (1 << 3) /* == ATF_PUBL */
48+#define NTF_EXT_LEARNED (1 << 4)
49+#define NTF_OFFLOADED (1 << 5)
50+#define NTF_STICKY (1 << 6)
51+#define NTF_ROUTER (1 << 7)
52+/* Extended flags under NDA_FLAGS_EXT: */
53+#define NTF_EXT_MANAGED (1 << 0)
5154
5255 /*
5356 * Neighbor Cache Entry States.
@@ -65,12 +68,22 @@ enum { · 11 unmodified lines
6568 #define NUD_PERMANENT 0x80
6669 #define NUD_NONE 0x00
6770
68−/* NUD_NOARP & NUD_PERMANENT are pseudostates, they never change
69− * and make no address resolution or NUD.
70− * NUD_PERMANENT also cannot be deleted by garbage collectors.
71+/* NUD_NOARP & NUD_PERMANENT are pseudostates, they never change and make no
72+ * address resolution or NUD.
73+ *
74+ * NUD_PERMANENT also cannot be deleted by garbage collectors. This holds true
75+ * for dynamic entries with NTF_EXT_LEARNED flag as well. However, upon carrier
76+ * down event, NUD_PERMANENT entries are not flushed whereas NTF_EXT_LEARNED
77+ * flagged entries explicitly are (which is also consistent with the routing
78+ * subsystem).
79+ *
7180 * When NTF_EXT_LEARNED is set for a bridge fdb entry the different cache entry
7281 * states don't make sense and thus are ignored. Such entries don't age and
7382 * can roam.
83+ *
84+ * NTF_EXT_MANAGED flagged neigbor entries are managed by the kernel on behalf
85+ * of a user space control plane, and automatically refreshed so that (if
86+ * possible) they remain in NUD_REACHABLE state.
7487 */
7588
7689 struct nda_cacheinfo {
include/uapi/linux/netfilter.h+1−0
@@ -51,6 +51,7 @@ enum nf_inet_hooks { · 50 unmodified lines
5151
5252 enum nf_dev_hooks {
5353 NF_NETDEV_INGRESS,
54+ NF_NETDEV_EGRESS,
5455 NF_NETDEV_NUMHOOKS
5556 };
5657
include/uapi/linux/netfilter/nf_tables.h+5−1
@@ -753,11 +753,13 @@ enum nft_dynset_attributes { · 752 unmodified lines
753753 * @NFT_PAYLOAD_LL_HEADER: link layer header
754754 * @NFT_PAYLOAD_NETWORK_HEADER: network header
755755 * @NFT_PAYLOAD_TRANSPORT_HEADER: transport header
756+ * @NFT_PAYLOAD_INNER_HEADER: inner header / payload
756757 */
757758 enum nft_payload_bases {
758759 NFT_PAYLOAD_LL_HEADER,
759760 NFT_PAYLOAD_NETWORK_HEADER,
760761 NFT_PAYLOAD_TRANSPORT_HEADER,
762+ NFT_PAYLOAD_INNER_HEADER,
761763 };
762764
763765 /**
@@ -896,7 +898,8 @@ enum nft_meta_keys { · 132 unmodified lines
896898 NFT_META_OIF,
897899 NFT_META_IIFNAME,
898900 NFT_META_OIFNAME,
899− NFT_META_IIFTYPE,
901+ NFT_META_IFTYPE,
902+#define NFT_META_IIFTYPE NFT_META_IFTYPE
900903 NFT_META_OIFTYPE,
901904 NFT_META_SKUID,
902905 NFT_META_SKGID,
@@ -923,6 +926,7 @@ enum nft_meta_keys { · 20 unmodified lines
923926 NFT_META_TIME_HOUR,
924927 NFT_META_SDIF,
925928 NFT_META_SDIFNAME,
929+ __NFT_META_IIFTYPE,
926930 };
927931
928932 /**
include/uapi/linux/nl80211-vnd-intel.h+29−0
@@ -13,6 +13,35 @@ · 12 unmodified lines
1313 * enum iwl_mvm_vendor_cmd - supported vendor commands
1414 * @IWL_MVM_VENDOR_CMD_GET_CSME_CONN_INFO: reports CSME connection info.
1515 * @IWL_MVM_VENDOR_CMD_HOST_GET_OWNERSHIP: asks for ownership on the device.
16+ * This is useful when the CSME firmware owns the device and the kernel
17+ * wants to use it. In case the CSME firmware has no connection active the
18+ * kernel will manage on its own to get ownership of the device.
19+ * When the CSME firmware has an active connection, the user space
20+ * involvement is required. The kernel will assert the RFKILL signal with
21+ * the "device not owned" reason so that nobody can touch the device. Then
22+ * the user space can run the following flow to be able to get connected
23+ * to the very same AP the CSME firmware is currently connected to:
24+ *
25+ * 1) The user space (NetworkManager) boots and sees that the device is
26+ * in RFKILL because the host doesn't own the device
27+ * 2) The user space asks the kernel what AP the CSME firmware is
28+ * connected to (with %IWL_MVM_VENDOR_CMD_GET_CSME_CONN_INFO)
29+ * 3) The user space checks if it has a profile that matches the reply
30+ * from the CSME firmware
31+ * 4) The user space installs a network to the wpa_supplicant with a
32+ * specific BSSID and a specific frequency
33+ * 5) The user space prevents any type of full scan
34+ * 6) The user space asks iwlmei to request ownership on the device (with
35+ * this command)
36+ * 7) iwlmei requests ownership from the CSME firmware
37+ * 8) The CSME firmware grants ownership
38+ * 9) iwlmei tells iwlwifi to lift the RFKILL
39+ * 10) RFKILL OFF is reported to user space
40+ * 11) The host boots the device, loads the firwmare, and connects to a
41+ * specific BSSID without scanning including IP as fast as it can
42+ * 12) The host reports to the CSME firmware that there is a connection
43+ * 13) The TCP connection is preserved and the host has connectivity
44+ *
1645 * @IWL_MVM_VENDOR_CMD_ROAMING_FORBIDDEN_EVENT: notifies if roaming is allowed.
1746 * It contains a &IWL_MVM_VENDOR_ATTR_ROAMING_FORBIDDEN and a
1847 * &IWL_MVM_VENDOR_ATTR_VIF_ADDR attributes.
include/uapi/linux/nl80211.h+114−1
@@ -300,6 +300,29 @@ · 299 unmodified lines
300300 * the interface goes down.
301301 */
302302
303+/**
304+ * DOC: FILS shared key crypto offload
305+ *
306+ * This feature is applicable to drivers running in AP mode.
307+ *
308+ * FILS shared key crypto offload can be advertised by drivers by setting
309+ * @NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD flag. The drivers that support
310+ * FILS shared key crypto offload should be able to encrypt and decrypt
311+ * association frames for FILS shared key authentication as per IEEE 802.11ai.
312+ * With this capability, for FILS key derivation, drivers depend on userspace.
313+ *
314+ * After FILS key derivation, userspace shares the FILS AAD details with the
315+ * driver and the driver stores the same to use in decryption of association
316+ * request and in encryption of association response. The below parameters
317+ * should be given to the driver in %NL80211_CMD_SET_FILS_AAD.
318+ * %NL80211_ATTR_MAC - STA MAC address, used for storing FILS AAD per STA
319+ * %NL80211_ATTR_FILS_KEK - Used for encryption or decryption
320+ * %NL80211_ATTR_FILS_NONCES - Used for encryption or decryption
321+ * (STA Nonce 16 bytes followed by AP Nonce 16 bytes)
322+ *
323+ * Once the association is done, the driver cleans the FILS AAD data.
324+ */
325+
303326 /**
304327 * enum nl80211_commands - supported nl80211 commands
305328 *
@@ -337,7 +360,10 @@ · 31 unmodified lines
337360 * @NL80211_CMD_DEL_INTERFACE: Virtual interface was deleted, has attributes
338361 * %NL80211_ATTR_IFINDEX and %NL80211_ATTR_WIPHY. Can also be sent from
339362 * userspace to request deletion of a virtual interface, then requires
340− * attribute %NL80211_ATTR_IFINDEX.
363+ * attribute %NL80211_ATTR_IFINDEX. If multiple BSSID advertisements are
364+ * enabled using %NL80211_ATTR_MBSSID_CONFIG, %NL80211_ATTR_MBSSID_ELEMS,
365+ * and if this command is used for the transmitting interface, then all
366+ * the non-transmitting interfaces are deleted as well.
341367 *
342368 * @NL80211_CMD_GET_KEY: Get sequence counter information for a key specified
343369 * by %NL80211_ATTR_KEY_IDX and/or %NL80211_ATTR_MAC.
@@ -1200,6 +1226,12 @@ · 856 unmodified lines
12001226 * @NL80211_CMD_COLOR_CHANGE_COMPLETED: Notify userland that the color change
12011227 * has completed
12021228 *
1229+ * @NL80211_CMD_SET_FILS_AAD: Set FILS AAD data to the driver using -
1230+ * &NL80211_ATTR_MAC - for STA MAC address
1231+ * &NL80211_ATTR_FILS_KEK - for KEK
1232+ * &NL80211_ATTR_FILS_NONCES - for FILS Nonces
1233+ * (STA Nonce 16 bytes followed by AP Nonce 16 bytes)
1234+ *
12031235 * @NL80211_CMD_MAX: highest used command number
12041236 * @__NL80211_CMD_AFTER_LAST: internal use
12051237 */
@@ -1440,6 +1472,8 @@ enum nl80211_commands { · 234 unmodified lines
14401472 NL80211_CMD_COLOR_CHANGE_ABORTED,
14411473 NL80211_CMD_COLOR_CHANGE_COMPLETED,
14421474
1475+ NL80211_CMD_SET_FILS_AAD,
1476+
14431477 /* add new commands above here */
14441478
14451479 /* used to define NL80211_CMD_MAX below */
@@ -2593,6 +2627,18 @@ enum nl80211_commands { · 1147 unmodified lines
25932627 * @NL80211_ATTR_COLOR_CHANGE_ELEMS: Nested set of attributes containing the IE
25942628 * information for the time while performing a color switch.
25952629 *
2630+ * @NL80211_ATTR_MBSSID_CONFIG: Nested attribute for multiple BSSID
2631+ * advertisements (MBSSID) parameters in AP mode.
2632+ * Kernel uses this attribute to indicate the driver's support for MBSSID
2633+ * and enhanced multi-BSSID advertisements (EMA AP) to the userspace.
2634+ * Userspace should use this attribute to configure per interface MBSSID
2635+ * parameters.
2636+ * See &enum nl80211_mbssid_config_attributes for details.
2637+ *
2638+ * @NL80211_ATTR_MBSSID_ELEMS: Nested parameter to pass multiple BSSID elements.
2639+ * Mandatory parameter for the transmitting interface to enable MBSSID.
2640+ * Optional for the non-transmitting interfaces.
2641+ *
25962642 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
25972643 * @NL80211_ATTR_MAX: highest attribute number currently defined
25982644 * @__NL80211_ATTR_AFTER_LAST: internal use
@@ -3096,6 +3142,9 @@ enum nl80211_attrs { · 497 unmodified lines
30963142 NL80211_ATTR_COLOR_CHANGE_COLOR,
30973143 NL80211_ATTR_COLOR_CHANGE_ELEMS,
30983144
3145+ NL80211_ATTR_MBSSID_CONFIG,
3146+ NL80211_ATTR_MBSSID_ELEMS,
3147+
30993148 /* add attributes here, update the policy in nl80211.c */
31003149
31013150 __NL80211_ATTR_AFTER_LAST,
@@ -4929,6 +4978,7 @@ enum nl80211_txrate_gi { · 1827 unmodified lines
49294978 * @NL80211_BAND_60GHZ: around 60 GHz band (58.32 - 69.12 GHz)
49304979 * @NL80211_BAND_6GHZ: around 6 GHz band (5.9 - 7.2 GHz)
49314980 * @NL80211_BAND_S1GHZ: around 900MHz, supported by S1G PHYs
4981+ * @NL80211_BAND_LC: light communication band (placeholder)
49324982 * @NUM_NL80211_BANDS: number of bands, avoid using this in userspace
49334983 * since newer kernel versions may support more bands
49344984 */
@@ -4938,6 +4988,7 @@ enum nl80211_band { · 3 unmodified lines
49384988 NL80211_BAND_60GHZ,
49394989 NL80211_BAND_6GHZ,
49404990 NL80211_BAND_S1GHZ,
4991+ NL80211_BAND_LC,
49414992
49424993 NUM_NL80211_BANDS,
49434994 };
@@ -5995,6 +6046,11 @@ enum nl80211_feature_flags { · 1051 unmodified lines
59956046 * @NL80211_EXT_FEATURE_BSS_COLOR: The driver supports BSS color collision
59966047 * detection and change announcemnts.
59976048 *
6049+ * @NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD: Driver running in AP mode supports
6050+ * FILS encryption and decryption for (Re)Association Request and Response
6051+ * frames. Userspace has to share FILS AAD details to the driver by using
6052+ * @NL80211_CMD_SET_FILS_AAD.
6053+ *
59986054 * @NUM_NL80211_EXT_FEATURES: number of extended features.
59996055 * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
60006056 */
@@ -6060,6 +6116,7 @@ enum nl80211_ext_feature_index { · 59 unmodified lines
60606116 NL80211_EXT_FEATURE_SECURE_RTT,
60616117 NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE,
60626118 NL80211_EXT_FEATURE_BSS_COLOR,
6119+ NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD,
60636120
60646121 /* add new features before the definition below */
60656122 NUM_NL80211_EXT_FEATURES,
@@ -7349,4 +7406,60 @@ enum nl80211_sar_specs_attrs { · 1283 unmodified lines
73497406 NL80211_SAR_ATTR_SPECS_MAX = __NL80211_SAR_ATTR_SPECS_LAST - 1,
73507407 };
73517408
7409+/**
7410+ * enum nl80211_mbssid_config_attributes - multiple BSSID (MBSSID) and enhanced
7411+ * multi-BSSID advertisements (EMA) in AP mode.
7412+ * Kernel uses some of these attributes to advertise driver's support for
7413+ * MBSSID and EMA.
7414+ * Remaining attributes should be used by the userspace to configure the
7415+ * features.
7416+ *
7417+ * @__NL80211_MBSSID_CONFIG_ATTR_INVALID: Invalid
7418+ *
7419+ * @NL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES: Used by the kernel to advertise
7420+ * the maximum number of MBSSID interfaces supported by the driver.
7421+ * Driver should indicate MBSSID support by setting
7422+ * wiphy->mbssid_max_interfaces to a value more than or equal to 2.
7423+ *
7424+ * @NL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY: Used by the kernel
7425+ * to advertise the maximum profile periodicity supported by the driver
7426+ * if EMA is enabled. Driver should indicate EMA support to the userspace
7427+ * by setting wiphy->ema_max_profile_periodicity to
7428+ * a non-zero value.
7429+ *
7430+ * @NL80211_MBSSID_CONFIG_ATTR_INDEX: Mandatory parameter to pass the index of
7431+ * this BSS (u8) in the multiple BSSID set.
7432+ * Value must be set to 0 for the transmitting interface and non-zero for
7433+ * all non-transmitting interfaces. The userspace will be responsible
7434+ * for using unique indices for the interfaces.
7435+ * Range: 0 to wiphy->mbssid_max_interfaces-1.
7436+ *
7437+ * @NL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX: Mandatory parameter for
7438+ * a non-transmitted profile which provides the interface index (u32) of
7439+ * the transmitted profile. The value must match one of the interface
7440+ * indices advertised by the kernel. Optional if the interface being set up
7441+ * is the transmitting one, however, if provided then the value must match
7442+ * the interface index of the same.
7443+ *
7444+ * @NL80211_MBSSID_CONFIG_ATTR_EMA: Flag used to enable EMA AP feature.
7445+ * Setting this flag is permitted only if the driver advertises EMA support
7446+ * by setting wiphy->ema_max_profile_periodicity to non-zero.
7447+ *
7448+ * @__NL80211_MBSSID_CONFIG_ATTR_LAST: Internal
7449+ * @NL80211_MBSSID_CONFIG_ATTR_MAX: highest attribute
7450+ */
7451+enum nl80211_mbssid_config_attributes {
7452+ __NL80211_MBSSID_CONFIG_ATTR_INVALID,
7453+
7454+ NL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES,
7455+ NL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY,
7456+ NL80211_MBSSID_CONFIG_ATTR_INDEX,
7457+ NL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX,
7458+ NL80211_MBSSID_CONFIG_ATTR_EMA,
7459+
7460+ /* keep last */
7461+ __NL80211_MBSSID_CONFIG_ATTR_LAST,
7462+ NL80211_MBSSID_CONFIG_ATTR_MAX = __NL80211_MBSSID_CONFIG_ATTR_LAST - 1,
7463+};
7464+
73527465 #endif /* __LINUX_NL80211_H */
include/uapi/linux/pkt_sched.h+2−0
@@ -840,6 +840,8 @@ enum { · 839 unmodified lines
840840 TCA_FQ_CODEL_CE_THRESHOLD,
841841 TCA_FQ_CODEL_DROP_BATCH_SIZE,
842842 TCA_FQ_CODEL_MEMORY_LIMIT,
843+ TCA_FQ_CODEL_CE_THRESHOLD_SELECTOR,
844+ TCA_FQ_CODEL_CE_THRESHOLD_MASK,
843845 __TCA_FQ_CODEL_MAX
844846 };
845847
include/uapi/linux/smc.h+42−2
@@ -38,6 +38,9 @@ enum { /* SMC PNET Table commands */ · 37 unmodified lines
3838 #define SMC_GENL_FAMILY_VERSION 1
3939
4040 #define SMC_PCI_ID_STR_LEN 16 /* Max length of pci id string */
41+#define SMC_MAX_HOSTNAME_LEN 32 /* Max length of the hostname */
42+#define SMC_MAX_UEID 4 /* Max number of user EIDs */
43+#define SMC_MAX_EID_LEN 32 /* Max length of an EID */
4144
4245 /* SMC_GENL_FAMILY commands */
4346 enum {
@@ -49,6 +52,13 @@ enum { · 5 unmodified lines
4952 SMC_NETLINK_GET_DEV_SMCR,
5053 SMC_NETLINK_GET_STATS,
5154 SMC_NETLINK_GET_FBACK_STATS,
55+ SMC_NETLINK_DUMP_UEID,
56+ SMC_NETLINK_ADD_UEID,
57+ SMC_NETLINK_REMOVE_UEID,
58+ SMC_NETLINK_FLUSH_UEID,
59+ SMC_NETLINK_DUMP_SEID,
60+ SMC_NETLINK_ENABLE_SEID,
61+ SMC_NETLINK_DISABLE_SEID,
5262 };
5363
5464 /* SMC_GENL_FAMILY top level attributes */
@@ -74,17 +84,28 @@ enum { · 19 unmodified lines
7484 SMC_NLA_SYS_IS_ISM_V2, /* u8 */
7585 SMC_NLA_SYS_LOCAL_HOST, /* string */
7686 SMC_NLA_SYS_SEID, /* string */
87+ SMC_NLA_SYS_IS_SMCR_V2, /* u8 */
7788 __SMC_NLA_SYS_MAX,
7889 SMC_NLA_SYS_MAX = __SMC_NLA_SYS_MAX - 1
7990 };
8091
81−/* SMC_NLA_LGR_V2 nested attributes */
92+/* SMC_NLA_LGR_D_V2_COMMON and SMC_NLA_LGR_R_V2_COMMON nested attributes */
8293 enum {
8394 SMC_NLA_LGR_V2_VER, /* u8 */
8495 SMC_NLA_LGR_V2_REL, /* u8 */
8596 SMC_NLA_LGR_V2_OS, /* u8 */
8697 SMC_NLA_LGR_V2_NEG_EID, /* string */
8798 SMC_NLA_LGR_V2_PEER_HOST, /* string */
99+ __SMC_NLA_LGR_V2_MAX,
100+ SMC_NLA_LGR_V2_MAX = __SMC_NLA_LGR_V2_MAX - 1
101+};
102+
103+/* SMC_NLA_LGR_R_V2 nested attributes */
104+enum {
105+ SMC_NLA_LGR_R_V2_UNSPEC,
106+ SMC_NLA_LGR_R_V2_DIRECT, /* u8 */
107+ __SMC_NLA_LGR_R_V2_MAX,
108+ SMC_NLA_LGR_R_V2_MAX = __SMC_NLA_LGR_R_V2_MAX - 1
88109 };
89110
90111 /* SMC_GEN_LGR_SMCR attributes */
@@ -96,6 +117,8 @@ enum { · 5 unmodified lines
96117 SMC_NLA_LGR_R_PNETID, /* string */
97118 SMC_NLA_LGR_R_VLAN_ID, /* u8 */
98119 SMC_NLA_LGR_R_CONNS_NUM, /* u32 */
120+ SMC_NLA_LGR_R_V2_COMMON, /* nest */
121+ SMC_NLA_LGR_R_V2, /* nest */
99122 __SMC_NLA_LGR_R_MAX,
100123 SMC_NLA_LGR_R_MAX = __SMC_NLA_LGR_R_MAX - 1
101124 };
@@ -128,7 +151,7 @@ enum { · 26 unmodified lines
128151 SMC_NLA_LGR_D_PNETID, /* string */
129152 SMC_NLA_LGR_D_CHID, /* u16 */
130153 SMC_NLA_LGR_D_PAD, /* flag */
131− SMC_NLA_LGR_V2, /* nest */
154+ SMC_NLA_LGR_D_V2_COMMON, /* nest */
132155 __SMC_NLA_LGR_D_MAX,
133156 SMC_NLA_LGR_D_MAX = __SMC_NLA_LGR_D_MAX - 1
134157 };
@@ -242,4 +265,21 @@ enum { · 107 unmodified lines
242265 __SMC_NLA_FBACK_STATS_MAX,
243266 SMC_NLA_FBACK_STATS_MAX = __SMC_NLA_FBACK_STATS_MAX - 1
244267 };
268+
269+/* SMC_NETLINK_UEID attributes */
270+enum {
271+ SMC_NLA_EID_TABLE_UNSPEC,
272+ SMC_NLA_EID_TABLE_ENTRY, /* string */
273+ __SMC_NLA_EID_TABLE_MAX,
274+ SMC_NLA_EID_TABLE_MAX = __SMC_NLA_EID_TABLE_MAX - 1
275+};
276+
277+/* SMC_NETLINK_SEID attributes */
278+enum {
279+ SMC_NLA_SEID_UNSPEC,
280+ SMC_NLA_SEID_ENTRY, /* string */
281+ SMC_NLA_SEID_ENABLED, /* u8 */
282+ __SMC_NLA_SEID_TABLE_MAX,
283+ SMC_NLA_SEID_TABLE_MAX = __SMC_NLA_SEID_TABLE_MAX - 1
284+};
245285 #endif /* _UAPI_LINUX_SMC_H */
include/uapi/linux/sysctl.h+1−0
@@ -482,6 +482,7 @@ enum · 481 unmodified lines
482482 NET_IPV4_CONF_PROMOTE_SECONDARIES=20,
483483 NET_IPV4_CONF_ARP_ACCEPT=21,
484484 NET_IPV4_CONF_ARP_NOTIFY=22,
485+ NET_IPV4_CONF_ARP_EVICT_NOCARRIER=23,
485486 };
486487
487488 /* /proc/sys/net/ipv4/netfilter */
include/uapi/linux/tls.h+30−0
@@ -84,6 +84,20 @@ · 83 unmodified lines
8484 #define TLS_CIPHER_CHACHA20_POLY1305_TAG_SIZE 16
8585 #define TLS_CIPHER_CHACHA20_POLY1305_REC_SEQ_SIZE 8
8686
87+#define TLS_CIPHER_SM4_GCM 55
88+#define TLS_CIPHER_SM4_GCM_IV_SIZE 8
89+#define TLS_CIPHER_SM4_GCM_KEY_SIZE 16
90+#define TLS_CIPHER_SM4_GCM_SALT_SIZE 4
91+#define TLS_CIPHER_SM4_GCM_TAG_SIZE 16
92+#define TLS_CIPHER_SM4_GCM_REC_SEQ_SIZE 8
93+
94+#define TLS_CIPHER_SM4_CCM 56
95+#define TLS_CIPHER_SM4_CCM_IV_SIZE 8
96+#define TLS_CIPHER_SM4_CCM_KEY_SIZE 16
97+#define TLS_CIPHER_SM4_CCM_SALT_SIZE 4
98+#define TLS_CIPHER_SM4_CCM_TAG_SIZE 16
99+#define TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE 8
100+
87101 #define TLS_SET_RECORD_TYPE 1
88102 #define TLS_GET_RECORD_TYPE 2
89103
@@ -124,6 +138,22 @@ struct tls12_crypto_info_chacha20_poly1305 { · 34 unmodified lines
124138 unsigned char rec_seq[TLS_CIPHER_CHACHA20_POLY1305_REC_SEQ_SIZE];
125139 };
126140
141+struct tls12_crypto_info_sm4_gcm {
142+ struct tls_crypto_info info;
143+ unsigned char iv[TLS_CIPHER_SM4_GCM_IV_SIZE];
144+ unsigned char key[TLS_CIPHER_SM4_GCM_KEY_SIZE];
145+ unsigned char salt[TLS_CIPHER_SM4_GCM_SALT_SIZE];
146+ unsigned char rec_seq[TLS_CIPHER_SM4_GCM_REC_SEQ_SIZE];
147+};
148+
149+struct tls12_crypto_info_sm4_ccm {
150+ struct tls_crypto_info info;
151+ unsigned char iv[TLS_CIPHER_SM4_CCM_IV_SIZE];
152+ unsigned char key[TLS_CIPHER_SM4_CCM_KEY_SIZE];
153+ unsigned char salt[TLS_CIPHER_SM4_CCM_SALT_SIZE];
154+ unsigned char rec_seq[TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE];
155+};
156+
127157 enum {
128158 TLS_INFO_UNSPEC,
129159 TLS_INFO_VERSION,
include/uapi/linux/vm_sockets.h+12−1
@@ -64,7 +64,7 @@ · 63 unmodified lines
6464 * timeout for a STREAM socket.
6565 */
6666
67−#define SO_VM_SOCKETS_CONNECT_TIMEOUT 6
67+#define SO_VM_SOCKETS_CONNECT_TIMEOUT_OLD 6
6868
6969 /* Option name for using non-blocking send/receive. Use as the option name
7070 * for setsockopt(3) or getsockopt(3) to set or get the non-blocking
@@ -81,6 +81,17 @@ · 10 unmodified lines
8181
8282 #define SO_VM_SOCKETS_NONBLOCK_TXRX 7
8383
84+#define SO_VM_SOCKETS_CONNECT_TIMEOUT_NEW 8
85+
86+#if !defined(__KERNEL__)
87+#if __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
88+#define SO_VM_SOCKETS_CONNECT_TIMEOUT SO_VM_SOCKETS_CONNECT_TIMEOUT_OLD
89+#else
90+#define SO_VM_SOCKETS_CONNECT_TIMEOUT \
91+ (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_VM_SOCKETS_CONNECT_TIMEOUT_OLD : SO_VM_SOCKETS_CONNECT_TIMEOUT_NEW)
92+#endif
93+#endif
94+
8495 /* The vSocket equivalent of INADDR_ANY. This works for the svm_cid field of
8596 * sockaddr_vm and indicates the context ID of the current endpoint.
8697 */