Commit 1b23f5e9 authored by Otto Sabart's avatar Otto Sabart Committed by Jonathan Corbet

doc: networking: prepare offload documents for conversion into RST

Add small number of markups which are sufficient for conversion
into reStructuredText.

Unfortunately there was necessary to restructure all sections
in checksum-offloads.txt file and create paragraphs separated
by newline. There also must not be a space at the
beginning of paragpraph.

There are no semantic changes.
Signed-off-by: default avatarOtto Sabart <ottosabart@seberm.com>
Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
parent 9f63df26
.. SPDX-License-Identifier: GPL-2.0
===================================================
Segmentation Offloads in the Linux Networking Stack Segmentation Offloads in the Linux Networking Stack
===================================================
Introduction Introduction
============ ============
...@@ -15,6 +20,7 @@ The following technologies are described: ...@@ -15,6 +20,7 @@ The following technologies are described:
* Partial Generic Segmentation Offload - GSO_PARTIAL * Partial Generic Segmentation Offload - GSO_PARTIAL
* SCTP accelleration with GSO - GSO_BY_FRAGS * SCTP accelleration with GSO - GSO_BY_FRAGS
TCP Segmentation Offload TCP Segmentation Offload
======================== ========================
...@@ -42,6 +48,7 @@ NETIF_F_TSO_MANGLEID set then the IP ID can be ignored when performing TSO ...@@ -42,6 +48,7 @@ NETIF_F_TSO_MANGLEID set then the IP ID can be ignored when performing TSO
and we will either increment the IP ID for all frames, or leave it at a and we will either increment the IP ID for all frames, or leave it at a
static value based on driver preference. static value based on driver preference.
UDP Fragmentation Offload UDP Fragmentation Offload
========================= =========================
...@@ -54,6 +61,7 @@ UFO is deprecated: modern kernels will no longer generate UFO skbs, but can ...@@ -54,6 +61,7 @@ UFO is deprecated: modern kernels will no longer generate UFO skbs, but can
still receive them from tuntap and similar devices. Offload of UDP-based still receive them from tuntap and similar devices. Offload of UDP-based
tunnel protocols is still supported. tunnel protocols is still supported.
IPIP, SIT, GRE, UDP Tunnel, and Remote Checksum Offloads IPIP, SIT, GRE, UDP Tunnel, and Remote Checksum Offloads
======================================================== ========================================================
...@@ -71,17 +79,19 @@ refer to the tunnel headers as the outer headers, while the encapsulated ...@@ -71,17 +79,19 @@ refer to the tunnel headers as the outer headers, while the encapsulated
data is normally referred to as the inner headers. Below is the list of data is normally referred to as the inner headers. Below is the list of
calls to access the given headers: calls to access the given headers:
IPIP/SIT Tunnel: IPIP/SIT Tunnel::
Outer Inner
MAC skb_mac_header Outer Inner
Network skb_network_header skb_inner_network_header MAC skb_mac_header
Transport skb_transport_header Network skb_network_header skb_inner_network_header
Transport skb_transport_header
UDP/GRE Tunnel: UDP/GRE Tunnel::
Outer Inner
MAC skb_mac_header skb_inner_mac_header Outer Inner
Network skb_network_header skb_inner_network_header MAC skb_mac_header skb_inner_mac_header
Transport skb_transport_header skb_inner_transport_header Network skb_network_header skb_inner_network_header
Transport skb_transport_header skb_inner_transport_header
In addition to the above tunnel types there are also SKB_GSO_GRE_CSUM and In addition to the above tunnel types there are also SKB_GSO_GRE_CSUM and
SKB_GSO_UDP_TUNNEL_CSUM. These two additional tunnel types reflect the SKB_GSO_UDP_TUNNEL_CSUM. These two additional tunnel types reflect the
...@@ -93,6 +103,7 @@ header has requested a remote checksum offload. In this case the inner ...@@ -93,6 +103,7 @@ header has requested a remote checksum offload. In this case the inner
headers will be left with a partial checksum and only the outer header headers will be left with a partial checksum and only the outer header
checksum will be computed. checksum will be computed.
Generic Segmentation Offload Generic Segmentation Offload
============================ ============================
...@@ -106,6 +117,7 @@ Before enabling any hardware segmentation offload a corresponding software ...@@ -106,6 +117,7 @@ Before enabling any hardware segmentation offload a corresponding software
offload is required in GSO. Otherwise it becomes possible for a frame to offload is required in GSO. Otherwise it becomes possible for a frame to
be re-routed between devices and end up being unable to be transmitted. be re-routed between devices and end up being unable to be transmitted.
Generic Receive Offload Generic Receive Offload
======================= =======================
...@@ -117,6 +129,7 @@ this is IPv4 ID in the case that the DF bit is set for a given IP header. ...@@ -117,6 +129,7 @@ this is IPv4 ID in the case that the DF bit is set for a given IP header.
If the value of the IPv4 ID is not sequentially incrementing it will be If the value of the IPv4 ID is not sequentially incrementing it will be
altered so that it is when a frame assembled via GRO is segmented via GSO. altered so that it is when a frame assembled via GRO is segmented via GSO.
Partial Generic Segmentation Offload Partial Generic Segmentation Offload
==================================== ====================================
...@@ -134,6 +147,7 @@ is the outer IPv4 ID field. It is up to the device drivers to guarantee ...@@ -134,6 +147,7 @@ is the outer IPv4 ID field. It is up to the device drivers to guarantee
that the IPv4 ID field is incremented in the case that a given header does that the IPv4 ID field is incremented in the case that a given header does
not have the DF bit set. not have the DF bit set.
SCTP accelleration with GSO SCTP accelleration with GSO
=========================== ===========================
...@@ -157,14 +171,14 @@ appropriately. ...@@ -157,14 +171,14 @@ appropriately.
There are some helpers to make this easier: There are some helpers to make this easier:
- skb_is_gso(skb) && skb_is_gso_sctp(skb) is the best way to see if - skb_is_gso(skb) && skb_is_gso_sctp(skb) is the best way to see if
an skb is an SCTP GSO skb. an skb is an SCTP GSO skb.
- For size checks, the skb_gso_validate_*_len family of helpers correctly - For size checks, the skb_gso_validate_*_len family of helpers correctly
considers GSO_BY_FRAGS. considers GSO_BY_FRAGS.
- For manipulating packets, skb_increase_gso_size and skb_decrease_gso_size - For manipulating packets, skb_increase_gso_size and skb_decrease_gso_size
will check for GSO_BY_FRAGS and WARN if asked to manipulate these skbs. will check for GSO_BY_FRAGS and WARN if asked to manipulate these skbs.
This also affects drivers with the NETIF_F_FRAGLIST & NETIF_F_GSO_SCTP bits This also affects drivers with the NETIF_F_FRAGLIST & NETIF_F_GSO_SCTP bits
set. Note also that NETIF_F_GSO_SCTP is included in NETIF_F_GSO_SOFTWARE. set. Note also that NETIF_F_GSO_SCTP is included in NETIF_F_GSO_SOFTWARE.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment