Data Accelerator Offload
Loading...
Searching...
No Matches
Data Structures | Typedefs | Functions
dao_graph_feature_arc_worker.h File Reference
#include <stddef.h>
#include <stdalign.h>
#include <dao_graph_feature_arc.h>
#include <rte_bitops.h>

Go to the source code of this file.

Data Structures

struct  dao_graph_feature_data
 
struct  dao_graph_feature
 
struct  dao_graph_feature_arc
 
struct  feature_arc_main
 

Typedefs

typedef struct dao_graph_feature_data dao_graph_feature_data_t
 
typedef struct feature_arc_main dao_graph_feature_arc_main_t
 

Functions

static struct dao_graph_feature_datadao_graph_feature_data_get (struct dao_graph_feature *df, uint8_t feature_index)
 
static struct dao_graph_featuredao_graph_feature_get (struct dao_graph_feature_arc *dfl, uint32_t index)
 
static int dao_graph_feature_arc_has_first_feature (struct dao_graph_feature_arc *dfl, uint32_t index, dao_graph_feature_t *feature)
 
static int dao_graph_feature_arc_has_next_feature (struct dao_graph_feature_arc *dfl, uint32_t index, dao_graph_feature_t *feature)
 
static void dao_graph_feature_arc_prefetch (struct dao_graph_feature_arc *dfl, uint32_t index)
 
static int dao_graph_feature_arc_num_enabled_features (struct dao_graph_feature_arc *arc)
 
static int dao_graph_feature_arc_has_feature (struct dao_graph_feature_arc *dfl, uint32_t index, dao_graph_feature_t *feature)
 
static void __dao_graph_prefetch_data_prefetch (struct dao_graph_feature_arc *dfl, int index, dao_graph_feature_t feature)
 
static void dao_graph_feature_data_prefetch (struct dao_graph_feature_arc *dfl, uint32_t index, dao_graph_feature_t feature)
 
static int dao_graph_feature_arc_first_feature_data_get (struct dao_graph_feature_arc *dfl, dao_graph_feature_t feature, uint32_t index, rte_edge_t *edge, int64_t *data)
 
static int dao_graph_feature_arc_next_feature_data_get (struct dao_graph_feature_arc *dfl, dao_graph_feature_t feature, uint32_t index, rte_edge_t *edge, int64_t *data)
 
static int dao_graph_feature_arc_feature_data_get (struct dao_graph_feature_arc *dfl, dao_graph_feature_t feature, uint32_t index, rte_edge_t *edge, int64_t *data)
 

Detailed Description

dao_graph_feature_arc_worker.h

Defines fast path structure

Definition in file dao_graph_feature_arc_worker.h.

Typedef Documentation

◆ dao_graph_feature_data_t

DAO_GRAPH feature data representing a fast path feature object on an interface/index

◆ dao_graph_feature_arc_main_t

Feature arc main

Function Documentation

◆ dao_graph_feature_data_get()

static struct dao_graph_feature_data * dao_graph_feature_data_get ( struct dao_graph_feature df,
uint8_t  feature_index 
)
inlinestatic

Get dao_graph feature data object for a index in feature

Parameters
dfFeature pointer
feature_indexIndex of feature maintained in slow path linked list
Returns
Valid feature data

Definition at line 188 of file dao_graph_feature_arc_worker.h.

◆ dao_graph_feature_get()

static struct dao_graph_feature * dao_graph_feature_get ( struct dao_graph_feature_arc dfl,
uint32_t  index 
)
inlinestatic

Get dao_graph_feature object for a given interface/index from feature arc

Parameters
dflFeature arc pointer
indexInterface index
Returns
Valid feature pointer

Definition at line 205 of file dao_graph_feature_arc_worker.h.

◆ dao_graph_feature_arc_has_first_feature()

static int dao_graph_feature_arc_has_first_feature ( struct dao_graph_feature_arc dfl,
uint32_t  index,
dao_graph_feature_t feature 
)
inlinestatic

Fast path API to check if first feature enabled on a feature arc

Must be called in feature_arc->start_node processing

Parameters
dflFeature arc object
indexInterface/Index
[out]featurePointer to dao_graph_feature_t. Valid if API returns 1
Returns
1: If feature is enabled 0: If feature is not enabled

Definition at line 228 of file dao_graph_feature_arc_worker.h.

◆ dao_graph_feature_arc_has_next_feature()

static int dao_graph_feature_arc_has_next_feature ( struct dao_graph_feature_arc dfl,
uint32_t  index,
dao_graph_feature_t feature 
)
inlinestatic

Fast path API to get next feature when current node is already on an feature arc and not consuming packet. This feature must forward the packet to next enabled feature by passing returned dao_graph_feature_t to dao_graph_feature_arc_next_feature_data_get()

Parameters
dflFeature arc object
indexInterface/Index
[out]featurePointer to dao_graph_feature_t. Valid if API returns 1
Returns
1: If next feature is enabled 0: If next feature is not enabled

Definition at line 252 of file dao_graph_feature_arc_worker.h.

◆ dao_graph_feature_arc_prefetch()

static void dao_graph_feature_arc_prefetch ( struct dao_graph_feature_arc dfl,
uint32_t  index 
)
inlinestatic

Prefetch feature arc fast path cache line

Parameters
dflDAO_GRAPH feature arc object
indexInterface/index

Definition at line 285 of file dao_graph_feature_arc_worker.h.

◆ dao_graph_feature_arc_num_enabled_features()

static int dao_graph_feature_arc_num_enabled_features ( struct dao_graph_feature_arc arc)
inlinestatic

Get number of enabled features in an arc

Parameters
arcDAO_GRAPH feature arc object

Definition at line 299 of file dao_graph_feature_arc_worker.h.

◆ dao_graph_feature_arc_has_feature()

static int dao_graph_feature_arc_has_feature ( struct dao_graph_feature_arc dfl,
uint32_t  index,
dao_graph_feature_t feature 
)
inlinestatic

Fast path API to check if any feature enabled on a feature arc

Parameters
dflFeature arc object
indexInterface/Index
[out]featurePointer to dao_graph_feature_t. Valid if API returns 1
Returns
1: If feature is enabled 0: If feature is not enabled

Definition at line 320 of file dao_graph_feature_arc_worker.h.

◆ __dao_graph_prefetch_data_prefetch()

static void __dao_graph_prefetch_data_prefetch ( struct dao_graph_feature_arc dfl,
int  index,
dao_graph_feature_t  feature 
)
inlinestatic

Prefetch feature data upfront

Parameters
dflDAO_GRAPH feature arc object
indexInterface/index
featurePointer to feature object returned from dao_graph_feature_arc_has_feature() or dao_graph_feature_arc_first_feature_data_get()

Definition at line 353 of file dao_graph_feature_arc_worker.h.

◆ dao_graph_feature_data_prefetch()

static void dao_graph_feature_data_prefetch ( struct dao_graph_feature_arc dfl,
uint32_t  index,
dao_graph_feature_t  feature 
)
inlinestatic

Prefetch feature data upfront. Perform sanity

Parameters
dflDAO_GRAPH feature arc object
indexInterface/index
featurePointer to feature object returned from dao_graph_feature_arc_has_feature() or dao_graph_feature_arc_first_feature_data_get()

Definition at line 374 of file dao_graph_feature_arc_worker.h.

◆ dao_graph_feature_arc_first_feature_data_get()

static int dao_graph_feature_arc_first_feature_data_get ( struct dao_graph_feature_arc dfl,
dao_graph_feature_t  feature,
uint32_t  index,
rte_edge_t *  edge,
int64_t *  data 
)
inlinestatic

Fast path API to get first feature data aka {edge, int32_t data}

Must be called in feature_arc->start_node processing

Parameters
dflFeature arc object
featurereturned from dao_graph_feature_arc_has_feature()
indexInterface/Index
[out]edgePointer to rte_node edge. Valid if API returns Success
[out]dataPointer to int64_t data set via dao_graph_feature_enable(). Valid if API returns Success
Returns
0: Success <0: Failure

Definition at line 410 of file dao_graph_feature_arc_worker.h.

◆ dao_graph_feature_arc_next_feature_data_get()

static int dao_graph_feature_arc_next_feature_data_get ( struct dao_graph_feature_arc dfl,
dao_graph_feature_t  feature,
uint32_t  index,
rte_edge_t *  edge,
int64_t *  data 
)
inlinestatic

Fast path API to get next feature data aka {edge, int32_t data}

Must NOT be called in feature_arc->start_node processing instead must be called in intermediate feature nodes on a featur-arc.

Parameters
dflFeature arc object
featurereturned from dao_graph_feature_arc_has_next_feature()
indexInterface/Index
[out]edgePointer to rte_node edge. Valid if API returns Success
[out]dataPointer to int64_t data set via dao_graph_feature_enable(). Valid if API returns Success
Returns
0: Success <0: Failure

Definition at line 458 of file dao_graph_feature_arc_worker.h.

◆ dao_graph_feature_arc_feature_data_get()

static int dao_graph_feature_arc_feature_data_get ( struct dao_graph_feature_arc dfl,
dao_graph_feature_t  feature,
uint32_t  index,
rte_edge_t *  edge,
int64_t *  data 
)
inlinestatic

Fast path API to get next feature data aka {edge, int32_t data}

Parameters
dflFeature arc object
featurereturned from dao_graph_feature_arc_has_feature()
indexInterface/Index
[out]edgePointer to rte_node edge. Valid if API returns Success
[out]dataPointer to int64_t data set via dao_graph_feature_enable(). Valid if API returns Success
Returns
0: Success <0: Failure

Definition at line 503 of file dao_graph_feature_arc_worker.h.