mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
Merge tag 'net-next-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next
Pull networking updates from Paolo Abeni:
"Core:
- Allow live renaming when an interface is up
- Add retpoline wrappers for tc, improving considerably the
performances of complex queue discipline configurations
- Add inet drop monitor support
- A few GRO performance improvements
- Add infrastructure for atomic dev stats, addressing long standing
data races
- De-duplicate common code between OVS and conntrack offloading
infrastructure
- A bunch of UBSAN_BOUNDS/FORTIFY_SOURCE improvements
- Netfilter: introduce packet parser for tunneled packets
- Replace IPVS timer-based estimators with kthreads to scale up the
workload with the number of available CPUs
- Add the helper support for connection-tracking OVS offload
BPF:
- Support for user defined BPF objects: the use case is to allocate
own objects, build own object hierarchies and use the building
blocks to build own data structures flexibly, for example, linked
lists in BPF
- Make cgroup local storage available to non-cgroup attached BPF
programs
- Avoid unnecessary deadlock detection and failures wrt BPF task
storage helpers
- A relevant bunch of BPF verifier fixes and improvements
- Veristat tool improvements to support custom filtering, sorting,
and replay of results
- Add LLVM disassembler as default library for dumping JITed code
- Lots of new BPF documentation for various BPF maps
- Add bpf_rcu_read_{,un}lock() support for sleepable programs
- Add RCU grace period chaining to BPF to wait for the completion of
access from both sleepable and non-sleepable BPF programs
- Add support storing struct task_struct objects as kptrs in maps
- Improve helper UAPI by explicitly defining BPF_FUNC_xxx integer
values
- Add libbpf *_opts API-variants for bpf_*_get_fd_by_id() functions
Protocols:
- TCP: implement Protective Load Balancing across switch links
- TCP: allow dynamically disabling TCP-MD5 static key, reverting back
to fast[er]-path
- UDP: Introduce optional per-netns hash lookup table
- IPv6: simplify and cleanup sockets disposal
- Netlink: support different type policies for each generic netlink
operation
- MPTCP: add MSG_FASTOPEN and FastOpen listener side support
- MPTCP: add netlink notification support for listener sockets events
- SCTP: add VRF support, allowing sctp sockets binding to VRF devices
- Add bridging MAC Authentication Bypass (MAB) support
- Extensions for Ethernet VPN bridging implementation to better
support multicast scenarios
- More work for Wi-Fi 7 support, comprising conversion of all the
existing drivers to internal TX queue usage
- IPSec: introduce a new offload type (packet offload) allowing
complete header processing and crypto offloading
- IPSec: extended ack support for more descriptive XFRM error
reporting
- RXRPC: increase SACK table size and move processing into a
per-local endpoint kernel thread, reducing considerably the
required locking
- IEEE 802154: synchronous send frame and extended filtering support,
initial support for scanning available 15.4 networks
- Tun: bump the link speed from 10Mbps to 10Gbps
- Tun/VirtioNet: implement UDP segmentation offload support
Driver API:
- PHY/SFP: improve power level switching between standard level 1 and
the higher power levels
- New API for netdev <-> devlink_port linkage
- PTP: convert existing drivers to new frequency adjustment
implementation
- DSA: add support for rx offloading
- Autoload DSA tagging driver when dynamically changing protocol
- Add new PCP and APPTRUST attributes to Data Center Bridging
- Add configuration support for 800Gbps link speed
- Add devlink port function attribute to enable/disable RoCE and
migratable
- Extend devlink-rate to support strict prioriry and weighted fair
queuing
- Add devlink support to directly reading from region memory
- New device tree helper to fetch MAC address from nvmem
- New big TCP helper to simplify temporary header stripping
New hardware / drivers:
- Ethernet:
- Marvel Octeon CNF95N and CN10KB Ethernet Switches
- Marvel Prestera AC5X Ethernet Switch
- WangXun 10 Gigabit NIC
- Motorcomm yt8521 Gigabit Ethernet
- Microchip ksz9563 Gigabit Ethernet Switch
- Microsoft Azure Network Adapter
- Linux Automation 10Base-T1L adapter
- PHY:
- Aquantia AQR112 and AQR412
- Motorcomm YT8531S
- PTP:
- Orolia ART-CARD
- WiFi:
- MediaTek Wi-Fi 7 (802.11be) devices
- RealTek rtw8821cu, rtw8822bu, rtw8822cu and rtw8723du USB
devices
- Bluetooth:
- Broadcom BCM4377/4378/4387 Bluetooth chipsets
- Realtek RTL8852BE and RTL8723DS
- Cypress.CYW4373A0 WiFi + Bluetooth combo device
Drivers:
- CAN:
- gs_usb: bus error reporting support
- kvaser_usb: listen only and bus error reporting support
- Ethernet NICs:
- Intel (100G):
- extend action skbedit to RX queue mapping
- implement devlink-rate support
- support direct read from memory
- nVidia/Mellanox (mlx5):
- SW steering improvements, increasing rules update rate
- Support for enhanced events compression
- extend H/W offload packet manipulation capabilities
- implement IPSec packet offload mode
- nVidia/Mellanox (mlx4):
- better big TCP support
- Netronome Ethernet NICs (nfp):
- IPsec offload support
- add support for multicast filter
- Broadcom:
- RSS and PTP support improvements
- AMD/SolarFlare:
- netlink extened ack improvements
- add basic flower matches to offload, and related stats
- Virtual NICs:
- ibmvnic: introduce affinity hint support
- small / embedded:
- FreeScale fec: add initial XDP support
- Marvel mv643xx_eth: support MII/GMII/RGMII modes for Kirkwood
- TI am65-cpsw: add suspend/resume support
- Mediatek MT7986: add RX wireless wthernet dispatch support
- Realtek 8169: enable GRO software interrupt coalescing per
default
- Ethernet high-speed switches:
- Microchip (sparx5):
- add support for Sparx5 TC/flower H/W offload via VCAP
- Mellanox mlxsw:
- add 802.1X and MAC Authentication Bypass offload support
- add ip6gre support
- Embedded Ethernet switches:
- Mediatek (mtk_eth_soc):
- improve PCS implementation, add DSA untag support
- enable flow offload support
- Renesas:
- add rswitch R-Car Gen4 gPTP support
- Microchip (lan966x):
- add full XDP support
- add TC H/W offload via VCAP
- enable PTP on bridge interfaces
- Microchip (ksz8):
- add MTU support for KSZ8 series
- Qualcomm 802.11ax WiFi (ath11k):
- support configuring channel dwell time during scan
- MediaTek WiFi (mt76):
- enable Wireless Ethernet Dispatch (WED) offload support
- add ack signal support
- enable coredump support
- remain_on_channel support
- Intel WiFi (iwlwifi):
- enable Wi-Fi 7 Extremely High Throughput (EHT) PHY capabilities
- 320 MHz channels support
- RealTek WiFi (rtw89):
- new dynamic header firmware format support
- wake-over-WLAN support"
* tag 'net-next-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (2002 commits)
ipvs: fix type warning in do_div() on 32 bit
net: lan966x: Remove a useless test in lan966x_ptp_add_trap()
net: ipa: add IPA v4.7 support
dt-bindings: net: qcom,ipa: Add SM6350 compatible
bnxt: Use generic HBH removal helper in tx path
IPv6/GRO: generic helper to remove temporary HBH/jumbo header in driver
selftests: forwarding: Add bridge MDB test
selftests: forwarding: Rename bridge_mdb test
bridge: mcast: Support replacement of MDB port group entries
bridge: mcast: Allow user space to specify MDB entry routing protocol
bridge: mcast: Allow user space to add (*, G) with a source list and filter mode
bridge: mcast: Add support for (*, G) with a source list and filter mode
bridge: mcast: Avoid arming group timer when (S, G) corresponds to a source
bridge: mcast: Add a flag for user installed source entries
bridge: mcast: Expose __br_multicast_del_group_src()
bridge: mcast: Expose br_multicast_new_group_src()
bridge: mcast: Add a centralized error path
bridge: mcast: Place netlink policy before validation functions
bridge: mcast: Split (*, G) and (S, G) addition into different functions
bridge: mcast: Do not derive entry type from its filter mode
...
This commit is contained in:
@@ -97,6 +97,7 @@ class HeaderParser(object):
|
||||
self.desc_unique_helpers = set()
|
||||
self.define_unique_helpers = []
|
||||
self.helper_enum_vals = {}
|
||||
self.helper_enum_pos = {}
|
||||
self.desc_syscalls = []
|
||||
self.enum_syscalls = []
|
||||
|
||||
@@ -253,54 +254,71 @@ class HeaderParser(object):
|
||||
break
|
||||
|
||||
def parse_define_helpers(self):
|
||||
# Parse FN(...) in #define __BPF_FUNC_MAPPER to compare later with the
|
||||
# Parse FN(...) in #define ___BPF_FUNC_MAPPER to compare later with the
|
||||
# number of unique function names present in description and use the
|
||||
# correct enumeration value.
|
||||
# Note: seek_to(..) discards the first line below the target search text,
|
||||
# resulting in FN(unspec) being skipped and not added to self.define_unique_helpers.
|
||||
self.seek_to('#define __BPF_FUNC_MAPPER(FN)',
|
||||
# resulting in FN(unspec, 0, ##ctx) being skipped and not added to
|
||||
# self.define_unique_helpers.
|
||||
self.seek_to('#define ___BPF_FUNC_MAPPER(FN, ctx...)',
|
||||
'Could not find start of eBPF helper definition list')
|
||||
# Searches for one FN(\w+) define or a backslash for newline
|
||||
p = re.compile('\s*FN\((\w+)\)|\\\\')
|
||||
p = re.compile('\s*FN\((\w+), (\d+), ##ctx\)|\\\\')
|
||||
fn_defines_str = ''
|
||||
i = 1 # 'unspec' is skipped as mentioned above
|
||||
i = 0
|
||||
while True:
|
||||
capture = p.match(self.line)
|
||||
if capture:
|
||||
fn_defines_str += self.line
|
||||
self.helper_enum_vals[capture.expand(r'bpf_\1')] = i
|
||||
helper_name = capture.expand(r'bpf_\1')
|
||||
self.helper_enum_vals[helper_name] = int(capture[2])
|
||||
self.helper_enum_pos[helper_name] = i
|
||||
i += 1
|
||||
else:
|
||||
break
|
||||
self.line = self.reader.readline()
|
||||
# Find the number of occurences of FN(\w+)
|
||||
self.define_unique_helpers = re.findall('FN\(\w+\)', fn_defines_str)
|
||||
self.define_unique_helpers = re.findall('FN\(\w+, \d+, ##ctx\)', fn_defines_str)
|
||||
|
||||
def assign_helper_values(self):
|
||||
def validate_helpers(self):
|
||||
last_helper = ''
|
||||
seen_helpers = set()
|
||||
seen_enum_vals = set()
|
||||
i = 0
|
||||
for helper in self.helpers:
|
||||
proto = helper.proto_break_down()
|
||||
name = proto['name']
|
||||
try:
|
||||
enum_val = self.helper_enum_vals[name]
|
||||
enum_pos = self.helper_enum_pos[name]
|
||||
except KeyError:
|
||||
raise Exception("Helper %s is missing from enum bpf_func_id" % name)
|
||||
|
||||
if name in seen_helpers:
|
||||
if last_helper != name:
|
||||
raise Exception("Helper %s has multiple descriptions which are not grouped together" % name)
|
||||
continue
|
||||
|
||||
# Enforce current practice of having the descriptions ordered
|
||||
# by enum value.
|
||||
if enum_pos != i:
|
||||
raise Exception("Helper %s (ID %d) comment order (#%d) must be aligned with its position (#%d) in enum bpf_func_id" % (name, enum_val, i + 1, enum_pos + 1))
|
||||
if enum_val in seen_enum_vals:
|
||||
raise Exception("Helper %s has duplicated value %d" % (name, enum_val))
|
||||
|
||||
seen_helpers.add(name)
|
||||
desc_val = len(seen_helpers)
|
||||
if desc_val != enum_val:
|
||||
raise Exception("Helper %s comment order (#%d) must be aligned with its position (#%d) in enum bpf_func_id" % (name, desc_val, enum_val))
|
||||
last_helper = name
|
||||
seen_enum_vals.add(enum_val)
|
||||
|
||||
helper.enum_val = enum_val
|
||||
i += 1
|
||||
|
||||
def run(self):
|
||||
self.parse_desc_syscall()
|
||||
self.parse_enum_syscall()
|
||||
self.parse_desc_helpers()
|
||||
self.parse_define_helpers()
|
||||
self.assign_helper_values()
|
||||
self.validate_helpers()
|
||||
self.reader.close()
|
||||
|
||||
###############################################################################
|
||||
@@ -423,7 +441,7 @@ class PrinterHelpersRST(PrinterRST):
|
||||
"""
|
||||
def __init__(self, parser):
|
||||
self.elements = parser.helpers
|
||||
self.elem_number_check(parser.desc_unique_helpers, parser.define_unique_helpers, 'helper', '__BPF_FUNC_MAPPER')
|
||||
self.elem_number_check(parser.desc_unique_helpers, parser.define_unique_helpers, 'helper', '___BPF_FUNC_MAPPER')
|
||||
|
||||
def print_header(self):
|
||||
header = '''\
|
||||
@@ -636,7 +654,7 @@ class PrinterHelpers(Printer):
|
||||
"""
|
||||
def __init__(self, parser):
|
||||
self.elements = parser.helpers
|
||||
self.elem_number_check(parser.desc_unique_helpers, parser.define_unique_helpers, 'helper', '__BPF_FUNC_MAPPER')
|
||||
self.elem_number_check(parser.desc_unique_helpers, parser.define_unique_helpers, 'helper', '___BPF_FUNC_MAPPER')
|
||||
|
||||
type_fwds = [
|
||||
'struct bpf_fib_lookup',
|
||||
@@ -667,6 +685,7 @@ class PrinterHelpers(Printer):
|
||||
'struct udp6_sock',
|
||||
'struct unix_sock',
|
||||
'struct task_struct',
|
||||
'struct cgroup',
|
||||
|
||||
'struct __sk_buff',
|
||||
'struct sk_msg_md',
|
||||
@@ -724,6 +743,7 @@ class PrinterHelpers(Printer):
|
||||
'struct udp6_sock',
|
||||
'struct unix_sock',
|
||||
'struct task_struct',
|
||||
'struct cgroup',
|
||||
'struct path',
|
||||
'struct btf_ptr',
|
||||
'struct inode',
|
||||
@@ -732,6 +752,7 @@ class PrinterHelpers(Printer):
|
||||
'struct bpf_timer',
|
||||
'struct mptcp_sock',
|
||||
'struct bpf_dynptr',
|
||||
'const struct bpf_dynptr',
|
||||
'struct iphdr',
|
||||
'struct ipv6hdr',
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user