X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Fprog_guide%2Fgeneric_segmentation_offload_lib.rst;h=205cb8a866dc548a26db64c0c85d273894d16b3a;hb=cacf8267cc14e84384dbc86f24f6b10e8aedbcbc;hp=5e78f1625e802bee7155be5e590efe61e45002c2;hpb=f6010c7655ccb1a4ba198796477f0cbb7a5ec5b2;p=dpdk.git diff --git a/doc/guides/prog_guide/generic_segmentation_offload_lib.rst b/doc/guides/prog_guide/generic_segmentation_offload_lib.rst index 5e78f1625e..205cb8a866 100644 --- a/doc/guides/prog_guide/generic_segmentation_offload_lib.rst +++ b/doc/guides/prog_guide/generic_segmentation_offload_lib.rst @@ -1,32 +1,5 @@ -.. BSD LICENSE - Copyright(c) 2017 Intel Corporation. All rights reserved. - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.. SPDX-License-Identifier: BSD-3-Clause + Copyright(c) 2017 Intel Corporation. Generic Segmentation Offload Library ==================================== @@ -70,6 +43,7 @@ Limitations #. Currently, the GSO library supports the following IPv4 packet types: - TCP + - UDP - VxLAN - GRE @@ -120,7 +94,7 @@ in :numref:`figure_gso-output-segment-format`. .. _figure_gso-output-segment-format: -.. figure:: img/gso-output-segment-format.svg +.. figure:: img/gso-output-segment-format.* :align: center Two-part GSO output segment @@ -160,7 +134,7 @@ next input segment). .. _figure_gso-three-seg-mbuf: -.. figure:: img/gso-three-seg-mbuf.svg +.. figure:: img/gso-three-seg-mbuf.* :align: center Three-part GSO output segment @@ -173,6 +147,15 @@ TCP/IPv4 GSO TCP/IPv4 GSO supports segmentation of suitably large TCP/IPv4 packets, which may also contain an optional VLAN tag. +UDP/IPv4 GSO +~~~~~~~~~~~~ +UDP/IPv4 GSO supports segmentation of suitably large UDP/IPv4 packets, which +may also contain an optional VLAN tag. UDP GSO is the same as IP fragmentation. +Specifically, UDP GSO treats the UDP header as a part of the payload and +does not modify it during segmentation. Therefore, after UDP GSO, only the +first output packet has the original UDP header, and others just have l2 +and l3 headers. + VxLAN GSO ~~~~~~~~~ VxLAN packets GSO supports segmentation of suitably large VxLAN packets, @@ -197,12 +180,13 @@ To segment an outgoing packet, an application must: - a pointer to the mbuf pool for allocating indirect buffers, which are used to locate GSO segments' packet payloads. -.. note:: + .. note:: + + An application may use the same pool for both direct and indirect + buffers. However, since indirect mbufs simply store a pointer, the + application may reduce its memory consumption by creating a separate memory + pool, containing smaller elements, for the indirect pool. - An application may use the same pool for both direct and indirect - buffers. However, since each indirect mbuf simply stores a pointer, the - application may reduce its memory consumption by creating a separate memory - pool, containing smaller elements, for the indirect pool. - the size of each output segment, including packet headers and payload, measured in bytes. @@ -222,7 +206,7 @@ To segment an outgoing packet, an application must: 2. Set the appropriate ol_flags in the mbuf. - The GSO library use the value of an mbuf's ``ol_flags`` attribute to - to determine how a packet should be segmented. It is the application's + determine how a packet should be segmented. It is the application's responsibility to ensure that these flags are set. - For example, in order to segment TCP/IPv4 packets, the application should @@ -253,4 +237,3 @@ To segment an outgoing packet, an application must: For tunneled packets, the outer IPv4 headers' checksums should also be updated. Alternatively, the application may offload checksum calculation to HW. -