]> Git Repo - linux.git/commitdiff
Merge tag 'net-next-6.11' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev...
authorLinus Torvalds <[email protected]>
Wed, 17 Jul 2024 02:28:34 +0000 (19:28 -0700)
committerLinus Torvalds <[email protected]>
Wed, 17 Jul 2024 02:28:34 +0000 (19:28 -0700)
Pull networking updates from Jakub Kicinski:
 "Not much excitement - a handful of large patchsets (devmem among them)
  did not make it in time.

  Core & protocols:

   - Use local_lock in addition to local_bh_disable() to protect per-CPU
     resources in networking, a step closer for local_bh_disable() not
     to act as a big lock on PREEMPT_RT

   - Use flex array for netdevice priv area, ensure its cache alignment

   - Add a sysctl knob to allow user to specify a default rto_min at
     socket init time. Bit of a big hammer but multiple companies were
     independently carrying such patch downstream so clearly it's useful

   - Support scheduling transmission of packets based on CLOCK_TAI

   - Un-pin TCP TIMEWAIT timer to avoid it firing on CPUs later cordoned
     off using cpusets

   - Support multiple L2TPv3 UDP tunnels using the same 5-tuple address

   - Allow configuration of multipath hash seed, to both allow
     synchronizing hashing of two routers, and preventing partial
     accidental sync

   - Improve TCP compliance with RFC 9293 for simultaneous connect()

   - Support sending NAT keepalives in IPsec ESP in UDP states.
     Userspace IKE daemon had to do this before, but the kernel can
     better keep track of it

   - Support sending supervision HSR frames with MAC addresses stored in
     ProxyNodeTable when RedBox (i.e. HSR-SAN) is enabled

   - Introduce IPPROTO_SMC for selecting SMC when socket is created

   - Allow UDP GSO transmit from devices with no checksum offload

   - openvswitch: add packet sampling via psample, separating the
     sampled traffic from "upcall" packets sent to user space for
     forwarding

   - nf_tables: shrink memory consumption for transaction objects

  Things we sprinkled into general kernel code:

   - Power Sequencing subsystem (used by Qualcomm Bluetooth driver for
     QCA6390)           [ Already merged separately - Linus ]

   - Add IRQ information in sysfs for auxiliary bus

   - Introduce guard definition for local_lock

   - Add aligned flavor of __cacheline_group_{begin, end}() markings for
     grouping fields in structures

  BPF:

   - Notify user space (via epoll) when a struct_ops object is getting
     detached/unregistered

   - Add new kfuncs for a generic, open-coded bits iterator

   - Enable BPF programs to declare arrays of kptr, bpf_rb_root, and
     bpf_list_head

   - Support resilient split BTF which cuts down on duplication and
     makes BTF as compact as possible WRT BTF from modules

   - Add support for dumping kfunc prototypes from BTF which enables
     both detecting as well as dumping compilable prototypes for kfuncs

   - riscv64 BPF JIT improvements in particular to add 12-argument
     support for BPF trampolines and to utilize bpf_prog_pack for the
     latter

   - Add the capability to offload the netfilter flowtable in XDP layer
     through kfuncs

  Driver API:

   - Allow users to configure IRQ tresholds between which automatic IRQ
     moderation can choose

   - Expand Power Sourcing (PoE) status with power, class and failure
     reason. Support setting power limits

   - Track additional RSS contexts in the core, make sure configuration
     changes don't break them

   - Support IPsec crypto offload for IPv6 ESP and IPv4 UDP-encapsulated
     ESP data paths

   - Support updating firmware on SFP modules

  Tests and tooling:

   - mptcp: use net/lib.sh to manage netns

   - TCP-AO and TCP-MD5: replace debug prints used by tests with
     tracepoints

   - openvswitch: make test self-contained (don't depend on OvS CLI
     tools)

  Drivers:

   - Ethernet high-speed NICs:
      - Broadcom (bnxt):
         - increase the max total outstanding PTP TX packets to 4
         - add timestamping statistics support
         - implement netdev_queue_mgmt_ops
         - support new RSS context API
      - Intel (100G, ice, idpf):
         - implement FEC statistics and dumping signal quality indicators
         - support E825C products (with 56Gbps PHYs)
      - nVidia/Mellanox:
         - support HW-GRO
         - mlx4/mlx5: support per-queue statistics via netlink
         - obey the max number of EQs setting in sub-functions
      - AMD/Solarflare:
         - support new RSS context API
      - AMD/Pensando:
         - ionic: rework fix for doorbell miss to lower overhead and
           skip it on new HW
      - Wangxun:
         - txgbe: support Flow Director perfect filters

   - Ethernet NICs consumer, embedded and virtual:
      - Add driver for Tehuti Networks TN40xx chips
      - Add driver for Meta's internal NIC chips
      - Add driver for Ethernet MAC on Airoha EN7581 SoCs
      - Add driver for Renesas Ethernet-TSN devices
      - Google cloud vNIC:
         - flow steering support
      - Microsoft vNIC:
         - support page sizes other than 4KB on ARM64
      - vmware vNIC:
         - support latency measurement (update to version 9)
      - VirtIO net:
         - support for Byte Queue Limits
         - support configuring thresholds for automatic IRQ moderation
         - support for AF_XDP Rx zero-copy
      - Synopsys (stmmac):
         - support for STM32MP13 SoC
         - let platforms select the right PCS implementation
      - TI:
         - icssg-prueth: add multicast filtering support
         - icssg-prueth: enable PTP timestamping and PPS
      - Renesas:
         - ravb: improve Rx performance 30-400% by using page pool,
           theaded NAPI and timer-based IRQ coalescing
         - ravb: add MII support for R-Car V4M
      - Cadence (macb):
         - macb: add ARP support to Wake-On-LAN
      - Cortina:
         - use phylib for RX and TX pause configuration

   - Ethernet switches:
      - nVidia/Mellanox:
         - support configuration of multipath hash seed
         - report more accurate max MTU
         - use page_pool to improve Rx performance
      - MediaTek:
         - mt7530: add support for bridge port isolation
      - Qualcomm:
         - qca8k: add support for bridge port isolation
      - Microchip:
         - lan9371/2: add 100BaseTX PHY support
      - NXP:
         - vsc73xx: implement VLAN operations

   - Ethernet PHYs:
      - aquantia: enable support for aqr115c
      - aquantia: add support for PHY LEDs
      - realtek: add support for rtl8224 2.5Gbps PHY
      - xpcs: add memory-mapped device support
      - add BroadR-Reach link mode and support in Broadcom's PHY driver

   - CAN:
      - add document for ISO 15765-2 protocol support
      - mcp251xfd: workaround for erratum DS80000789E, use timestamps to
        catch when device returns incorrect FIFO status

   - WiFi:
      - mac80211/cfg80211:
         - parse Transmit Power Envelope (TPE) data in mac80211 instead
           of in drivers
         - improvements for 6 GHz regulatory flexibility
         - multi-link improvements
         - support multiple radios per wiphy
         - remove DEAUTH_NEED_MGD_TX_PREP flag
      - Intel (iwlwifi):
         - bump FW API to 91 for BZ/SC devices
         - report 64-bit radiotap timestamp
         - enable P2P low latency by default
         - handle Transmit Power Envelope (TPE) advertised by AP
         - remove support for older FW for new devices
         - fast resume (keeping the device configured)
         - mvm: re-enable Multi-Link Operation (MLO)
         - aggregation (A-MSDU) optimizations
      - MediaTek (mt76):
         - mt7925 Multi-Link Operation (MLO) support
      - Qualcomm (ath10k):
         - LED support for various chipsets
      - Qualcomm (ath12k):
         - remove unsupported Tx monitor handling
         - support channel 2 in 6 GHz band
         - support Spatial Multiplexing Power Save (SMPS) in 6 GHz band
         - supprt multiple BSSID (MBSSID) and Enhanced Multi-BSSID
           Advertisements (EMA)
         - support dynamic VLAN
         - add panic handler for resetting the firmware state
         - DebugFS support for datapath statistics
         - WCN7850: support for Wake on WLAN
      - Microchip (wilc1000):
         - read MAC address during probe to make it visible to user space
         - suspend/resume improvements
      - TI (wl18xx):
         - support newer firmware versions
      - RealTek (rtw89):
         - preparation for RTL8852BE-VT support
         - Wake on WLAN support for WiFi 6 chips
         - 36-bit PCI DMA support
      - RealTek (rtlwifi):
         - RTL8192DU support
      - Broadcom (brcmfmac):
         - Management Frame Protection support (to enable WPA3)

   - Bluetooth:
      - qualcomm: use the power sequencer for QCA6390
      - btusb: mediatek: add ISO data transmission functions
      - hci_bcm4377: add BCM4388 support
      - btintel: add support for BlazarU core
      - btintel: add support for Whale Peak2
      - btnxpuart: add support for AW693 A1 chipset
      - btnxpuart: add support for IW615 chipset
      - btusb: add Realtek RTL8852BE support ID 0x13d3:0x3591"

* tag 'net-next-6.11' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (1589 commits)
  eth: fbnic: Fix spelling mistake "tiggerring" -> "triggering"
  tcp: Replace strncpy() with strscpy()
  wifi: ath12k: fix build vs old compiler
  tcp: Don't access uninit tcp_rsk(req)->ao_keyid in tcp_create_openreq_child().
  eth: fbnic: Write the TCAM tables used for RSS control and Rx to host
  eth: fbnic: Add L2 address programming
  eth: fbnic: Add basic Rx handling
  eth: fbnic: Add basic Tx handling
  eth: fbnic: Add link detection
  eth: fbnic: Add initial messaging to notify FW of our presence
  eth: fbnic: Implement Rx queue alloc/start/stop/free
  eth: fbnic: Implement Tx queue alloc/start/stop/free
  eth: fbnic: Allocate a netdevice and napi vectors with queues
  eth: fbnic: Add FW communication mechanism
  eth: fbnic: Add message parsing for FW messages
  eth: fbnic: Add register init to set PCIe/Ethernet device config
  eth: fbnic: Allocate core device specific structures and devlink interface
  eth: fbnic: Add scaffolding for Meta's NIC driver
  PCI: Add Meta Platforms vendor ID
  net/sched: cls_flower: propagate tca[TCA_OPTIONS] to NL_REQ_ATTR_CHECK
  ...

1  2 
MAINTAINERS
arch/arm/boot/dts/rockchip/rk3066a.dtsi
drivers/net/ethernet/intel/ice/ice_ptp.c
drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c
drivers/net/wireless/intel/iwlwifi/mvm/tt.c
include/linux/sched.h
include/linux/socket.h
io_uring/net.c

diff --combined MAINTAINERS
index 03d24edf3f35f45c70c03baea1eac71159f39355,dd4297ea41f960a6db3c7b1e3ede7b130bc955c3..1928b80944435332420d621be637f8fbceb711a5
@@@ -682,6 -682,15 +682,15 @@@ S:       Supporte
  F:    fs/aio.c
  F:    include/linux/*aio*.h
  
+ AIROHA ETHERNET DRIVER
+ M:    Lorenzo Bianconi <[email protected]>
+ L:    [email protected] (moderated for non-subscribers)
+ L:    [email protected] (moderated for non-subscribers)
+ L:    [email protected]
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/net/airoha,en7581-eth.yaml
+ F:    drivers/net/ethernet/mediatek/airoha_eth.c
  AIROHA SPI SNFI DRIVER
  M:    Lorenzo Bianconi <[email protected]>
  M:    Ray Liu <[email protected]>
@@@ -846,6 -855,12 +855,6 @@@ ALPS PS/2 TOUCHPAD DRIVE
  R:    Pali Rohár <[email protected]>
  F:    drivers/input/mouse/alps.*
  
 -ALTERA I2C CONTROLLER DRIVER
 -M:    Thor Thayer <[email protected]>
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/i2c/i2c-altera.txt
 -F:    drivers/i2c/busses/i2c-altera.c
 -
  ALTERA MAILBOX DRIVER
  M:    Mun Yew Tham <[email protected]>
  S:    Maintained
@@@ -865,6 -880,21 +874,6 @@@ L:        [email protected]
  S:    Maintained
  F:    drivers/gpio/gpio-altera.c
  
 -ALTERA SYSTEM MANAGER DRIVER
 -M:    Thor Thayer <[email protected]>
 -S:    Maintained
 -F:    drivers/mfd/altera-sysmgr.c
 -F:    include/linux/mfd/altera-sysmgr.h
 -
 -ALTERA SYSTEM RESOURCE DRIVER FOR ARRIA10 DEVKIT
 -M:    Thor Thayer <[email protected]>
 -S:    Maintained
 -F:    drivers/gpio/gpio-altera-a10sr.c
 -F:    drivers/mfd/altera-a10sr.c
 -F:    drivers/reset/reset-a10sr.c
 -F:    include/dt-bindings/reset/altr,rst-mgr-a10sr.h
 -F:    include/linux/mfd/altera-a10sr.h
 -
  ALTERA TRIPLE SPEED ETHERNET DRIVER
  M:    Joyce Ooi <[email protected]>
  L:    [email protected]
@@@ -1887,15 -1917,6 +1896,15 @@@ F:    include/dt-bindings/reset/actions,
  F:    include/linux/soc/actions/
  N:    owl
  
 +ARM/AIROHA SOC SUPPORT
 +M:    Matthias Brugger <[email protected]>
 +M:    AngeloGioacchino Del Regno <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Odd Fixes
 +F:    arch/arm/boot/dts/airoha/
 +F:    arch/arm64/boot/dts/airoha/
 +
  ARM/Allwinner SoC Clock Support
  M:    Emilio López <[email protected]>
  S:    Maintained
@@@ -1918,16 -1939,6 +1927,16 @@@ N:    allwinne
  N:    sun[x456789]i
  N:    sun[25]0i
  
 +ARM/ALPHASCALE ARCHITECTURE
 +M:    Krzysztof Kozlowski <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Odd Fixes
 +F:    arch/arm/boot/dts/alphascale/
 +F:    drivers/clk/clk-asm9260.c
 +F:    drivers/clocksource/asm9260_timer.c
 +F:    drivers/rtc/rtc-asm9260.c
 +F:    drivers/watchdog/asm9260_wdt.c
 +
  ARM/AMD PENSANDO ARM64 ARCHITECTURE
  M:    Brad Larson <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -1983,9 -1994,10 +1992,9 @@@ F:     drivers/soc/amlogic
  N:    meson
  
  ARM/Annapurna Labs ALPINE ARCHITECTURE
 -M:    Tsahee Zidenberg <[email protected]>
  M:    Antoine Tenart <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 +S:    Odd Fixes
  F:    arch/arm/boot/dts/amazon/
  F:    arch/arm/mach-alpine/
  F:    arch/arm64/boot/dts/amazon/
@@@ -2090,14 -2102,6 +2099,14 @@@ F:    arch/arm/boot/dts/aspeed
  F:    arch/arm/mach-aspeed/
  N:    aspeed
  
 +ARM/AXM LSI SOC
 +M:    Krzysztof Kozlowski <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Odd Fixes
 +F:    Documentation/devicetree/bindings/arm/axxia.yaml
 +F:    arch/arm/boot/dts/intel/axm/
 +F:    arch/arm/mach-axxia/
 +
  ARM/BITMAIN ARCHITECTURE
  M:    Manivannan Sadhasivam <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -2211,14 -2215,11 +2220,14 @@@ M:   Marek Behún <[email protected]
  S:    Maintained
  W:    https://www.turris.cz/
  F:    Documentation/ABI/testing/debugfs-moxtet
 +F:    Documentation/ABI/testing/sysfs-bus-i2c-devices-turris-omnia-mcu
  F:    Documentation/ABI/testing/sysfs-bus-moxtet-devices
  F:    Documentation/ABI/testing/sysfs-firmware-turris-mox-rwtm
  F:    Documentation/devicetree/bindings/bus/moxtet.txt
  F:    Documentation/devicetree/bindings/firmware/cznic,turris-mox-rwtm.txt
 +F:    Documentation/devicetree/bindings/firmware/cznic,turris-omnia-mcu.yaml
  F:    Documentation/devicetree/bindings/gpio/gpio-moxtet.txt
 +F:    Documentation/devicetree/bindings/interrupt-controller/marvell,mpic.yaml
  F:    Documentation/devicetree/bindings/leds/cznic,turris-omnia-leds.yaml
  F:    Documentation/devicetree/bindings/watchdog/armada-37xx-wdt.txt
  F:    drivers/bus/moxtet.c
@@@ -2226,12 -2227,10 +2235,12 @@@ F:   drivers/firmware/turris-mox-rwtm.
  F:    drivers/gpio/gpio-moxtet.c
  F:    drivers/leds/leds-turris-omnia.c
  F:    drivers/mailbox/armada-37xx-rwtm-mailbox.c
 +F:    drivers/platform/cznic/
  F:    drivers/watchdog/armada_37xx_wdt.c
  F:    include/dt-bindings/bus/moxtet.h
  F:    include/linux/armada-37xx-rwtm-mailbox.h
  F:    include/linux/moxtet.h
 +F:    include/linux/turris-omnia-mcu-interface.h
  
  ARM/FARADAY FA526 PORT
  M:    Hans Ulli Kroll <[email protected]>
@@@ -2533,15 -2532,6 +2542,15 @@@ F:    arch/arm/boot/dts/socionext/milbeaut
  F:    arch/arm/mach-milbeaut/
  N:    milbeaut
  
 +ARM/MOXA ART SOC
 +M:    Krzysztof Kozlowski <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Odd Fixes
 +F:    Documentation/devicetree/bindings/arm/moxart.yaml
 +F:    Documentation/devicetree/bindings/clock/moxa,moxart-clock.txt
 +F:    arch/arm/boot/dts/moxa/
 +F:    drivers/clk/clk-moxart.c
 +
  ARM/MStar/Sigmastar Armv7 SoC support
  M:    Daniel Palmer <[email protected]>
  M:    Romain Perier <[email protected]>
@@@ -3052,15 -3042,6 +3061,15 @@@ F:    Documentation/devicetree/bindings/hw
  F:    arch/arm64/boot/dts/ti/Makefile
  F:    arch/arm64/boot/dts/ti/k3-*
  
 +ARM/TEXAS INSTRUMENTS NSPIRE ARCHITECTURE
 +M:    Krzysztof Kozlowski <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Odd Fixes
 +F:    Documentation/devicetree/bindings/*/*/ti,nspire*
 +F:    Documentation/devicetree/bindings/*/ti,nspire*
 +F:    Documentation/devicetree/bindings/arm/ti/nspire.yaml
 +F:    arch/arm/boot/dts/nspire/
 +
  ARM/TOSHIBA VISCONTI ARCHITECTURE
  M:    Nobuhiro Iwamatsu <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -3130,12 -3111,9 +3139,12 @@@ W:    http://www.armlinux.org.uk
  F:    arch/arm/vfp/
  
  ARM/VT8500 ARM ARCHITECTURE
 +M:    Alexey Charkov <[email protected]>
 +M:    Krzysztof Kozlowski <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
 -S:    Orphan
 +S:    Odd Fixes
  F:    Documentation/devicetree/bindings/i2c/i2c-wmt.txt
 +F:    arch/arm/boot/dts/vt8500/
  F:    arch/arm/mach-vt8500/
  F:    drivers/clocksource/timer-vt8500.c
  F:    drivers/i2c/busses/i2c-viai2c-wmt.c
@@@ -3601,15 -3579,6 +3610,15 @@@ W:    https://ez.analog.com/linux-software
  F:    Documentation/devicetree/bindings/spi/adi,axi-spi-engine.yaml
  F:    drivers/spi/spi-axi-spi-engine.c
  
 +AXI PWM GENERATOR
 +M:    Michael Hennerich <[email protected]>
 +M:    Nuno Sá <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +W:    https://ez.analog.com/linux-software-drivers
 +F:    Documentation/devicetree/bindings/pwm/adi,axi-pwmgen.yaml
 +F:    drivers/pwm/pwm-axi-pwmgen.c
 +
  AXXIA I2C CONTROLLER
  M:    Krzysztof Adamski <[email protected]>
  L:    [email protected]
@@@ -3820,20 -3789,6 +3829,20 @@@ F:    include/linux/blk
  F:    kernel/trace/blktrace.c
  F:    lib/sbitmap.c
  
 +BLOCK LAYER DEVICE DRIVER API [RUST]
 +M:    Andreas Hindborg <[email protected]>
 +R:    Boqun Feng <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +W:    https://rust-for-linux.com
 +B:    https://github.com/Rust-for-Linux/linux/issues
 +C:    https://rust-for-linux.zulipchat.com/#narrow/stream/Block
 +T:    git https://github.com/Rust-for-Linux/linux.git rust-block-next
 +F:    drivers/block/rnull.rs
 +F:    rust/kernel/block.rs
 +F:    rust/kernel/block/
 +
  BLOCK2MTD DRIVER
  M:    Joern Engel <[email protected]>
  L:    [email protected]
@@@ -4896,6 -4851,7 +4905,7 @@@ W:      https://github.com/linux-ca
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git
  F:    Documentation/networking/can.rst
+ F:    Documentation/networking/iso15765-2.rst
  F:    include/linux/can/can-ml.h
  F:    include/linux/can/core.h
  F:    include/linux/can/skb.h
@@@ -5189,25 -5145,11 +5199,25 @@@ S:   Maintaine
  F:    Documentation/devicetree/bindings/sound/google,cros-ec-codec.yaml
  F:    sound/soc/codecs/cros_ec_codec.*
  
 +CHROMEOS EC CHARGE CONTROL
 +M:    Thomas Weißschuh <[email protected]>
 +S:    Maintained
 +F:    drivers/power/supply/cros_charge-control.c
 +
 +CHROMEOS EC HARDWARE MONITORING
 +M:    Thomas Weißschuh <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/hwmon/cros_ec_hwmon.rst
 +F:    drivers/hwmon/cros_ec_hwmon.c
 +
  CHROMEOS EC SUBDRIVERS
  M:    Benson Leung <[email protected]>
  R:    Guenter Roeck <[email protected]>
  L:    [email protected]
  S:    Maintained
 +F:    drivers/power/supply/cros_charge-control.c
  F:    drivers/power/supply/cros_usbpd-charger.c
  N:    cros_ec
  N:    cros-ec
@@@ -5603,7 -5545,6 +5613,7 @@@ CONTROL GROUP (CGROUP
  M:    Tejun Heo <[email protected]>
  M:    Zefan Li <[email protected]>
  M:    Johannes Weiner <[email protected]>
 +M:    Michal Koutný <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git
@@@ -8285,9 -8226,7 +8295,9 @@@ S:      Supporte
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/execve
  F:    Documentation/userspace-api/ELF.rst
  F:    fs/*binfmt_*.c
 +F:    fs/Kconfig.binfmt
  F:    fs/exec.c
 +F:    fs/exec_test.c
  F:    include/linux/binfmts.h
  F:    include/linux/elf.h
  F:    include/uapi/linux/binfmts.h
@@@ -8552,7 -8491,6 +8562,7 @@@ R:      Darrick J. Wong <[email protected]
  L:    [email protected]
  L:    [email protected]
  S:    Supported
 +F:    Documentation/filesystems/iomap/*
  F:    fs/iomap/
  F:    include/linux/iomap.h
  
@@@ -8779,7 -8717,7 +8789,7 @@@ FREESCALE DSPI DRIVE
  M:    Vladimir Oltean <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/spi/spi-fsl-dspi.txt
 +F:    Documentation/devicetree/bindings/spi/fsl,dspi*.yaml
  F:    drivers/spi/spi-fsl-dspi.c
  F:    include/linux/spi/spi-fsl-dspi.h
  
@@@ -8880,14 -8818,14 +8890,14 @@@ M:   Madalin Bucur <[email protected]
  R:    Sean Anderson <[email protected]>
  L:    [email protected]
  S:    Maintained
- F:    Documentation/devicetree/bindings/net/fsl-fman.txt
+ F:    Documentation/devicetree/bindings/net/fsl,fman*.yaml
  F:    drivers/net/ethernet/freescale/fman
  
  FREESCALE QORIQ PTP CLOCK DRIVER
  M:    Yangbo Lu <[email protected]>
  L:    [email protected]
  S:    Maintained
- F:    Documentation/devicetree/bindings/ptp/ptp-qoriq.txt
+ F:    Documentation/devicetree/bindings/ptp/fsl,ptp.yaml
  F:    drivers/net/ethernet/freescale/dpaa2/dpaa2-ptp*
  F:    drivers/net/ethernet/freescale/dpaa2/dprtc*
  F:    drivers/net/ethernet/freescale/enetc/enetc_ptp.c
@@@ -11123,8 -11061,8 +11133,8 @@@ F:   include/drm/xe
  F:    include/uapi/drm/xe_drm.h
  
  INTEL ETHERNET DRIVERS
- M:    Jesse Brandeburg <[email protected]>
  M:    Tony Nguyen <[email protected]>
+ M:    Przemek Kitszel <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
  W:    https://www.intel.com/content/www/us/en/support.html
@@@ -11216,7 -11154,6 +11226,7 @@@ R:   Tony Luck <[email protected]
  S:    Maintained
  F:    drivers/platform/x86/intel/ifs
  F:    include/trace/events/intel_ifs.h
 +F:    tools/testing/selftests/drivers/platform/x86/intel/ifs/
  
  INTEL INTEGRATED SENSOR HUB DRIVER
  M:    Srinivas Pandruvada <[email protected]>
@@@ -11644,7 -11581,7 +11654,7 @@@ F:   include/linux/iosys-map.
  
  IO_URING
  M:    Jens Axboe <[email protected]>
 -R:    Pavel Begunkov <[email protected]>
 +M:    Pavel Begunkov <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.dk/linux-block
@@@ -12035,7 -11972,6 +12045,7 @@@ F:   arch/*/configs/hardening.confi
  F:    include/linux/overflow.h
  F:    include/linux/randomize_kstack.h
  F:    kernel/configs/hardening.config
 +F:    lib/usercopy_kunit.c
  F:    mm/usercopy.c
  K:    \b(add|choose)_random_kstack_offset\b
  K:    \b__check_(object_size|heap_object)\b
@@@ -12523,6 -12459,7 +12533,7 @@@ LANTIQ / INTEL Ethernet driver
  M:    Hauke Mehrtens <[email protected]>
  L:    [email protected]
  S:    Maintained
+ F:    Documentation/devicetree/bindings/net/dsa/lantiq,gswip.yaml
  F:    drivers/net/dsa/lantiq_gswip.c
  F:    drivers/net/dsa/lantiq_pce.h
  F:    drivers/net/ethernet/lantiq_xrx200.c
@@@ -13042,7 -12979,6 +13053,7 @@@ F:   Documentation/arch/loongarch
  F:    Documentation/translations/zh_CN/arch/loongarch/
  F:    arch/loongarch/
  F:    drivers/*/*loongarch*
 +F:    drivers/cpufreq/loongson3_cpufreq.c
  
  LOONGSON GPIO DRIVER
  M:    Yinbo Zhu <[email protected]>
@@@ -14643,6 -14579,13 +14654,13 @@@ T: git git://linuxtv.org/media_tree.gi
  F:    Documentation/devicetree/bindings/media/amlogic,gx-vdec.yaml
  F:    drivers/staging/media/meson/vdec/
  
+ META ETHERNET DRIVERS
+ M:    Alexander Duyck <[email protected]>
+ M:    Jakub Kicinski <[email protected]>
+ R:    [email protected]
+ S:    Supported
+ F:    drivers/net/ethernet/meta/
  METHODE UDPU SUPPORT
  M:    Robert Marko <[email protected]>
  S:    Maintained
@@@ -14924,7 -14867,6 +14942,7 @@@ MICROCHIP SOC DRIVER
  M:    Conor Dooley <[email protected]>
  S:    Supported
  T:    git https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/
 +F:    Documentation/devicetree/bindings/soc/microchip/
  F:    drivers/soc/microchip/
  
  MICROCHIP SPI DRIVER
@@@ -15332,27 -15274,6 +15350,27 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/leds/backlight/mps,mp3309c.yaml
  F:    drivers/video/backlight/mp3309c.c
  
 +MPS MP2891 DRIVER
 +M:    Noah Wang <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/hwmon/mp2891.rst
 +F:    drivers/hwmon/pmbus/mp2891.c
 +
 +MPS MP2993 DRIVER
 +M:    Noah Wang <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/hwmon/mp2993.rst
 +F:    drivers/hwmon/pmbus/mp2993.c
 +
 +MPS MP9941 DRIVER
 +M:    Noah Wang <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/hwmon/mp9941.rst
 +F:    drivers/hwmon/pmbus/mp9941.c
 +
  MR800 AVERMEDIA USB FM RADIO DRIVER
  M:    Alexey Klimov <[email protected]>
  L:    [email protected]
@@@ -15847,7 -15768,7 +15865,7 @@@ B:   https://github.com/multipath-tcp/mpt
  T:    git https://github.com/multipath-tcp/mptcp_net-next.git export-net
  T:    git https://github.com/multipath-tcp/mptcp_net-next.git export
  F:    Documentation/netlink/specs/mptcp_pm.yaml
- F:    Documentation/networking/mptcp-sysctl.rst
+ F:    Documentation/networking/mptcp*.rst
  F:    include/net/mptcp.h
  F:    include/trace/events/mptcp.h
  F:    include/uapi/linux/mptcp*.h
@@@ -15864,8 -15785,13 +15882,13 @@@ F: include/linux/tcp.
  F:    include/net/tcp.h
  F:    include/trace/events/tcp.h
  F:    include/uapi/linux/tcp.h
+ F:    net/ipv4/inet_connection_sock.c
+ F:    net/ipv4/inet_hashtables.c
+ F:    net/ipv4/inet_timewait_sock.c
  F:    net/ipv4/syncookies.c
  F:    net/ipv4/tcp*.c
+ F:    net/ipv6/inet6_connection_sock.c
+ F:    net/ipv6/inet6_hashtables.c
  F:    net/ipv6/syncookies.c
  F:    net/ipv6/tcp*.c
  
@@@ -16427,6 -16353,7 +16450,6 @@@ S:   Maintaine
  F:    arch/arm/*omap*/*clock*
  
  OMAP DEVICE TREE SUPPORT
 -M:    Benoît Cousson <[email protected]>
  M:    Tony Lindgren <[email protected]>
  L:    [email protected]
  L:    [email protected]
@@@ -16481,6 -16408,7 +16504,6 @@@ S:   Maintaine
  F:    arch/arm/mach-omap2/omap_hwmod*data*
  
  OMAP HWMOD SUPPORT
 -M:    Benoît Cousson <[email protected]>
  M:    Paul Walmsley <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -17447,14 -17375,6 +17470,14 @@@ F: Documentation/driver-api/pci/p2pdma.
  F:    drivers/pci/p2pdma.c
  F:    include/linux/pci-p2pdma.h
  
 +PCI POWER CONTROL
 +M:    Bartosz Golaszewski <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git
 +F:    drivers/pci/pwrctl/*
 +F:    include/linux/pci-pwrctl.h
 +
  PCI SUBSYSTEM
  M:    Bjorn Helgaas <[email protected]>
  L:    [email protected]
@@@ -18717,14 -18637,6 +18740,14 @@@ F: Documentation/networking/device_driv
  F:    drivers/net/ethernet/qualcomm/rmnet/
  F:    include/linux/if_rmnet.h
  
 +QUALCOMM TRUST ZONE MEMORY ALLOCATOR
 +M:    Bartosz Golaszewski <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/firmware/qcom/qcom_tzmem.c
 +F:    drivers/firmware/qcom/qcom_tzmem.h
 +F:    include/linux/firmware/qcom/qcom_tzmem.h
 +
  QUALCOMM TSENS THERMAL DRIVER
  M:    Amit Kucheria <[email protected]>
  M:    Thara Gopinath <[email protected]>
@@@ -18988,7 -18900,6 +19011,7 @@@ M:   Neeraj Upadhyay <neeraj.upadhyay@ker
  M:    Joel Fernandes <[email protected]>
  M:    Josh Triplett <[email protected]>
  M:    Boqun Feng <[email protected]>
 +M:    Uladzislau Rezki <[email protected]>
  R:    Steven Rostedt <[email protected]>
  R:    Mathieu Desnoyers <[email protected]>
  R:    Lai Jiangshan <[email protected]>
@@@ -19154,6 -19065,14 +19177,14 @@@ F: drivers/net/ethernet/renesas/Makefil
  F:    drivers/net/ethernet/renesas/rcar_gen4*
  F:    drivers/net/ethernet/renesas/rswitch*
  
+ RENESAS ETHERNET TSN DRIVER
+ M:    Niklas Söderlund <[email protected]>
+ L:    [email protected]
+ L:    [email protected]
+ S:    Supported
+ F:    Documentation/devicetree/bindings/net/renesas,ethertsn.yaml
+ F:    drivers/net/ethernet/renesas/rtsn.*
  RENESAS IDT821034 ASoC CODEC
  M:    Herve Codina <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
  F:    Documentation/devicetree/bindings/thermal/rcar-gen3-thermal.yaml
  F:    Documentation/devicetree/bindings/thermal/rcar-thermal.yaml
 -F:    drivers/thermal/rcar_gen3_thermal.c
 -F:    drivers/thermal/rcar_thermal.c
 +F:    drivers/thermal/renesas/rcar_gen3_thermal.c
 +F:    drivers/thermal/renesas/rcar_thermal.c
  
  RENESAS RIIC DRIVER
  M:    Chris Brandt <[email protected]>
@@@ -19427,7 -19346,6 +19458,7 @@@ F:   arch/riscv/boot/dts
  X:    arch/riscv/boot/dts/allwinner/
  X:    arch/riscv/boot/dts/renesas/
  X:    arch/riscv/boot/dts/sophgo/
 +X:    arch/riscv/boot/dts/thead/
  
  RISC-V PMU DRIVERS
  M:    Atish Patra <[email protected]>
@@@ -19444,7 -19362,6 +19475,7 @@@ M:   Guo Ren <[email protected]
  M:    Fu Wei <[email protected]>
  L:    [email protected]
  S:    Maintained
 +T:    git https://github.com/pdp7/linux.git
  F:    arch/riscv/boot/dts/thead/
  
  RNBD BLOCK DRIVERS
@@@ -20049,6 -19966,7 +20080,6 @@@ R:   Dietmar Eggemann <dietmar.eggemann@a
  R:    Steven Rostedt <[email protected]> (SCHED_FIFO/SCHED_RR)
  R:    Ben Segall <[email protected]> (CONFIG_CFS_BANDWIDTH)
  R:    Mel Gorman <[email protected]> (CONFIG_NUMA_BALANCING)
 -R:    Daniel Bristot de Oliveira <[email protected]> (SCHED_DEADLINE)
  R:    Valentin Schneider <[email protected]> (TOPOLOGY)
  L:    [email protected]
  S:    Maintained
@@@ -20221,7 -20139,6 +20252,7 @@@ SECURE DIGITAL HOST CONTROLLER INTERFAC
  M:    Haibo Chen <[email protected]>
  L:    [email protected]
  L:    [email protected]
 +L:    [email protected]
  S:    Maintained
  F:    drivers/mmc/host/sdhci-esdhc-imx.c
  
@@@ -21404,9 -21321,9 +21435,9 @@@ F:   drivers/staging
  
  STANDALONE CACHE CONTROLLER DRIVERS
  M:    Conor Dooley <[email protected]>
 -L:    [email protected]
  S:    Maintained
  T:    git https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/
 +F:    Documentation/devicetree/bindings/cache/
  F:    drivers/cache
  
  STARFIRE/DURALAN NETWORK DRIVER
@@@ -21919,7 -21836,6 +21950,7 @@@ F:   drivers/mfd/syscon.
  SYSTEM CONTROL & POWER/MANAGEMENT INTERFACE (SCPI/SCMI) Message Protocol drivers
  M:    Sudeep Holla <[email protected]>
  R:    Cristian Marussi <[email protected]>
 +L:    [email protected]
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/devicetree/bindings/firmware/arm,sc[mp]i.yaml
@@@ -22262,7 -22178,13 +22293,13 @@@ TEHUTI ETHERNET DRIVE
  M:    Andy Gospodarek <[email protected]>
  L:    [email protected]
  S:    Supported
- F:    drivers/net/ethernet/tehuti/*
+ F:    drivers/net/ethernet/tehuti/tehuti.*
+ TEHUTI TN40XX ETHERNET DRIVER
+ M:    FUJITA Tomonori <[email protected]>
+ L:    [email protected]
+ S:    Maintained
+ F:    drivers/net/ethernet/tehuti/tn40*
  
  TELECOM CLOCK DRIVER FOR MCPL0010
  M:    Mark Gross <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ti/linux.git
 +F:    Documentation/devicetree/bindings/soc/ti/ti,pruss.yaml
  F:    drivers/pmdomain/ti/omap_prm.c
  F:    drivers/soc/ti/*
  
@@@ -23770,6 -23691,12 +23807,6 @@@ M:  Kevin Brace <kevinbrace@bracecompute
  S:    Maintained
  F:    drivers/net/ethernet/via/via-rhine.c
  
 -VIA SD/MMC CARD CONTROLLER DRIVER
 -M:    Bruce Chang <[email protected]>
 -M:    Harald Welte <[email protected]>
 -S:    Maintained
 -F:    drivers/mmc/host/via-sdmmc.c
 -
  VIA UNICHROME(PRO)/CHROME9 FRAMEBUFFER DRIVER
  M:    Florian Tobias Schandinat <[email protected]>
  L:    [email protected]
@@@ -23982,8 -23909,8 +24019,8 @@@ S:   Maintaine
  F:    drivers/vhost/scsi.c
  
  VIRTIO I2C DRIVER
 -M:    Conghui Chen <[email protected]>
  M:    Viresh Kumar <[email protected]>
 +R:    "Chen, Jian Jun" <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
index 5e0750547ab5be1a92c307945e1a2ce166c7d45a,a187404aab13b9fc909ee033a5f3b163f6622c44..3f6d494597349e7f28a65855705b98f74258f59a
                ports = <&vop0_out>, <&vop1_out>;
        };
  
 +      hdmi_sound: hdmi-sound {
 +              compatible = "simple-audio-card";
 +              simple-audio-card,name = "HDMI";
 +              simple-audio-card,format = "i2s";
 +              simple-audio-card,mclk-fs = <256>;
 +              status = "disabled";
 +
 +              simple-audio-card,codec {
 +                      sound-dai = <&hdmi>;
 +              };
 +
 +              simple-audio-card,cpu {
 +                      sound-dai = <&i2s0>;
 +              };
 +      };
 +
        sram: sram@10080000 {
                compatible = "mmio-sram";
                reg = <0x10080000 0x10000>;
  &wdt {
        compatible = "rockchip,rk3066-wdt", "snps,dw-wdt";
  };
- &emac {
-       compatible = "rockchip,rk3066-emac";
- };
index 927b623cedd510a97b4fff2751e2742637d397d1,f6e26e1b5ab9b677442aca2d02185812da830a8c..51fac8f18cb0b9d65befcee38a461340ceb9baa2
@@@ -7,8 -7,6 +7,6 @@@
  
  #define E810_OUT_PROP_DELAY_NS 1
  
- #define UNKNOWN_INCVAL_E82X 0x100000000ULL
  static const struct ptp_pin_desc ice_pin_desc_e810t[] = {
        /* name    idx   func         chan */
        { "GNSS",  GNSS, PTP_PF_EXTTS, 0, { 0, } },
@@@ -813,7 -811,7 +811,7 @@@ static enum ice_tx_tstamp_work ice_ptp_
        }
        mutex_unlock(&pf->ptp.ports_owner.lock);
  
-       for (i = 0; i < ICE_MAX_QUAD; i++) {
+       for (i = 0; i < ICE_GET_QUAD_NUM(pf->hw.ptp.num_lports); i++) {
                u64 tstamp_ready;
                int err;
  
@@@ -1013,6 -1011,28 +1011,28 @@@ ice_ptp_release_tx_tracker(struct ice_p
        tx->len = 0;
  }
  
+ /**
+  * ice_ptp_init_tx_eth56g - Initialize tracking for Tx timestamps
+  * @pf: Board private structure
+  * @tx: the Tx tracking structure to initialize
+  * @port: the port this structure tracks
+  *
+  * Initialize the Tx timestamp tracker for this port. ETH56G PHYs
+  * have independent memory blocks for all ports.
+  *
+  * Return: 0 for success, -ENOMEM when failed to allocate Tx tracker
+  */
+ static int ice_ptp_init_tx_eth56g(struct ice_pf *pf, struct ice_ptp_tx *tx,
+                                 u8 port)
+ {
+       tx->block = port;
+       tx->offset = 0;
+       tx->len = INDEX_PER_PORT_ETH56G;
+       tx->has_ready_bitmap = 1;
+       return ice_ptp_alloc_tx_tracker(tx);
+ }
  /**
   * ice_ptp_init_tx_e82x - Initialize tracking for Tx timestamps
   * @pf: Board private structure
  static int
  ice_ptp_init_tx_e82x(struct ice_pf *pf, struct ice_ptp_tx *tx, u8 port)
  {
-       tx->block = port / ICE_PORTS_PER_QUAD;
+       tx->block = ICE_GET_QUAD_NUM(port);
        tx->offset = (port % ICE_PORTS_PER_QUAD) * INDEX_PER_PORT_E82X;
        tx->len = INDEX_PER_PORT_E82X;
        tx->has_ready_bitmap = 1;
@@@ -1210,12 -1230,7 +1230,7 @@@ static u64 ice_base_incval(struct ice_p
        struct ice_hw *hw = &pf->hw;
        u64 incval;
  
-       if (ice_is_e810(hw))
-               incval = ICE_PTP_NOMINAL_INCVAL_E810;
-       else if (ice_e82x_time_ref(hw) < NUM_ICE_TIME_REF_FREQ)
-               incval = ice_e82x_nominal_incval(ice_e82x_time_ref(hw));
-       else
-               incval = UNKNOWN_INCVAL_E82X;
+       incval = ice_get_base_incval(hw);
  
        dev_dbg(ice_pf_to_dev(pf), "PTP: using base increment value of 0x%016llx\n",
                incval);
   */
  static int ice_ptp_check_tx_fifo(struct ice_ptp_port *port)
  {
-       int quad = port->port_num / ICE_PORTS_PER_QUAD;
        int offs = port->port_num % ICE_PORTS_PER_QUAD;
+       int quad = ICE_GET_QUAD_NUM(port->port_num);
        struct ice_pf *pf;
        struct ice_hw *hw;
        u32 val, phy_sts;
@@@ -1348,10 -1363,19 +1363,19 @@@ ice_ptp_port_phy_stop(struct ice_ptp_po
  
        mutex_lock(&ptp_port->ps_lock);
  
-       kthread_cancel_delayed_work_sync(&ptp_port->ov_work);
+       switch (hw->ptp.phy_model) {
+       case ICE_PHY_ETH56G:
+               err = ice_stop_phy_timer_eth56g(hw, port, true);
+               break;
+       case ICE_PHY_E82X:
+               kthread_cancel_delayed_work_sync(&ptp_port->ov_work);
  
-       err = ice_stop_phy_timer_e82x(hw, port, true);
-       if (err)
+               err = ice_stop_phy_timer_e82x(hw, port, true);
+               break;
+       default:
+               err = -ENODEV;
+       }
+       if (err && err != -EBUSY)
                dev_err(ice_pf_to_dev(pf), "PTP failed to set PHY port %d down, err %d\n",
                        port, err);
  
@@@ -1385,27 -1409,39 +1409,39 @@@ ice_ptp_port_phy_restart(struct ice_ptp
  
        mutex_lock(&ptp_port->ps_lock);
  
-       kthread_cancel_delayed_work_sync(&ptp_port->ov_work);
+       switch (hw->ptp.phy_model) {
+       case ICE_PHY_ETH56G:
+               err = ice_start_phy_timer_eth56g(hw, port);
+               break;
+       case ICE_PHY_E82X:
+               /* Start the PHY timer in Vernier mode */
+               kthread_cancel_delayed_work_sync(&ptp_port->ov_work);
  
-       /* temporarily disable Tx timestamps while calibrating PHY offset */
-       spin_lock_irqsave(&ptp_port->tx.lock, flags);
-       ptp_port->tx.calibrating = true;
-       spin_unlock_irqrestore(&ptp_port->tx.lock, flags);
-       ptp_port->tx_fifo_busy_cnt = 0;
+               /* temporarily disable Tx timestamps while calibrating
+                * PHY offset
+                */
+               spin_lock_irqsave(&ptp_port->tx.lock, flags);
+               ptp_port->tx.calibrating = true;
+               spin_unlock_irqrestore(&ptp_port->tx.lock, flags);
+               ptp_port->tx_fifo_busy_cnt = 0;
  
-       /* Start the PHY timer in Vernier mode */
-       err = ice_start_phy_timer_e82x(hw, port);
-       if (err)
-               goto out_unlock;
+               /* Start the PHY timer in Vernier mode */
+               err = ice_start_phy_timer_e82x(hw, port);
+               if (err)
+                       break;
  
-       /* Enable Tx timestamps right away */
-       spin_lock_irqsave(&ptp_port->tx.lock, flags);
-       ptp_port->tx.calibrating = false;
-       spin_unlock_irqrestore(&ptp_port->tx.lock, flags);
+               /* Enable Tx timestamps right away */
+               spin_lock_irqsave(&ptp_port->tx.lock, flags);
+               ptp_port->tx.calibrating = false;
+               spin_unlock_irqrestore(&ptp_port->tx.lock, flags);
  
-       kthread_queue_delayed_work(pf->ptp.kworker, &ptp_port->ov_work, 0);
+               kthread_queue_delayed_work(pf->ptp.kworker, &ptp_port->ov_work,
+                                          0);
+               break;
+       default:
+               err = -ENODEV;
+       }
  
- out_unlock:
        if (err)
                dev_err(ice_pf_to_dev(pf), "PTP failed to set PHY port %d up, err %d\n",
                        port, err);
@@@ -1429,20 -1465,23 +1465,23 @@@ void ice_ptp_link_change(struct ice_pf 
        if (pf->ptp.state != ICE_PTP_READY)
                return;
  
-       if (WARN_ON_ONCE(port >= ICE_NUM_EXTERNAL_PORTS))
+       if (WARN_ON_ONCE(port >= hw->ptp.num_lports))
                return;
  
        ptp_port = &pf->ptp.port;
+       if (ice_is_e825c(hw) && hw->ptp.is_2x50g_muxed_topo)
+               port *= 2;
        if (WARN_ON_ONCE(ptp_port->port_num != port))
                return;
  
        /* Update cached link status for this port immediately */
        ptp_port->link_up = linkup;
  
-       switch (hw->phy_model) {
+       switch (hw->ptp.phy_model) {
        case ICE_PHY_E810:
                /* Do not reconfigure E810 PHY */
                return;
+       case ICE_PHY_ETH56G:
        case ICE_PHY_E82X:
                ice_ptp_port_phy_restart(ptp_port);
                return;
   * @ena: bool value to enable or disable interrupt
   * @threshold: Minimum number of packets at which intr is triggered
   *
-  * Utility function to enable or disable Tx timestamp interrupt and threshold
+  * Utility function to configure all the PHY interrupt settings, including
+  * whether the PHY interrupt is enabled, and what threshold to use. Also
+  * configures The E82X timestamp owner to react to interrupts from all PHYs.
+  *
+  * Return: 0 on success, -EOPNOTSUPP when PHY model incorrect, other error codes
+  * when failed to configure PHY interrupt for E82X
   */
  static int ice_ptp_cfg_phy_interrupt(struct ice_pf *pf, bool ena, u32 threshold)
  {
+       struct device *dev = ice_pf_to_dev(pf);
        struct ice_hw *hw = &pf->hw;
-       int err = 0;
-       int quad;
-       u32 val;
  
        ice_ptp_reset_ts_memory(hw);
  
-       for (quad = 0; quad < ICE_MAX_QUAD; quad++) {
-               err = ice_read_quad_reg_e82x(hw, quad, Q_REG_TX_MEM_GBL_CFG,
-                                            &val);
-               if (err)
-                       break;
+       switch (hw->ptp.phy_model) {
+       case ICE_PHY_ETH56G: {
+               int port;
  
-               if (ena) {
-                       val |= Q_REG_TX_MEM_GBL_CFG_INTR_ENA_M;
-                       val &= ~Q_REG_TX_MEM_GBL_CFG_INTR_THR_M;
-                       val |= FIELD_PREP(Q_REG_TX_MEM_GBL_CFG_INTR_THR_M,
-                                         threshold);
-               } else {
-                       val &= ~Q_REG_TX_MEM_GBL_CFG_INTR_ENA_M;
+               for (port = 0; port < hw->ptp.num_lports; port++) {
+                       int err;
+                       err = ice_phy_cfg_intr_eth56g(hw, port, ena, threshold);
+                       if (err) {
+                               dev_err(dev, "Failed to configure PHY interrupt for port %d, err %d\n",
+                                       port, err);
+                               return err;
+                       }
                }
  
-               err = ice_write_quad_reg_e82x(hw, quad, Q_REG_TX_MEM_GBL_CFG,
-                                             val);
-               if (err)
-                       break;
+               return 0;
        }
+       case ICE_PHY_E82X: {
+               int quad;
  
-       if (err)
-               dev_err(ice_pf_to_dev(pf), "PTP failed in intr ena, err %d\n",
-                       err);
-       return err;
+               for (quad = 0; quad < ICE_GET_QUAD_NUM(hw->ptp.num_lports);
+                    quad++) {
+                       int err;
+                       err = ice_phy_cfg_intr_e82x(hw, quad, ena, threshold);
+                       if (err) {
+                               dev_err(dev, "Failed to configure PHY interrupt for quad %d, err %d\n",
+                                       quad, err);
+                               return err;
+                       }
+               }
+               return 0;
+       }
+       case ICE_PHY_E810:
+               return 0;
+       case ICE_PHY_UNSUP:
+       default:
+               dev_warn(dev, "%s: Unexpected PHY model %d\n", __func__,
+                        hw->ptp.phy_model);
+               return -EOPNOTSUPP;
+       }
  }
  
  /**
@@@ -1767,8 -1826,7 +1826,7 @@@ static int ice_ptp_cfg_clkout(struct ic
         * maintaining phase
         */
        if (start_time < current_time)
-               start_time = div64_u64(current_time + NSEC_PER_SEC - 1,
-                                      NSEC_PER_SEC) * NSEC_PER_SEC + phase;
+               start_time = roundup_u64(current_time, NSEC_PER_SEC) + phase;
  
        if (ice_is_e810(hw))
                start_time -= E810_OUT_PROP_DELAY_NS;
@@@ -1994,11 -2052,14 +2052,14 @@@ ice_ptp_settime64(struct ptp_clock_inf
        struct ice_hw *hw = &pf->hw;
        int err;
  
-       /* For Vernier mode, we need to recalibrate after new settime
-        * Start with disabling timestamp block
+       /* For Vernier mode on E82X, we need to recalibrate after new settime.
+        * Start with marking timestamps as invalid.
         */
-       if (pf->ptp.port.link_up)
-               ice_ptp_port_phy_stop(&pf->ptp.port);
+       if (hw->ptp.phy_model == ICE_PHY_E82X) {
+               err = ice_ptp_clear_phy_offset_ready_e82x(hw);
+               if (err)
+                       dev_warn(ice_pf_to_dev(pf), "Failed to mark timestamps as invalid before settime\n");
+       }
  
        if (!ice_ptp_lock(hw)) {
                err = -EBUSY;
        ice_ptp_enable_all_clkout(pf);
  
        /* Recalibrate and re-enable timestamp blocks for E822/E823 */
-       if (hw->phy_model == ICE_PHY_E82X)
+       if (hw->ptp.phy_model == ICE_PHY_E82X)
                ice_ptp_restart_all_phy(pf);
  exit:
        if (err) {
@@@ -2156,8 -2217,7 +2217,8 @@@ ice_ptp_get_syncdevicetime(ktime_t *dev
                        hh_ts_lo = rd32(hw, GLHH_ART_TIME_L);
                        hh_ts_hi = rd32(hw, GLHH_ART_TIME_H);
                        hh_ts = ((u64)hh_ts_hi << 32) | hh_ts_lo;
 -                      *system = convert_art_ns_to_tsc(hh_ts);
 +                      system->cycles = hh_ts;
 +                      system->cs_id = CSID_X86_ART;
                        /* Read Device source clock time */
                        hh_ts_lo = rd32(hw, GLTSYN_HHTIME_L(tmr_idx));
                        hh_ts_hi = rd32(hw, GLTSYN_HHTIME_H(tmr_idx));
@@@ -2644,7 -2704,7 +2705,7 @@@ static void ice_ptp_maybe_trigger_tx_in
        if (!ice_pf_src_tmr_owned(pf))
                return;
  
-       for (i = 0; i < ICE_MAX_QUAD; i++) {
+       for (i = 0; i < ICE_GET_QUAD_NUM(hw->ptp.num_lports); i++) {
                u64 tstamp_ready;
                int err;
  
@@@ -3080,12 -3140,10 +3141,10 @@@ static int ice_ptp_init_owner(struct ic
        /* Release the global hardware lock */
        ice_ptp_unlock(hw);
  
-       if (!ice_is_e810(hw)) {
-               /* Enable quad interrupts */
-               err = ice_ptp_cfg_phy_interrupt(pf, true, 1);
-               if (err)
-                       goto err_exit;
-       }
+       /* Configure PHY interrupt settings */
+       err = ice_ptp_cfg_phy_interrupt(pf, true, 1);
+       if (err)
+               goto err_exit;
  
        /* Ensure we have a clock device */
        err = ice_ptp_create_clock(pf);
@@@ -3146,7 -3204,10 +3205,10 @@@ static int ice_ptp_init_port(struct ice
  
        mutex_init(&ptp_port->ps_lock);
  
-       switch (hw->phy_model) {
+       switch (hw->ptp.phy_model) {
+       case ICE_PHY_ETH56G:
+               return ice_ptp_init_tx_eth56g(pf, &ptp_port->tx,
+                                             ptp_port->port_num);
        case ICE_PHY_E810:
                return ice_ptp_init_tx_e810(pf, &ptp_port->tx);
        case ICE_PHY_E82X:
@@@ -3241,7 -3302,7 +3303,7 @@@ static void ice_ptp_remove_auxbus_devic
   */
  static void ice_ptp_init_tx_interrupt_mode(struct ice_pf *pf)
  {
-       switch (pf->hw.phy_model) {
+       switch (pf->hw.ptp.phy_model) {
        case ICE_PHY_E82X:
                /* E822 based PHY has the clock owner process the interrupt
                 * for all ports.
@@@ -3277,7 -3338,7 +3339,7 @@@ void ice_ptp_init(struct ice_pf *pf
  
        ptp->state = ICE_PTP_INITIALIZING;
  
-       ice_ptp_init_phy_model(hw);
+       ice_ptp_init_hw(hw);
  
        ice_ptp_init_tx_interrupt_mode(pf);
  
        }
  
        ptp->port.port_num = hw->pf_id;
+       if (ice_is_e825c(hw) && hw->ptp.is_2x50g_muxed_topo)
+               ptp->port.port_num = hw->pf_id * 2;
        err = ice_ptp_init_port(pf, &ptp->port);
        if (err)
                goto err;
index e73fa34237d3ce65b21f8fcf05f44ab309ef30de,2dbfbca606af898faa1eebd1db8a9bc539ed0155..83ad7c7935e31e6d7b0668042ee6b526d7e66ddd
@@@ -248,7 -248,7 +248,7 @@@ static void intel_speed_mode_2500(struc
                dev_info(priv->device, "Link Speed Mode: 2.5Gbps\n");
                priv->plat->max_speed = 2500;
                priv->plat->phy_interface = PHY_INTERFACE_MODE_2500BASEX;
-               priv->plat->mdio_bus_data->xpcs_an_inband = false;
+               priv->plat->mdio_bus_data->default_an_inband = false;
        } else {
                priv->plat->max_speed = 1000;
        }
@@@ -390,11 -390,10 +390,11 @@@ static int intel_crosststamp(ktime_t *d
                *device = ns_to_ktime(ptp_time);
                read_unlock_irqrestore(&priv->ptp_lock, flags);
                get_arttime(priv->mii, intel_priv->mdio_adhoc_addr, &art_time);
 -              *system = convert_art_to_tsc(art_time);
 +              system->cycles = art_time;
        }
  
        system->cycles *= intel_priv->crossts_adj;
 +      system->cs_id = CSID_X86_ART;
        priv->plat->flags &= ~STMMAC_FLAG_INT_SNAPSHOT_EN;
  
        return 0;
@@@ -444,6 -443,16 +444,16 @@@ static void common_default_data(struct 
        plat->rx_queues_cfg[0].pkt_route = 0x0;
  }
  
+ static struct phylink_pcs *intel_mgbe_select_pcs(struct stmmac_priv *priv,
+                                                phy_interface_t interface)
+ {
+       /* plat->mdio_bus_data->has_xpcs has been set true, so there
+        * should always be an XPCS. The original code would always
+        * return this if present.
+        */
+       return &priv->hw->xpcs->pcs;
+ }
  static int intel_mgbe_common_data(struct pci_dev *pdev,
                                  struct plat_stmmacenet_data *plat)
  {
        /* Intel mgbe SGMII interface uses pcs-xcps */
        if (plat->phy_interface == PHY_INTERFACE_MODE_SGMII ||
            plat->phy_interface == PHY_INTERFACE_MODE_1000BASEX) {
-               plat->mdio_bus_data->has_xpcs = true;
-               plat->mdio_bus_data->xpcs_an_inband = true;
-       }
-       /* For fixed-link setup, we clear xpcs_an_inband */
-       if (fwnode) {
-               struct fwnode_handle *fixed_node;
-               fixed_node = fwnode_get_named_child_node(fwnode, "fixed-link");
-               if (fixed_node)
-                       plat->mdio_bus_data->xpcs_an_inband = false;
-               fwnode_handle_put(fixed_node);
+               plat->mdio_bus_data->pcs_mask = BIT(INTEL_MGBE_XPCS_ADDR);
+               plat->mdio_bus_data->default_an_inband = true;
+               plat->select_pcs = intel_mgbe_select_pcs;
        }
  
        /* Ensure mdio bus scan skips intel serdes and pcs-xpcs */
index f8b08f98daa086435118b5d89ed0014b3b8a4025,718184be19b3249500957f240aa49df79c995496..ed0796aff7225f113d08c4b5afaf220b55977517
@@@ -1,6 -1,6 +1,6 @@@
  // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
  /*
-  * Copyright (C) 2012-2014, 2019-2022 Intel Corporation
+  * Copyright (C) 2012-2014, 2019-2022, 2024 Intel Corporation
   * Copyright (C) 2013-2014 Intel Mobile Communications GmbH
   * Copyright (C) 2015-2016 Intel Deutschland GmbH
   */
@@@ -299,7 -299,7 +299,7 @@@ static void check_exit_ctkill(struct wo
  
        ret = iwl_mvm_get_temp(mvm, &temp);
  
-       __iwl_mvm_mac_stop(mvm);
+       __iwl_mvm_mac_stop(mvm, false);
  
        if (ret)
                goto reschedule;
@@@ -618,48 -618,35 +618,35 @@@ static int iwl_mvm_tzone_get_temp(struc
        int ret;
        int temp;
  
-       mutex_lock(&mvm->mutex);
+       guard(mvm)(mvm);
  
        if (!iwl_mvm_firmware_running(mvm) ||
-           mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) {
-               ret = -ENODATA;
-               goto out;
-       }
+           mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR)
+               return -ENODATA;
  
        ret = iwl_mvm_get_temp(mvm, &temp);
        if (ret)
-               goto out;
+               return ret;
  
        *temperature = temp * 1000;
- out:
-       mutex_unlock(&mvm->mutex);
-       return ret;
+       return 0;
  }
  
  static int iwl_mvm_tzone_set_trip_temp(struct thermal_zone_device *device,
 -                                     int trip, int temp)
 +                                     const struct thermal_trip *trip, int temp)
  {
        struct iwl_mvm *mvm = thermal_zone_device_priv(device);
-       int ret;
  
-       mutex_lock(&mvm->mutex);
+       guard(mvm)(mvm);
  
        if (!iwl_mvm_firmware_running(mvm) ||
-           mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) {
-               ret = -EIO;
-               goto out;
-       }
+           mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR)
+               return -EIO;
  
-       if ((temp / 1000) > S16_MAX) {
-               ret = -EINVAL;
-               goto out;
-       }
+       if ((temp / 1000) > S16_MAX)
+               return -EINVAL;
  
-       ret = iwl_mvm_send_temp_report_ths_cmd(mvm);
- out:
-       mutex_unlock(&mvm->mutex);
-       return ret;
+       return iwl_mvm_send_temp_report_ths_cmd(mvm);
  }
  
  static  struct thermal_zone_device_ops tzone_ops = {
@@@ -733,27 -720,18 +720,18 @@@ static int iwl_mvm_tcool_set_cur_state(
                                       unsigned long new_state)
  {
        struct iwl_mvm *mvm = (struct iwl_mvm *)(cdev->devdata);
-       int ret;
  
-       mutex_lock(&mvm->mutex);
+       guard(mvm)(mvm);
  
        if (!iwl_mvm_firmware_running(mvm) ||
-           mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) {
-               ret = -EIO;
-               goto unlock;
-       }
+           mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR)
+               return -EIO;
  
-       if (new_state >= ARRAY_SIZE(iwl_mvm_cdev_budgets)) {
-               ret = -EINVAL;
-               goto unlock;
-       }
-       ret = iwl_mvm_ctdp_command(mvm, CTDP_CMD_OPERATION_START,
-                                  new_state);
+       if (new_state >= ARRAY_SIZE(iwl_mvm_cdev_budgets))
+               return -EINVAL;
  
- unlock:
-       mutex_unlock(&mvm->mutex);
-       return ret;
+       return iwl_mvm_ctdp_command(mvm, CTDP_CMD_OPERATION_START,
+                                   new_state);
  }
  
  static const struct thermal_cooling_device_ops tcooling_ops = {
diff --combined include/linux/sched.h
index 3e1329e4bf1f501bdee4934c0776dd6cf0a73131,d07d3645d2d510002bdf4a7b145b8823005623e5..33dd8d9d2b85be43fff04ca0049e6c532e908655
@@@ -36,6 -36,7 +36,7 @@@
  #include <linux/signal_types.h>
  #include <linux/syscall_user_dispatch_types.h>
  #include <linux/mm_types_task.h>
+ #include <linux/netdevice_xmit.h>
  #include <linux/task_io_accounting.h>
  #include <linux/posix-timers_types.h>
  #include <linux/restart_block.h>
@@@ -53,6 -54,7 +54,7 @@@ struct bio_list
  struct blk_plug;
  struct bpf_local_storage;
  struct bpf_run_ctx;
+ struct bpf_net_context;
  struct capture_control;
  struct cfs_rq;
  struct fs_struct;
@@@ -734,12 -736,6 +736,12 @@@ enum perf_event_task_context 
        perf_nr_task_contexts,
  };
  
 +/*
 + * Number of contexts where an event can trigger:
 + *      task, softirq, hardirq, nmi.
 + */
 +#define PERF_NR_CONTEXTS      4
 +
  struct wake_q_node {
        struct wake_q_node *next;
  };
@@@ -981,7 -977,9 +983,9 @@@ struct task_struct 
        /* delay due to memory thrashing */
        unsigned                        in_thrashing:1;
  #endif
+ #ifdef CONFIG_PREEMPT_RT
+       struct netdev_xmit              net_xmit;
+ #endif
        unsigned long                   atomic_flags; /* Flags requiring atomic access. */
  
        struct restart_block            restart_block;
        unsigned int                    futex_state;
  #endif
  #ifdef CONFIG_PERF_EVENTS
 +      u8                              perf_recursion[PERF_NR_CONTEXTS];
        struct perf_event_context       *perf_event_ctxp;
        struct mutex                    perf_event_mutex;
        struct list_head                perf_event_list;
        /* Used for BPF run context */
        struct bpf_run_ctx              *bpf_ctx;
  #endif
+       /* Used by BPF for per-TASK xdp storage */
+       struct bpf_net_context          *bpf_net_context;
  
  #ifdef CONFIG_GCC_PLUGIN_STACKLEAK
        unsigned long                   lowest_stack;
@@@ -2071,6 -2070,47 +2077,6 @@@ extern int __cond_resched_rwlock_write(
        __cond_resched_rwlock_write(lock);                                      \
  })
  
 -#ifdef CONFIG_PREEMPT_DYNAMIC
 -
 -extern bool preempt_model_none(void);
 -extern bool preempt_model_voluntary(void);
 -extern bool preempt_model_full(void);
 -
 -#else
 -
 -static inline bool preempt_model_none(void)
 -{
 -      return IS_ENABLED(CONFIG_PREEMPT_NONE);
 -}
 -static inline bool preempt_model_voluntary(void)
 -{
 -      return IS_ENABLED(CONFIG_PREEMPT_VOLUNTARY);
 -}
 -static inline bool preempt_model_full(void)
 -{
 -      return IS_ENABLED(CONFIG_PREEMPT);
 -}
 -
 -#endif
 -
 -static inline bool preempt_model_rt(void)
 -{
 -      return IS_ENABLED(CONFIG_PREEMPT_RT);
 -}
 -
 -/*
 - * Does the preemption model allow non-cooperative preemption?
 - *
 - * For !CONFIG_PREEMPT_DYNAMIC kernels this is an exact match with
 - * CONFIG_PREEMPTION; for CONFIG_PREEMPT_DYNAMIC this doesn't work as the
 - * kernel is *built* with CONFIG_PREEMPTION=y but may run with e.g. the
 - * PREEMPT_NONE model.
 - */
 -static inline bool preempt_model_preemptible(void)
 -{
 -      return preempt_model_full() || preempt_model_rt();
 -}
 -
  static __always_inline bool need_resched(void)
  {
        return unlikely(tif_need_resched());
diff --combined include/linux/socket.h
index c1f16cdab67762e00271b223b266f49b21b85241,2a1ff91d1914e0dd817d3b610f83591badedb78c..df9cdb8bbfb88428e1d2d6a2d16c7d1abe9ae9fc
@@@ -76,7 -76,7 +76,7 @@@ struct msghdr 
        __kernel_size_t msg_controllen; /* ancillary data buffer length */
        struct kiocb    *msg_iocb;      /* ptr to iocb for async requests */
        struct ubuf_info *msg_ubuf;
-       int (*sg_from_iter)(struct sock *sk, struct sk_buff *skb,
+       int (*sg_from_iter)(struct sk_buff *skb,
                            struct iov_iter *from, size_t length);
  };
  
@@@ -442,14 -442,11 +442,14 @@@ extern int __sys_accept4(int fd, struc
  extern int __sys_socket(int family, int type, int protocol);
  extern struct file *__sys_socket_file(int family, int type, int protocol);
  extern int __sys_bind(int fd, struct sockaddr __user *umyaddr, int addrlen);
 +extern int __sys_bind_socket(struct socket *sock, struct sockaddr_storage *address,
 +                           int addrlen);
  extern int __sys_connect_file(struct file *file, struct sockaddr_storage *addr,
                              int addrlen, int file_flags);
  extern int __sys_connect(int fd, struct sockaddr __user *uservaddr,
                         int addrlen);
  extern int __sys_listen(int fd, int backlog);
 +extern int __sys_listen_socket(struct socket *sock, int backlog);
  extern int __sys_getsockname(int fd, struct sockaddr __user *usockaddr,
                             int __user *usockaddr_len);
  extern int __sys_getpeername(int fd, struct sockaddr __user *usockaddr,
diff --combined io_uring/net.c
index 7b75da2e782619bf909607132d924b4bad095cc7,20aa36143933e734b460a08217180f99619c2355..594490a1389ba25e7ecc2b092298e4de70f247da
@@@ -51,16 -51,6 +51,16 @@@ struct io_connect 
        bool                            seen_econnaborted;
  };
  
 +struct io_bind {
 +      struct file                     *file;
 +      int                             addr_len;
 +};
 +
 +struct io_listen {
 +      struct file                     *file;
 +      int                             backlog;
 +};
 +
  struct io_sr_msg {
        struct file                     *file;
        union {
@@@ -827,20 -817,20 +827,20 @@@ static inline bool io_recv_finish(struc
                                  bool mshot_finished, unsigned issue_flags)
  {
        struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
 -      unsigned int cflags;
 -
 -      if (sr->flags & IORING_RECVSEND_BUNDLE)
 -              cflags = io_put_kbufs(req, io_bundle_nbufs(kmsg, *ret),
 -                                    issue_flags);
 -      else
 -              cflags = io_put_kbuf(req, issue_flags);
 +      unsigned int cflags = 0;
  
        if (kmsg->msg.msg_inq > 0)
                cflags |= IORING_CQE_F_SOCK_NONEMPTY;
  
 -      /* bundle with no more immediate buffers, we're done */
 -      if (sr->flags & IORING_RECVSEND_BUNDLE && req->flags & REQ_F_BL_EMPTY)
 -              goto finish;
 +      if (sr->flags & IORING_RECVSEND_BUNDLE) {
 +              cflags |= io_put_kbufs(req, io_bundle_nbufs(kmsg, *ret),
 +                                    issue_flags);
 +              /* bundle with no more immediate buffers, we're done */
 +              if (req->flags & REQ_F_BL_EMPTY)
 +                      goto finish;
 +      } else {
 +              cflags |= io_put_kbuf(req, issue_flags);
 +      }
  
        /*
         * Fill CQE for this receive and see if we should keep trying to
@@@ -1277,14 -1267,14 +1277,14 @@@ int io_send_zc_prep(struct io_kiocb *re
        return io_sendmsg_prep_setup(req, req->opcode == IORING_OP_SENDMSG_ZC);
  }
  
- static int io_sg_from_iter_iovec(struct sock *sk, struct sk_buff *skb,
+ static int io_sg_from_iter_iovec(struct sk_buff *skb,
                                 struct iov_iter *from, size_t length)
  {
        skb_zcopy_downgrade_managed(skb);
-       return __zerocopy_sg_from_iter(NULL, sk, skb, from, length);
+       return zerocopy_fill_skb_from_iter(skb, from, length);
  }
  
- static int io_sg_from_iter(struct sock *sk, struct sk_buff *skb,
+ static int io_sg_from_iter(struct sk_buff *skb,
                           struct iov_iter *from, size_t length)
  {
        struct skb_shared_info *shinfo = skb_shinfo(skb);
        if (!frag)
                shinfo->flags |= SKBFL_MANAGED_FRAG_REFS;
        else if (unlikely(!skb_zcopy_managed(skb)))
-               return __zerocopy_sg_from_iter(NULL, sk, skb, from, length);
+               return zerocopy_fill_skb_from_iter(skb, from, length);
  
        bi.bi_size = min(from->count, length);
        bi.bi_bvec_done = from->iov_offset;
        skb->data_len += copied;
        skb->len += copied;
        skb->truesize += truesize;
-       if (sk && sk->sk_type == SOCK_STREAM) {
-               sk_wmem_queued_add(sk, truesize);
-               if (!skb_zcopy_pure(skb))
-                       sk_mem_charge(sk, truesize);
-       } else {
-               refcount_add(truesize, &skb->sk->sk_wmem_alloc);
-       }
        return ret;
  }
  
        return IOU_OK;
  }
  
 +int io_bind_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
 +{
 +      struct io_bind *bind = io_kiocb_to_cmd(req, struct io_bind);
 +      struct sockaddr __user *uaddr;
 +      struct io_async_msghdr *io;
 +
 +      if (sqe->len || sqe->buf_index || sqe->rw_flags || sqe->splice_fd_in)
 +              return -EINVAL;
 +
 +      uaddr = u64_to_user_ptr(READ_ONCE(sqe->addr));
 +      bind->addr_len =  READ_ONCE(sqe->addr2);
 +
 +      io = io_msg_alloc_async(req);
 +      if (unlikely(!io))
 +              return -ENOMEM;
 +      return move_addr_to_kernel(uaddr, bind->addr_len, &io->addr);
 +}
 +
 +int io_bind(struct io_kiocb *req, unsigned int issue_flags)
 +{
 +      struct io_bind *bind = io_kiocb_to_cmd(req, struct io_bind);
 +      struct io_async_msghdr *io = req->async_data;
 +      struct socket *sock;
 +      int ret;
 +
 +      sock = sock_from_file(req->file);
 +      if (unlikely(!sock))
 +              return -ENOTSOCK;
 +
 +      ret = __sys_bind_socket(sock, &io->addr, bind->addr_len);
 +      if (ret < 0)
 +              req_set_fail(req);
 +      io_req_set_res(req, ret, 0);
 +      return 0;
 +}
 +
 +int io_listen_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
 +{
 +      struct io_listen *listen = io_kiocb_to_cmd(req, struct io_listen);
 +
 +      if (sqe->addr || sqe->buf_index || sqe->rw_flags || sqe->splice_fd_in || sqe->addr2)
 +              return -EINVAL;
 +
 +      listen->backlog = READ_ONCE(sqe->len);
 +      return 0;
 +}
 +
 +int io_listen(struct io_kiocb *req, unsigned int issue_flags)
 +{
 +      struct io_listen *listen = io_kiocb_to_cmd(req, struct io_listen);
 +      struct socket *sock;
 +      int ret;
 +
 +      sock = sock_from_file(req->file);
 +      if (unlikely(!sock))
 +              return -ENOTSOCK;
 +
 +      ret = __sys_listen_socket(sock, listen->backlog);
 +      if (ret < 0)
 +              req_set_fail(req);
 +      io_req_set_res(req, ret, 0);
 +      return 0;
 +}
 +
  void io_netmsg_cache_free(const void *entry)
  {
        struct io_async_msghdr *kmsg = (struct io_async_msghdr *) entry;
This page took 0.301183 seconds and 4 git commands to generate.