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

FreeBSD Manual Pages

  
 
  

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
       incremental 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 example, set	RTE_MBUF_F_TX_TCP_SEG and RTE_MBUF_F_TX_IPV4 in
       ol_flags	to segment 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_segment().

       If the memory space in pkts_out or MBUF pools is	insufficient, this
       function	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 Jun	11 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_FLAG_IPID_FIXED&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help