Merge branch 'docs-net-more-adjustments-to-docs'

Jakub Kicinski says:

====================
docs: net: more adjustments to docs

A few small updates to the docs.
This is trying to prepare docs for getting fed directly
into AI reviews.
====================

Link: https://patch.msgid.link/20260613165846.2913092-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Jakub Kicinski 2026-06-15 15:42:55 -07:00
commit 14dacf766c
7 changed files with 72 additions and 32 deletions

View File

@ -33,7 +33,9 @@ Device driver can provide specific callbacks for each "health reporter", e.g.:
* Recovery procedures
* Diagnostics procedures
* Object dump procedures
* Out Of Box initial parameters
Drivers also provide default values for generic reporter parameters when
creating a health reporter.
Different parts of the driver can register different types of health reporters
with different handlers.
@ -45,8 +47,9 @@ Once an error is reported, devlink health will perform the following actions:
* A log is being send to the kernel trace events buffer
* Health status and statistics are being updated for the reporter instance
* Object dump is being taken and saved at the reporter instance (as long as
auto-dump is set and there is no other dump which is already stored)
* Object dump is being taken and saved at the reporter instance. This is
best effort and skipped when recovery is aborted, auto-dump is disabled,
no dump callback is registered, or a dump is already stored.
* Auto recovery attempt is being done. Depends on:
- Auto-recovery configuration
@ -75,7 +78,8 @@ User Interface
==============
User can access/change each reporter's parameters and driver specific callbacks
via ``devlink``, e.g per error type (per health reporter):
via ``devlink``, e.g. per error type (per health reporter). Reporters may be
registered for the whole devlink instance or for a specific devlink port.
* Configure reporter's generic parameters (like: disable/enable auto recovery)
* Invoke recovery procedure

View File

@ -122,7 +122,7 @@ own name.
* - ``enable_iwarp``
- Boolean
- Enable handling of iWARP traffic in the device.
* - ``internal_err_reset``
* - ``internal_error_reset``
- Boolean
- When enabled, the device driver will reset the device on internal
errors.

View File

@ -38,7 +38,7 @@ Devlink port flavours are described below.
- This indicates an eswitch port representing a port of PCI
subfunction (SF).
* - ``DEVLINK_PORT_FLAVOUR_VIRTUAL``
- This indicates a virtual port for the PCI virtual function.
- Any virtual port facing the user.
Devlink port can have a different type based on the link layer described below.
@ -134,6 +134,9 @@ Users may also set the IPsec crypto capability of the function using
Users may also set the IPsec packet capability of the function using
`devlink port function set ipsec_packet` command.
The ``migratable`` attribute may be set only on ports with
``DEVLINK_PORT_FLAVOUR_PCI_VF``.
Users may also set the maximum IO event queues of the function
using `devlink port function set max_io_eqs` command.

View File

@ -516,9 +516,11 @@ Generic Packet Trap Groups
Generic packet trap groups are used to aggregate logically related packet
traps. These groups allow the user to batch operations such as setting the trap
action of all member traps. In addition, ``devlink-trap`` can report aggregated
per-group packets and bytes statistics, in case per-trap statistics are too
narrow. The description of these groups must be added to the following table:
action of all member drop traps whose action may legally change. Exception and
control traps remain unchanged. In addition, ``devlink-trap`` can report
aggregated per-group packets and bytes statistics, in case per-trap statistics
are too narrow. The description of these groups must be added to the following
table:
.. list-table:: List of Generic Packet Trap Groups
:widths: 10 90

View File

@ -13,8 +13,8 @@ new APIs prefixed by ``devl_*``. The older APIs handle all the locking
in devlink core, but don't allow registration of most sub-objects once
the main devlink object is itself registered. The newer ``devl_*`` APIs assume
the devlink instance lock is already held. Drivers can take the instance
lock by calling ``devl_lock()``. It is also held all callbacks of devlink
netlink commands.
lock by calling ``devl_lock()``. It is also held across all callbacks of
devlink netlink commands.
Drivers are encouraged to use the devlink instance lock for their own needs.
@ -33,11 +33,11 @@ sure to respect following rules:
lock of both nested and parent instances at the same time, devlink
instance lock of the parent instance should be taken first, only then
instance lock of the nested 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 user for multiple nested instances.
devlink relationship (could be used for multiple nested instances).
- ``devl_port_fn_devlink_set()`` - called to setup port function ->
nested devlink relationship.
- ``devlink_linecard_nested_dl_set()`` - called to setup linecard ->

View File

@ -40,8 +40,8 @@ Functions
::
strp_init(struct strparser *strp, struct sock *sk,
const struct strp_callbacks *cb)
int strp_init(struct strparser *strp, struct sock *sk,
const struct strp_callbacks *cb)
Called to initialize a stream parser. strp is a struct of type
strparser that is allocated by the upper layer. sk is the TCP
@ -95,7 +95,7 @@ Functions
void strp_data_ready(struct strparser *strp);
The upper layer calls strp_tcp_data_ready when data is ready on
The upper layer calls strp_data_ready when data is ready on
the lower socket for strparser to process. This should be called
from a data_ready callback that is set on the socket. Note that
maximum messages size is the limit of the receive socket
@ -123,9 +123,9 @@ There are seven callbacks:
should parse the sk_buff as containing the headers for the
next application layer message in the stream.
The skb->cb in the input skb is a struct strp_msg. Only
the offset field is relevant in parse_msg and gives the offset
where the message starts in the skb.
The strparser metadata in the input skb can be accessed with
strp_msg(skb). Only the offset field is relevant in parse_msg and
gives the offset where the message starts in the skb.
The return values of this function are:
@ -176,11 +176,11 @@ There are seven callbacks:
received in rcv_msg (see strp_pause above). This callback
must be set.
The skb->cb in the input skb is a struct strp_msg. This
struct contains two fields: offset and full_len. Offset is
where the message starts in the skb, and full_len is the
the length of the message. skb->len - offset may be greater
than full_len since strparser does not trim the skb.
The strparser metadata in the input skb can be accessed with
strp_msg(skb). This struct contains two fields: offset and full_len.
Offset is where the message starts in the skb, and full_len is
the length of the message. skb->len - offset may be greater than
full_len since strparser does not trim the skb.
::

View File

@ -99,6 +99,29 @@ at the end of kernel structures (see :c:member:`driver_state` members
in ``include/net/tls.h``) to avoid additional allocations and pointer
dereferences.
When the offloaded connection is destroyed the core calls
the :c:member:`tls_dev_del` callback so the driver can release per-direction
state:
.. code-block:: c
void (*tls_dev_del)(struct net_device *netdev,
struct tls_context *ctx,
enum tls_offload_ctx_dir direction);
``tls_dev_del`` is mandatory whenever ``tls_dev_add`` is provided.
The third TLS device callback is :c:member:`tls_dev_resync`, called by the core
to synchronize the TCP stream with the record boundaries:
.. code-block:: c
int (*tls_dev_resync)(struct net_device *netdev,
struct sock *sk, u32 seq, u8 *rcd_sn,
enum tls_offload_ctx_dir direction);
See the `Resync handling`_ section for details.
TX
--
@ -250,9 +273,9 @@ Following helper should be used to test if resync is complete:
bool tls_offload_tx_resync_pending(struct sock *sk)
Next time ``ktls`` pushes a record it will first send its TCP sequence number
and TLS record number to the driver. Stack will also make sure that
the new record will start on a segment boundary (like it does when
the connection is initially added).
and TLS record number to the driver via the ``tls_dev_resync`` callback.
The stack will also make sure that the new record will start on a segment
boundary (like it does when the connection is initially added).
RX
--
@ -344,9 +367,10 @@ all TLS record headers that have been logged since the resync request
started.
The kernel confirms the guessed location was correct and tells the device
the record sequence number. Meanwhile, the device had been parsing
and counting all records since the just-confirmed one, it adds the number
of records it had seen to the record number provided by the kernel.
the record sequence number via the ``tls_dev_resync`` callback. Meanwhile,
the device had been parsing and counting all records since the just-confirmed
one, it adds the number of records it had seen to the record number provided
by the kernel.
At this point the device is in sync and can resume decryption at next
segment boundary.
@ -370,12 +394,19 @@ schedules resynchronization after it has received two completely encrypted
records.
The stack waits for the socket to drain and informs the device about
the next expected record number and its TCP sequence number. If the
the next expected record number and its TCP sequence number via the
``tls_dev_resync`` callback. If the
records continue to be received fully encrypted stack retries the
synchronization with an exponential back off (first after 2 encrypted
records, then after 4 records, after 8, after 16... up until every
128 records).
Rekey
=====
Offload does not currently support TLS 1.3, therefore key rotation
is not a concern for offloaded connections at this point.
Error handling
==============