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

  
 
  

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

NAME
     rte_distributor_single.h

SYNOPSIS
   Macros
     #define RTE_DISTRIBUTOR_NAMESIZE	32

   Functions
     struct  rte_distributor_single  * rte_distributor_create_single (const char
	 *name, unsigned int socket_id, unsigned int num_workers)
     int  rte_distributor_process_single  (struct   rte_distributor_single   *d,
	 struct rte_mbuf **mbufs, unsigned int num_mbufs)
     int rte_distributor_returned_pkts_single (struct rte_distributor_single *d,
	 struct rte_mbuf **mbufs, unsigned int max_mbufs)
     int rte_distributor_flush_single (struct rte_distributor_single *d)
     void  rte_distributor_clear_returns_single  (struct  rte_distributor_single
	 *d)
     struct  rte_mbuf  *  rte_distributor_get_pkt_single  (struct  rte_distribu-
	 tor_single *d, unsigned int worker_id, struct rte_mbuf *oldpkt)
     int  rte_distributor_return_pkt_single  (struct  rte_distributor_single *d,
	 unsigned int worker_id, struct rte_mbuf *mbuf)
     void rte_distributor_request_pkt_single (struct rte_distributor_single  *d,
	 unsigned int worker_id, struct rte_mbuf *oldpkt)
     struct  rte_mbuf  *  rte_distributor_poll_pkt_single  (struct rte_distribu-
	 tor_single *d, unsigned int worker_id)

Detailed Description
     RTE distributor

     The distributor is a component which is designed to pass packets  one-at-a-
     time to workers, with dynamic load balancing.

     Definition in file rte_distributor_single.h.

Macro Definition Documentation
   #define RTE_DISTRIBUTOR_NAMESIZE   32
     Length of name for instance

     Definition at line 20 of file rte_distributor_single.h.

Function Documentation
   struct  rte_distributor_single  * rte_distributor_create_single (const char *
     name, unsigned int socket_id, unsigned int num_workers)
     Function to create a new distributor instance

     Reserves the memory needed for the distributor  operation	and  initializes
     the distributor to work with the configured number of workers.

     Parameters
	 name The name to be given to the distributor instance.
	 socket_id The NUMA node on which the memory is to be allocated
	 num_workers  The  maximum  number  of workers that will request packets
	 from this distributor

     Returns
	 The newly created distributor instance

   int rte_distributor_process_single (struct rte_distributor_single * d, struct
     rte_mbuf ** mbufs, unsigned int num_mbufs)
     Process a set of packets by distributing them among  workers  that  request
     packets. The distributor will ensure that no two packets that have the same
     flow id, or tag, in the mbuf will be processed at the same time.

     The  user	is  advocated to set tag for each mbuf before calling this func-
     tion. If user doesn't set the tag, the tag value can be various values  de-
     pending on driver implementation and configuration.

     This is not multi-thread safe and should only be called on a single lcore.

     Parameters
	 d The distributor instance to be used
	 mbufs The mbufs to be distributed
	 num_mbufs The number of mbufs in the mbufs array

     Returns
	 The number of mbufs processed.

   int	rte_distributor_returned_pkts_single (struct rte_distributor_single * d,
     struct rte_mbuf ** mbufs, unsigned int max_mbufs)
     Get a set of mbufs that have been returned to the distributor by workers

     This should only be called on the same lcore as rte_distributor_process()

     Parameters
	 d The distributor instance to be used
	 mbufs The mbufs pointer array to be filled in
	 max_mbufs The size of the mbufs array

     Returns
	 The number of mbufs returned in the mbufs array.

   int rte_distributor_flush_single (struct rte_distributor_single * d)
     Flush the distributor component, so that there are no  in-flight  or  back-
     logged packets awaiting processing

     This should only be called on the same lcore as rte_distributor_process()

     Parameters
	 d The distributor instance to be used

     Returns
	 The  number  of  queued/in-flight  packets  that were completed by this
	 call.

   void rte_distributor_clear_returns_single (struct rte_distributor_single * d)

     Clears the array of returned packets used as the source  for  the	rte_dis-
     tributor_returned_pkts() API call.

     This should only be called on the same lcore as rte_distributor_process()

     Parameters
	 d The distributor instance to be used

   struct rte_mbuf * rte_distributor_get_pkt_single (struct rte_distributor_sin-
     gle * d, unsigned int worker_id, struct rte_mbuf * oldpkt)
     API  called by a worker to get a new packet to process. Any previous packet
     given to the worker is assumed to have completed processing, and may be op-
     tionally returned to the distributor via the oldpkt parameter.

     Parameters
	 d The distributor instance to be used
	 worker_id The worker instance	number	to  use  -  must  be  less  that
	 num_workers passed at distributor creation time.
	 oldpkt The previous packet, if any, being processed by the worker

     Returns
	 A new packet to be processed by the worker thread.

   int rte_distributor_return_pkt_single (struct rte_distributor_single * d, un-
     signed int worker_id, struct rte_mbuf * mbuf)
     API  called  by  a worker to return a completed packet without requesting a
     new packet, for example, because a worker thread is shutting down

     Parameters
	 d The distributor instance to be used
	 worker_id The worker instance	number	to  use  -  must  be  less  that
	 num_workers passed at distributor creation time.
	 mbuf The previous packet being processed by the worker

   void  rte_distributor_request_pkt_single  (struct rte_distributor_single * d,
     unsigned int worker_id, struct rte_mbuf * oldpkt)
     API called by a worker to request a new packet  to  process.  Any	previous
     packet given to the worker is assumed to have completed processing, and may
     be  optionally returned to the distributor via the oldpkt parameter. Unlike
     rte_distributor_get_pkt(), this function does not wait for a new packet  to
     be provided by the distributor.

     NOTE:  after  calling  this  function, rte_distributor_poll_pkt() should be
     used to poll for the packet requested.  The  rte_distributor_get_pkt()  API
     should not be used to try and retrieve the new packet.

     Parameters
	 d The distributor instance to be used
	 worker_id  The  worker  instance  number  to  use  -  must be less that
	 num_workers passed at distributor creation time.
	 oldpkt The previous packet, if any, being processed by the worker

   struct  rte_mbuf  *	rte_distributor_poll_pkt_single  (struct   rte_distribu-
     tor_single * d, unsigned int worker_id)
     API  called  by  a worker to check for a new packet that was previously re-
     quested by a call to rte_distributor_request_pkt(). It does  not  wait  for
     the new packet to be available, but returns NULL if the request has not yet
     been fulfilled by the distributor.

     Parameters
	 d The distributor instance to be used
	 worker_id  The  worker  instance  number  to  use  -  must be less that
	 num_workers passed at distributor creation time.

     Returns
	 A new packet to be processed by the worker thread, or NULL if no packet
	 is yet available.

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

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

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

home | help