Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
rte_gso.h(3)			      DPDK			    rte_gso.h(3)

NAME
     rte_gso.h

SYNOPSIS
     #include <stdint.h>
     #include <rte_mbuf.h>

   Data Structures
     struct rte_gso_ctx

   Macros
     #define RTE_GSO_FLAG_IPID_FIXED   (1ULL << 0)

   Functions
     int  rte_gso_segment  (struct rte_mbuf *pkt, const struct rte_gso_ctx *ctx,
	 struct rte_mbuf **pkts_out, uint16_t nb_pkts_out)

Detailed Description
     Interface to GSO library

     Definition in file rte_gso.h.

Macro Definition Documentation
   #define RTE_GSO_FLAG_IPID_FIXED   (1ULL << 0)
     Use fixed IP ids for output GSO segments. Setting 0 indicates using  incre-
     mental IP ids.

     Definition at line 32 of file rte_gso.h.

Function Documentation
   int	rte_gso_segment  (struct rte_mbuf * pkt, const struct rte_gso_ctx * ctx,
     struct rte_mbuf ** pkts_out, uint16_t nb_pkts_out)
     Segmentation function, which supports processing of both single- and multi-
     MBUF packets.

     Note that we refer to the packets that are segmented from the input  packet
     as  'GSO segments'. rte_gso_segment() doesn't check if the input packet has
     correct checksums, and doesn't update checksums for  output  GSO  segments.
     Additionally, it doesn't process IP fragment packets.

     Before calling rte_gso_segment(), applications must set proper ol_flags for
     the  packet. The GSO library uses the same macros as that of TSO. For exam-
     ple, set RTE_MBUF_F_TX_TCP_SEG and RTE_MBUF_F_TX_IPV4 in ol_flags	to  seg-
     ment    a	  TCP/IPv4    packet.	If   rte_gso_segment()	 succeeds,   the
     RTE_MBUF_F_TX_TCP_SEG flag is removed for all GSO segments  and  the  input
     packet.

     Each  of the newly-created GSO segments is organized as a two-segment MBUF,
     where the first segment is a standard MBUF, which stores a copy  of  packet
     header,  and  the	second	is an indirect MBUF which points to a section of
     data in the input packet. Since each GSO segment has multiple  MBUFs  (i.e.
     typically	2 MBUFs), the driver of the interface which the GSO segments are
     sent to should support transmission of multi-segment packets.

     If the input packet is GSO'd, all the indirect segments are attached to the
     input packet.

     rte_gso_segment() will not free the input packet no matter  whether  it  is
     GSO'd  or	not,  the  application should free it after calling rte_gso_seg-
     ment().

     If the memory space in pkts_out or MBUF pools is insufficient,  this  func-
     tion  fails, and it returns (-1) * errno. Otherwise, GSO succeeds, and this
     function returns the number of output GSO segments filled in pkts_out.

     Parameters
	 pkt The packet mbuf to segment.
	 ctx GSO context object pointer.
	 pkts_out Pointer array used to store the MBUF addresses of  output  GSO
	 segments, when rte_gso_segment() succeeds.
	 nb_pkts_out The max number of items that pkts_out can keep.

     Returns

	 * The number of GSO segments filled in pkts_out on success.

	 * Return 0 if it does not need to be GSO'd.

	 * Return -ENOMEM if run out of memory in MBUF pools.

	 * Return -ENOTSUP for protocols that can not be segmented.

	 * Return -EINVAL for invalid parameters.

Author
     Generated automatically by Doxygen for DPDK from the source code.

Version 25.11.0 		 Thu Aug 27 2026		    rte_gso.h(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=rte_gso_segment&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help