DPDK  19.08.0-rc0
Data Fields
rte_flow_ops Struct Reference

#include <rte_flow_driver.h>

Data Fields

int(* validate )(struct rte_eth_dev *, const struct rte_flow_attr *, const struct rte_flow_item [], const struct rte_flow_action [], struct rte_flow_error *)
 
struct rte_flow *(* create )(struct rte_eth_dev *, const struct rte_flow_attr *, const struct rte_flow_item [], const struct rte_flow_action [], struct rte_flow_error *)
 
int(* destroy )(struct rte_eth_dev *, struct rte_flow *, struct rte_flow_error *)
 
int(* flush )(struct rte_eth_dev *, struct rte_flow_error *)
 
int(* query )(struct rte_eth_dev *, struct rte_flow *, const struct rte_flow_action *, void *, struct rte_flow_error *)
 
int(* isolate )(struct rte_eth_dev *, int, struct rte_flow_error *)
 

Detailed Description

Generic flow operations structure implemented and returned by PMDs.

To implement this API, PMDs must handle the RTE_ETH_FILTER_GENERIC filter type in their .filter_ctrl callback function (struct eth_dev_ops) as well as the RTE_ETH_FILTER_GET filter operation.

If successful, this operation must result in a pointer to a PMD-specific struct rte_flow_ops written to the argument address as described below:

// PMD filter_ctrl callback
static const struct rte_flow_ops pmd_flow_ops = { ... };
switch (filter_type) {
case RTE_ETH_FILTER_GENERIC:
if (filter_op != RTE_ETH_FILTER_GET)
return -EINVAL;
*(const void **)arg = &pmd_flow_ops;
return 0;
}

See also rte_flow_ops_get().

These callback functions are not supposed to be used by applications directly, which must rely on the API defined in rte_flow.h.

Public-facing wrapper functions perform a few consistency checks so that unimplemented (i.e. NULL) callbacks simply return -ENOTSUP. These callbacks otherwise only differ by their first argument (with port ID already resolved to a pointer to struct rte_eth_dev).

Definition at line 63 of file rte_flow_driver.h.

Field Documentation

◆ validate

int(* validate) (struct rte_eth_dev *, const struct rte_flow_attr *, const struct rte_flow_item [], const struct rte_flow_action [], struct rte_flow_error *)

See rte_flow_validate().

Definition at line 66 of file rte_flow_driver.h.

◆ create

struct rte_flow*(* create) (struct rte_eth_dev *, const struct rte_flow_attr *, const struct rte_flow_item [], const struct rte_flow_action [], struct rte_flow_error *)

See rte_flow_create().

Definition at line 73 of file rte_flow_driver.h.

◆ destroy

int(* destroy) (struct rte_eth_dev *, struct rte_flow *, struct rte_flow_error *)

See rte_flow_destroy().

Definition at line 80 of file rte_flow_driver.h.

◆ flush

int(* flush) (struct rte_eth_dev *, struct rte_flow_error *)

See rte_flow_flush().

Definition at line 85 of file rte_flow_driver.h.

◆ query

int(* query) (struct rte_eth_dev *, struct rte_flow *, const struct rte_flow_action *, void *, struct rte_flow_error *)

See rte_flow_query().

Definition at line 89 of file rte_flow_driver.h.

◆ isolate

int(* isolate) (struct rte_eth_dev *, int, struct rte_flow_error *)

See rte_flow_isolate().

Definition at line 96 of file rte_flow_driver.h.


The documentation for this struct was generated from the following file: