aboutsummaryrefslogtreecommitdiff
path: root/Documentation/networking
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/networking')
-rw-r--r--Documentation/networking/bridge.rst5
-rw-r--r--Documentation/networking/device_drivers/ethernet/index.rst1
-rw-r--r--Documentation/networking/device_drivers/ethernet/intel/i40e.rst2
-rw-r--r--Documentation/networking/device_drivers/ethernet/intel/iavf.rst2
-rw-r--r--Documentation/networking/device_drivers/ethernet/microsoft/netvsc.rst2
-rw-r--r--Documentation/networking/device_drivers/ethernet/nebula-matrix/nbl.rst28
-rw-r--r--Documentation/networking/device_drivers/ethernet/qualcomm/ppe/ppe.rst8
-rw-r--r--Documentation/networking/device_drivers/ethernet/stmicro/stmmac.rst1
-rw-r--r--Documentation/networking/devlink/devlink-resource.rst4
-rw-r--r--Documentation/networking/devlink/index.rst5
-rw-r--r--Documentation/networking/devlink/ptp_ocp.rst75
-rw-r--r--Documentation/networking/dsa/dsa.rst2
-rw-r--r--Documentation/networking/ethtool-netlink.rst38
-rw-r--r--Documentation/networking/ip-sysctl.rst33
-rw-r--r--Documentation/networking/mctp.rst4
-rw-r--r--Documentation/networking/net_cachelines/net_device.rst1
-rw-r--r--Documentation/networking/net_cachelines/tcp_sock.rst1
-rw-r--r--Documentation/networking/netconsole.rst5
-rw-r--r--Documentation/networking/netdevices.rst21
-rw-r--r--Documentation/networking/netmem.rst53
-rw-r--r--Documentation/networking/nf_conntrack-sysctl.rst2
-rw-r--r--Documentation/networking/oa-tc6-framework.rst2
-rw-r--r--Documentation/networking/page_pool.rst2
-rw-r--r--Documentation/networking/phonet.rst2
-rw-r--r--Documentation/networking/phy-port.rst26
-rw-r--r--Documentation/networking/phy.rst17
-rw-r--r--Documentation/networking/proc_net_tcp.rst20
-rw-r--r--Documentation/networking/psp.rst8
-rw-r--r--Documentation/networking/radiotap-headers.rst2
-rw-r--r--Documentation/networking/rxrpc.rst21
-rw-r--r--Documentation/networking/scaling.rst9
-rw-r--r--Documentation/networking/strparser.rst120
-rw-r--r--Documentation/networking/switchdev.rst11
33 files changed, 367 insertions, 166 deletions
diff --git a/Documentation/networking/bridge.rst b/Documentation/networking/bridge.rst
index c1e6ea52c9e5..dded1a6edd60 100644
--- a/Documentation/networking/bridge.rst
+++ b/Documentation/networking/bridge.rst
@@ -277,8 +277,9 @@ Netfilter
=========
The bridge netfilter module is a legacy feature that allows to filter bridged
-packets with iptables and ip6tables. Its use is discouraged. Users should
-consider using nftables for packet filtering.
+packets with iptables and ip6tables. This feature is scheduled for removal and
+not available in user namespaces. Consider using nftables for packet filtering
+instead.
The older ebtables tool is more feature-limited compared to nftables, but
just like nftables it doesn't need this module either to function.
diff --git a/Documentation/networking/device_drivers/ethernet/index.rst b/Documentation/networking/device_drivers/ethernet/index.rst
index d9980c84487a..403ae9c2b06a 100644
--- a/Documentation/networking/device_drivers/ethernet/index.rst
+++ b/Documentation/networking/device_drivers/ethernet/index.rst
@@ -48,6 +48,7 @@ Contents:
meta/fbnic
microsoft/netvsc
mucse/rnpgbe
+ nebula-matrix/nbl
netronome/nfp
pensando/ionic
pensando/ionic_rdma
diff --git a/Documentation/networking/device_drivers/ethernet/intel/i40e.rst b/Documentation/networking/device_drivers/ethernet/intel/i40e.rst
index 53d9d5829d69..e01f0adda3f6 100644
--- a/Documentation/networking/device_drivers/ethernet/intel/i40e.rst
+++ b/Documentation/networking/device_drivers/ethernet/intel/i40e.rst
@@ -692,7 +692,7 @@ queues: for each tc, <num queues>@<offset> (e.g. queues 16@0 16@16 assigns
16 queues to tc0 at offset 0 and 16 queues to tc1 at offset 16. Max total
number of queues for all tcs is 64 or number of cores, whichever is lower.)
-hw 1 mode channel: ‘channel’ with ‘hw’ set to 1 is a new new hardware
+hw 1 mode channel: ‘channel’ with ‘hw’ set to 1 is a new hardware
offload mode in mqprio that makes full use of the mqprio options, the
TCs, the queue configurations, and the QoS parameters.
diff --git a/Documentation/networking/device_drivers/ethernet/intel/iavf.rst b/Documentation/networking/device_drivers/ethernet/intel/iavf.rst
index eb926c3bd4cd..5840569917f5 100644
--- a/Documentation/networking/device_drivers/ethernet/intel/iavf.rst
+++ b/Documentation/networking/device_drivers/ethernet/intel/iavf.rst
@@ -171,7 +171,7 @@ queues: for each tc, <num queues>@<offset> (e.g. queues 16@0 16@16 assigns
16 queues to tc0 at offset 0 and 16 queues to tc1 at offset 16. Max total
number of queues for all tcs is 64 or number of cores, whichever is lower.)
-hw 1 mode channel: ‘channel’ with ‘hw’ set to 1 is a new new hardware
+hw 1 mode channel: ‘channel’ with ‘hw’ set to 1 is a new hardware
offload mode in mqprio that makes full use of the mqprio options, the
TCs, the queue configurations, and the QoS parameters.
diff --git a/Documentation/networking/device_drivers/ethernet/microsoft/netvsc.rst b/Documentation/networking/device_drivers/ethernet/microsoft/netvsc.rst
index fc5acd427a5d..616f808e885b 100644
--- a/Documentation/networking/device_drivers/ethernet/microsoft/netvsc.rst
+++ b/Documentation/networking/device_drivers/ethernet/microsoft/netvsc.rst
@@ -116,5 +116,3 @@ XDP support
before running XDP::
ethtool -K eth0 lro off
-
- XDP_REDIRECT action is not yet supported.
diff --git a/Documentation/networking/device_drivers/ethernet/nebula-matrix/nbl.rst b/Documentation/networking/device_drivers/ethernet/nebula-matrix/nbl.rst
new file mode 100644
index 000000000000..5540291cf376
--- /dev/null
+++ b/Documentation/networking/device_drivers/ethernet/nebula-matrix/nbl.rst
@@ -0,0 +1,28 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+================================================================
+Linux Base Driver for Nebula-matrix m18110-NIC/m18000-NIC family
+================================================================
+
+Overview:
+=========
+The m18110-NIC/m18000-NIC (marketed as SNIC s1000) is a series
+of network interface cards for the Data Center Area.
+
+This driver provides the core infrastructure for m18110/m18000-NIC
+devices, including:
+
+- PCI device enumeration and resource (BAR) management
+- Firmware command interface via PF mailbox
+- Channel-based communication between driver and firmware
+- Device initialization and teardown
+
+Support
+=======
+
+For more information about m18110-NIC/m18000-NIC, please visit the following URL:
+https://www.nebula-matrix.com/snic_s1000_en
+
+If an issue is identified with the released source code on the supported kernel
+with a supported adapter, email the specific information related to the issue to
+open@nebula-matrix.com.
diff --git a/Documentation/networking/device_drivers/ethernet/qualcomm/ppe/ppe.rst b/Documentation/networking/device_drivers/ethernet/qualcomm/ppe/ppe.rst
index 4ab299a28969..04c48cec66d5 100644
--- a/Documentation/networking/device_drivers/ethernet/qualcomm/ppe/ppe.rst
+++ b/Documentation/networking/device_drivers/ethernet/qualcomm/ppe/ppe.rst
@@ -167,6 +167,14 @@ PPE Driver Supported SoCs
The PPE driver supports the following IPQ SoC:
- IPQ9574
+ The PPE runs at a clock rate of 353 MHz. The switch core has 6 front panel
+ ports (port1 to port6) and two FIFO interfaces: the EDMA FIFO (port0) for
+ the host CPU communication and the EIP FIFO (port7) for the EIP engine.
+- IPQ5424
+ The PPE reuses the same switch core as IPQ9574 and runs at a clock rate of
+ 375 MHz. It supports 3 front panel ports (port1 to port3) with MAC0 to MAC2,
+ and only the EDMA FIFO interface (port0) for the host CPU communication. The
+ EIP FIFO and port4 to port6 are not available.
Enabling the Driver
diff --git a/Documentation/networking/device_drivers/ethernet/stmicro/stmmac.rst b/Documentation/networking/device_drivers/ethernet/stmicro/stmmac.rst
index 5d46e5036129..ea347b7e93a2 100644
--- a/Documentation/networking/device_drivers/ethernet/stmicro/stmmac.rst
+++ b/Documentation/networking/device_drivers/ethernet/stmicro/stmmac.rst
@@ -69,7 +69,6 @@ The following features are available in this driver:
- Pulse-Per-Second Output (PPS)
- MDIO Clause 22 / Clause 45 Interface
- MAC Loopback
- - ARP Offloading
- Automatic CRC / PAD Insertion and Checking
- Checksum Offload for Received and Transmitted Packets
- Standard or Jumbo Ethernet Packets
diff --git a/Documentation/networking/devlink/devlink-resource.rst b/Documentation/networking/devlink/devlink-resource.rst
index 47eec8f875b4..b7172d94b2c6 100644
--- a/Documentation/networking/devlink/devlink-resource.rst
+++ b/Documentation/networking/devlink/devlink-resource.rst
@@ -89,14 +89,12 @@ To list resources for all devlink devices and ports:
$ devlink resource show
pci/0000:03:00.0:
name max_local_SFs size 128 unit entry dpipe_tables none
- name max_external_SFs size 128 unit entry dpipe_tables none
pci/0000:03:00.0/196608:
name max_SFs size 128 unit entry dpipe_tables none
pci/0000:03:00.0/196609:
name max_SFs size 128 unit entry dpipe_tables none
pci/0000:03:00.1:
name max_local_SFs size 128 unit entry dpipe_tables none
- name max_external_SFs size 128 unit entry dpipe_tables none
pci/0000:03:00.1/196708:
name max_SFs size 128 unit entry dpipe_tables none
pci/0000:03:00.1/196709:
@@ -124,10 +122,8 @@ To dump only device-level resources across all devices:
$ devlink resource show scope dev
pci/0000:03:00.0:
name max_local_SFs size 128 unit entry dpipe_tables none
- name max_external_SFs size 128 unit entry dpipe_tables none
pci/0000:03:00.1:
name max_local_SFs size 128 unit entry dpipe_tables none
- name max_external_SFs size 128 unit entry dpipe_tables none
To dump only port-level resources across all devices:
diff --git a/Documentation/networking/devlink/index.rst b/Documentation/networking/devlink/index.rst
index d4a83fdcff7f..03f49389a755 100644
--- a/Documentation/networking/devlink/index.rst
+++ b/Documentation/networking/devlink/index.rst
@@ -33,8 +33,8 @@ sure to respect following rules:
lock of both nested and parent instances at the same time, devlink
instance lock of the nested instance should be taken first, only then
instance lock of the parent instance could be taken.
- - Driver should use object-specific helpers to setup the
- nested relationship:
+ - Driver should use object-specific helpers to setup the nested relationship
+ before registering the nested devlink instance:
- ``devl_nested_devlink_set()`` - called to setup devlink -> nested
devlink relationship (could be used for multiple nested instances).
@@ -99,6 +99,7 @@ parameters, info versions, and other features it supports.
nfp
octeontx2
prestera
+ ptp_ocp
qed
sfc
stmmac
diff --git a/Documentation/networking/devlink/ptp_ocp.rst b/Documentation/networking/devlink/ptp_ocp.rst
new file mode 100644
index 000000000000..f94b759d9cd6
--- /dev/null
+++ b/Documentation/networking/devlink/ptp_ocp.rst
@@ -0,0 +1,75 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+========================
+ptp_ocp devlink support
+========================
+
+This document describes the devlink features implemented by the ``ptp_ocp``
+device driver: the info versions it reports and its flash update support.
+
+Info versions
+=============
+
+The ``ptp_ocp`` driver reports the following versions
+
+.. list-table:: devlink info versions implemented
+ :widths: 5 5 90
+
+ * - Name
+ - Type
+ - Description
+ * - ``fw``
+ - running
+ - Version of the firmware running on the card. Reported as ``loader``
+ instead when the card is running the firmware loader.
+ * - ``board.id``
+ - fixed
+ - Board identifier, read from the on-card EEPROM.
+ * - ``cpld.id``
+ - fixed
+ - Lattice device ID (IDCODE) of the TAP CPLD, formatted as ``0x%08x``.
+ Only present on ADVA TimeCard X1 boards, which are the only ones
+ carrying that CPLD. Reading it claims the shared I2C bus and
+ reprograms the on-card mux, so the driver does that from its own
+ worker and reports the cached value here; the version is omitted
+ until that read has succeeded. The read is made once per binding
+ and again after a successful CPLD update.
+ * - ``fw.cpld``
+ - running
+ - USERCODE of the image programmed into the TAP CPLD, formatted as
+ ``0x%08x``. Read together with ``cpld.id`` and reported the same
+ way. This is the component name to pass to ``devlink dev flash``
+ to update the CPLD.
+
+Flash update
+============
+
+The driver implements ``devlink dev flash`` for two separate targets,
+selected with the component name.
+
+.. list-table:: Flash components
+ :widths: 20 80
+
+ * - Component
+ - Description
+ * - (none)
+ - The card's own flash, written through the SPI controller the driver
+ exposes. The card runs the new image after its next reset.
+ * - ``fw.cpld``
+ - The configuration flash of the TAP CPLD on ADVA TimeCard X1 boards,
+ programmed over I2C with the MachXO3 in-system programming commands
+ and activated with a REFRESH, so the new image runs immediately.
+ The image is the raw configuration bitstream. The only check the
+ driver makes is that its length is a non-zero multiple of the
+ 16-byte page size, so a container such as ``.jed`` has to be
+ converted first rather than passed through - one whose length
+ happens to be a multiple of 16 would be programmed as if it were
+ a bitstream.
+
+Programming the CPLD claims the shared I2C bus for the whole cycle, so
+reads of the card's EEPROM block until it completes. Progress is reported
+with the standard devlink status notifications.
+
+Example::
+
+ $ devlink dev flash pci/0000:02:00.0 file adva-cpld.bin component fw.cpld
diff --git a/Documentation/networking/dsa/dsa.rst b/Documentation/networking/dsa/dsa.rst
index 42a99f5dfa2e..7edfdd555f05 100644
--- a/Documentation/networking/dsa/dsa.rst
+++ b/Documentation/networking/dsa/dsa.rst
@@ -864,7 +864,7 @@ The drivers which act upon the ``dsa_db`` argument in ``port_fdb_add``,
DSA associates each offloaded bridge and each offloaded LAG with a one-based ID
(``struct dsa_bridge :: num``, ``struct dsa_lag :: id``) for the purposes of
refcounting addresses on shared ports. Drivers may piggyback on DSA's numbering
-scheme (the ID is readable through ``db->bridge.num`` and ``db->lag.id`` or may
+scheme (the ID is readable through ``db->bridge.num`` and ``db->lag.id``) or may
implement their own.
Only the drivers which declare support for FDB isolation are notified of FDB
diff --git a/Documentation/networking/ethtool-netlink.rst b/Documentation/networking/ethtool-netlink.rst
index e92abf45faf5..eba226c79ec3 100644
--- a/Documentation/networking/ethtool-netlink.rst
+++ b/Documentation/networking/ethtool-netlink.rst
@@ -131,7 +131,7 @@ For compact form, ``ETHTOOL_A_BITSET_SIZE`` and ``ETHTOOL_A_BITSET_VALUE`` are
mandatory. ``ETHTOOL_A_BITSET_MASK`` attribute is mandatory if
``ETHTOOL_A_BITSET_NOMASK`` is not set (bitset represents a value/mask pair);
if ``ETHTOOL_A_BITSET_NOMASK`` is not set, ``ETHTOOL_A_BITSET_MASK`` is not
-allowed (bitset represents a single bitmap.
+allowed (bitset represents a single bitmap).
Kernel bit set length may differ from userspace length if older application is
used on newer kernel or vice versa. If userspace bitmap is longer, an error is
@@ -247,6 +247,7 @@ Userspace to kernel:
``ETHTOOL_MSG_RSS_CREATE_ACT`` create an additional RSS context
``ETHTOOL_MSG_RSS_DELETE_ACT`` delete an additional RSS context
``ETHTOOL_MSG_MSE_GET`` get MSE diagnostic data
+ ``ETHTOOL_MSG_PORT_GET`` get port information
===================================== =================================
Kernel to userspace:
@@ -305,6 +306,7 @@ Kernel to userspace:
``ETHTOOL_MSG_RSS_CREATE_NTF`` additional RSS context created
``ETHTOOL_MSG_RSS_DELETE_NTF`` additional RSS context deleted
``ETHTOOL_MSG_MSE_GET_REPLY`` MSE diagnostic data
+ ``ETHTOOL_MSG_PORT_GET_REPLY`` port information
======================================== =================================
``GET`` requests are sent by userspace applications to retrieve device
@@ -2537,6 +2539,39 @@ Within each channel nest, only the metrics supported by the PHY will be present.
See ``struct phy_mse_snapshot`` kernel documentation in
``include/linux/phy.h``.
+PORT_GET
+========
+
+Retrieve information about the physical connection points of a network device,
+referred to as "ports". User needs to specify a PORT_ID for the DO operation,
+in which case the DO request returns information about that specific port.
+
+As there can be more than one port, the DUMP operation can be used to list the
+ports present on a given interface, by passing an interface index or name in
+the dump request.
+
+Request contents:
+
+ ===================================== ====== ===============================
+ ``ETHTOOL_A_PORT_HEADER`` nested request header
+ ``ETHTOOL_A_PORT_ID`` u32 port id
+ ===================================== ====== ===============================
+
+Kernel response contents:
+
+ ======================================= ====== =============================
+ ``ETHTOOL_A_PORT_HEADER`` nested request header
+ ``ETHTOOL_A_PORT_ID`` u32 the port's unique identifier,
+ per netdevice.
+ ``ETHTOOL_A_PORT_SUPPORTED_MODES`` bitset bitset of supported linkmodes
+ ``ETHTOOL_A_PORT_SUPPORTED_INTERFACES`` bitset bitset of supported MII
+ interfaces
+ ``ETHTOOL_A_PORT_TYPE`` u32 the port type
+ ``ETHTOOL_A_PORT_UPSTREAM_PORT`` u32 If any, the index of the MII
+ port that feeds into this
+ port.
+ ======================================= ====== =============================
+
Request translation
===================
@@ -2647,4 +2682,5 @@ are netlink only.
n/a ``ETHTOOL_MSG_PHY_GET``
``SIOCGHWTSTAMP`` ``ETHTOOL_MSG_TSCONFIG_GET``
``SIOCSHWTSTAMP`` ``ETHTOOL_MSG_TSCONFIG_SET``
+ n/a ``ETHTOOL_MSG_PORT_GET``
=================================== =====================================
diff --git a/Documentation/networking/ip-sysctl.rst b/Documentation/networking/ip-sysctl.rst
index f7af0286341c..4b19c8d3efda 100644
--- a/Documentation/networking/ip-sysctl.rst
+++ b/Documentation/networking/ip-sysctl.rst
@@ -248,7 +248,7 @@ neigh/default/unres_qlen - INTEGER
neigh/default/interval_probe_time_ms - INTEGER
The probe interval for neighbor entries with NTF_MANAGED flag,
- the min value is 1, and the max value is 86400000 (1 day).
+ the min value is 1000 (1s), and the max value is 86400000 (1 day).
Default: 5000
@@ -3225,18 +3225,19 @@ drop_unsolicited_na - BOOLEAN
Default: 0 (disabled).
accept_untracked_na - INTEGER
- Define behavior for accepting neighbor advertisements from devices that
- are absent in the neighbor cache:
+ Define behavior for accepting neighbor advertisements for IPv6 addresses
+ that are absent from the neighbor cache or whose entries are in FAILED
+ state:
- - 0 - (default) Do not accept unsolicited and untracked neighbor
- advertisements.
+ - 0 - (default) Do not create new neighbor cache entries or update
+ FAILED entries from neighbor advertisements.
- - 1 - Add a new neighbor cache entry in STALE state for routers on
- receiving a neighbor advertisement (either solicited or unsolicited)
- with target link-layer address option specified if no neighbor entry
- is already present for the advertised IPv6 address. Without this knob,
- NAs received for untracked addresses (absent in neighbor cache) are
- silently ignored.
+ - 1 - For routers, add a new neighbor cache entry or update an existing
+ FAILED entry to STALE upon receiving a neighbor advertisement (either
+ solicited or unsolicited) with the target link-layer address option
+ specified. Without this knob, NAs received for untracked addresses
+ (absent from the neighbor cache or in FAILED state) are silently
+ ignored.
This is as per router-side behavior documented in RFC9131.
@@ -3251,9 +3252,10 @@ accept_untracked_na - INTEGER
used in conjunction with the ndisc_notify setting on the host to
satisfy this prerequisite.
- - 2 - Extend option (1) to add a new neighbor cache entry only if the
- source IP address is in the same subnet as an address configured on
- the interface that received the neighbor advertisement.
+ - 2 - Extend option (1) to add a new neighbor cache entry or update a
+ FAILED entry only if the source IP address is in the same subnet as
+ an address configured on the interface that received the neighbor
+ advertisement.
enhanced_dad - BOOLEAN
Include a nonce option in the IPv6 neighbor solicitation messages used for
@@ -3823,5 +3825,6 @@ l3mdev_accept - BOOLEAN
max_dgram_qlen - INTEGER
The maximum length of dgram socket receive queue
- Default: 10
+ Possible values: 0 - INT_MAX
+ Default: 10
diff --git a/Documentation/networking/mctp.rst b/Documentation/networking/mctp.rst
index c628cb5406d2..1b4bffa1ed74 100644
--- a/Documentation/networking/mctp.rst
+++ b/Documentation/networking/mctp.rst
@@ -19,7 +19,7 @@ networks.
An interface (or "link") is an instance of an MCTP physical transport binding
(as defined by DSP0236, section 3.2.47), likely connected to a specific hardware
-device. This is represented as a ``struct netdevice``.
+device. This is represented as a ``struct net_device``.
A network defines a unique address space for MCTP endpoints by endpoint-ID
(described by DSP0236, section 3.2.31). A network has a user-visible identifier
@@ -296,7 +296,7 @@ There are a few possible packet flows in the MCTP stack:
: route lookup
-> rt->output() (== mctp_route_input)
: sk_key lookup
- : stores skb in struct sk_key->reasm_head
+ : stores skb in struct mctp_sk_key->reasm_head
mctp_pkttype_receive()
: route lookup
diff --git a/Documentation/networking/net_cachelines/net_device.rst b/Documentation/networking/net_cachelines/net_device.rst
index 512f6d6fa3d8..8eceaa80b686 100644
--- a/Documentation/networking/net_cachelines/net_device.rst
+++ b/Documentation/networking/net_cachelines/net_device.rst
@@ -11,6 +11,7 @@ Type Name fastpath_tx_acce
unsigned_long:32 priv_flags read_mostly __dev_queue_xmit(tx)
unsigned_long:1 lltx read_mostly HARD_TX_LOCK,HARD_TX_TRYLOCK,HARD_TX_UNLOCK(tx)
unsigned_long:2 netmem_tx:2; read_mostly
+unsigned_long:1 pacing_offload read_mostly sch_fq
char name[16]
struct netdev_name_node* name_node
struct dev_ifalias* ifalias
diff --git a/Documentation/networking/net_cachelines/tcp_sock.rst b/Documentation/networking/net_cachelines/tcp_sock.rst
index 0f6088c4ab8b..103328dc409e 100644
--- a/Documentation/networking/net_cachelines/tcp_sock.rst
+++ b/Documentation/networking/net_cachelines/tcp_sock.rst
@@ -50,6 +50,7 @@ u8:1 tcp_usec_ts read_mostly read_m
u32 chrono_start read_write tcp_chrono_start/stop(tcp_write_xmit,tcp_cwnd_validate,tcp_send_syn_data)
u32[3] chrono_stat read_write tcp_chrono_start/stop(tcp_write_xmit,tcp_cwnd_validate,tcp_send_syn_data)
u8:2 chrono_type read_write tcp_chrono_start/stop(tcp_write_xmit,tcp_cwnd_validate,tcp_send_syn_data)
+u8 tcp_nospace read_mostly read_mostly tcp_check_space(tx);tcp_check_space(rx)
u8:1 rate_app_limited read_write tcp_rate_gen
u8:1 fastopen_connect
u8:1 fastopen_no_cookie
diff --git a/Documentation/networking/netconsole.rst b/Documentation/networking/netconsole.rst
index 4ab5d7b05cf1..694bca4803d5 100644
--- a/Documentation/networking/netconsole.rst
+++ b/Documentation/networking/netconsole.rst
@@ -141,6 +141,11 @@ The interface exposes these parameters of a netconsole target to userspace:
transmit_errors Number of packet send errors (read-only)
=============== ================================= ============
+local_ip is optional: if it is left unset, netconsole derives a source
+address from the egress interface when the target is enabled. Writing any
+value to it, including 0.0.0.0, uses that value verbatim and disables the
+automatic selection.
+
The "enabled" attribute is also used to control whether the parameters of
a target can be updated or not -- you can modify the parameters of only
disabled targets (i.e. if "enabled" is 0).
diff --git a/Documentation/networking/netdevices.rst b/Documentation/networking/netdevices.rst
index db71d4283032..6a87f09e7015 100644
--- a/Documentation/networking/netdevices.rst
+++ b/Documentation/networking/netdevices.rst
@@ -222,13 +222,6 @@ ndo_stop:
Context: process
Note: netif_running() is guaranteed false
-ndo_do_ioctl:
- Synchronization: rtnl_lock() semaphore.
-
- This is only called by network subsystems internally,
- not by user space calling ioctl as it was in before
- linux-5.14.
-
ndo_siocbond:
Synchronization: rtnl_lock() semaphore. In addition, netdev instance
lock if the driver implements queue management or shaper API.
@@ -292,15 +285,21 @@ ndo_set_rx_mode:
in process context.
ndo_set_rx_mode_async:
- Synchronization: rtnl_lock() semaphore. In addition, netdev instance
- lock if the driver implements queue management or shaper API.
+ Synchronization: netdev instance lock for "ops locked" drivers,
+ rtnl_lock() semaphore for all other drivers.
Context: process (from a work queue)
Notes: Async version of ndo_set_rx_mode which runs in process
context. Receives snapshots of the unicast and multicast address lists.
ndo_change_rx_flags:
- Synchronization: rtnl_lock() semaphore. In addition, netdev instance
- lock if the driver implements queue management or shaper API.
+ Synchronization: netdev instance lock for "ops locked" drivers,
+ rtnl_lock() semaphore for all other drivers.
+
+ndo_work:
+ Synchronization: netdev instance lock for "ops locked" drivers,
+ rtnl_lock() semaphore for all other drivers.
+ Context: process (from a work queue)
+ Notes: Runs deferred work scheduled with netdev_work_sched().
ndo_setup_tc:
Locking depends on ``tc_setup_type``. For most types the callback
diff --git a/Documentation/networking/netmem.rst b/Documentation/networking/netmem.rst
index 217869d1108d..6871dcdd700c 100644
--- a/Documentation/networking/netmem.rst
+++ b/Documentation/networking/netmem.rst
@@ -19,6 +19,59 @@ Benefits of Netmem :
* Simplified Development: Drivers interact with a consistent API,
regardless of the underlying memory implementation.
+Design Principles
+=================
+
+Memory providers (or the default ``page_pool`` allocator) allocate underlying
+memory (``struct net_iov`` or ``struct page``), cast it to ``netmem_ref``, and
+supply it to ``page_pool``. The ``page_pool``, drivers, and networking stack
+operate on ``netmem_ref`` as the abstract type. Existing ``page_pool`` APIs
+that allocate or free ``struct page`` are legacy compatibility wrappers for
+drivers that do not yet support ``netmem_ref``. Code that is not yet
+``netmem``-aware should be converted to ``netmem_ref`` unless it will never
+need to support ``netmem``.
+
+1. **Operate on netmem_ref, do not downcast**: ``page_pool``, drivers, and the
+ core networking stack should deal with ``netmem_ref`` rather than
+ ``struct net_iov`` or ``struct page``. Downcasting ``netmem_ref`` to
+ ``struct net_iov`` or ``struct page`` is not allowed unless a code path
+ strictly cannot function without knowing the underlying memory type (for
+ example, ``kmap_local_page()``). In those cases, to keep call sites simple,
+ add a ``netmem`` helper that performs the operation on behalf of the caller,
+ cleanly handles all ``net_iov`` and ``page`` cases, and returns an error if
+ the ``netmem`` type cannot support the requested operation.
+
+2. **Decouple memory providers from net_iov**: Memory providers are not
+ architecturally limited to ``struct net_iov``; a memory provider that returns
+ ``struct page``-backed ``netmem_ref``\ s to upper layers is allowed. Today,
+ in-tree memory providers only supply ``struct net_iov`` and some existing
+ code still reflects that limitation, but new code must not assume that using
+ a memory provider implies ``net_iov`` memory and should, as much as possible,
+ generalize existing limitations to match the design principles.
+
+3. **Decouple net_iov from unreadability**: ``struct net_iov`` is flexible and
+ has no inherent restrictions; it may represent either CPU-readable or
+ unreadable memory. Today, in-tree ``net_iov`` implementations are unreadable
+ by the CPU (``netmem_address()`` returns ``NULL``) and some existing code
+ still reflects that limitation, but new code must not assume ``net_iov``
+ implies unreadable memory (check readability via ``netmem_address()`` or
+ ``skb_frags_readable()`` instead) and should, as much as possible, generalize
+ existing limitations to match the design principles.
+
+4. **Delegate complexity to the lowest layer**: Each layer must respect its
+ abstraction boundary. ``page_pool`` must not implement per-memory-provider
+ custom logic in its main code; instead, it delegates provider-specific
+ handling to ``struct memory_provider_ops``. Similarly, core networking code
+ should avoid per-``netmem``-type branching and instead delegate operations
+ to ``netmem`` helpers that handle the underlying memory type.
+
+5. **Do not mix skb fragment memory sources**: All ``frags[]`` in an
+ ``sk_buff`` must either be ``struct page``-backed or belong to the same
+ memory provider instance (for example, the same ``devmem`` binding or
+ ``io_uring`` area). Mixing ``struct page`` and memory-provider fragments,
+ or mixing fragments from different memory providers within a single
+ ``sk_buff``, is not allowed (including when coalescing ``sk_buff``\ s).
+
Driver RX Requirements
======================
diff --git a/Documentation/networking/nf_conntrack-sysctl.rst b/Documentation/networking/nf_conntrack-sysctl.rst
index 35f889259fcd..4426cce2a73f 100644
--- a/Documentation/networking/nf_conntrack-sysctl.rst
+++ b/Documentation/networking/nf_conntrack-sysctl.rst
@@ -44,7 +44,7 @@ nf_conntrack_events - BOOLEAN
nf_conntrack_expect_max