Data Accelerator Offload
Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Functions
dao_portq_group.h File Reference

Go to the source code of this file.

Data Structures

struct  dao_portq
 

Macros

#define DAO_PORTQ_GROUP_INITIALIZER   ((dao_portq_group_t)(~0))
 

Typedefs

typedef uint32_t dao_portq_group_t
 
typedef struct dao_portq dao_portq_t
 

Functions

int dao_portq_group_init (uint32_t num_portq_groups)
 
int dao_portq_group_create (const char *portq_name, uint32_t num_cores, uint32_t num_portqs, dao_portq_group_t *epg)
 
int dao_portq_group_get_by_name (const char *portq_name, dao_portq_group_t *epg)
 
int dao_portq_group_portq_add (dao_portq_group_t epg, uint32_t core_id, dao_portq_t *portq, int32_t *returned_index)
 
int dao_portq_group_portq_get (dao_portq_group_t epg, uint32_t core_id, int32_t returned_index, dao_portq_t *portq)
 
int dao_portq_group_portq_get_num (dao_portq_group_t epg, uint32_t core_id, uint32_t *num_ports)
 
int dao_portq_group_portq_delete (dao_portq_group_t epg, uint32_t core_id, int32_t returned_index)
 
int dao_portq_group_destroy (dao_portq_group_t epg)
 

Detailed Description

dao_portq_group.h

Control Path PortQ [port, queue] group APIs

Definition in file dao_portq_group.h.

Macro Definition Documentation

◆ DAO_PORTQ_GROUP_INITIALIZER

#define DAO_PORTQ_GROUP_INITIALIZER   ((dao_portq_group_t)(~0))

< Initializer value for dao_portq_group_t

Definition at line 21 of file dao_portq_group.h.

Typedef Documentation

◆ dao_portq_group_t

typedef uint32_t dao_portq_group_t

dao port_queue group object

Definition at line 23 of file dao_portq_group.h.

◆ dao_portq_t

typedef struct dao_portq dao_portq_t

DAO Port-queue aka combination of [port, rq_id]

Function Documentation

◆ dao_portq_group_init()

int dao_portq_group_init ( uint32_t  num_portq_groups)

Port queue group library

Port queue group library allow applications to poll list-of [port, queue] (dao_portq_t) per core in fast path.

In a typical fast path processing, each worker core calls rte_eth_rx_burst() for combination of [port/ethdev, rq_id] assigned to each core via RSS based scheme. In a runtime environment, number of ethdevs/port can change based on how many of them are newly probed or unprobed. This library facilitates maintaining [port, queue] per worker core as per any change in control path actions.

This file declares control path APIs for Portq group object:

Maintenance of dao_portq_t (aka [port, rq_id]) in a portq_group per core:

If not explicitly called, dao_portq_group_create() internally calls with default value of num_portq_groups

Parameters
num_portq_groupsInitialize dao portq main library to support num_portq_groups
Returns
<0: Failure 0: Success

◆ dao_portq_group_create()

int dao_portq_group_create ( const char *  portq_name,
uint32_t  num_cores,
uint32_t  num_portqs,
dao_portq_group_t epg 
)

Create portq_group object

Parameters
portq_nameName of portq group
num_coresNumber of worker cores for which dao_portq_t to be maintained
num_portqsNumber of dao_portq_t per core.
[out]epgPointer to dao_portq_group_t. Valid when return is success
Returns
<0: Failure 0: Success

◆ dao_portq_group_get_by_name()

int dao_portq_group_get_by_name ( const char *  portq_name,
dao_portq_group_t epg 
)

Get portq_group object by name

Parameters
portq_nameName of portq group
[out]epgPointer to dao_portq_group_t. Valid when return is SUCCESS
Returns
<0: Failure 0: Success

◆ dao_portq_group_portq_add()

int dao_portq_group_portq_add ( dao_portq_group_t  epg,
uint32_t  core_id,
dao_portq_t portq,
int32_t *  returned_index 
)

Add dao_portq_t to portq_group object for a core

Parameters
epgdao_portq_group_t object
core_idCore_id ranging from 0 to "num_cores-1" ("num_cores" provided in dao_portq_group_create())
portqPointer to dao_portq_t provided by caller
[out]returned_indexReturned index where portq is added. Valid when return is SUCCESS
Returns
<0: Failure 0: Success

◆ dao_portq_group_portq_get()

int dao_portq_group_portq_get ( dao_portq_group_t  epg,
uint32_t  core_id,
int32_t  returned_index,
dao_portq_t portq 
)

Get dao_portq_t for a core using returned index

Parameters
epgdao_portq_group_t object
core_idCore_id ranging from 0 to "num_cores-1" ("num_cores" provided in dao_portq_group_create())
returned_indexReturned index where portq is added
[out]portqPointer to dao_portq_t provided by caller. Valid if return is SUCCESS
Returns
<0: Failure 0: Success

◆ dao_portq_group_portq_get_num()

int dao_portq_group_portq_get_num ( dao_portq_group_t  epg,
uint32_t  core_id,
uint32_t *  num_ports 
)

Get number of dao_portq_t for a core in a portq_group object

Parameters
epgdao_portq_group_t object
core_idCore_id ranging from 0 to "num_cores-1" ("num_cores" provided in dao_portq_group_create())
[out]num_portsPointer to num_ports set by API. Valid if API returns successfully
Returns
<0: Failure 0: Success

◆ dao_portq_group_portq_delete()

int dao_portq_group_portq_delete ( dao_portq_group_t  epg,
uint32_t  core_id,
int32_t  returned_index 
)

Delete dao_portq_t for a core using returned index

Parameters
epgdao_portq_group_t object
core_idCore_id ranging from 0 to "num_cores-1" ("num_cores" provided in dao_portq_group_create())
returned_indexReturned index where portq is added
Returns
<0: Failure 0: Success

◆ dao_portq_group_destroy()

int dao_portq_group_destroy ( dao_portq_group_t  epg)

Delete portq_group object

<0: Failure 0: Success