mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
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:
commit
14dacf766c
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 ->
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
::
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
==============
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user