Merge tag 'net-next-6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next
Pull networking updates from Paolo Abeni:
"The most significant set of changes is the per netns RTNL. The new
behavior is disabled by default, regression risk should be contained.
Notably the new config knob PTP_1588_CLOCK_VMCLOCK will inherit its
default value from PTP_1588_CLOCK_KVM, as the first is intended to be
a more reliable replacement for the latter.
Core:
- Started a very large, in-progress, effort to make the RTNL lock
scope per network-namespace, thus reducing the lock contention
significantly in the containerized use-case, comprising:
- RCU-ified some relevant slices of the FIB control path
- introduce basic per netns locking helpers
- namespacified the IPv4 address hash table
- remove rtnl_register{,_module}() in favour of
rtnl_register_many()
- refactor rtnl_{new,del,set}link() moving as much validation as
possible out of RTNL lock
- convert all phonet doit() and dumpit() handlers to RCU
- convert IPv4 addresses manipulation to per-netns RTNL
- convert virtual interface creation to per-netns RTNL
the per-netns lock infrastructure is guarded by the
CONFIG_DEBUG_NET_SMALL_RTNL knob, disabled by default ad interim.
- Introduce NAPI suspension, to efficiently switching between busy
polling (NAPI processing suspended) and normal processing.
- Migrate the IPv4 routing input, output and control path from direct
ToS usage to DSCP macros. This is a work in progress to make ECN
handling consistent and reliable.
- Add drop reasons support to the IPv4 rotue input path, allowing
better introspection in case of packets drop.
- Make FIB seqnum lockless, dropping RTNL protection for read access.
- Make inet{,v6} addresses hashing less predicable.
- Allow providing timestamp OPT_ID via cmsg, to correlate TX packets
and timestamps
Things we sprinkled into general kernel code:
- Add small file operations for debugfs, to reduce the struct ops
size.
- Refactoring and optimization for the implementation of page_frag
API, This is a preparatory work to consolidate the page_frag
implementation.
Netfilter:
- Optimize set element transactions to reduce memory consumption
- Extended netlink error reporting for attribute parser failure.
- Make legacy xtables configs user selectable, giving users the
option to configure iptables without enabling any other config.
- Address a lot of false-positive RCU issues, pointed by recent CI
improvements.
BPF:
- Put xsk sockets on a struct diet and add various cleanups. Overall,
this helps to bump performance by 12% for some workloads.
- Extend BPF selftests to increase coverage of XDP features in
combination with BPF cpumap.
- Optimize and homogenize bpf_csum_diff helper for all archs and also
add a batch of new BPF selftests for it.
- Extend netkit with an option to delegate skb->{mark,priority}
scrubbing to its BPF program.
- Make the bpf_get_netns_cookie() helper available also to tc(x) BPF
programs.
Protocols:
- Introduces 4-tuple hash for connected udp sockets, speeding-up
significantly connected sockets lookup.
- Add a fastpath for some TCP timers that usually expires after
close, the socket lock contention.
- Add inbound and outbound xfrm state caches to speed up state
lookups.
- Avoid sending MPTCP advertisements on stale subflows, reducing
risks on loosing them.
- Make neighbours table flushing more scalable, maintaining per
device neigh lists.
Driver API:
- Introduce a unified interface to configure transmission H/W
shaping, and expose it to user-space via generic-netlink.
- Add support for per-NAPI config via netlink. This makes napi
configuration persistent across queues removal and re-creation.
Requires driver updates, currently supported drivers are:
nVidia/Mellanox mlx4 and mlx5, Broadcom brcm and Intel ice.
- Add ethtool support for writing SFP / PHY firmware blocks.
- Track RSS context allocation from ethtool core.
- Implement support for mirroring to DSA CPU port, via TC mirror
offload.
- Consolidate FDB updates notification, to avoid duplicates on
device-specific entries.
- Expose DPLL clock quality level to the user-space.
- Support master-slave PHY config via device tree.
Tests and tooling:
- forwarding: introduce deferred commands, to simplify the cleanup
phase
Drivers:
- Updated several drivers - Amazon vNic, Google vNic, Microsoft vNic,
Intel e1000e and Broadcom Tigon3 - to use netdev-genl to link the
IRQs and queues to NAPI IDs, allowing busy polling and better
introspection.
- Ethernet high-speed NICs:
- nVidia/Mellanox:
- mlx5:
- a large refactor to implement support for cross E-Switch
scheduling
- refactor H/W conter management to let it scale better
- H/W GRO cleanups
- Intel (100G, ice)::
- add support for ethtool reset
- implement support for per TX queue H/W shaping
- AMD/Solarflare:
- implement per device queue stats support
- Broadcom (bnxt):
- improve wildcard l4proto on IPv4/IPv6 ntuple rules
- Marvell Octeon:
- Add representor support for each Resource Virtualization Unit
(RVU) device.
- Hisilicon:
- add support for the BMC Gigabit Ethernet
- IBM (EMAC):
- driver cleanup and modernization
- Cisco (VIC):
- raise the queues number limit to 256
- Ethernet virtual:
- Google vNIC:
- implement page pool support
- macsec:
- inherit lower device's features and TSO limits when
offloading
- virtio_net:
- enable premapped mode by default
- support for XDP socket(AF_XDP) zerocopy TX
- wireguard:
- set the TSO max size to be GSO_MAX_SIZE, to aggregate larger
packets.
- Ethernet NICs embedded and virtual:
- Broadcom ASP:
- enable software timestamping
- Freescale:
- add enetc4 PF driver
- MediaTek: Airoha SoC:
- implement BQL support
- RealTek r8169:
- enable TSO by default on r8168/r8125
- implement extended ethtool stats
- Renesas AVB:
- enable TX checksum offload
- Synopsys (stmmac):
- support header splitting for vlan tagged packets
- move common code for DWMAC4 and DWXGMAC into a separate FPE
module.
- add dwmac driver support for T-HEAD TH1520 SoC
- Synopsys (xpcs):
- driver refactor and cleanup
- TI:
- icssg_prueth: add VLAN offload support
- Xilinx emaclite:
- add clock support
- Ethernet switches:
- Microchip:
- implement support for the lan969x Ethernet switch family
- add LAN9646 switch support to KSZ DSA driver
- Ethernet PHYs:
- Marvel: 88q2x: enable auto negotiation
- Microchip: add support for LAN865X Rev B1 and LAN867X Rev C1/C2
- PTP:
- Add support for the Amazon virtual clock device
- Add PtP driver for s390 clocks
- WiFi:
- mac80211
- EHT 1024 aggregation size for transmissions
- new operation to indicate that a new interface is to be added
- support radio separation of multi-band devices
- move wireless extension spy implementation to libiw
- Broadcom:
- brcmfmac: optional LPO clock support
- Microchip:
- add support for Atmel WILC3000
- Qualcomm (ath12k):
- firmware coredump collection support
- add debugfs support for a multitude of statistics
- Qualcomm (ath5k):
- Arcadyan ARV45XX AR2417 & Gigaset SX76[23] AR241[34]A support
- Realtek:
- rtw88: 8821au and 8812au USB adapters support
- rtw89: add thermal protection
- rtw89: fine tune BT-coexsitence to improve user experience
- rtw89: firmware secure boot for WiFi 6 chip
- Bluetooth
- add Qualcomm WCN785x support for ids Foxconn 0xe0fc/0xe0f3 and
0x13d3:0x3623
- add Realtek RTL8852BE support for id Foxconn 0xe123
- add MediaTek MT7920 support for wireless module ids
- btintel_pcie: add handshake between driver and firmware
- btintel_pcie: add recovery mechanism
- btnxpuart: add GPIO support to power save feature"
* tag 'net-next-6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (1475 commits)
mm: page_frag: fix a compile error when kernel is not compiled
Documentation: tipc: fix formatting issue in tipc.rst
selftests: nic_performance: Add selftest for performance of NIC driver
selftests: nic_link_layer: Add selftest case for speed and duplex states
selftests: nic_link_layer: Add link layer selftest for NIC driver
bnxt_en: Add FW trace coredump segments to the coredump
bnxt_en: Add a new ethtool -W dump flag
bnxt_en: Add 2 parameters to bnxt_fill_coredump_seg_hdr()
bnxt_en: Add functions to copy host context memory
bnxt_en: Do not free FW log context memory
bnxt_en: Manage the FW trace context memory
bnxt_en: Allocate backing store memory for FW trace logs
bnxt_en: Add a 'force' parameter to bnxt_free_ctx_mem()
bnxt_en: Refactor bnxt_free_ctx_mem()
bnxt_en: Add mem_valid bit to struct bnxt_ctx_mem_type
bnxt_en: Update firmware interface spec to 1.10.3.85
selftests/bpf: Add some tests with sockmap SK_PASS
bpf: fix recursive lock when verdict program return SK_PASS
wireguard: device: support big tcp GSO
wireguard: selftests: load nf_conntrack if not present
...
This commit is contained in:
@@ -141,6 +141,8 @@
|
||||
#define SCM_DEVMEM_DMABUF SO_DEVMEM_DMABUF
|
||||
#define SO_DEVMEM_DONTNEED 80
|
||||
|
||||
#define SCM_TS_OPT_ID 81
|
||||
|
||||
#if !defined(__KERNEL__)
|
||||
|
||||
#if __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
#include <asm/byteorder.h>
|
||||
#include <linux/if_ether.h>
|
||||
#include <linux/stddef.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
/**
|
||||
@@ -592,19 +593,6 @@ struct batadv_tvlv_gateway_data {
|
||||
__be32 bandwidth_up;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_tvlv_tt_data - tt data propagated through the tt tvlv container
|
||||
* @flags: translation table flags (see batadv_tt_data_flags)
|
||||
* @ttvn: translation table version number
|
||||
* @num_vlan: number of announced VLANs. In the TVLV this struct is followed by
|
||||
* one batadv_tvlv_tt_vlan_data object per announced vlan
|
||||
*/
|
||||
struct batadv_tvlv_tt_data {
|
||||
__u8 flags;
|
||||
__u8 ttvn;
|
||||
__be16 num_vlan;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_tvlv_tt_vlan_data - vlan specific tt data propagated through
|
||||
* the tt tvlv container
|
||||
@@ -618,6 +606,21 @@ struct batadv_tvlv_tt_vlan_data {
|
||||
__u16 reserved;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_tvlv_tt_data - tt data propagated through the tt tvlv container
|
||||
* @flags: translation table flags (see batadv_tt_data_flags)
|
||||
* @ttvn: translation table version number
|
||||
* @num_vlan: number of announced VLANs. In the TVLV this struct is followed by
|
||||
* one batadv_tvlv_tt_vlan_data object per announced vlan
|
||||
* @vlan_data: array of batadv_tvlv_tt_vlan_data objects
|
||||
*/
|
||||
struct batadv_tvlv_tt_data {
|
||||
__u8 flags;
|
||||
__u8 ttvn;
|
||||
__be16 num_vlan;
|
||||
struct batadv_tvlv_tt_vlan_data vlan_data[] __counted_by_be(num_vlan);
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_tvlv_tt_change - translation table diff data
|
||||
* @flags: status indicators concerning the non-mesh client (see
|
||||
|
||||
@@ -79,6 +79,29 @@ enum dpll_lock_status_error {
|
||||
DPLL_LOCK_STATUS_ERROR_MAX = (__DPLL_LOCK_STATUS_ERROR_MAX - 1)
|
||||
};
|
||||
|
||||
/*
|
||||
* level of quality of a clock device. This mainly applies when the dpll
|
||||
* lock-status is DPLL_LOCK_STATUS_HOLDOVER. The current list is defined
|
||||
* according to the table 11-7 contained in ITU-T G.8264/Y.1364 document. One
|
||||
* may extend this list freely by other ITU-T defined clock qualities, or
|
||||
* different ones defined by another standardization body (for those, please
|
||||
* use different prefix).
|
||||
*/
|
||||
enum dpll_clock_quality_level {
|
||||
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_PRC = 1,
|
||||
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_SSU_A,
|
||||
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_SSU_B,
|
||||
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_EEC1,
|
||||
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_PRTC,
|
||||
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_EPRTC,
|
||||
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_EEEC,
|
||||
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_EPRC,
|
||||
|
||||
/* private: */
|
||||
__DPLL_CLOCK_QUALITY_LEVEL_MAX,
|
||||
DPLL_CLOCK_QUALITY_LEVEL_MAX = (__DPLL_CLOCK_QUALITY_LEVEL_MAX - 1)
|
||||
};
|
||||
|
||||
#define DPLL_TEMP_DIVIDER 1000
|
||||
|
||||
/**
|
||||
@@ -180,6 +203,7 @@ enum dpll_a {
|
||||
DPLL_A_TEMP,
|
||||
DPLL_A_TYPE,
|
||||
DPLL_A_LOCK_STATUS_ERROR,
|
||||
DPLL_A_CLOCK_QUALITY_LEVEL,
|
||||
|
||||
__DPLL_A_MAX,
|
||||
DPLL_A_MAX = (__DPLL_A_MAX - 1)
|
||||
|
||||
@@ -2526,12 +2526,19 @@ struct ethtool_link_settings {
|
||||
__u8 master_slave_state;
|
||||
__u8 rate_matching;
|
||||
__u32 reserved[7];
|
||||
#ifndef __KERNEL__
|
||||
/* Linux builds with -Wflex-array-member-not-at-end but does
|
||||
* not use the "link_mode_masks" member. Leave it defined for
|
||||
* userspace for now, and when userspace wants to start using
|
||||
* -Wfamnae, we'll need a new solution.
|
||||
*/
|
||||
__u32 link_mode_masks[];
|
||||
/* layout of link_mode_masks fields:
|
||||
* __u32 map_supported[link_mode_masks_nwords];
|
||||
* __u32 map_advertising[link_mode_masks_nwords];
|
||||
* __u32 map_lp_advertising[link_mode_masks_nwords];
|
||||
*/
|
||||
#endif
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -377,6 +377,7 @@ enum {
|
||||
IFLA_GSO_IPV4_MAX_SIZE,
|
||||
IFLA_GRO_IPV4_MAX_SIZE,
|
||||
IFLA_DPLL_PIN,
|
||||
IFLA_MAX_PACING_OFFLOAD_HORIZON,
|
||||
__IFLA_MAX
|
||||
};
|
||||
|
||||
@@ -1292,6 +1293,19 @@ enum netkit_mode {
|
||||
NETKIT_L3,
|
||||
};
|
||||
|
||||
/* NETKIT_SCRUB_NONE leaves clearing skb->{mark,priority} up to
|
||||
* the BPF program if attached. This also means the latter can
|
||||
* consume the two fields if they were populated earlier.
|
||||
*
|
||||
* NETKIT_SCRUB_DEFAULT zeroes skb->{mark,priority} fields before
|
||||
* invoking the attached BPF program when the peer device resides
|
||||
* in a different network namespace. This is the default behavior.
|
||||
*/
|
||||
enum netkit_scrub {
|
||||
NETKIT_SCRUB_NONE,
|
||||
NETKIT_SCRUB_DEFAULT,
|
||||
};
|
||||
|
||||
enum {
|
||||
IFLA_NETKIT_UNSPEC,
|
||||
IFLA_NETKIT_PEER_INFO,
|
||||
@@ -1299,6 +1313,8 @@ enum {
|
||||
IFLA_NETKIT_POLICY,
|
||||
IFLA_NETKIT_PEER_POLICY,
|
||||
IFLA_NETKIT_MODE,
|
||||
IFLA_NETKIT_SCRUB,
|
||||
IFLA_NETKIT_PEER_SCRUB,
|
||||
__IFLA_NETKIT_MAX,
|
||||
};
|
||||
#define IFLA_NETKIT_MAX (__IFLA_NETKIT_MAX - 1)
|
||||
@@ -1942,6 +1958,7 @@ struct ifla_rmnet_flags {
|
||||
enum {
|
||||
IFLA_MCTP_UNSPEC,
|
||||
IFLA_MCTP_NET,
|
||||
IFLA_MCTP_PHYS_BINDING,
|
||||
__IFLA_MCTP_MAX,
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
|
||||
/* Do not edit directly, auto-generated from: */
|
||||
/* Documentation/netlink/specs/net_shaper.yaml */
|
||||
/* YNL-GEN uapi header */
|
||||
|
||||
#ifndef _UAPI_LINUX_NET_SHAPER_H
|
||||
#define _UAPI_LINUX_NET_SHAPER_H
|
||||
|
||||
#define NET_SHAPER_FAMILY_NAME "net-shaper"
|
||||
#define NET_SHAPER_FAMILY_VERSION 1
|
||||
|
||||
/**
|
||||
* enum net_shaper_scope - Defines the shaper @id interpretation.
|
||||
* @NET_SHAPER_SCOPE_UNSPEC: The scope is not specified.
|
||||
* @NET_SHAPER_SCOPE_NETDEV: The main shaper for the given network device.
|
||||
* @NET_SHAPER_SCOPE_QUEUE: The shaper is attached to the given device queue,
|
||||
* the @id represents the queue number.
|
||||
* @NET_SHAPER_SCOPE_NODE: The shaper allows grouping of queues or other node
|
||||
* shapers; can be nested in either @netdev shapers or other @node shapers,
|
||||
* allowing placement in any location of the scheduling tree, except leaves
|
||||
* and root.
|
||||
*/
|
||||
enum net_shaper_scope {
|
||||
NET_SHAPER_SCOPE_UNSPEC,
|
||||
NET_SHAPER_SCOPE_NETDEV,
|
||||
NET_SHAPER_SCOPE_QUEUE,
|
||||
NET_SHAPER_SCOPE_NODE,
|
||||
|
||||
/* private: */
|
||||
__NET_SHAPER_SCOPE_MAX,
|
||||
NET_SHAPER_SCOPE_MAX = (__NET_SHAPER_SCOPE_MAX - 1)
|
||||
};
|
||||
|
||||
/**
|
||||
* enum net_shaper_metric - Different metric supported by the shaper.
|
||||
* @NET_SHAPER_METRIC_BPS: Shaper operates on a bits per second basis.
|
||||
* @NET_SHAPER_METRIC_PPS: Shaper operates on a packets per second basis.
|
||||
*/
|
||||
enum net_shaper_metric {
|
||||
NET_SHAPER_METRIC_BPS,
|
||||
NET_SHAPER_METRIC_PPS,
|
||||
};
|
||||
|
||||
enum {
|
||||
NET_SHAPER_A_HANDLE = 1,
|
||||
NET_SHAPER_A_METRIC,
|
||||
NET_SHAPER_A_BW_MIN,
|
||||
NET_SHAPER_A_BW_MAX,
|
||||
NET_SHAPER_A_BURST,
|
||||
NET_SHAPER_A_PRIORITY,
|
||||
NET_SHAPER_A_WEIGHT,
|
||||
NET_SHAPER_A_IFINDEX,
|
||||
NET_SHAPER_A_PARENT,
|
||||
NET_SHAPER_A_LEAVES,
|
||||
|
||||
__NET_SHAPER_A_MAX,
|
||||
NET_SHAPER_A_MAX = (__NET_SHAPER_A_MAX - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
NET_SHAPER_A_HANDLE_SCOPE = 1,
|
||||
NET_SHAPER_A_HANDLE_ID,
|
||||
|
||||
__NET_SHAPER_A_HANDLE_MAX,
|
||||
NET_SHAPER_A_HANDLE_MAX = (__NET_SHAPER_A_HANDLE_MAX - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
NET_SHAPER_A_CAPS_IFINDEX = 1,
|
||||
NET_SHAPER_A_CAPS_SCOPE,
|
||||
NET_SHAPER_A_CAPS_SUPPORT_METRIC_BPS,
|
||||
NET_SHAPER_A_CAPS_SUPPORT_METRIC_PPS,
|
||||
NET_SHAPER_A_CAPS_SUPPORT_NESTING,
|
||||
NET_SHAPER_A_CAPS_SUPPORT_BW_MIN,
|
||||
NET_SHAPER_A_CAPS_SUPPORT_BW_MAX,
|
||||
NET_SHAPER_A_CAPS_SUPPORT_BURST,
|
||||
NET_SHAPER_A_CAPS_SUPPORT_PRIORITY,
|
||||
NET_SHAPER_A_CAPS_SUPPORT_WEIGHT,
|
||||
|
||||
__NET_SHAPER_A_CAPS_MAX,
|
||||
NET_SHAPER_A_CAPS_MAX = (__NET_SHAPER_A_CAPS_MAX - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
NET_SHAPER_CMD_GET = 1,
|
||||
NET_SHAPER_CMD_SET,
|
||||
NET_SHAPER_CMD_DELETE,
|
||||
NET_SHAPER_CMD_GROUP,
|
||||
NET_SHAPER_CMD_CAP_GET,
|
||||
|
||||
__NET_SHAPER_CMD_MAX,
|
||||
NET_SHAPER_CMD_MAX = (__NET_SHAPER_CMD_MAX - 1)
|
||||
};
|
||||
|
||||
#endif /* _UAPI_LINUX_NET_SHAPER_H */
|
||||
@@ -122,6 +122,9 @@ enum {
|
||||
NETDEV_A_NAPI_ID,
|
||||
NETDEV_A_NAPI_IRQ,
|
||||
NETDEV_A_NAPI_PID,
|
||||
NETDEV_A_NAPI_DEFER_HARD_IRQS,
|
||||
NETDEV_A_NAPI_GRO_FLUSH_TIMEOUT,
|
||||
NETDEV_A_NAPI_IRQ_SUSPEND_TIMEOUT,
|
||||
|
||||
__NETDEV_A_NAPI_MAX,
|
||||
NETDEV_A_NAPI_MAX = (__NETDEV_A_NAPI_MAX - 1)
|
||||
@@ -199,6 +202,7 @@ enum {
|
||||
NETDEV_CMD_NAPI_GET,
|
||||
NETDEV_CMD_QSTATS_GET,
|
||||
NETDEV_CMD_BIND_RX,
|
||||
NETDEV_CMD_NAPI_SET,
|
||||
|
||||
__NETDEV_CMD_MAX,
|
||||
NETDEV_CMD_MAX = (__NETDEV_CMD_MAX - 1)
|
||||
|
||||
@@ -564,16 +564,26 @@ enum nft_immediate_attributes {
|
||||
/**
|
||||
* enum nft_bitwise_ops - nf_tables bitwise operations
|
||||
*
|
||||
* @NFT_BITWISE_BOOL: mask-and-xor operation used to implement NOT, AND, OR and
|
||||
* XOR boolean operations
|
||||
* @NFT_BITWISE_MASK_XOR: mask-and-xor operation used to implement NOT, AND, OR
|
||||
* and XOR boolean operations
|
||||
* @NFT_BITWISE_LSHIFT: left-shift operation
|
||||
* @NFT_BITWISE_RSHIFT: right-shift operation
|
||||
* @NFT_BITWISE_AND: and operation
|
||||
* @NFT_BITWISE_OR: or operation
|
||||
* @NFT_BITWISE_XOR: xor operation
|
||||
*/
|
||||
enum nft_bitwise_ops {
|
||||
NFT_BITWISE_BOOL,
|
||||
NFT_BITWISE_MASK_XOR,
|
||||
NFT_BITWISE_LSHIFT,
|
||||
NFT_BITWISE_RSHIFT,
|
||||
NFT_BITWISE_AND,
|
||||
NFT_BITWISE_OR,
|
||||
NFT_BITWISE_XOR,
|
||||
};
|
||||
/*
|
||||
* Old name for NFT_BITWISE_MASK_XOR. Retained for backwards-compatibility.
|
||||
*/
|
||||
#define NFT_BITWISE_BOOL NFT_BITWISE_MASK_XOR
|
||||
|
||||
/**
|
||||
* enum nft_bitwise_attributes - nf_tables bitwise expression netlink attributes
|
||||
@@ -586,6 +596,7 @@ enum nft_bitwise_ops {
|
||||
* @NFTA_BITWISE_OP: type of operation (NLA_U32: nft_bitwise_ops)
|
||||
* @NFTA_BITWISE_DATA: argument for non-boolean operations
|
||||
* (NLA_NESTED: nft_data_attributes)
|
||||
* @NFTA_BITWISE_SREG2: second source register (NLA_U32: nft_registers)
|
||||
*
|
||||
* The bitwise expression supports boolean and shift operations. It implements
|
||||
* the boolean operations by performing the following operation:
|
||||
@@ -609,6 +620,7 @@ enum nft_bitwise_attributes {
|
||||
NFTA_BITWISE_XOR,
|
||||
NFTA_BITWISE_OP,
|
||||
NFTA_BITWISE_DATA,
|
||||
NFTA_BITWISE_SREG2,
|
||||
__NFTA_BITWISE_MAX
|
||||
};
|
||||
#define NFTA_BITWISE_MAX (__NFTA_BITWISE_MAX - 1)
|
||||
|
||||
@@ -164,6 +164,7 @@ enum nfc_commands {
|
||||
* @NFC_ATTR_VENDOR_SUBCMD: Vendor specific sub command
|
||||
* @NFC_ATTR_VENDOR_DATA: Vendor specific data, to be optionally passed
|
||||
* to a vendor specific command implementation
|
||||
* @NFC_ATTR_TARGET_ATS: ISO 14443 type A target Answer To Select
|
||||
*/
|
||||
enum nfc_attrs {
|
||||
NFC_ATTR_UNSPEC,
|
||||
@@ -198,6 +199,7 @@ enum nfc_attrs {
|
||||
NFC_ATTR_VENDOR_ID,
|
||||
NFC_ATTR_VENDOR_SUBCMD,
|
||||
NFC_ATTR_VENDOR_DATA,
|
||||
NFC_ATTR_TARGET_ATS,
|
||||
/* private: internal use only */
|
||||
__NFC_ATTR_AFTER_LAST
|
||||
};
|
||||
@@ -225,6 +227,7 @@ enum nfc_sdp_attr {
|
||||
#define NFC_GB_MAXSIZE 48
|
||||
#define NFC_FIRMWARE_NAME_MAXSIZE 32
|
||||
#define NFC_ISO15693_UID_MAXSIZE 8
|
||||
#define NFC_ATS_MAXSIZE 20
|
||||
|
||||
/* NFC protocols */
|
||||
#define NFC_PROTO_JEWEL 1
|
||||
|
||||
@@ -2868,6 +2868,9 @@ enum nl80211_commands {
|
||||
* nested item, it contains attributes defined in
|
||||
* &enum nl80211_if_combination_attrs.
|
||||
*
|
||||
* @NL80211_ATTR_VIF_RADIO_MASK: Bitmask of allowed radios (u32).
|
||||
* A value of 0 means all radios.
|
||||
*
|
||||
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
@@ -3416,6 +3419,8 @@ enum nl80211_attrs {
|
||||
NL80211_ATTR_WIPHY_RADIOS,
|
||||
NL80211_ATTR_WIPHY_INTERFACE_COMBINATIONS,
|
||||
|
||||
NL80211_ATTR_VIF_RADIO_MASK,
|
||||
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
@@ -4698,6 +4703,7 @@ enum nl80211_survey_info {
|
||||
* overrides all other flags.
|
||||
* @NL80211_MNTR_FLAG_ACTIVE: use the configured MAC address
|
||||
* and ACK incoming unicast packets.
|
||||
* @NL80211_MNTR_FLAG_SKIP_TX: do not pass local tx packets
|
||||
*
|
||||
* @__NL80211_MNTR_FLAG_AFTER_LAST: internal use
|
||||
* @NL80211_MNTR_FLAG_MAX: highest possible monitor flag
|
||||
@@ -4710,6 +4716,7 @@ enum nl80211_mntr_flags {
|
||||
NL80211_MNTR_FLAG_OTHER_BSS,
|
||||
NL80211_MNTR_FLAG_COOK_FRAMES,
|
||||
NL80211_MNTR_FLAG_ACTIVE,
|
||||
NL80211_MNTR_FLAG_SKIP_TX,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_MNTR_FLAG_AFTER_LAST,
|
||||
@@ -8031,6 +8038,8 @@ enum nl80211_ap_settings_flags {
|
||||
* @NL80211_WIPHY_RADIO_ATTR_INTERFACE_COMBINATION: Supported interface
|
||||
* combination for this radio. Attribute may be present multiple times
|
||||
* and contains attributes defined in &enum nl80211_if_combination_attrs.
|
||||
* @NL80211_WIPHY_RADIO_ATTR_ANTENNA_MASK: bitmask (u32) of antennas
|
||||
* connected to this radio.
|
||||
*
|
||||
* @__NL80211_WIPHY_RADIO_ATTR_LAST: Internal
|
||||
* @NL80211_WIPHY_RADIO_ATTR_MAX: Highest attribute
|
||||
@@ -8041,6 +8050,7 @@ enum nl80211_wiphy_radio_attrs {
|
||||
NL80211_WIPHY_RADIO_ATTR_INDEX,
|
||||
NL80211_WIPHY_RADIO_ATTR_FREQ_RANGE,
|
||||
NL80211_WIPHY_RADIO_ATTR_INTERFACE_COMBINATION,
|
||||
NL80211_WIPHY_RADIO_ATTR_ANTENNA_MASK,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_WIPHY_RADIO_ATTR_LAST,
|
||||
|
||||
@@ -836,6 +836,8 @@ enum {
|
||||
|
||||
TCA_FQ_WEIGHTS, /* Weights for each band */
|
||||
|
||||
TCA_FQ_OFFLOAD_HORIZON, /* dequeue paced packets within this horizon immediately (us units) */
|
||||
|
||||
__TCA_FQ_MAX
|
||||
};
|
||||
|
||||
|
||||
@@ -174,7 +174,7 @@ enum {
|
||||
#define RTM_GETLINKPROP RTM_GETLINKPROP
|
||||
|
||||
RTM_NEWVLAN = 112,
|
||||
#define RTM_NEWNVLAN RTM_NEWVLAN
|
||||
#define RTM_NEWVLAN RTM_NEWVLAN
|
||||
RTM_DELVLAN,
|
||||
#define RTM_DELVLAN RTM_DELVLAN
|
||||
RTM_GETVLAN,
|
||||
|
||||
@@ -31,7 +31,7 @@ struct udphdr {
|
||||
#define UDP_CORK 1 /* Never send partially complete segments */
|
||||
#define UDP_ENCAP 100 /* Set the socket to accept encapsulated packets */
|
||||
#define UDP_NO_CHECK6_TX 101 /* Disable sending checksum for UDP6X */
|
||||
#define UDP_NO_CHECK6_RX 102 /* Disable accpeting checksum for UDP6 */
|
||||
#define UDP_NO_CHECK6_RX 102 /* Disable accepting checksum for UDP6 */
|
||||
#define UDP_SEGMENT 103 /* Set GSO segmentation size */
|
||||
#define UDP_GRO 104 /* This socket can receive UDP GRO packets */
|
||||
|
||||
|
||||
@@ -0,0 +1,182 @@
|
||||
/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
|
||||
|
||||
/*
|
||||
* This structure provides a vDSO-style clock to VM guests, exposing the
|
||||
* relationship (or lack thereof) between the CPU clock (TSC, timebase, arch
|
||||
* counter, etc.) and real time. It is designed to address the problem of
|
||||
* live migration, which other clock enlightenments do not.
|
||||
*
|
||||
* When a guest is live migrated, this affects the clock in two ways.
|
||||
*
|
||||
* First, even between identical hosts the actual frequency of the underlying
|
||||
* counter will change within the tolerances of its specification (typically
|
||||
* ±50PPM, or 4 seconds a day). This frequency also varies over time on the
|
||||
* same host, but can be tracked by NTP as it generally varies slowly. With
|
||||
* live migration there is a step change in the frequency, with no warning.
|
||||
*
|
||||
* Second, there may be a step change in the value of the counter itself, as
|
||||
* its accuracy is limited by the precision of the NTP synchronization on the
|
||||
* source and destination hosts.
|
||||
*
|
||||
* So any calibration (NTP, PTP, etc.) which the guest has done on the source
|
||||
* host before migration is invalid, and needs to be redone on the new host.
|
||||
*
|
||||
* In its most basic mode, this structure provides only an indication to the
|
||||
* guest that live migration has occurred. This allows the guest to know that
|
||||
* its clock is invalid and take remedial action. For applications that need
|
||||
* reliable accurate timestamps (e.g. distributed databases), the structure
|
||||
* can be mapped all the way to userspace. This allows the application to see
|
||||
* directly for itself that the clock is disrupted and take appropriate
|
||||
* action, even when using a vDSO-style method to get the time instead of a
|
||||
* system call.
|
||||
*
|
||||
* In its more advanced mode. this structure can also be used to expose the
|
||||
* precise relationship of the CPU counter to real time, as calibrated by the
|
||||
* host. This means that userspace applications can have accurate time
|
||||
* immediately after live migration, rather than having to pause operations
|
||||
* and wait for NTP to recover. This mode does, of course, rely on the
|
||||
* counter being reliable and consistent across CPUs.
|
||||
*
|
||||
* Note that this must be true UTC, never with smeared leap seconds. If a
|
||||
* guest wishes to construct a smeared clock, it can do so. Presenting a
|
||||
* smeared clock through this interface would be problematic because it
|
||||
* actually messes with the apparent counter *period*. A linear smearing
|
||||
* of 1 ms per second would effectively tweak the counter period by 1000PPM
|
||||
* at the start/end of the smearing period, while a sinusoidal smear would
|
||||
* basically be impossible to represent.
|
||||
*
|
||||
* This structure is offered with the intent that it be adopted into the
|
||||
* nascent virtio-rtc standard, as a virtio-rtc that does not address the live
|
||||
* migration problem seems a little less than fit for purpose. For that
|
||||
* reason, certain fields use precisely the same numeric definitions as in
|
||||
* the virtio-rtc proposal. The structure can also be exposed through an ACPI
|
||||
* device with the CID "VMCLOCK", modelled on the "VMGENID" device except for
|
||||
* the fact that it uses a real _CRS to convey the address of the structure
|
||||
* (which should be a full page, to allow for mapping directly to userspace).
|
||||
*/
|
||||
|
||||
#ifndef __VMCLOCK_ABI_H__
|
||||
#define __VMCLOCK_ABI_H__
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct vmclock_abi {
|
||||
/* CONSTANT FIELDS */
|
||||
__le32 magic;
|
||||
#define VMCLOCK_MAGIC 0x4b4c4356 /* "VCLK" */
|
||||
__le32 size; /* Size of region containing this structure */
|
||||
__le16 version; /* 1 */
|
||||
__u8 counter_id; /* Matches VIRTIO_RTC_COUNTER_xxx except INVALID */
|
||||
#define VMCLOCK_COUNTER_ARM_VCNT 0
|
||||
#define VMCLOCK_COUNTER_X86_TSC 1
|
||||
#define VMCLOCK_COUNTER_INVALID 0xff
|
||||
__u8 time_type; /* Matches VIRTIO_RTC_TYPE_xxx */
|
||||
#define VMCLOCK_TIME_UTC 0 /* Since 1970-01-01 00:00:00z */
|
||||
#define VMCLOCK_TIME_TAI 1 /* Since 1970-01-01 00:00:00z */
|
||||
#define VMCLOCK_TIME_MONOTONIC 2 /* Since undefined epoch */
|
||||
#define VMCLOCK_TIME_INVALID_SMEARED 3 /* Not supported */
|
||||
#define VMCLOCK_TIME_INVALID_MAYBE_SMEARED 4 /* Not supported */
|
||||
|
||||
/* NON-CONSTANT FIELDS PROTECTED BY SEQCOUNT LOCK */
|
||||
__le32 seq_count; /* Low bit means an update is in progress */
|
||||
/*
|
||||
* This field changes to another non-repeating value when the CPU
|
||||
* counter is disrupted, for example on live migration. This lets
|
||||
* the guest know that it should discard any calibration it has
|
||||
* performed of the counter against external sources (NTP/PTP/etc.).
|
||||
*/
|
||||
__le64 disruption_marker;
|
||||
__le64 flags;
|
||||
/* Indicates that the tai_offset_sec field is valid */
|
||||
#define VMCLOCK_FLAG_TAI_OFFSET_VALID (1 << 0)
|
||||
/*
|
||||
* Optionally used to notify guests of pending maintenance events.
|
||||
* A guest which provides latency-sensitive services may wish to
|
||||
* remove itself from service if an event is coming up. Two flags
|
||||
* indicate the approximate imminence of the event.
|
||||
*/
|
||||
#define VMCLOCK_FLAG_DISRUPTION_SOON (1 << 1) /* About a day */
|
||||
#define VMCLOCK_FLAG_DISRUPTION_IMMINENT (1 << 2) /* About an hour */
|
||||
#define VMCLOCK_FLAG_PERIOD_ESTERROR_VALID (1 << 3)
|
||||
#define VMCLOCK_FLAG_PERIOD_MAXERROR_VALID (1 << 4)
|
||||
#define VMCLOCK_FLAG_TIME_ESTERROR_VALID (1 << 5)
|
||||
#define VMCLOCK_FLAG_TIME_MAXERROR_VALID (1 << 6)
|
||||
/*
|
||||
* If the MONOTONIC flag is set then (other than leap seconds) it is
|
||||
* guaranteed that the time calculated according this structure at
|
||||
* any given moment shall never appear to be later than the time
|
||||
* calculated via the structure at any *later* moment.
|
||||
*
|
||||
* In particular, a timestamp based on a counter reading taken
|
||||
* immediately after setting the low bit of seq_count (and the
|
||||
* associated memory barrier), using the previously-valid time and
|
||||
* period fields, shall never be later than a timestamp based on
|
||||
* a counter reading taken immediately before *clearing* the low
|
||||
* bit again after the update, using the about-to-be-valid fields.
|
||||
*/
|
||||
#define VMCLOCK_FLAG_TIME_MONOTONIC (1 << 7)
|
||||
|
||||
__u8 pad[2];
|
||||
__u8 clock_status;
|
||||
#define VMCLOCK_STATUS_UNKNOWN 0
|
||||
#define VMCLOCK_STATUS_INITIALIZING 1
|
||||
#define VMCLOCK_STATUS_SYNCHRONIZED 2
|
||||
#define VMCLOCK_STATUS_FREERUNNING 3
|
||||
#define VMCLOCK_STATUS_UNRELIABLE 4
|
||||
|
||||
/*
|
||||
* The time exposed through this device is never smeared. This field
|
||||
* corresponds to the 'subtype' field in virtio-rtc, which indicates
|
||||
* the smearing method. However in this case it provides a *hint* to
|
||||
* the guest operating system, such that *if* the guest OS wants to
|
||||
* provide its users with an alternative clock which does not follow
|
||||
* UTC, it may do so in a fashion consistent with the other systems
|
||||
* in the nearby environment.
|
||||
*/
|
||||
__u8 leap_second_smearing_hint; /* Matches VIRTIO_RTC_SUBTYPE_xxx */
|
||||
#define VMCLOCK_SMEARING_STRICT 0
|
||||
#define VMCLOCK_SMEARING_NOON_LINEAR 1
|
||||
#define VMCLOCK_SMEARING_UTC_SLS 2
|
||||
__le16 tai_offset_sec; /* Actually two's complement signed */
|
||||
__u8 leap_indicator;
|
||||
/*
|
||||
* This field is based on the VIRTIO_RTC_LEAP_xxx values as defined
|
||||
* in the current draft of virtio-rtc, but since smearing cannot be
|
||||
* used with the shared memory device, some values are not used.
|
||||
*
|
||||
* The _POST_POS and _POST_NEG values allow the guest to perform
|
||||
* its own smearing during the day or so after a leap second when
|
||||
* such smearing may need to continue being applied for a leap
|
||||
* second which is now theoretically "historical".
|
||||
*/
|
||||
#define VMCLOCK_LEAP_NONE 0x00 /* No known nearby leap second */
|
||||
#define VMCLOCK_LEAP_PRE_POS 0x01 /* Positive leap second at EOM */
|
||||
#define VMCLOCK_LEAP_PRE_NEG 0x02 /* Negative leap second at EOM */
|
||||
#define VMCLOCK_LEAP_POS 0x03 /* Set during 23:59:60 second */
|
||||
#define VMCLOCK_LEAP_POST_POS 0x04
|
||||
#define VMCLOCK_LEAP_POST_NEG 0x05
|
||||
|
||||
/* Bit shift for counter_period_frac_sec and its error rate */
|
||||
__u8 counter_period_shift;
|
||||
/*
|
||||
* Paired values of counter and UTC at a given point in time.
|
||||
*/
|
||||
__le64 counter_value;
|
||||
/*
|
||||
* Counter period, and error margin of same. The unit of these
|
||||
* fields is 1/2^(64 + counter_period_shift) of a second.
|
||||
*/
|
||||
__le64 counter_period_frac_sec;
|
||||
__le64 counter_period_esterror_rate_frac_sec;
|
||||
__le64 counter_period_maxerror_rate_frac_sec;
|
||||
|
||||
/*
|
||||
* Time according to time_type field above.
|
||||
*/
|
||||
__le64 time_sec; /* Seconds since time_type epoch */
|
||||
__le64 time_frac_sec; /* Units of 1/2^64 of a second */
|
||||
__le64 time_esterror_nanosec;
|
||||
__le64 time_maxerror_nanosec;
|
||||
};
|
||||
|
||||
#endif /* __VMCLOCK_ABI_H__ */
|
||||
@@ -322,6 +322,7 @@ enum xfrm_attr_type_t {
|
||||
XFRMA_MTIMER_THRESH, /* __u32 in seconds for input SA */
|
||||
XFRMA_SA_DIR, /* __u8 */
|
||||
XFRMA_NAT_KEEPALIVE_INTERVAL, /* __u32 in seconds for NAT keepalive */
|
||||
XFRMA_SA_PCPU, /* __u32 */
|
||||
__XFRMA_MAX
|
||||
|
||||
#define XFRMA_OUTPUT_MARK XFRMA_SET_MARK /* Compatibility */
|
||||
@@ -437,6 +438,7 @@ struct xfrm_userpolicy_info {
|
||||
#define XFRM_POLICY_LOCALOK 1 /* Allow user to override global policy */
|
||||
/* Automatically expand selector to include matching ICMP payloads. */
|
||||
#define XFRM_POLICY_ICMP 2
|
||||
#define XFRM_POLICY_CPU_ACQUIRE 4
|
||||
__u8 share;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user