Skip to content
Networking changes for 6.4.

Core
----

 - Introduce a config option to tweak MAX_SKB_FRAGS. Increasing the
   default value allows for better BIG TCP performances.

 - Reduce compound page head access for zero-copy data transfers.

 - RPS/RFS improvements, avoiding unneeded NET_RX_SOFTIRQ when possible.

 - Threaded NAPI improvements, adding defer skb free support and unneeded
   softirq avoidance.

 - Address dst_entry reference count scalability issues, via false
   sharing avoidance and optimize refcount tracking.

 - Add lockless accesses annotation to sk_err[_soft].

 - Optimize again the skb struct layout.

 - Extends the skb drop reasons to make it usable by multiple
   subsystems.

 - Better const qualifier awareness for socket casts.

BPF
---

 - Add skb and XDP typed dynptrs which allow BPF programs for more
   ergonomic and less brittle iteration through data and variable-sized
   accesses.

 - Add a new BPF netfilter program type and minimal support to hook
   BPF programs to netfilter hooks such as prerouting or forward.

 - Add more precise memory usage reporting for all BPF map types.

 - Adds support for using {FOU,GUE} encap with an ipip device operating
   in collect_md mode and add a set of BPF kfuncs for controlling encap
   params.

 - Allow BPF programs to detect at load time whether a particular kfunc
   exists or not, and also add support for this in light skeleton.

 - Bigger batch of BPF verifier improvements to prepare for upcoming BPF
   open-coded iterators allowing for less restrictive looping capabilities.

 - Rework RCU enforcement in the verifier, add kptr_rcu and enforce BPF
   programs to NULL-check before passing such pointers into kfunc.

 - Add support for kptrs in percpu hashmaps, percpu LRU hashmaps and in
   local storage maps.

 - Enable RCU semantics for task BPF kptrs and allow referenced kptr
   tasks to be stored in BPF maps.

 - Add support for refcounted local kptrs to the verifier for allowing
   shared ownership, useful for adding a node to both the BPF list and
   rbtree.

 - Add BPF verifier support for ST instructions in convert_ctx_access()
   which will help new -mcpu=v4 clang flag to start emitting them.

 - Add ARM32 USDT support to libbpf.

 - Improve bpftool's visual program dump which produces the control
   flow graph in a DOT format by adding C source inline annotations.

Protocols
---------

 - IPv4: Allow adding to IPv4 address a 'protocol' tag. Such value
   indicates the provenance of the IP address.

 - IPv6: optimize route lookup, dropping unneeded R/W lock acquisition.

 - Add the handshake upcall mechanism, allowing the user-space
   to implement generic TLS handshake on kernel's behalf.

 - Bridge: support per-{Port, VLAN} neighbor suppression, increasing
   resilience to nodes failures.

 - SCTP: add support for Fair Capacity and Weighted Fair Queueing
   schedulers.

 - MPTCP: delay first subflow allocation up to its first usage. This
   will allow for later better LSM interaction.

 - xfrm: Remove inner/outer modes from input/output path. These are
   not needed anymore.

 - WiFi:
   - reduced neighbor report (RNR) handling for AP mode
   - HW timestamping support
   - support for randomized auth/deauth TA for PASN privacy
   - per-link debugfs for multi-link
   - TC offload support for mac80211 drivers
   - mac80211 mesh fast-xmit and fast-rx support
   - enable Wi-Fi 7 (EHT) mesh support

Netfilter
---------

 - Add nf_tables 'brouting' support, to force a packet to be routed
   instead of being bridged.

 - Update bridge netfilter and ovs conntrack helpers to handle
   IPv6 Jumbo packets properly, i.e. fetch the packet length
   from hop-by-hop extension header. This is needed for BIT TCP
   support.

 - The iptables 32bit compat interface isn't compiled in by default
   anymore.

 - Move ip(6)tables builtin icmp matches to the udptcp one.
   This has the advantage that icmp/icmpv6 match doesn't load the
   iptables/ip6tables modules anymore when iptables-nft is used.

 - Extended netlink error report for netdevice in flowtables and
   netdev/chains. Allow for incrementally add/delete devices to netdev
   basechain. Allow to create netdev chain without device.

Driver API
----------

 - Remove redundant Device Control Error Reporting Enable, as PCI core
   has already error reporting enabled at enumeration time.

 - Move Multicast DB netlink handlers to core, allowing devices other
   then bridge to use them.

 - Allow the page_pool to directly recycle the pages from safely
   localized NAPI.

 - Implement lockless TX queue stop/wake combo macros, allowing for
   further code de-duplication and sanitization.

 - Add YNL support for user headers and struct attrs.

 - Add partial YNL specification for devlink.

 - Add partial YNL specification for ethtool.

 - Add tc-mqprio and tc-taprio support for preemptible traffic classes.

 - Add tx push buf len param to ethtool, specifies the maximum number
   of bytes of a transmitted packet a driver can push directly to the
   underlying device.

 - Add basic LED support for switch/phy.

 - Add NAPI documentation, stop relaying on external links.

 - Convert dsa_master_ioctl() to netdev notifier. This is a preparatory
   work to make the hardware timestamping layer selectable by user
   space.

 - Add transceiver support and improve the error messages for CAN-FD
   controllers.

New hardware / drivers
----------------------

 - Ethernet:
   - AMD/Pensando core device support
   - MediaTek MT7981 SoC
   - MediaTek MT7988 SoC
   - Broadcom BCM53134 embedded switch
   - Texas Instruments CPSW9G ethernet switch
   - Qualcomm EMAC3 DWMAC ethernet
   - StarFive JH7110 SoC
   - NXP CBTX ethernet PHY

 - WiFi:
   - Apple M1 Pro/Max devices
   - RealTek rtl8710bu/rtl8188gu
   - RealTek rtl8822bs, rtl8822cs and rtl8821cs SDIO chipset

 - Bluetooth:
   - Realtek RTL8821CS, RTL8851B, RTL8852BS
   - Mediatek MT7663, MT7922
   - NXP w8997
   - Actions Semi ATS2851
   - QTI WCN6855
   - Marvell 88W8997

 - Can:
   - STMicroelectronics bxcan stm32f429

Drivers
-------
 - Ethernet NICs:
   - Intel (1G, icg):
     - add tracking and reporting of QBV config errors.
     - add support for configuring max SDU for each Tx queue.
   - Intel (100G, ice):
     - refactor mailbox overflow detection to support Scalable IOV
     - GNSS interface optimization
   - Intel (i40e):
     - support XDP multi-buffer
   - nVidia/Mellanox:
     - add the support for linux bridge multicast offload
     - enable TC offload for egress and engress MACVLAN over bond
     - add support for VxLAN GBP encap/decap flows offload
     - extend packet offload to fully support libreswan
     - support tunnel mode in mlx5 IPsec packet offload
     - extend XDP multi-buffer support
     - support MACsec VLAN offload
     - add support for dynamic msix vectors allocation
     - drop RX page_cache and fully use page_pool
     - implement thermal zone to report NIC temperature
   - Netronome/Corigine:
     - add support for multi-zone conntrack offload
   - Solarflare/Xilinx:
     - support offloading TC VLAN push/pop actions to the MAE
     - support TC decap rules
     - support unicast PTP

 - Other NICs:
   - Broadcom (bnxt): enforce software based freq adjustments only
		on shared PHC NIC
   - RealTek (r8169): refactor to addess ASPM issues during NAPI poll.
   - Micrel (lan8841): add support for PTP_PF_PEROUT
   - Cadence (macb): enable PTP unicast
   - Engleder (tsnep): add XDP socket zero-copy support
   - virtio-net: implement exact header length guest feature
   - veth: add page_pool support for page recycling
   - vxlan: add MDB data path support
   - gve: add XDP support for GQI-QPL format
   - geneve: accept every ethertype
   - macvlan: allow some packets to bypass broadcast queue
   - mana: add support for jumbo frame

 - Ethernet high-speed switches:
   - Microchip (sparx5): Add support for TC flower templates.

 - Ethernet embedded switches:
   - Broadcom (b54):
     - configure 6318 and 63268 RGMII ports
   - Marvell (mv88e6xxx):
     - faster C45 bus scan
   - Microchip:
     - lan966x:
       - add support for IS1 VCAP
       - better TX/RX from/to CPU performances
     - ksz9477: add ETS Qdisc support
     - ksz8: enhance static MAC table operations and error handling
     - sama7g5: add PTP capability
   - NXP (ocelot):
     - add support for external ports
     - add support for preemptible traffic classes
   - Texas Instruments:
     - add CPSWxG SGMII support for J7200 and J721E

 - Intel WiFi (iwlwifi):
   - preparation for Wi-Fi 7 EHT and multi-link support
   - EHT (Wi-Fi 7) sniffer support
   - hardware timestamping support for some devices/firwmares
   - TX beacon protection on newer hardware

 - Qualcomm 802.11ax WiFi (ath11k):
   - MU-MIMO parameters support
   - ack signal support for management packets

 - RealTek WiFi (rtw88):
   - SDIO bus support
   - better support for some SDIO devices
     (e.g. MAC address from efuse)

 - RealTek WiFi (rtw89):
   - HW scan support for 8852b
   - better support for 6 GHz scanning
   - support for various newer firmware APIs
   - framework firmware backwards compatibility

 - MediaTek WiFi (mt76):
   - P2P support
   - mesh A-MSDU support
   - EHT (Wi-Fi 7) support
   - coredump support

Signed-off-by: Paolo Abeni <pabeni@redhat.com>