---
name: "rte_swx_ctl_table_action_info_get"
section: "3"
platform: "linux"
package: "dpdk-doc"
version: "24.11.4-0+deb13u1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/rte_swx_ctl.h"
---

# rte\_swx\_ctl\_table\_action\_info\_get(3)

Part of [rte\_swx\_ctl.h(3)](/rte_swx_ctl.h/3.md).

## NAME

rte\_swx\_ctl.h

## SYNOPSIS

`#include <stdint.h>`\
 `#include <stdio.h>`\
 `#include <rte_compat.h>`\
 `#include <rte_meter.h>`\
 `#include 'rte_swx_port.h'`\
 `#include 'rte_swx_table.h'`\

### Data Structures

struct **rte\_swx\_ctl\_pipeline\_info**\
 struct **rte\_swx\_ctl\_action\_info**\
 struct **rte\_swx\_ctl\_action\_arg\_info**\
 struct **rte\_swx\_ctl\_table\_info**\
 struct **rte\_swx\_ctl\_table\_match\_field\_info**\
 struct **rte\_swx\_ctl\_table\_action\_info**\
 struct **rte\_swx\_table\_stats**\
 struct **rte\_swx\_ctl\_selector\_info**\
 struct **rte\_swx\_pipeline\_selector\_stats**\
 struct **rte\_swx\_ctl\_learner\_info**\
 struct **rte\_swx\_learner\_stats**\
 struct **rte\_swx\_pipeline\_mirroring\_session\_params**\
 struct **rte\_swx\_table\_state**\
 struct **rte\_swx\_ctl\_regarray\_info**\
 struct **rte\_swx\_ctl\_metarray\_info**\
 struct **rte\_swx\_ctl\_meter\_stats**\
 struct **rte\_swx\_ctl\_rss\_info**\

### Macros

\#define **RTE\_SWX\_CTL\_NAME\_SIZE**   64\

### Functions

\_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_info\_get** (struct rte\_swx\_pipeline \*p, struct **rte\_swx\_ctl\_pipeline\_info** \***pipeline**)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_numa\_node\_get** (struct rte\_swx\_pipeline \*p, int \*numa\_node)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_port\_in\_stats\_read** (struct rte\_swx\_pipeline \*p, uint32\_t port\_id, struct **rte\_swx\_port\_in\_stats** \*stats)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_port\_out\_stats\_read** (struct rte\_swx\_pipeline \*p, uint32\_t port\_id, struct **rte\_swx\_port\_out\_stats** \*stats)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_action\_info\_get** (struct rte\_swx\_pipeline \*p, uint32\_t action\_id, struct **rte\_swx\_ctl\_action\_info** \*action)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_action\_arg\_info\_get** (struct rte\_swx\_pipeline \*p, uint32\_t action\_id, uint32\_t action\_arg\_id, struct **rte\_swx\_ctl\_action\_arg\_info** \*action\_arg)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_table\_info\_get** (struct rte\_swx\_pipeline \*p, uint32\_t table\_id, struct **rte\_swx\_ctl\_table\_info** \*table)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_table\_match\_field\_info\_get** (struct rte\_swx\_pipeline \*p, uint32\_t table\_id, uint32\_t match\_field\_id, struct **rte\_swx\_ctl\_table\_match\_field\_info** \*match\_field)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_table\_action\_info\_get** (struct rte\_swx\_pipeline \*p, uint32\_t table\_id, uint32\_t table\_action\_id, struct **rte\_swx\_ctl\_table\_action\_info** \*table\_action)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_table\_ops\_get** (struct rte\_swx\_pipeline \*p, uint32\_t table\_id, struct **rte\_swx\_table\_ops** \*table\_ops, int \*is\_stub)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_table\_stats\_read** (struct rte\_swx\_pipeline \*p, const char \*table\_name, struct **rte\_swx\_table\_stats** \*stats)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_selector\_info\_get** (struct rte\_swx\_pipeline \*p, uint32\_t selector\_id, struct **rte\_swx\_ctl\_selector\_info** \*selector)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_selector\_group\_id\_field\_info\_get** (struct rte\_swx\_pipeline \*p, uint32\_t selector\_id, struct **rte\_swx\_ctl\_table\_match\_field\_info** \*field)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_selector\_field\_info\_get** (struct rte\_swx\_pipeline \*p, uint32\_t selector\_id, uint32\_t selector\_field\_id, struct **rte\_swx\_ctl\_table\_match\_field\_info** \*field)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_selector\_member\_id\_field\_info\_get** (struct rte\_swx\_pipeline \*p, uint32\_t selector\_id, struct **rte\_swx\_ctl\_table\_match\_field\_info** \*field)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_selector\_stats\_read** (struct rte\_swx\_pipeline \*p, const char \*selector\_name, struct **rte\_swx\_pipeline\_selector\_stats** \*stats)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_learner\_info\_get** (struct rte\_swx\_pipeline \*p, uint32\_t learner\_id, struct **rte\_swx\_ctl\_learner\_info** \*learner)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_learner\_match\_field\_info\_get** (struct rte\_swx\_pipeline \*p, uint32\_t learner\_id, uint32\_t match\_field\_id, struct **rte\_swx\_ctl\_table\_match\_field\_info** \*match\_field)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_learner\_action\_info\_get** (struct rte\_swx\_pipeline \*p, uint32\_t learner\_id, uint32\_t learner\_action\_id, struct **rte\_swx\_ctl\_table\_action\_info** \*learner\_action)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_learner\_timeout\_get** (struct rte\_swx\_pipeline \*p, uint32\_t learner\_id, uint32\_t timeout\_id, uint32\_t \*timeout)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_learner\_timeout\_set** (struct rte\_swx\_pipeline \*p, uint32\_t learner\_id, uint32\_t timeout\_id, uint32\_t timeout)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_learner\_stats\_read** (struct rte\_swx\_pipeline \*p, const char \*learner\_name, struct **rte\_swx\_learner\_stats** \*stats)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_mirroring\_session\_set** (struct rte\_swx\_pipeline \*p, uint32\_t session\_id, struct **rte\_swx\_pipeline\_mirroring\_session\_params** \*params)\
 \_\_rte\_experimental int **rte\_swx\_pipeline\_table\_state\_get** (struct rte\_swx\_pipeline \*p, struct **rte\_swx\_table\_state** \*\*table\_state)\
 \_\_rte\_experimental int **rte\_swx\_pipeline\_table\_state\_set** (struct rte\_swx\_pipeline \*p, struct **rte\_swx\_table\_state** \*table\_state)\
 \_\_rte\_experimental struct rte\_swx\_ctl\_pipeline \* **rte\_swx\_ctl\_pipeline\_find** (const char \*name)\
 \_\_rte\_experimental struct rte\_swx\_ctl\_pipeline \* **rte\_swx\_ctl\_pipeline\_create** (struct rte\_swx\_pipeline \*p)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_table\_entry\_add** (struct rte\_swx\_ctl\_pipeline \*ctl, const char \*table\_name, struct **rte\_swx\_table\_entry** \*entry)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_table\_default\_entry\_add** (struct rte\_swx\_ctl\_pipeline \*ctl, const char \*table\_name, struct **rte\_swx\_table\_entry** \*entry)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_table\_entry\_delete** (struct rte\_swx\_ctl\_pipeline \*ctl, const char \*table\_name, struct **rte\_swx\_table\_entry** \*entry)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_selector\_group\_add** (struct rte\_swx\_ctl\_pipeline \*ctl, const char \*selector\_name, uint32\_t \*group\_id)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_selector\_group\_delete** (struct rte\_swx\_ctl\_pipeline \*ctl, const char \*selector\_name, uint32\_t group\_id)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_selector\_group\_member\_add** (struct rte\_swx\_ctl\_pipeline \*ctl, const char \*selector\_name, uint32\_t group\_id, uint32\_t member\_id, uint32\_t member\_weight)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_selector\_group\_member\_delete** (struct rte\_swx\_ctl\_pipeline \*ctl, const char \*selector\_name, uint32\_t group\_id, uint32\_t member\_id)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_learner\_default\_entry\_add** (struct rte\_swx\_ctl\_pipeline \*ctl, const char \*learner\_name, struct **rte\_swx\_table\_entry** \*entry)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_commit** (struct rte\_swx\_ctl\_pipeline \*ctl, int abort\_on\_fail)\
 \_\_rte\_experimental void **rte\_swx\_ctl\_pipeline\_abort** (struct rte\_swx\_ctl\_pipeline \*ctl)\
 \_\_rte\_experimental struct **rte\_swx\_table\_entry** \* **rte\_swx\_ctl\_pipeline\_table\_entry\_read** (struct rte\_swx\_ctl\_pipeline \*ctl, const char \*table\_name, const char \*string, int \*is\_blank\_or\_comment)\
 \_\_rte\_experimental struct **rte\_swx\_table\_entry** \* **rte\_swx\_ctl\_pipeline\_learner\_default\_entry\_read** (struct rte\_swx\_ctl\_pipeline \*ctl, const char \*learner\_name, const char \*string, int \*is\_blank\_or\_comment)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_table\_fprintf** (FILE \*f, struct rte\_swx\_ctl\_pipeline \*ctl, const char \*table\_name)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_selector\_fprintf** (FILE \*f, struct rte\_swx\_ctl\_pipeline \*ctl, const char \*selector\_name)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_regarray\_info\_get** (struct rte\_swx\_pipeline \*p, uint32\_t regarray\_id, struct **rte\_swx\_ctl\_regarray\_info** \*regarray)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_regarray\_read** (struct rte\_swx\_pipeline \*p, const char \*regarray\_name, uint32\_t regarray\_index, uint64\_t \*value)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_regarray\_write** (struct rte\_swx\_pipeline \*p, const char \*regarray\_name, uint32\_t regarray\_index, uint64\_t value)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_regarray\_read\_with\_key** (struct rte\_swx\_pipeline \*p, const char \*regarray\_name, const char \*table\_name, uint8\_t \*table\_key, uint64\_t \*value)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_regarray\_write\_with\_key** (struct rte\_swx\_pipeline \*p, const char \*regarray\_name, const char \*table\_name, uint8\_t \*table\_key, uint64\_t value)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_metarray\_info\_get** (struct rte\_swx\_pipeline \*p, uint32\_t metarray\_id, struct **rte\_swx\_ctl\_metarray\_info** \*metarray)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_meter\_profile\_add** (struct rte\_swx\_pipeline \*p, const char \*name, struct **rte\_meter\_trtcm\_params** \*params)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_meter\_profile\_delete** (struct rte\_swx\_pipeline \*p, const char \*name)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_meter\_reset** (struct rte\_swx\_pipeline \*p, const char \*metarray\_name, uint32\_t metarray\_index)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_meter\_set** (struct rte\_swx\_pipeline \*p, const char \*metarray\_name, uint32\_t metarray\_index, const char \*profile\_name)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_meter\_stats\_read** (struct rte\_swx\_pipeline \*p, const char \*metarray\_name, uint32\_t metarray\_index, struct **rte\_swx\_ctl\_meter\_stats** \*stats)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_meter\_reset\_with\_key** (struct rte\_swx\_pipeline \*p, const char \*metarray\_name, const char \*table\_name, uint8\_t \*table\_key)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_meter\_set\_with\_key** (struct rte\_swx\_pipeline \*p, const char \*metarray\_name, const char \*table\_name, uint8\_t \*table\_key, const char \*profile\_name)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_meter\_stats\_read\_with\_key** (struct rte\_swx\_pipeline \*p, const char \*metarray\_name, const char \*table\_name, uint8\_t \*table\_key, struct **rte\_swx\_ctl\_meter\_stats** \*stats)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_rss\_info\_get** (struct rte\_swx\_pipeline \*p, uint32\_t rss\_obj\_id, struct **rte\_swx\_ctl\_rss\_info** \*rss)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_rss\_key\_size\_read** (struct rte\_swx\_pipeline \*p, const char \*rss\_obj\_name, uint32\_t \*key\_size)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_rss\_key\_read** (struct rte\_swx\_pipeline \*p, const char \*rss\_obj\_name, uint8\_t \*key)\
 \_\_rte\_experimental int **rte\_swx\_ctl\_pipeline\_rss\_key\_write** (struct rte\_swx\_pipeline \*p, const char \*rss\_obj\_name, uint32\_t key\_size, uint8\_t \*key)\
 \_\_rte\_experimental void **rte\_swx\_ctl\_pipeline\_free** (struct rte\_swx\_ctl\_pipeline \*ctl)\

## Detailed Description

RTE SWX Pipeline Control

Definition in file **rte\_swx\_ctl.h**.

## Macro Definition Documentation

### #define RTE\_SWX\_CTL\_NAME\_SIZE 64

Name size.

Definition at line **29** of file **rte\_swx\_ctl.h**.

## Function Documentation

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_info\_get (struct rte\_swx\_pipeline \* p, struct rte\_swx\_ctl\_pipeline\_info \* pipeline)

Pipeline info get

**Parameters**

*p* Pipeline handle. \
 *pipeline* Pipeline info.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_numa\_node\_get (struct rte\_swx\_pipeline \* p, int \* numa\_node)

Pipeline NUMA node get

**Parameters**

*p* Pipeline handle. \
 *numa\_node* Pipeline NUMA node.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_port\_in\_stats\_read (struct rte\_swx\_pipeline \* p, uint32\_t port\_id, struct rte\_swx\_port\_in\_stats \* stats)

Input port statistics counters read

**Parameters**

*p* Pipeline handle. \
 *port\_id* Port ID (0 .. *n\_ports\_in* - 1). \
 *stats* Input port stats.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_port\_out\_stats\_read (struct rte\_swx\_pipeline \* p, uint32\_t port\_id, struct rte\_swx\_port\_out\_stats \* stats)

Output port statistics counters read

**Parameters**

*p* Pipeline handle. \
 *port\_id* Port ID (0 .. *n\_ports\_out* - 1). \
 *stats* Output port stats.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_action\_info\_get (struct rte\_swx\_pipeline \* p, uint32\_t action\_id, struct rte\_swx\_ctl\_action\_info \* action)

Action info get

**Parameters**

*p* Pipeline handle. \
 *action\_id* Action ID (0 .. *n\_actions* - 1). \
 *action* Action info.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_action\_arg\_info\_get (struct rte\_swx\_pipeline \* p, uint32\_t action\_id, uint32\_t action\_arg\_id, struct rte\_swx\_ctl\_action\_arg\_info \* action\_arg)

Action argument info get

**Parameters**

*p* Pipeline handle. \
 *action\_id* Action ID (0 .. *n\_actions* - 1). \
 *action\_arg\_id* Action ID (0 .. *n\_args* - 1). \
 *action\_arg* Action argument info.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_table\_info\_get (struct rte\_swx\_pipeline \* p, uint32\_t table\_id, struct rte\_swx\_ctl\_table\_info \* table)

Table info get

**Parameters**

*p* Pipeline handle. \
 *table\_id* Table ID (0 .. *n\_tables* - 1). \
 *table* Table info.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_table\_match\_field\_info\_get (struct rte\_swx\_pipeline \* p, uint32\_t table\_id, uint32\_t match\_field\_id, struct rte\_swx\_ctl\_table\_match\_field\_info \* match\_field)

Table match field info get

**Parameters**

*p* Pipeline handle. \
 *table\_id* Table ID (0 .. *n\_tables*). \
 *match\_field\_id* Match field ID (0 .. *n\_match\_fields* - 1). \
 *match\_field* Table match field info.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_table\_action\_info\_get (struct rte\_swx\_pipeline \* p, uint32\_t table\_id, uint32\_t table\_action\_id, struct rte\_swx\_ctl\_table\_action\_info \* table\_action)

Table action info get

**Parameters**

*p* Pipeline handle. \
 *table\_id* Table ID (0 .. *n\_tables*). \
 *table\_action\_id* Action index within the set of table actions (0 .. table n\_actions - 1). Not to be confused with the action ID, which works at the pipeline level (0 .. pipeline n\_actions - 1), which is precisely what this function returns as part of *table\_action*. \
 *table\_action* Table action info.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_table\_ops\_get (struct rte\_swx\_pipeline \* p, uint32\_t table\_id, struct rte\_swx\_table\_ops \* table\_ops, int \* is\_stub)

Table operations get

**Parameters**

*p* Pipeline handle. \
 *table\_id* Table ID (0 .. *n\_tables*). \
 *table\_ops* Table operations. Only valid when function returns success and *is\_stub* is zero (false). \
 *is\_stub* A stub table is a table with no match fields. No 'regular' table entries (i.e. entries other than the default entry) can be added to such a table, therefore the lookup operation always results in lookup miss. Non-zero (true) when the current table is a stub table, zero (false) otherwise.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_table\_stats\_read (struct rte\_swx\_pipeline \* p, const char \* table\_name, struct rte\_swx\_table\_stats \* stats)

Table statistics counters read

**Parameters**

*p* Pipeline handle. \
 *table\_name* Table name. \
 *stats* Table stats. Must point to a pre-allocated structure. The *n\_pkts\_action* field also needs to be pre-allocated as array of pipeline *n\_actions* elements. The pipeline actions that are not valid for the current table have their associated *n\_pkts\_action* element always set to zero.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_selector\_info\_get (struct rte\_swx\_pipeline \* p, uint32\_t selector\_id, struct rte\_swx\_ctl\_selector\_info \* selector)

Selector table info get

**Parameters**

*p* Pipeline handle. \
 *selector\_id* Selector table ID (0 .. *n\_selectors* - 1). \
 *selector* Selector table info.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_selector\_group\_id\_field\_info\_get (struct rte\_swx\_pipeline \* p, uint32\_t selector\_id, struct rte\_swx\_ctl\_table\_match\_field\_info \* field)

Selector table 'group ID' field info get

**Parameters**

*p* Pipeline handle. \
 *selector\_id* Selector table ID (0 .. *n\_selectors*). \
 *field* Selector table 'group ID' field info.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_selector\_field\_info\_get (struct rte\_swx\_pipeline \* p, uint32\_t selector\_id, uint32\_t selector\_field\_id, struct rte\_swx\_ctl\_table\_match\_field\_info \* field)

Sselector table selector field info get

**Parameters**

*p* Pipeline handle. \
 *selector\_id* Selector table ID (0 .. *n\_selectors*). \
 *selector\_field\_id* Selector table selector field ID (0 .. *n\_selector\_fields* - 1). \
 *field* Selector table selector field info.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_selector\_member\_id\_field\_info\_get (struct rte\_swx\_pipeline \* p, uint32\_t selector\_id, struct rte\_swx\_ctl\_table\_match\_field\_info \* field)

Selector table 'member ID' field info get

**Parameters**

*p* Pipeline handle. \
 *selector\_id* Selector table ID (0 .. *n\_selectors*). \
 *field* Selector table 'member ID' field info.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_selector\_stats\_read (struct rte\_swx\_pipeline \* p, const char \* selector\_name, struct rte\_swx\_pipeline\_selector\_stats \* stats)

Selector table statistics counters read

**Parameters**

*p* Pipeline handle. \
 *selector\_name* Selector table name. \
 *stats* Selector table stats. Must point to a pre-allocated structure.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_learner\_info\_get (struct rte\_swx\_pipeline \* p, uint32\_t learner\_id, struct rte\_swx\_ctl\_learner\_info \* learner)

Learner table info get

**Parameters**

*p* Pipeline handle. \
 *learner\_id* Learner table ID (0 .. *n\_learners* - 1). \
 *learner* Learner table info.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_learner\_match\_field\_info\_get (struct rte\_swx\_pipeline \* p, uint32\_t learner\_id, uint32\_t match\_field\_id, struct rte\_swx\_ctl\_table\_match\_field\_info \* match\_field)

Learner table match field info get

**Parameters**

*p* Pipeline handle. \
 *learner\_id* Learner table ID (0 .. *n\_learners* - 1). \
 *match\_field\_id* Match field ID (0 .. *n\_match\_fields* - 1). \
 *match\_field* Learner table match field info.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_learner\_action\_info\_get (struct rte\_swx\_pipeline \* p, uint32\_t learner\_id, uint32\_t learner\_action\_id, struct rte\_swx\_ctl\_table\_action\_info \* learner\_action)

Learner table action info get

**Parameters**

*p* Pipeline handle. \
 *learner\_id* Learner table ID (0 .. *n\_learners* - 1). \
 *learner\_action\_id* Action index within the set of learner table actions (0 .. learner table n\_actions - 1). Not to be confused with the pipeline-leve action ID (0 .. pipeline n\_actions - 1), which is precisely what this function returns as part of the *learner\_action*. \
 *learner\_action* Learner action info.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_learner\_timeout\_get (struct rte\_swx\_pipeline \* p, uint32\_t learner\_id, uint32\_t timeout\_id, uint32\_t \* timeout)

Learner table timeout get

**Parameters**

*p* Pipeline handle. \
 *learner\_id* Learner table ID (0 .. *n\_learners* - 1). \
 *timeout\_id* Timeout ID. \
 *timeout* Timeout value measured in seconds. Must be non-NULL.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_learner\_timeout\_set (struct rte\_swx\_pipeline \* p, uint32\_t learner\_id, uint32\_t timeout\_id, uint32\_t timeout)

Learner table timeout set

**Parameters**

*p* Pipeline handle. \
 *learner\_id* Learner table ID (0 .. *n\_learners* - 1). \
 *timeout\_id* Timeout ID. \
 *timeout* Timeout value measured in seconds.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_learner\_stats\_read (struct rte\_swx\_pipeline \* p, const char \* learner\_name, struct rte\_swx\_learner\_stats \* stats)

Learner table statistics counters read

**Parameters**

*p* Pipeline handle. \
 *learner\_name* Learner table name. \
 *stats* Learner table stats. Must point to a pre-allocated structure. The *n\_pkts\_action* field also needs to be pre-allocated as array of pipeline *n\_actions* elements. The pipeline actions that are not valid for the current learner table have their associated *n\_pkts\_action* element always set to zero.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_mirroring\_session\_set (struct rte\_swx\_pipeline \* p, uint32\_t session\_id, struct rte\_swx\_pipeline\_mirroring\_session\_params \* params)

Packet mirroring session set

**Parameters**

*p* Pipeline handle. \
 *session\_id* Packet mirroring session ID. \
 *params* Packet mirroring session parameters.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument; -EEXIST: Pipeline was already built successfully.

### \_\_rte\_experimental int rte\_swx\_pipeline\_table\_state\_get (struct rte\_swx\_pipeline \* p, struct rte\_swx\_table\_state \*\* table\_state)

Pipeline table state get

**Parameters**

*p* Pipeline handle. \
 *table\_state* After successful execution, the *table\_state* contains the pointer to the current pipeline table state, which is an array of *n\_tables* elements, with array element i containing the state of the i-th pipeline table. The pipeline continues to own all the data structures directly or indirectly referenced by the *table\_state* until the subsequent successful invocation of function *rte\_swx\_pipeline\_table\_state\_set*.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_pipeline\_table\_state\_set (struct rte\_swx\_pipeline \* p, struct rte\_swx\_table\_state \* table\_state)

Pipeline table state set

**Parameters**

*p* Pipeline handle. \
 *table\_state* After successful execution, the pipeline table state is updated to this *table\_state*. The ownership of all the data structures directly or indirectly referenced by this *table\_state* is passed from the caller to the pipeline.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental struct rte\_swx\_ctl\_pipeline \* rte\_swx\_ctl\_pipeline\_find (const char \* name)

Pipeline control find

**Parameters**

*name* Pipeline name.

**Returns**

Valid pipeline control handle if found or NULL otherwise.

### \_\_rte\_experimental struct rte\_swx\_ctl\_pipeline \* rte\_swx\_ctl\_pipeline\_create (struct rte\_swx\_pipeline \* p)

Pipeline control create

**Parameters**

*p* Pipeline handle.

**Returns**

Pipeline control handle, on success, or NULL, on error.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_table\_entry\_add (struct rte\_swx\_ctl\_pipeline \* ctl, const char \* table\_name, struct rte\_swx\_table\_entry \* entry)

Pipeline table entry add

Schedule entry for addition to table or update as part of the next commit operation.

**Parameters**

*ctl* Pipeline control handle. \
 *table\_name* Table name. \
 *entry* Entry to be added to the table.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_table\_default\_entry\_add (struct rte\_swx\_ctl\_pipeline \* ctl, const char \* table\_name, struct rte\_swx\_table\_entry \* entry)

Pipeline table default entry add

Schedule table default entry update as part of the next commit operation.

**Parameters**

*ctl* Pipeline control handle. \
 *table\_name* Table name. \
 *entry* The new table default entry. The *key* and *key\_mask* entry fields are ignored.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_table\_entry\_delete (struct rte\_swx\_ctl\_pipeline \* ctl, const char \* table\_name, struct rte\_swx\_table\_entry \* entry)

Pipeline table entry delete

Schedule entry for deletion from table as part of the next commit operation. Request is silently discarded if no such entry exists.

**Parameters**

*ctl* Pipeline control handle. \
 *table\_name* Table name. \
 *entry* Entry to be deleted from the table. The *action\_id* and *action\_data* entry fields are ignored.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_selector\_group\_add (struct rte\_swx\_ctl\_pipeline \* ctl, const char \* selector\_name, uint32\_t \* group\_id)

Pipeline selector table group add

Add a new group to a selector table. This operation is executed before this function returns and its result is independent of the result of the next commit operation.

**Parameters**

*ctl* Pipeline control handle. \
 *selector\_name* Selector table name. \
 *group\_id* The ID of the new group. Only valid when the function call is successful. This group is initially empty, i.e. it does not contain any members.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument; -ENOSPC: All groups are currently in use, no group available.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_selector\_group\_delete (struct rte\_swx\_ctl\_pipeline \* ctl, const char \* selector\_name, uint32\_t group\_id)

Pipeline selector table group delete

Schedule a group for deletion as part of the next commit operation. The group to be deleted can be empty or non-empty.

**Parameters**

*ctl* Pipeline control handle. \
 *selector\_name* Selector table name. \
 *group\_id* Group to be deleted from the selector table.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument; -ENOMEM: Not enough memory.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_selector\_group\_member\_add (struct rte\_swx\_ctl\_pipeline \* ctl, const char \* selector\_name, uint32\_t group\_id, uint32\_t member\_id, uint32\_t member\_weight)

Pipeline selector table member add to group

Schedule the operation to add a new member to an existing group as part of the next commit operation. If this member is already in this group, the member weight is updated to the new value. A weight of zero means this member is to be deleted from the group.

**Parameters**

*ctl* Pipeline control handle. \
 *selector\_name* Selector table name. \
 *group\_id* The group ID. \
 *member\_id* The member to be added to the group. \
 *member\_weight* Member weight.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument; -ENOMEM: Not enough memory; -ENOSPC: The group is full.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_selector\_group\_member\_delete (struct rte\_swx\_ctl\_pipeline \* ctl, const char \* selector\_name, uint32\_t group\_id, uint32\_t member\_id)

Pipeline selector table member delete from group

Schedule the operation to delete a member from an existing group as part of the next commit operation.

**Parameters**

*ctl* Pipeline control handle. \
 *selector\_name* Selector table name. \
 *group\_id* The group ID. Must be valid. \
 *member\_id* The member to be added to the group. Must be valid.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_learner\_default\_entry\_add (struct rte\_swx\_ctl\_pipeline \* ctl, const char \* learner\_name, struct rte\_swx\_table\_entry \* entry)

Pipeline learner table default entry add

Schedule learner table default entry update as part of the next commit operation.

**Parameters**

*ctl* Pipeline control handle. \
 *learner\_name* Learner table name. \
 *entry* The new table default entry. The *key* and *key\_mask* entry fields are ignored.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_commit (struct rte\_swx\_ctl\_pipeline \* ctl, int abort\_on\_fail)

Pipeline commit

Perform all the scheduled table work.

**Parameters**

*ctl* Pipeline control handle. \
 *abort\_on\_fail* When non-zero (false), all the scheduled work is discarded after a failed commit. Otherwise, the scheduled work is still kept pending for the next commit.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental void rte\_swx\_ctl\_pipeline\_abort (struct rte\_swx\_ctl\_pipeline \* ctl)

Pipeline abort

Discard all the scheduled table work.

**Parameters**

*ctl* Pipeline control handle.

### \_\_rte\_experimental struct rte\_swx\_table\_entry \* rte\_swx\_ctl\_pipeline\_table\_entry\_read (struct rte\_swx\_ctl\_pipeline \* ctl, const char \* table\_name, const char \* string, int \* is\_blank\_or\_comment)

Pipeline table entry read

Read table entry from string.

**Parameters**

*ctl* Pipeline control handle. \
 *table\_name* Table name. \
 *string* String containing the table entry. \
 *is\_blank\_or\_comment* On error, this argument provides an indication of whether *string* contains an invalid table entry (set to zero) or a blank or comment line that should typically be ignored (set to a non-zero value).

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental struct rte\_swx\_table\_entry \* rte\_swx\_ctl\_pipeline\_learner\_default\_entry\_read (struct rte\_swx\_ctl\_pipeline \* ctl, const char \* learner\_name, const char \* string, int \* is\_blank\_or\_comment)

Pipeline learner table default entry read

Read learner table default entry from string.

**Parameters**

*ctl* Pipeline control handle. \
 *learner\_name* Learner table name. \
 *string* String containing the learner table default entry. \
 *is\_blank\_or\_comment* On error, this argument provides an indication of whether *string* contains an invalid table entry (set to zero) or a blank or comment line that should typically be ignored (set to a non-zero value).

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_table\_fprintf (FILE \* f, struct rte\_swx\_ctl\_pipeline \* ctl, const char \* table\_name)

Pipeline table print to file

Print all the table entries to file.

**Parameters**

*f* Output file. \
 *ctl* Pipeline control handle. \
 *table\_name* Table name.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_selector\_fprintf (FILE \* f, struct rte\_swx\_ctl\_pipeline \* ctl, const char \* selector\_name)

Pipeline selector print to file

Print all the selector entries to file.

**Parameters**

*f* Output file. \
 *ctl* Pipeline control handle. \
 *selector\_name* Selector table name.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_regarray\_info\_get (struct rte\_swx\_pipeline \* p, uint32\_t regarray\_id, struct rte\_swx\_ctl\_regarray\_info \* regarray)

Register array info get

**Parameters**

*p* Pipeline handle. \
 *regarray\_id* Register array ID (0 .. *n\_regarrays* - 1). \
 *regarray* Register array info.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_regarray\_read (struct rte\_swx\_pipeline \* p, const char \* regarray\_name, uint32\_t regarray\_index, uint64\_t \* value)

Register read

**Parameters**

*p* Pipeline handle. \
 *regarray\_name* Register array name. \
 *regarray\_index* Register index within the array (0 .. *size* - 1). \
 *value* Current register value.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_regarray\_write (struct rte\_swx\_pipeline \* p, const char \* regarray\_name, uint32\_t regarray\_index, uint64\_t value)

Register write

**Parameters**

*p* Pipeline handle. \
 *regarray\_name* Register array name. \
 *regarray\_index* Register index within the array (0 .. *size* - 1). \
 *value* Value to be written to the register.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_regarray\_read\_with\_key (struct rte\_swx\_pipeline \* p, const char \* regarray\_name, const char \* table\_name, uint8\_t \* table\_key, uint64\_t \* value)

Register read with table key lookup

**Parameters**

*p* Pipeline handle. \
 *regarray\_name* Register array name. \
 *table\_name* Regular or learner table name. \
 *table\_key* Table key. \
 *value* Current register value.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument; -ENOMEM: Not enough memory.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_regarray\_write\_with\_key (struct rte\_swx\_pipeline \* p, const char \* regarray\_name, const char \* table\_name, uint8\_t \* table\_key, uint64\_t value)

Register write with table key lookup

**Parameters**

*p* Pipeline handle. \
 *regarray\_name* Register array name. \
 *table\_name* Regular or learner table name. \
 *table\_key* Table key. \
 *value* Value to be written to the register.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument; -ENOMEM: Not enough memory.

### \_\_rte\_experimental int rte\_swx\_ctl\_metarray\_info\_get (struct rte\_swx\_pipeline \* p, uint32\_t metarray\_id, struct rte\_swx\_ctl\_metarray\_info \* metarray)

Meter array info get

**Parameters**

*p* Pipeline handle. \
 *metarray\_id* Meter array ID (0 .. *n\_metarrays* - 1). \
 *metarray* Meter array info.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_meter\_profile\_add (struct rte\_swx\_pipeline \* p, const char \* name, struct rte\_meter\_trtcm\_params \* params)

Meter profile add

**Parameters**

*p* Pipeline handle. \
 *name* Meter profile name. \
 *params* Meter profile parameters.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument; -ENOMEM: Not enough space/cannot allocate memory; -EEXIST: Meter profile with this name already exists.

### \_\_rte\_experimental int rte\_swx\_ctl\_meter\_profile\_delete (struct rte\_swx\_pipeline \* p, const char \* name)

Meter profile delete

**Parameters**

*p* Pipeline handle. \
 *name* Meter profile name.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument; -EBUSY: Meter profile is currently in use.

### \_\_rte\_experimental int rte\_swx\_ctl\_meter\_reset (struct rte\_swx\_pipeline \* p, const char \* metarray\_name, uint32\_t metarray\_index)

Meter reset

Reset a meter within a given meter array to use the default profile that causes all the input packets to be colored as green. It is the responsibility of the control plane to make sure this meter is not used by the data plane pipeline before calling this function.

**Parameters**

*p* Pipeline handle. \
 *metarray\_name* Meter array name. \
 *metarray\_index* Meter index within the meter array.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_meter\_set (struct rte\_swx\_pipeline \* p, const char \* metarray\_name, uint32\_t metarray\_index, const char \* profile\_name)

Meter set

Set a meter within a given meter array to use a specific profile. It is the responsibility of the control plane to make sure this meter is not used by the data plane pipeline before calling this function.

**Parameters**

*p* Pipeline handle. \
 *metarray\_name* Meter array name. \
 *metarray\_index* Meter index within the meter array. \
 *profile\_name* Existing meter profile name.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_meter\_stats\_read (struct rte\_swx\_pipeline \* p, const char \* metarray\_name, uint32\_t metarray\_index, struct rte\_swx\_ctl\_meter\_stats \* stats)

Meter statistics counters read

**Parameters**

*p* Pipeline handle. \
 *metarray\_name* Meter array name. \
 *metarray\_index* Meter index within the meter array. \
 *stats* Meter statistics counters.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_meter\_reset\_with\_key (struct rte\_swx\_pipeline \* p, const char \* metarray\_name, const char \* table\_name, uint8\_t \* table\_key)

Meter reset with table key lookup

Reset a meter within a given meter array to use the default profile that causes all the input packets to be colored as green. It is the responsibility of the control plane to make sure this meter is not used by the data plane pipeline before calling this function.

**Parameters**

*p* Pipeline handle. \
 *metarray\_name* Meter array name. \
 *table\_name* Regular or learner table name. \
 *table\_key* Table key.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_meter\_set\_with\_key (struct rte\_swx\_pipeline \* p, const char \* metarray\_name, const char \* table\_name, uint8\_t \* table\_key, const char \* profile\_name)

Meter set with table key lookup

Set a meter within a given meter array to use a specific profile. It is the responsibility of the control plane to make sure this meter is not used by the data plane pipeline before calling this function.

**Parameters**

*p* Pipeline handle. \
 *metarray\_name* Meter array name. \
 *table\_name* Regular or learner table name. \
 *table\_key* Table key. \
 *profile\_name* Existing meter profile name.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_meter\_stats\_read\_with\_key (struct rte\_swx\_pipeline \* p, const char \* metarray\_name, const char \* table\_name, uint8\_t \* table\_key, struct rte\_swx\_ctl\_meter\_stats \* stats)

Meter statistics counters read with table key lookup

**Parameters**

*p* Pipeline handle. \
 *metarray\_name* Meter array name. \
 *table\_name* Regular or learner table name. \
 *table\_key* Table key. \
 *stats* Meter statistics counters.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_rss\_info\_get (struct rte\_swx\_pipeline \* p, uint32\_t rss\_obj\_id, struct rte\_swx\_ctl\_rss\_info \* rss)

RSS object info get

**Parameters**

*p* Pipeline handle. \
 *rss\_obj\_id* RSS object ID (0 .. *n\_rss* - 1). \
 *rss* RSS object info.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_rss\_key\_size\_read (struct rte\_swx\_pipeline \* p, const char \* rss\_obj\_name, uint32\_t \* key\_size)

RSS object key size read

**Parameters**

*p* Pipeline handle. \
 *rss\_obj\_name* RSS object name. \
 *key\_size* RSS key size in bytes.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_rss\_key\_read (struct rte\_swx\_pipeline \* p, const char \* rss\_obj\_name, uint8\_t \* key)

RSS object key read

**Parameters**

*p* Pipeline handle. \
 *rss\_obj\_name* RSS object name. \
 *key* RSS key. Must be pre-allocated by the caller to store *key\_size* bytes.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental int rte\_swx\_ctl\_pipeline\_rss\_key\_write (struct rte\_swx\_pipeline \* p, const char \* rss\_obj\_name, uint32\_t key\_size, uint8\_t \* key)

RSS object key write

**Parameters**

*p* Pipeline handle. \
 *rss\_obj\_name* RSS object name. \
 *key\_size* RSS key size in bytes. Must be at least 4 and a power of 2. \
 *key* RSS key.

**Returns**

0 on success or the following error codes otherwise: -EINVAL: Invalid argument.

### \_\_rte\_experimental void rte\_swx\_ctl\_pipeline\_free (struct rte\_swx\_ctl\_pipeline \* ctl)

Pipeline control free

**Parameters**

*ctl* Pipeline control handle. If ctl is NULL, no operation is performed.

## Author

Generated automatically by Doxygen for DPDK from the source code.
