History

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

Pull networking updates from Paolo Abeni: "Core: - Increase size limits for to-be-sent skb frag allocations. This allows tun, tap devices and packet sockets to better cope with large writes operations - Store netdevs in an xarray, to simplify iterating over netdevs - Refactor nexthop selection for multipath routes - Improve sched class lifetime handling - Add backup nexthop ID support for bridge - Implement drop reasons support in openvswitch - Several data races annotations and fixes - Constify the sk parameter of routing functions - Prepend kernel version to netconsole message Protocols: - Implement support for TCP probing the peer being under memory pressure - Remove hard coded limitation on IPv6 specific info placement inside the socket struct - Get rid of sysctl_tcp_adv_win_scale and use an auto-estimated per socket scaling factor - Scaling-up the IPv6 expired route GC via a separated list of expiring routes - In-kernel support for the TLS alert protocol - Better support for UDP reuseport with connected sockets - Add NEXT-C-SID support for SRv6 End.X behavior, reducing the SR header size - Get rid of additional ancillary per MPTCP connection struct socket - Implement support for BPF-based MPTCP packet schedulers - Format MPTCP subtests selftests results in TAP - Several new SMC 2.1 features including unique experimental options, max connections per lgr negotiation, max links per lgr negotiation BPF: - Multi-buffer support in AF_XDP - Add multi uprobe BPF links for attaching multiple uprobes and usdt probes, which is significantly faster and saves extra fds - Implement an fd-based tc BPF attach API (TCX) and BPF link support on top of it - Add SO_REUSEPORT support for TC bpf_sk_assign - Support new instructions from cpu v4 to simplify the generated code and feature completeness, for x86, arm64, riscv64 - Support defragmenting IPv(4|6) packets in BPF - Teach verifier actual bounds of bpf_get_smp_processor_id() and fix perf+libbpf issue related to custom section handling - Introduce bpf map element count and enable it for all program types - Add a BPF hook in sys_socket() to change the protocol ID from IPPROTO_TCP to IPPROTO_MPTCP to cover migration for legacy - Introduce bpf_me_mcache_free_rcu() and fix OOM under stress - Add uprobe support for the bpf_get_func_ip helper - Check skb ownership against full socket - Support for up to 12 arguments in BPF trampoline - Extend link_info for kprobe_multi and perf_event links Netfilter: - Speed-up process exit by aborting ruleset validation if a fatal signal is pending - Allow NLA_POLICY_MASK to be used with BE16/BE32 types Driver API: - Page pool optimizations, to improve data locality and cache usage - Introduce ndo_hwtstamp_get() and ndo_hwtstamp_set() to avoid the need for raw ioctl() handling in drivers - Simplify genetlink dump operations (doit/dumpit) providing them the common information already populated in struct genl_info - Extend and use the yaml devlink specs to [re]generate the split ops - Introduce devlink selective dumps, to allow SF filtering SF based on handle and other attributes - Add yaml netlink spec for netlink-raw families, allow route, link and address related queries via the ynl tool - Remove phylink legacy mode support - Support offload LED blinking to phy - Add devlink port function attributes for IPsec New hardware / drivers: - Ethernet: - Broadcom ASP 2.0 (72165) ethernet controller - MediaTek MT7988 SoC - Texas Instruments AM654 SoC - Texas Instruments IEP driver - Atheros qca8081 phy - Marvell 88Q2110 phy - NXP TJA1120 phy - WiFi: - MediaTek mt7981 support - Can: - Kvaser SmartFusion2 PCI Express devices - Allwinner T113 controllers - Texas Instruments tcan4552/4553 chips - Bluetooth: - Intel Gale Peak - Qualcomm WCN3988 and WCN7850 - NXP AW693 and IW624 - Mediatek MT2925 Drivers: - Ethernet NICs: - nVidia/Mellanox: - mlx5: - support UDP encapsulation in packet offload mode - IPsec packet offload support in eswitch mode - improve aRFS observability by adding new set of counters - extends MACsec offload support to cover RoCE traffic - dynamic completion EQs - mlx4: - convert to use auxiliary bus instead of custom interface logic - Intel - ice: - implement switchdev bridge offload, even for LAG interfaces - implement SRIOV support for LAG interfaces - igc: - add support for multiple in-flight TX timestamps - Broadcom: - bnxt: - use the unified RX page pool buffers for XDP and non-XDP - use the NAPI skb allocation cache - OcteonTX2: - support Round Robin scheduling HTB offload - TC flower offload support for SPI field - Freescale: - add XDP_TX feature support - AMD: - ionic: add support for PCI FLR event - sfc: - basic conntrack offload - introduce eth, ipv4 and ipv6 pedit offloads - ST Microelectronics: - stmmac: maximze PTP timestamping resolution - Virtual NICs: - Microsoft vNIC: - batch ringing RX queue doorbell on receiving packets - add page pool for RX buffers - Virtio vNIC: - add per queue interrupt coalescing support - Google vNIC: - add queue-page-list mode support - Ethernet high-speed switches: - nVidia/Mellanox (mlxsw): - add port range matching tc-flower offload - permit enslavement to netdevices with uppers - Ethernet embedded switches: - Marvell (mv88e6xxx): - convert to phylink_pcs - Renesas: - r8A779fx: add speed change support - rzn1: enables vlan support - Ethernet PHYs: - convert mv88e6xxx to phylink_pcs - WiFi: - Qualcomm Wi-Fi 7 (ath12k): - extremely High Throughput (EHT) PHY support - RealTek (rtl8xxxu): - enable AP mode for: RTL8192FU, RTL8710BU (RTL8188GU), RTL8192EU and RTL8723BU - RealTek (rtw89): - Introduce Time Averaged SAR (TAS) support - Connector: - support for event filtering" * tag 'net-next-6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (1806 commits) net: ethernet: mtk_wed: minor change in wed_{tx,rx}info_show net: ethernet: mtk_wed: add some more info in wed_txinfo_show handler net: stmmac: clarify difference between "interface" and "phy_interface" r8152: add vendor/device ID pair for D-Link DUB-E250 devlink: move devlink_notify_register/unregister() to dev.c devlink: move small_ops definition into netlink.c devlink: move tracepoint definitions into core.c devlink: push linecard related code into separate file devlink: push rate related code into separate file devlink: push trap related code into separate file devlink: use tracepoint_enabled() helper devlink: push region related code into separate file devlink: push param related code into separate file devlink: push resource related code into separate file devlink: push dpipe related code into separate file devlink: move and rename devlink_dpipe_send_and_alloc_skb() helper devlink: push shared buffer related code into separate file devlink: push port related code into separate file devlink: push object register/unregister notifications into separate helpers inet: fix IP_TRANSPARENT error handling ...

Linus Torvalds committed 3 years ago

Commit bd6c11b2 parents 68cf017 c8735121855 files · +109626 −46103Browse files

Showing the changes to include/uapi/linux (14 of 1855 files). Show all

Unified · Split

14 files
  1. include/uapi/linux/bpf.h +133 −17
  2. include/uapi/linux/cn_proc.h +44 −18
  3. include/uapi/linux/devlink.h +4 −0
  4. include/uapi/linux/if_link.h +1 −0
  5. include/uapi/linux/if_xdp.h +13 −0
  6. include/uapi/linux/ipv6.h +1 −0
  7. include/uapi/linux/mdio.h +17 −1
  8. include/uapi/linux/netdev.h +3 −1
  9. include/uapi/linux/netfilter_bridge/ebtables.h +12 −10
  10. include/uapi/linux/openvswitch.h +2 −0
  11. include/uapi/linux/pkt_cls.h +3 −0
  12. include/uapi/linux/pkt_sched.h +1 −0
  13. include/uapi/linux/smc.h +2 −0
  14. include/uapi/linux/virtio_net.h +14 −0
include/uapi/linux/bpf.h+133−17
@@ -19,6 +19,7 @@ · 18 unmodified lines
1919
2020 /* ld/ldx fields */
2121 #define BPF_DW 0x18 /* double word (64-bit) */
22+#define BPF_MEMSX 0x80 /* load with sign extension */
2223 #define BPF_ATOMIC 0xc0 /* atomic memory ops - op type in immediate */
2324 #define BPF_XADD 0xc0 /* exclusive add - legacy name */
2425
@@ -1036,6 +1037,9 @@ enum bpf_attach_type { · 1011 unmodified lines
10361037 BPF_LSM_CGROUP,
10371038 BPF_STRUCT_OPS,
10381039 BPF_NETFILTER,
1040+ BPF_TCX_INGRESS,
1041+ BPF_TCX_EGRESS,
1042+ BPF_TRACE_UPROBE_MULTI,
10391043 __MAX_BPF_ATTACH_TYPE
10401044 };
10411045
@@ -1053,10 +1057,21 @@ enum bpf_link_type { · 11 unmodified lines
10531057 BPF_LINK_TYPE_KPROBE_MULTI = 8,
10541058 BPF_LINK_TYPE_STRUCT_OPS = 9,
10551059 BPF_LINK_TYPE_NETFILTER = 10,
1056−
1060+ BPF_LINK_TYPE_TCX = 11,
1061+ BPF_LINK_TYPE_UPROBE_MULTI = 12,
10571062 MAX_BPF_LINK_TYPE,
10581063 };
10591064
1065+enum bpf_perf_event_type {
1066+ BPF_PERF_EVENT_UNSPEC = 0,
1067+ BPF_PERF_EVENT_UPROBE = 1,
1068+ BPF_PERF_EVENT_URETPROBE = 2,
1069+ BPF_PERF_EVENT_KPROBE = 3,
1070+ BPF_PERF_EVENT_KRETPROBE = 4,
1071+ BPF_PERF_EVENT_TRACEPOINT = 5,
1072+ BPF_PERF_EVENT_EVENT = 6,
1073+};
1074+
10601075 /* cgroup-bpf attach flags used in BPF_PROG_ATTACH command
10611076 *
10621077 * NONE(default): No further bpf programs allowed in the subtree.
@@ -1103,7 +1118,12 @@ enum bpf_link_type { · 40 unmodified lines
11031118 */
11041119 #define BPF_F_ALLOW_OVERRIDE (1U << 0)
11051120 #define BPF_F_ALLOW_MULTI (1U << 1)
1121+/* Generic attachment flags. */
11061122 #define BPF_F_REPLACE (1U << 2)
1123+#define BPF_F_BEFORE (1U << 3)
1124+#define BPF_F_AFTER (1U << 4)
1125+#define BPF_F_ID (1U << 5)
1126+#define BPF_F_LINK BPF_F_LINK /* 1 << 13 */
11071127
11081128 /* If BPF_F_STRICT_ALIGNMENT is used in BPF_PROG_LOAD command, the
11091129 * verifier will perform strict alignment checking as if the kernel
@@ -1168,7 +1188,21 @@ enum bpf_link_type { · 58 unmodified lines
11681188 /* link_create.kprobe_multi.flags used in LINK_CREATE command for
11691189 * BPF_TRACE_KPROBE_MULTI attach type to create return probe.
11701190 */
1171−#define BPF_F_KPROBE_MULTI_RETURN (1U << 0)
1191+enum {
1192+ BPF_F_KPROBE_MULTI_RETURN = (1U << 0)
1193+};
1194+
1195+/* link_create.uprobe_multi.flags used in LINK_CREATE command for
1196+ * BPF_TRACE_UPROBE_MULTI attach type to create return probe.
1197+ */
1198+enum {
1199+ BPF_F_UPROBE_MULTI_RETURN = (1U << 0)
1200+};
1201+
1202+/* link_create.netfilter.flags used in LINK_CREATE command for
1203+ * BPF_PROG_TYPE_NETFILTER to enable IP packet defragmentation.
1204+ */
1205+#define BPF_F_NETFILTER_IP_DEFRAG (1U << 0)
11721206
11731207 /* When BPF ldimm64's insn[0].src_reg != 0 then this can have
11741208 * the following extensions:
@@ -1434,14 +1468,19 @@ union bpf_attr { · 259 unmodified lines
14341468 };
14351469
14361470 struct { /* anonymous struct used by BPF_PROG_ATTACH/DETACH commands */
1437− __u32 target_fd; /* container object to attach to */
1438− __u32 attach_bpf_fd; /* eBPF program to attach */
1471+ union {
1472+ __u32 target_fd; /* target object to attach to or ... */
1473+ __u32 target_ifindex; /* target ifindex */
1474+ };
1475+ __u32 attach_bpf_fd;
14391476 __u32 attach_type;
14401477 __u32 attach_flags;
1441− __u32 replace_bpf_fd; /* previously attached eBPF
1442− * program to replace if
1443− * BPF_F_REPLACE is used
1444− */
1478+ __u32 replace_bpf_fd;
1479+ union {
1480+ __u32 relative_fd;
1481+ __u32 relative_id;
1482+ };
1483+ __u64 expected_revision;
14451484 };
14461485
14471486 struct { /* anonymous struct used by BPF_PROG_TEST_RUN command */
@@ -1487,16 +1526,26 @@ union bpf_attr { · 39 unmodified lines
14871526 } info;
14881527
14891528 struct { /* anonymous struct used by BPF_PROG_QUERY command */
1490− __u32 target_fd; /* container object to query */
1529+ union {
1530+ __u32 target_fd; /* target object to query or ... */
1531+ __u32 target_ifindex; /* target ifindex */
1532+ };
14911533 __u32 attach_type;
14921534 __u32 query_flags;
14931535 __u32 attach_flags;
14941536 __aligned_u64 prog_ids;
1495− __u32 prog_cnt;
1537+ union {
1538+ __u32 prog_cnt;
1539+ __u32 count;
1540+ };
1541+ __u32 :32;
14961542 /* output: per-program attach_flags.
14971543 * not allowed to be set during effective query.
14981544 */
14991545 __aligned_u64 prog_attach_flags;
1546+ __aligned_u64 link_ids;
1547+ __aligned_u64 link_attach_flags;
1548+ __u64 revision;
15001549 } query;
15011550
15021551 struct { /* anonymous struct used by BPF_RAW_TRACEPOINT_OPEN command */
@@ -1539,13 +1588,13 @@ union bpf_attr { · 36 unmodified lines
15391588 __u32 map_fd; /* struct_ops to attach */
15401589 };
15411590 union {
1542− __u32 target_fd; /* object to attach to */
1543− __u32 target_ifindex; /* target ifindex */
1591+ __u32 target_fd; /* target object to attach to or ... */
1592+ __u32 target_ifindex; /* target ifindex */
15441593 };
15451594 __u32 attach_type; /* attach type */
15461595 __u32 flags; /* extra flags */
15471596 union {
1548− __u32 target_btf_id; /* btf_id of target to attach to */
1597+ __u32 target_btf_id; /* btf_id of target to attach to */
15491598 struct {
15501599 __aligned_u64 iter_info; /* extra bpf_iter_link_info */
15511600 __u32 iter_info_len; /* iter_info length */
@@ -1579,6 +1628,22 @@ union bpf_attr { · 27 unmodified lines
15791628 __s32 priority;
15801629 __u32 flags;
15811630 } netfilter;
1631+ struct {
1632+ union {
1633+ __u32 relative_fd;
1634+ __u32 relative_id;
1635+ };
1636+ __u64 expected_revision;
1637+ } tcx;
1638+ struct {
1639+ __aligned_u64 path;
1640+ __aligned_u64 offsets;
1641+ __aligned_u64 ref_ctr_offsets;
1642+ __aligned_u64 cookies;
1643+ __u32 cnt;
1644+ __u32 flags;
1645+ __u32 pid;
1646+ } uprobe_multi;
15821647 };
15831648 } link_create;
15841649
@@ -4159,9 +4224,6 @@ union bpf_attr { · 2574 unmodified lines
41594224 * **-EOPNOTSUPP** if the operation is not supported, for example
41604225 * a call from outside of TC ingress.
41614226 *
4162− * **-ESOCKTNOSUPPORT** if the socket type is not supported
4163− * (reuseport).
4164− *
41654227 * long bpf_sk_assign(struct bpf_sk_lookup *ctx, struct bpf_sock *sk, u64 flags)
41664228 * Description
41674229 * Helper is overloaded depending on BPF program type. This
@@ -5044,9 +5106,14 @@ union bpf_attr { · 876 unmodified lines
50445106 * u64 bpf_get_func_ip(void *ctx)
50455107 * Description
50465108 * Get address of the traced function (for tracing and kprobe programs).
5109+ *
5110+ * When called for kprobe program attached as uprobe it returns
5111+ * probe address for both entry and return uprobe.
5112+ *
50475113 * Return
5048− * Address of the traced function.
5114+ * Address of the traced function for kprobe.
50495115 * 0 for kprobes placed within the function (not at the entry).
5116+ * Address of the probe for uprobe and return uprobe.
50505117 *
50515118 * u64 bpf_get_attach_cookie(void *ctx)
50525119 * Description
@@ -6187,6 +6254,19 @@ struct bpf_sock_tuple { · 1134 unmodified lines
61876254 };
61886255 };
61896256
6257+/* (Simplified) user return codes for tcx prog type.
6258+ * A valid tcx program must return one of these defined values. All other
6259+ * return codes are reserved for future use. Must remain compatible with
6260+ * their TC_ACT_* counter-parts. For compatibility in behavior, unknown
6261+ * return codes are mapped to TCX_NEXT.
6262+ */
6263+enum tcx_action_base {
6264+ TCX_NEXT = -1,
6265+ TCX_PASS = 0,
6266+ TCX_DROP = 2,
6267+ TCX_REDIRECT = 7,
6268+};
6269+
61906270 struct bpf_xdp_sock {
61916271 __u32 queue_id;
61926272 };
@@ -6439,6 +6519,40 @@ struct bpf_link_info { · 246 unmodified lines
64396519 __s32 priority;
64406520 __u32 flags;
64416521 } netfilter;
6522+ struct {
6523+ __aligned_u64 addrs;
6524+ __u32 count; /* in/out: kprobe_multi function count */
6525+ __u32 flags;
6526+ } kprobe_multi;
6527+ struct {
6528+ __u32 type; /* enum bpf_perf_event_type */
6529+ __u32 :32;
6530+ union {
6531+ struct {
6532+ __aligned_u64 file_name; /* in/out */
6533+ __u32 name_len;
6534+ __u32 offset; /* offset from file_name */
6535+ } uprobe; /* BPF_PERF_EVENT_UPROBE, BPF_PERF_EVENT_URETPROBE */
6536+ struct {
6537+ __aligned_u64 func_name; /* in/out */
6538+ __u32 name_len;
6539+ __u32 offset; /* offset from func_name */
6540+ __u64 addr;
6541+ } kprobe; /* BPF_PERF_EVENT_KPROBE, BPF_PERF_EVENT_KRETPROBE */
6542+ struct {
6543+ __aligned_u64 tp_name; /* in/out */
6544+ __u32 name_len;
6545+ } tracepoint; /* BPF_PERF_EVENT_TRACEPOINT */
6546+ struct {
6547+ __u64 config;
6548+ __u32 type;
6549+ } event; /* BPF_PERF_EVENT_EVENT */
6550+ };
6551+ } perf_event;
6552+ struct {
6553+ __u32 ifindex;
6554+ __u32 attach_type;
6555+ } tcx;
64426556 };
64436557 } __attribute__((aligned(8)));
64446558
@@ -7012,6 +7126,7 @@ struct bpf_list_head { · 567 unmodified lines
70127126 struct bpf_list_node {
70137127 __u64 :64;
70147128 __u64 :64;
7129+ __u64 :64;
70157130 } __attribute__((aligned(8)));
70167131
70177132 struct bpf_rb_root {
@@ -7023,6 +7138,7 @@ struct bpf_rb_node { · 5 unmodified lines
70237138 __u64 :64;
70247139 __u64 :64;
70257140 __u64 :64;
7141+ __u64 :64;
70267142 } __attribute__((aligned(8)));
70277143
70287144 struct bpf_refcount {
include/uapi/linux/cn_proc.h+44−18
@@ -30,6 +30,49 @@ enum proc_cn_mcast_op { · 29 unmodified lines
3030 PROC_CN_MCAST_IGNORE = 2
3131 };
3232
33+#define PROC_EVENT_ALL (PROC_EVENT_FORK | PROC_EVENT_EXEC | PROC_EVENT_UID | \
34+ PROC_EVENT_GID | PROC_EVENT_SID | PROC_EVENT_PTRACE | \
35+ PROC_EVENT_COMM | PROC_EVENT_NONZERO_EXIT | \
36+ PROC_EVENT_COREDUMP | PROC_EVENT_EXIT)
37+
38+/*
39+ * If you add an entry in proc_cn_event, make sure you add it in
40+ * PROC_EVENT_ALL above as well.
41+ */
42+enum proc_cn_event {
43+ /* Use successive bits so the enums can be used to record
44+ * sets of events as well
45+ */
46+ PROC_EVENT_NONE = 0x00000000,
47+ PROC_EVENT_FORK = 0x00000001,
48+ PROC_EVENT_EXEC = 0x00000002,
49+ PROC_EVENT_UID = 0x00000004,
50+ PROC_EVENT_GID = 0x00000040,
51+ PROC_EVENT_SID = 0x00000080,
52+ PROC_EVENT_PTRACE = 0x00000100,
53+ PROC_EVENT_COMM = 0x00000200,
54+ /* "next" should be 0x00000400 */
55+ /* "last" is the last process event: exit,
56+ * while "next to last" is coredumping event
57+ * before that is report only if process dies
58+ * with non-zero exit status
59+ */
60+ PROC_EVENT_NONZERO_EXIT = 0x20000000,
61+ PROC_EVENT_COREDUMP = 0x40000000,
62+ PROC_EVENT_EXIT = 0x80000000
63+};
64+
65+struct proc_input {
66+ enum proc_cn_mcast_op mcast_op;
67+ enum proc_cn_event event_type;
68+};
69+
70+static inline enum proc_cn_event valid_event(enum proc_cn_event ev_type)
71+{
72+ ev_type &= PROC_EVENT_ALL;
73+ return ev_type;
74+}
75+
3376 /*
3477 * From the user's point of view, the process
3578 * ID is the thread group ID and thread ID is the internal
@@ -44,24 +87,7 @@ enum proc_cn_mcast_op { · 8 unmodified lines
4487 */
4588
4689 struct proc_event {
47− enum what {
48− /* Use successive bits so the enums can be used to record
49− * sets of events as well
50− */
51− PROC_EVENT_NONE = 0x00000000,
52− PROC_EVENT_FORK = 0x00000001,
53− PROC_EVENT_EXEC = 0x00000002,
54− PROC_EVENT_UID = 0x00000004,
55− PROC_EVENT_GID = 0x00000040,
56− PROC_EVENT_SID = 0x00000080,
57− PROC_EVENT_PTRACE = 0x00000100,
58− PROC_EVENT_COMM = 0x00000200,
59− /* "next" should be 0x00000400 */
60− /* "last" is the last process event: exit,
61− * while "next to last" is coredumping event */
62− PROC_EVENT_COREDUMP = 0x40000000,
63− PROC_EVENT_EXIT = 0x80000000
64− } what;
90+ enum proc_cn_event what;
6591 __u32 cpu;
6692 __u64 __attribute__((aligned(8))) timestamp_ns;
6793 /* Number of nano seconds since system boot */
include/uapi/linux/devlink.h+4−0
@@ -661,6 +661,8 @@ enum devlink_resource_unit { · 660 unmodified lines
661661 enum devlink_port_fn_attr_cap {
662662 DEVLINK_PORT_FN_ATTR_CAP_ROCE_BIT,
663663 DEVLINK_PORT_FN_ATTR_CAP_MIGRATABLE_BIT,
664+ DEVLINK_PORT_FN_ATTR_CAP_IPSEC_CRYPTO_BIT,
665+ DEVLINK_PORT_FN_ATTR_CAP_IPSEC_PACKET_BIT,
664666
665667 /* Add new caps above */
666668 __DEVLINK_PORT_FN_ATTR_CAPS_MAX,
@@ -669,6 +671,8 @@ enum devlink_port_fn_attr_cap { · 2 unmodified lines
669671 #define DEVLINK_PORT_FN_CAP_ROCE _BITUL(DEVLINK_PORT_FN_ATTR_CAP_ROCE_BIT)
670672 #define DEVLINK_PORT_FN_CAP_MIGRATABLE \
671673 _BITUL(DEVLINK_PORT_FN_ATTR_CAP_MIGRATABLE_BIT)
674+#define DEVLINK_PORT_FN_CAP_IPSEC_CRYPTO _BITUL(DEVLINK_PORT_FN_ATTR_CAP_IPSEC_CRYPTO_BIT)
675+#define DEVLINK_PORT_FN_CAP_IPSEC_PACKET _BITUL(DEVLINK_PORT_FN_ATTR_CAP_IPSEC_PACKET_BIT)
672676
673677 enum devlink_port_function_attr {
674678 DEVLINK_PORT_FUNCTION_ATTR_UNSPEC,
include/uapi/linux/if_link.h+1−0
@@ -570,6 +570,7 @@ enum { · 569 unmodified lines
570570 IFLA_BRPORT_MCAST_N_GROUPS,
571571 IFLA_BRPORT_MCAST_MAX_GROUPS,
572572 IFLA_BRPORT_NEIGH_VLAN_SUPPRESS,
573+ IFLA_BRPORT_BACKUP_NHID,
573574 __IFLA_BRPORT_MAX
574575 };
575576 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
include/uapi/linux/if_xdp.h+13−0
@@ -25,6 +25,12 @@ · 24 unmodified lines
2525 * application.
2626 */
2727 #define XDP_USE_NEED_WAKEUP (1 << 3)
28+/* By setting this option, userspace application indicates that it can
29+ * handle multiple descriptors per packet thus enabling AF_XDP to split
30+ * multi-buffer XDP frames into multiple Rx descriptors. Without this set
31+ * such frames will be dropped.
32+ */
33+#define XDP_USE_SG (1 << 4)
2834
2935 /* Flags for xsk_umem_config flags */
3036 #define XDP_UMEM_UNALIGNED_CHUNK_FLAG (1 << 0)
@@ -108,4 +114,11 @@ struct xdp_desc { · 77 unmodified lines
108114
109115 /* UMEM descriptor is __u64 */
110116
117+/* Flag indicating that the packet continues with the buffer pointed out by the
118+ * next frame in the ring. The end of the packet is signalled by setting this
119+ * bit to zero. For single buffer packets, every descriptor has 'options' set
120+ * to 0 and this maintains backward compatibility.
121+ */
122+#define XDP_PKT_CONTD (1 << 0)
123+
111124 #endif /* _LINUX_IF_XDP_H */
include/uapi/linux/ipv6.h+1−0
@@ -198,6 +198,7 @@ enum { · 197 unmodified lines
198198 DEVCONF_IOAM6_ID_WIDE,
199199 DEVCONF_NDISC_EVICT_NOCARRIER,
200200 DEVCONF_ACCEPT_UNTRACKED_NA,
201+ DEVCONF_ACCEPT_RA_MIN_LFT,
201202 DEVCONF_MAX
202203 };
203204
include/uapi/linux/mdio.h+17−1
@@ -82,6 +82,8 @@ · 81 unmodified lines
8282 #define MDIO_AN_10BT1_AN_CTRL 526 /* 10BASE-T1 AN control register */
8383 #define MDIO_AN_10BT1_AN_STAT 527 /* 10BASE-T1 AN status register */
8484 #define MDIO_PMA_PMD_BT1_CTRL 2100 /* BASE-T1 PMA/PMD control register */
85+#define MDIO_PCS_1000BT1_CTRL 2304 /* 1000BASE-T1 PCS control register */
86+#define MDIO_PCS_1000BT1_STAT 2305 /* 1000BASE-T1 PCS status register */
8587
8688 /* LASI (Link Alarm Status Interrupt) registers, defined by XENPAK MSA. */
8789 #define MDIO_PMA_LASI_RXCTRL 0x9000 /* RX_ALARM control */
@@ -332,6 +334,8 @@ · 244 unmodified lines
332334 #define MDIO_PCS_10T1L_CTRL_RESET 0x8000 /* PCS reset */
333335
334336 /* BASE-T1 PMA/PMD extended ability register. */
337+#define MDIO_PMA_PMD_BT1_B100_ABLE 0x0001 /* 100BASE-T1 Ability */
338+#define MDIO_PMA_PMD_BT1_B1000_ABLE 0x0002 /* 1000BASE-T1 Ability */
335339 #define MDIO_PMA_PMD_BT1_B10L_ABLE 0x0004 /* 10BASE-T1L Ability */
336340
337341 /* BASE-T1 auto-negotiation advertisement register [15:0] */
@@ -373,7 +377,19 @@ · 35 unmodified lines
373377 #define MDIO_AN_10BT1_AN_STAT_LPA_EEE_T1L 0x4000 /* 10BASE-T1L LP EEE ability advertisement */
374378
375379 /* BASE-T1 PMA/PMD control register */
376−#define MDIO_PMA_PMD_BT1_CTRL_CFG_MST 0x4000 /* MASTER-SLAVE config value */
380+#define MDIO_PMA_PMD_BT1_CTRL_STRAP 0x000F /* Type selection (Strap) */
381+#define MDIO_PMA_PMD_BT1_CTRL_STRAP_B1000 0x0001 /* Select 1000BASE-T1 */
382+#define MDIO_PMA_PMD_BT1_CTRL_CFG_MST 0x4000 /* MASTER-SLAVE config value */
383+
384+/* 1000BASE-T1 PCS control register */
385+#define MDIO_PCS_1000BT1_CTRL_LOW_POWER 0x0800 /* Low power mode */
386+#define MDIO_PCS_1000BT1_CTRL_DISABLE_TX 0x4000 /* Global PMA transmit disable */
387+#define MDIO_PCS_1000BT1_CTRL_RESET 0x8000 /* Software reset value */
388+
389+/* 1000BASE-T1 PCS status register */
390+#define MDIO_PCS_1000BT1_STAT_LINK 0x0004 /* PCS Link is up */
391+#define MDIO_PCS_1000BT1_STAT_FAULT 0x0080 /* There is a fault condition */
392+
377393
378394 /* EEE Supported/Advertisement/LP Advertisement registers.
379395 *
include/uapi/linux/netdev.h+3−1
@@ -11,7 +11,7 @@ · 10 unmodified lines
1111
1212 /**
1313 * enum netdev_xdp_act
14− * @NETDEV_XDP_ACT_BASIC: XDP feautues set supported by all drivers
14+ * @NETDEV_XDP_ACT_BASIC: XDP features set supported by all drivers
1515 * (XDP_ABORTED, XDP_DROP, XDP_PASS, XDP_TX)
1616 * @NETDEV_XDP_ACT_REDIRECT: The netdev supports XDP_REDIRECT
1717 * @NETDEV_XDP_ACT_NDO_XMIT: This feature informs if netdev implements
@@ -34,6 +34,7 @@ enum netdev_xdp_act { · 16 unmodified lines
3434 NETDEV_XDP_ACT_RX_SG = 32,
3535 NETDEV_XDP_ACT_NDO_XMIT_SG = 64,
3636
37+ /* private: */
3738 NETDEV_XDP_ACT_MASK = 127,
3839 };
3940
@@ -41,6 +42,7 @@ enum { · 1 unmodified line
4142 NETDEV_A_DEV_IFINDEX = 1,
4243 NETDEV_A_DEV_PAD,
4344 NETDEV_A_DEV_XDP_FEATURES,
45+ NETDEV_A_DEV_XDP_ZC_MAX_SEGS,
4446
4547 __NETDEV_A_DEV_MAX,
4648 NETDEV_A_DEV_MAX = (__NETDEV_A_DEV_MAX - 1)
include/uapi/linux/netfilter_bridge/ebtables.h+12−10
@@ -87,7 +87,7 @@ struct ebt_entries { · 86 unmodified lines
8787 /* nr. of entries */
8888 unsigned int nentries;
8989 /* entry list */
90− char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
90+ char data[] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
9191 };
9292
9393 /* used for the bitmask of struct ebt_entry */
@@ -129,7 +129,7 @@ struct ebt_entry_match { · 35 unmodified lines
129129 } u;
130130 /* size of data */
131131 unsigned int match_size;
132− unsigned char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
132+ unsigned char data[] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
133133 };
134134
135135 struct ebt_entry_watcher {
@@ -142,7 +142,7 @@ struct ebt_entry_watcher { · 6 unmodified lines
142142 } u;
143143 /* size of data */
144144 unsigned int watcher_size;
145− unsigned char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
145+ unsigned char data[] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
146146 };
147147
148148 struct ebt_entry_target {
@@ -182,13 +182,15 @@ struct ebt_entry { · 33 unmodified lines
182182 unsigned char sourcemsk[ETH_ALEN];
183183 unsigned char destmac[ETH_ALEN];
184184 unsigned char destmsk[ETH_ALEN];
185− /* sizeof ebt_entry + matches */
186− unsigned int watchers_offset;
187− /* sizeof ebt_entry + matches + watchers */
188− unsigned int target_offset;
189− /* sizeof ebt_entry + matches + watchers + target */
190− unsigned int next_offset;
191− unsigned char elems[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
185+ __struct_group(/* no tag */, offsets, /* no attrs */,
186+ /* sizeof ebt_entry + matches */
187+ unsigned int watchers_offset;
188+ /* sizeof ebt_entry + matches + watchers */
189+ unsigned int target_offset;
190+ /* sizeof ebt_entry + matches + watchers + target */
191+ unsigned int next_offset;
192+ );
193+ unsigned char elems[] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
192194 };
193195
194196 static __inline__ struct ebt_entry_target *
include/uapi/linux/openvswitch.h+2−0
@@ -965,6 +965,7 @@ struct check_pkt_len_arg { · 964 unmodified lines
965965 * start of the packet or at the start of the l3 header depending on the value
966966 * of l3 tunnel flag in the tun_flags field of OVS_ACTION_ATTR_ADD_MPLS
967967 * argument.
968+ * @OVS_ACTION_ATTR_DROP: Explicit drop action.
968969 *
969970 * Only a single header can be set with a single %OVS_ACTION_ATTR_SET. Not all
970971 * fields within a header are modifiable, e.g. the IPv4 protocol and fragment
@@ -1002,6 +1003,7 @@ enum ovs_action_attr { · 31 unmodified lines
10021003 OVS_ACTION_ATTR_CHECK_PKT_LEN, /* Nested OVS_CHECK_PKT_LEN_ATTR_*. */
10031004 OVS_ACTION_ATTR_ADD_MPLS, /* struct ovs_action_add_mpls. */
10041005 OVS_ACTION_ATTR_DEC_TTL, /* Nested OVS_DEC_TTL_ATTR_*. */
1006+ OVS_ACTION_ATTR_DROP, /* u32 error code. */
10051007
10061008 __OVS_ACTION_ATTR_MAX, /* Nothing past this will be accepted
10071009 * from userspace. */
include/uapi/linux/pkt_cls.h+3−0
@@ -598,6 +598,9 @@ enum { · 597 unmodified lines
598598
599599 TCA_FLOWER_KEY_CFM, /* nested */
600600
601+ TCA_FLOWER_KEY_SPI, /* be32 */
602+ TCA_FLOWER_KEY_SPI_MASK, /* be32 */
603+
601604 __TCA_FLOWER_MAX,
602605 };
603606
include/uapi/linux/pkt_sched.h+1−0
@@ -603,6 +603,7 @@ enum { · 602 unmodified lines
603603 TCA_NETEM_JITTER64,
604604 TCA_NETEM_SLOT,
605605 TCA_NETEM_SLOT_DIST,
606+ TCA_NETEM_PRNG_SEED,
606607 __TCA_NETEM_MAX,
607608 };
608609
include/uapi/linux/smc.h+2−0
@@ -107,6 +107,8 @@ enum { · 106 unmodified lines
107107 enum {
108108 SMC_NLA_LGR_R_V2_UNSPEC,
109109 SMC_NLA_LGR_R_V2_DIRECT, /* u8 */
110+ SMC_NLA_LGR_R_V2_MAX_CONNS, /* u8 */
111+ SMC_NLA_LGR_R_V2_MAX_LINKS, /* u8 */
110112 __SMC_NLA_LGR_R_V2_MAX,
111113 SMC_NLA_LGR_R_V2_MAX = __SMC_NLA_LGR_R_V2_MAX - 1
112114 };
include/uapi/linux/virtio_net.h+14−0
@@ -56,6 +56,7 @@ · 55 unmodified lines
5656 #define VIRTIO_NET_F_MQ 22 /* Device supports Receive Flow
5757 * Steering */
5858 #define VIRTIO_NET_F_CTRL_MAC_ADDR 23 /* Set MAC address */
59+#define VIRTIO_NET_F_VQ_NOTF_COAL 52 /* Device supports virtqueue notification coalescing */
5960 #define VIRTIO_NET_F_NOTF_COAL 53 /* Device supports notifications coalescing */
6061 #define VIRTIO_NET_F_GUEST_USO4 54 /* Guest can handle USOv4 in. */
6162 #define VIRTIO_NET_F_GUEST_USO6 55 /* Guest can handle USOv6 in. */
@@ -391,5 +392,18 @@ struct virtio_net_ctrl_coal_rx { · 329 unmodified lines
391392 };
392393
393394 #define VIRTIO_NET_CTRL_NOTF_COAL_RX_SET 1
395+#define VIRTIO_NET_CTRL_NOTF_COAL_VQ_SET 2
396+#define VIRTIO_NET_CTRL_NOTF_COAL_VQ_GET 3
397+
398+struct virtio_net_ctrl_coal {
399+ __le32 max_packets;
400+ __le32 max_usecs;
401+};
402+
403+struct virtio_net_ctrl_coal_vq {
404+ __le16 vqn;
405+ __le16 reserved;
406+ struct virtio_net_ctrl_coal coal;
407+};
394408
395409 #endif /* _UAPI_LINUX_VIRTIO_NET_H */