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 ...
Showing the changes to include/uapi/linux (14 of 1855 files). Show all
Unified · Split
| @@ -19,6 +19,7 @@ · 18 unmodified lines | ||
| 19 | 19 | |
| 20 | 20 | /* ld/ldx fields */ |
| 21 | 21 | #define BPF_DW 0x18 /* double word (64-bit) */ |
| 22 | +#define BPF_MEMSX 0x80 /* load with sign extension */ | |
| 22 | 23 | #define BPF_ATOMIC 0xc0 /* atomic memory ops - op type in immediate */ |
| 23 | 24 | #define BPF_XADD 0xc0 /* exclusive add - legacy name */ |
| 24 | 25 | |
| @@ -1036,6 +1037,9 @@ enum bpf_attach_type { · 1011 unmodified lines | ||
| 1036 | 1037 | BPF_LSM_CGROUP, |
| 1037 | 1038 | BPF_STRUCT_OPS, |
| 1038 | 1039 | BPF_NETFILTER, |
| 1040 | + BPF_TCX_INGRESS, | |
| 1041 | + BPF_TCX_EGRESS, | |
| 1042 | + BPF_TRACE_UPROBE_MULTI, | |
| 1039 | 1043 | __MAX_BPF_ATTACH_TYPE |
| 1040 | 1044 | }; |
| 1041 | 1045 | |
| @@ -1053,10 +1057,21 @@ enum bpf_link_type { · 11 unmodified lines | ||
| 1053 | 1057 | BPF_LINK_TYPE_KPROBE_MULTI = 8, |
| 1054 | 1058 | BPF_LINK_TYPE_STRUCT_OPS = 9, |
| 1055 | 1059 | BPF_LINK_TYPE_NETFILTER = 10, |
| 1056 | − | |
| 1060 | + BPF_LINK_TYPE_TCX = 11, | |
| 1061 | + BPF_LINK_TYPE_UPROBE_MULTI = 12, | |
| 1057 | 1062 | MAX_BPF_LINK_TYPE, |
| 1058 | 1063 | }; |
| 1059 | 1064 | |
| 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 | + | |
| 1060 | 1075 | /* cgroup-bpf attach flags used in BPF_PROG_ATTACH command |
| 1061 | 1076 | * |
| 1062 | 1077 | * NONE(default): No further bpf programs allowed in the subtree. |
| @@ -1103,7 +1118,12 @@ enum bpf_link_type { · 40 unmodified lines | ||
| 1103 | 1118 | */ |
| 1104 | 1119 | #define BPF_F_ALLOW_OVERRIDE (1U << 0) |
| 1105 | 1120 | #define BPF_F_ALLOW_MULTI (1U << 1) |
| 1121 | +/* Generic attachment flags. */ | |
| 1106 | 1122 | #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 */ | |
| 1107 | 1127 | |
| 1108 | 1128 | /* If BPF_F_STRICT_ALIGNMENT is used in BPF_PROG_LOAD command, the |
| 1109 | 1129 | * verifier will perform strict alignment checking as if the kernel |
| @@ -1168,7 +1188,21 @@ enum bpf_link_type { · 58 unmodified lines | ||
| 1168 | 1188 | /* link_create.kprobe_multi.flags used in LINK_CREATE command for |
| 1169 | 1189 | * BPF_TRACE_KPROBE_MULTI attach type to create return probe. |
| 1170 | 1190 | */ |
| 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) | |
| 1172 | 1206 | |
| 1173 | 1207 | /* When BPF ldimm64's insn[0].src_reg != 0 then this can have |
| 1174 | 1208 | * the following extensions: |
| @@ -1434,14 +1468,19 @@ union bpf_attr { · 259 unmodified lines | ||
| 1434 | 1468 | }; |
| 1435 | 1469 | |
| 1436 | 1470 | 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; | |
| 1439 | 1476 | __u32 attach_type; |
| 1440 | 1477 | __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; | |
| 1445 | 1484 | }; |
| 1446 | 1485 | |
| 1447 | 1486 | struct { /* anonymous struct used by BPF_PROG_TEST_RUN command */ |
| @@ -1487,16 +1526,26 @@ union bpf_attr { · 39 unmodified lines | ||
| 1487 | 1526 | } info; |
| 1488 | 1527 | |
| 1489 | 1528 | 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 | + }; | |
| 1491 | 1533 | __u32 attach_type; |
| 1492 | 1534 | __u32 query_flags; |
| 1493 | 1535 | __u32 attach_flags; |
| 1494 | 1536 | __aligned_u64 prog_ids; |
| 1495 | − __u32 prog_cnt; | |
| 1537 | + union { | |
| 1538 | + __u32 prog_cnt; | |
| 1539 | + __u32 count; | |
| 1540 | + }; | |
| 1541 | + __u32 :32; | |
| 1496 | 1542 | /* output: per-program attach_flags. |
| 1497 | 1543 | * not allowed to be set during effective query. |
| 1498 | 1544 | */ |
| 1499 | 1545 | __aligned_u64 prog_attach_flags; |
| 1546 | + __aligned_u64 link_ids; | |
| 1547 | + __aligned_u64 link_attach_flags; | |
| 1548 | + __u64 revision; | |
| 1500 | 1549 | } query; |
| 1501 | 1550 | |
| 1502 | 1551 | struct { /* anonymous struct used by BPF_RAW_TRACEPOINT_OPEN command */ |
| @@ -1539,13 +1588,13 @@ union bpf_attr { · 36 unmodified lines | ||
| 1539 | 1588 | __u32 map_fd; /* struct_ops to attach */ |
| 1540 | 1589 | }; |
| 1541 | 1590 | 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 */ | |
| 1544 | 1593 | }; |
| 1545 | 1594 | __u32 attach_type; /* attach type */ |
| 1546 | 1595 | __u32 flags; /* extra flags */ |
| 1547 | 1596 | 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 */ | |
| 1549 | 1598 | struct { |
| 1550 | 1599 | __aligned_u64 iter_info; /* extra bpf_iter_link_info */ |
| 1551 | 1600 | __u32 iter_info_len; /* iter_info length */ |
| @@ -1579,6 +1628,22 @@ union bpf_attr { · 27 unmodified lines | ||
| 1579 | 1628 | __s32 priority; |
| 1580 | 1629 | __u32 flags; |
| 1581 | 1630 | } 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; | |
| 1582 | 1647 | }; |
| 1583 | 1648 | } link_create; |
| 1584 | 1649 | |
| @@ -4159,9 +4224,6 @@ union bpf_attr { · 2574 unmodified lines | ||
| 4159 | 4224 | * **-EOPNOTSUPP** if the operation is not supported, for example |
| 4160 | 4225 | * a call from outside of TC ingress. |
| 4161 | 4226 | * |
| 4162 | − * **-ESOCKTNOSUPPORT** if the socket type is not supported | |
| 4163 | − * (reuseport). | |
| 4164 | − * | |
| 4165 | 4227 | * long bpf_sk_assign(struct bpf_sk_lookup *ctx, struct bpf_sock *sk, u64 flags) |
| 4166 | 4228 | * Description |
| 4167 | 4229 | * Helper is overloaded depending on BPF program type. This |
| @@ -5044,9 +5106,14 @@ union bpf_attr { · 876 unmodified lines | ||
| 5044 | 5106 | * u64 bpf_get_func_ip(void *ctx) |
| 5045 | 5107 | * Description |
| 5046 | 5108 | * 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 | + * | |
| 5047 | 5113 | * Return |
| 5048 | − * Address of the traced function. | |
| 5114 | + * Address of the traced function for kprobe. | |
| 5049 | 5115 | * 0 for kprobes placed within the function (not at the entry). |
| 5116 | + * Address of the probe for uprobe and return uprobe. | |
| 5050 | 5117 | * |
| 5051 | 5118 | * u64 bpf_get_attach_cookie(void *ctx) |
| 5052 | 5119 | * Description |
| @@ -6187,6 +6254,19 @@ struct bpf_sock_tuple { · 1134 unmodified lines | ||
| 6187 | 6254 | }; |
| 6188 | 6255 | }; |
| 6189 | 6256 | |
| 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 | + | |
| 6190 | 6270 | struct bpf_xdp_sock { |
| 6191 | 6271 | __u32 queue_id; |
| 6192 | 6272 | }; |
| @@ -6439,6 +6519,40 @@ struct bpf_link_info { · 246 unmodified lines | ||
| 6439 | 6519 | __s32 priority; |
| 6440 | 6520 | __u32 flags; |
| 6441 | 6521 | } 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; | |
| 6442 | 6556 | }; |
| 6443 | 6557 | } __attribute__((aligned(8))); |
| 6444 | 6558 | |
| @@ -7012,6 +7126,7 @@ struct bpf_list_head { · 567 unmodified lines | ||
| 7012 | 7126 | struct bpf_list_node { |
| 7013 | 7127 | __u64 :64; |
| 7014 | 7128 | __u64 :64; |
| 7129 | + __u64 :64; | |
| 7015 | 7130 | } __attribute__((aligned(8))); |
| 7016 | 7131 | |
| 7017 | 7132 | struct bpf_rb_root { |
| @@ -7023,6 +7138,7 @@ struct bpf_rb_node { · 5 unmodified lines | ||
| 7023 | 7138 | __u64 :64; |
| 7024 | 7139 | __u64 :64; |
| 7025 | 7140 | __u64 :64; |
| 7141 | + __u64 :64; | |
| 7026 | 7142 | } __attribute__((aligned(8))); |
| 7027 | 7143 | |
| 7028 | 7144 | struct bpf_refcount { |
| @@ -30,6 +30,49 @@ enum proc_cn_mcast_op { · 29 unmodified lines | ||
| 30 | 30 | PROC_CN_MCAST_IGNORE = 2 |
| 31 | 31 | }; |
| 32 | 32 | |
| 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 | + | |
| 33 | 76 | /* |
| 34 | 77 | * From the user's point of view, the process |
| 35 | 78 | * ID is the thread group ID and thread ID is the internal |
| @@ -44,24 +87,7 @@ enum proc_cn_mcast_op { · 8 unmodified lines | ||
| 44 | 87 | */ |
| 45 | 88 | |
| 46 | 89 | 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; | |
| 65 | 91 | __u32 cpu; |
| 66 | 92 | __u64 __attribute__((aligned(8))) timestamp_ns; |
| 67 | 93 | /* Number of nano seconds since system boot */ |
| @@ -661,6 +661,8 @@ enum devlink_resource_unit { · 660 unmodified lines | ||
| 661 | 661 | enum devlink_port_fn_attr_cap { |
| 662 | 662 | DEVLINK_PORT_FN_ATTR_CAP_ROCE_BIT, |
| 663 | 663 | 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, | |
| 664 | 666 | |
| 665 | 667 | /* Add new caps above */ |
| 666 | 668 | __DEVLINK_PORT_FN_ATTR_CAPS_MAX, |
| @@ -669,6 +671,8 @@ enum devlink_port_fn_attr_cap { · 2 unmodified lines | ||
| 669 | 671 | #define DEVLINK_PORT_FN_CAP_ROCE _BITUL(DEVLINK_PORT_FN_ATTR_CAP_ROCE_BIT) |
| 670 | 672 | #define DEVLINK_PORT_FN_CAP_MIGRATABLE \ |
| 671 | 673 | _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) | |
| 672 | 676 | |
| 673 | 677 | enum devlink_port_function_attr { |
| 674 | 678 | DEVLINK_PORT_FUNCTION_ATTR_UNSPEC, |
| @@ -570,6 +570,7 @@ enum { · 569 unmodified lines | ||
| 570 | 570 | IFLA_BRPORT_MCAST_N_GROUPS, |
| 571 | 571 | IFLA_BRPORT_MCAST_MAX_GROUPS, |
| 572 | 572 | IFLA_BRPORT_NEIGH_VLAN_SUPPRESS, |
| 573 | + IFLA_BRPORT_BACKUP_NHID, | |
| 573 | 574 | __IFLA_BRPORT_MAX |
| 574 | 575 | }; |
| 575 | 576 | #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1) |
| @@ -25,6 +25,12 @@ · 24 unmodified lines | ||
| 25 | 25 | * application. |
| 26 | 26 | */ |
| 27 | 27 | #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) | |
| 28 | 34 | |
| 29 | 35 | /* Flags for xsk_umem_config flags */ |
| 30 | 36 | #define XDP_UMEM_UNALIGNED_CHUNK_FLAG (1 << 0) |
| @@ -108,4 +114,11 @@ struct xdp_desc { · 77 unmodified lines | ||
| 108 | 114 | |
| 109 | 115 | /* UMEM descriptor is __u64 */ |
| 110 | 116 | |
| 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 | + | |
| 111 | 124 | #endif /* _LINUX_IF_XDP_H */ |
| @@ -198,6 +198,7 @@ enum { · 197 unmodified lines | ||
| 198 | 198 | DEVCONF_IOAM6_ID_WIDE, |
| 199 | 199 | DEVCONF_NDISC_EVICT_NOCARRIER, |
| 200 | 200 | DEVCONF_ACCEPT_UNTRACKED_NA, |
| 201 | + DEVCONF_ACCEPT_RA_MIN_LFT, | |
| 201 | 202 | DEVCONF_MAX |
| 202 | 203 | }; |
| 203 | 204 | |
| @@ -82,6 +82,8 @@ · 81 unmodified lines | ||
| 82 | 82 | #define MDIO_AN_10BT1_AN_CTRL 526 /* 10BASE-T1 AN control register */ |
| 83 | 83 | #define MDIO_AN_10BT1_AN_STAT 527 /* 10BASE-T1 AN status register */ |
| 84 | 84 | #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 */ | |
| 85 | 87 | |
| 86 | 88 | /* LASI (Link Alarm Status Interrupt) registers, defined by XENPAK MSA. */ |
| 87 | 89 | #define MDIO_PMA_LASI_RXCTRL 0x9000 /* RX_ALARM control */ |
| @@ -332,6 +334,8 @@ · 244 unmodified lines | ||
| 332 | 334 | #define MDIO_PCS_10T1L_CTRL_RESET 0x8000 /* PCS reset */ |
| 333 | 335 | |
| 334 | 336 | /* 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 */ | |
| 335 | 339 | #define MDIO_PMA_PMD_BT1_B10L_ABLE 0x0004 /* 10BASE-T1L Ability */ |
| 336 | 340 | |
| 337 | 341 | /* BASE-T1 auto-negotiation advertisement register [15:0] */ |
| @@ -373,7 +377,19 @@ · 35 unmodified lines | ||
| 373 | 377 | #define MDIO_AN_10BT1_AN_STAT_LPA_EEE_T1L 0x4000 /* 10BASE-T1L LP EEE ability advertisement */ |
| 374 | 378 | |
| 375 | 379 | /* 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 | + | |
| 377 | 393 | |
| 378 | 394 | /* EEE Supported/Advertisement/LP Advertisement registers. |
| 379 | 395 | * |
| @@ -11,7 +11,7 @@ · 10 unmodified lines | ||
| 11 | 11 | |
| 12 | 12 | /** |
| 13 | 13 | * 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 | |
| 15 | 15 | * (XDP_ABORTED, XDP_DROP, XDP_PASS, XDP_TX) |
| 16 | 16 | * @NETDEV_XDP_ACT_REDIRECT: The netdev supports XDP_REDIRECT |
| 17 | 17 | * @NETDEV_XDP_ACT_NDO_XMIT: This feature informs if netdev implements |
| @@ -34,6 +34,7 @@ enum netdev_xdp_act { · 16 unmodified lines | ||
| 34 | 34 | NETDEV_XDP_ACT_RX_SG = 32, |
| 35 | 35 | NETDEV_XDP_ACT_NDO_XMIT_SG = 64, |
| 36 | 36 | |
| 37 | + /* private: */ | |
| 37 | 38 | NETDEV_XDP_ACT_MASK = 127, |
| 38 | 39 | }; |
| 39 | 40 | |
| @@ -41,6 +42,7 @@ enum { · 1 unmodified line | ||
| 41 | 42 | NETDEV_A_DEV_IFINDEX = 1, |
| 42 | 43 | NETDEV_A_DEV_PAD, |
| 43 | 44 | NETDEV_A_DEV_XDP_FEATURES, |
| 45 | + NETDEV_A_DEV_XDP_ZC_MAX_SEGS, | |
| 44 | 46 | |
| 45 | 47 | __NETDEV_A_DEV_MAX, |
| 46 | 48 | NETDEV_A_DEV_MAX = (__NETDEV_A_DEV_MAX - 1) |
| @@ -87,7 +87,7 @@ struct ebt_entries { · 86 unmodified lines | ||
| 87 | 87 | /* nr. of entries */ |
| 88 | 88 | unsigned int nentries; |
| 89 | 89 | /* entry list */ |
| 90 | − char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace)))); | |
| 90 | + char data[] __attribute__ ((aligned (__alignof__(struct ebt_replace)))); | |
| 91 | 91 | }; |
| 92 | 92 | |
| 93 | 93 | /* used for the bitmask of struct ebt_entry */ |
| @@ -129,7 +129,7 @@ struct ebt_entry_match { · 35 unmodified lines | ||
| 129 | 129 | } u; |
| 130 | 130 | /* size of data */ |
| 131 | 131 | 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)))); | |
| 133 | 133 | }; |
| 134 | 134 | |
| 135 | 135 | struct ebt_entry_watcher { |
| @@ -142,7 +142,7 @@ struct ebt_entry_watcher { · 6 unmodified lines | ||
| 142 | 142 | } u; |
| 143 | 143 | /* size of data */ |
| 144 | 144 | 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)))); | |
| 146 | 146 | }; |
| 147 | 147 | |
| 148 | 148 | struct ebt_entry_target { |
| @@ -182,13 +182,15 @@ struct ebt_entry { · 33 unmodified lines | ||
| 182 | 182 | unsigned char sourcemsk[ETH_ALEN]; |
| 183 | 183 | unsigned char destmac[ETH_ALEN]; |
| 184 | 184 | 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)))); | |
| 192 | 194 | }; |
| 193 | 195 | |
| 194 | 196 | static __inline__ struct ebt_entry_target * |
| @@ -965,6 +965,7 @@ struct check_pkt_len_arg { · 964 unmodified lines | ||
| 965 | 965 | * start of the packet or at the start of the l3 header depending on the value |
| 966 | 966 | * of l3 tunnel flag in the tun_flags field of OVS_ACTION_ATTR_ADD_MPLS |
| 967 | 967 | * argument. |
| 968 | + * @OVS_ACTION_ATTR_DROP: Explicit drop action. | |
| 968 | 969 | * |
| 969 | 970 | * Only a single header can be set with a single %OVS_ACTION_ATTR_SET. Not all |
| 970 | 971 | * fields within a header are modifiable, e.g. the IPv4 protocol and fragment |
| @@ -1002,6 +1003,7 @@ enum ovs_action_attr { · 31 unmodified lines | ||
| 1002 | 1003 | OVS_ACTION_ATTR_CHECK_PKT_LEN, /* Nested OVS_CHECK_PKT_LEN_ATTR_*. */ |
| 1003 | 1004 | OVS_ACTION_ATTR_ADD_MPLS, /* struct ovs_action_add_mpls. */ |
| 1004 | 1005 | OVS_ACTION_ATTR_DEC_TTL, /* Nested OVS_DEC_TTL_ATTR_*. */ |
| 1006 | + OVS_ACTION_ATTR_DROP, /* u32 error code. */ | |
| 1005 | 1007 | |
| 1006 | 1008 | __OVS_ACTION_ATTR_MAX, /* Nothing past this will be accepted |
| 1007 | 1009 | * from userspace. */ |
| @@ -598,6 +598,9 @@ enum { · 597 unmodified lines | ||
| 598 | 598 | |
| 599 | 599 | TCA_FLOWER_KEY_CFM, /* nested */ |
| 600 | 600 | |
| 601 | + TCA_FLOWER_KEY_SPI, /* be32 */ | |
| 602 | + TCA_FLOWER_KEY_SPI_MASK, /* be32 */ | |
| 603 | + | |
| 601 | 604 | __TCA_FLOWER_MAX, |
| 602 | 605 | }; |
| 603 | 606 | |
| @@ -603,6 +603,7 @@ enum { · 602 unmodified lines | ||
| 603 | 603 | TCA_NETEM_JITTER64, |
| 604 | 604 | TCA_NETEM_SLOT, |
| 605 | 605 | TCA_NETEM_SLOT_DIST, |
| 606 | + TCA_NETEM_PRNG_SEED, | |
| 606 | 607 | __TCA_NETEM_MAX, |
| 607 | 608 | }; |
| 608 | 609 | |
| @@ -107,6 +107,8 @@ enum { · 106 unmodified lines | ||
| 107 | 107 | enum { |
| 108 | 108 | SMC_NLA_LGR_R_V2_UNSPEC, |
| 109 | 109 | 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 */ | |
| 110 | 112 | __SMC_NLA_LGR_R_V2_MAX, |
| 111 | 113 | SMC_NLA_LGR_R_V2_MAX = __SMC_NLA_LGR_R_V2_MAX - 1 |
| 112 | 114 | }; |
| @@ -56,6 +56,7 @@ · 55 unmodified lines | ||
| 56 | 56 | #define VIRTIO_NET_F_MQ 22 /* Device supports Receive Flow |
| 57 | 57 | * Steering */ |
| 58 | 58 | #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 */ | |
| 59 | 60 | #define VIRTIO_NET_F_NOTF_COAL 53 /* Device supports notifications coalescing */ |
| 60 | 61 | #define VIRTIO_NET_F_GUEST_USO4 54 /* Guest can handle USOv4 in. */ |
| 61 | 62 | #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 | ||
| 391 | 392 | }; |
| 392 | 393 | |
| 393 | 394 | #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 | +}; | |
| 394 | 408 | |
| 395 | 409 | #endif /* _UAPI_LINUX_VIRTIO_NET_H */ |