NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
doca_flow_ct.h File Reference
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <doca_compat.h>
#include <doca_dev.h>
#include <doca_error.h>
#include <doca_flow.h>
#include <doca_flow_net.h>
#include <doca_bitfield.h>
Include dependency graph for doca_flow_ct.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  doca_flow_ct_aging_ctx
 CT aging user plugin context. More...
 
union  doca_flow_ct_aging_conn
 CT aging connection info. More...
 
struct  doca_flow_ct_aging_conn_event
 CT aging user plugin connection event. More...
 
struct  doca_flow_ct_aging_ops
 CT aging user plugin callbacks. More...
 
struct  doca_flow_ct_aging_counter_state
 CT aging counter state. More...
 
struct  doca_flow_ct_aging_counter
 Counter statistics. More...
 
struct  doca_flow_ct_aging_conn_update_info
 Connection update information. More...
 
struct  doca_flow_ct_actions
 
struct  doca_flow_ct_match4
 doca flow CT IPv4 match pattern More...
 
struct  doca_flow_ct_match6
 doca flow CT IPv6 match pattern More...
 
struct  doca_flow_ct_match
 doca flow CT match pattern More...
 

Macros

#define DOCA_FLOW_CT_ACTION_HANDLE_INVALID   (UINT32_MAX)
 
#define DOCA_FLOW_CT_MARK_FROM_DPDK(_mark)   (DOCA_BETOH32((_mark) + 1) >> 8)
 

Typedefs

typedef void(* doca_flow_ct_entry_finalize_cb) (struct doca_flow_pipe *pipe, void *entry, uint16_t queue, void *usr_ctx)
 
typedef void(* doca_flow_ct_stats_update_cb) (struct doca_flow_pipe *pipe, void *priv_data, struct doca_flow_resource_query *stats_origin, struct doca_flow_resource_query *stats_reply)
 

Enumerations

enum  doca_flow_ct_flags {
  DOCA_FLOW_CT_FLAG_STATS = 1u << 0 , DOCA_FLOW_CT_FLAG_WORKER_STATS = 1u << 1 , DOCA_FLOW_CT_FLAG_NO_AGING = 1u << 2 , DOCA_FLOW_CT_FLAG_ASYMMETRIC_TUNNEL = 1u << 3 ,
  DOCA_FLOW_CT_FLAG_NO_COUNTER = 1u << 4 , DOCA_FLOW_CT_FLAG_WIRE_TO_WIRE = 1u << 5 , DOCA_FLOW_CT_FLAG_DUP_FILTER_UDP_ONLY = 1u << 6
}
 CT flags. More...
 
enum  doca_flow_ct_entry_flags {
  DOCA_FLOW_CT_ENTRY_FLAGS_NO_WAIT = (1 << 0) , DOCA_FLOW_CT_ENTRY_FLAGS_DIR_ORIGIN = (1 << 1) , DOCA_FLOW_CT_ENTRY_FLAGS_DIR_REPLY = (1 << 2) , DOCA_FLOW_CT_ENTRY_FLAGS_IPV6_ORIGIN = (1 << 3) ,
  DOCA_FLOW_CT_ENTRY_FLAGS_IPV6_REPLY = (1 << 4) , DOCA_FLOW_CT_ENTRY_FLAGS_COUNTER_ORIGIN = (1 << 5) , DOCA_FLOW_CT_ENTRY_FLAGS_COUNTER_REPLY = (1 << 6) , DOCA_FLOW_CT_ENTRY_FLAGS_COUNTER_SHARED = (1 << 7) ,
  DOCA_FLOW_CT_ENTRY_FLAGS_ENTRY_FINALIZE = (1 << 8) , DOCA_FLOW_CT_ENTRY_FLAGS_ALLOC_ON_MISS = (1 << 9) , DOCA_FLOW_CT_ENTRY_FLAGS_DUP_FILTER_ORIGIN = 1u << 10 , DOCA_FLOW_CT_ENTRY_FLAGS_DUP_FILTER_REPLY = 1u << 11 ,
  DOCA_FLOW_CT_ENTRY_FLAGS_STATS_UPDATES = 1u << 12
}
 doca flow CT entry operation flags More...
 

Functions

DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_create (struct doca_flow_ct_cfg **cfg)
 Create CT configuration. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_destroy (struct doca_flow_ct_cfg *cfg)
 Destroy CT configuration. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_flags (struct doca_flow_ct_cfg *cfg, uint32_t flags)
 Set CT flags. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_queues (struct doca_flow_ct_cfg *cfg, uint32_t n_queues)
 Set number of hardware queues. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_queue_depth (struct doca_flow_ct_cfg *cfg, uint32_t queue_depth)
 Set queue depth. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_ctrl_queues (struct doca_flow_ct_cfg *cfg, uint32_t n_ctrl_queues)
 Set number of control queues. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_user_actions (struct doca_flow_ct_cfg *cfg, uint32_t n_user_actions)
 Set number of user actions. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_connections (struct doca_flow_ct_cfg *cfg, uint32_t n_ipv4, uint32_t n_ipv6, uint32_t n_total)
 Set number of ARM sessions. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_max_connections_per_zone (struct doca_flow_ct_cfg *cfg, uint32_t max_connections_per_zone)
 Set maximum number of connections per zone. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_counter_asymmetric (struct doca_flow_ct_cfg *cfg, uint32_t n_counter_asymmetric)
 Set number of asymmetric counter connections. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_entry_private_data_size (struct doca_flow_ct_cfg *cfg, uint32_t entry_priv_data_size)
 Set entry private data size. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_entry_finalize_cb (struct doca_flow_ct_cfg *cfg, doca_flow_ct_entry_finalize_cb entry_finalize_cb)
 Set entry finalize callback to query connection final stats. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_status_update_cb (struct doca_flow_ct_cfg *cfg, doca_flow_ct_stats_update_cb stats_update_cb)
 Set status update callback to notify on counter changes. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_aging_core (struct doca_flow_ct_cfg *cfg, uint32_t aging_core)
 Set core ID to run aging thread on. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_aging_query_delay (struct doca_flow_ct_cfg *cfg, uint32_t aging_query_delay_s)
 Set aging query delay in seconds. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_aging_plugin_ops (struct doca_flow_ct_cfg *cfg, struct doca_flow_ct_aging_ops *aging_ops)
 Set aging plugin callbacks. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_dup_filter_size (struct doca_flow_ct_cfg *cfg, uint32_t dup_filter_sz)
 Set Number of connections to cache in duplication filter. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_direction (struct doca_flow_ct_cfg *cfg, bool direction, bool match_inner, struct doca_flow_meta *zone_match_mask, struct doca_flow_meta *meta_modify_mask)
 Set CT configuration origin and reply direction. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_init (const struct doca_flow_ct_cfg *cfg)
 Initialize the doca flow ct. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cap_is_dev_supported (const struct doca_devinfo *devinfo)
 Check if doca device supported by CT. More...
 
DOCA_EXPERIMENTAL void doca_flow_ct_destroy (void)
 Destroy the doca flow ct. More...
 
DOCA_EXPERIMENTAL void doca_flow_ct_meta_prepare (struct doca_flow_meta *meta, uint32_t zone, bool is_reply)
 Prepare meta with zone and default CT type. More...
 
DOCA_EXPERIMENTAL void doca_flow_ct_meta_mask_prepare (struct doca_flow_meta *meta, bool is_reply)
 Prepare meta as mask with zone and CT type. More...
 
DOCA_EXPERIMENTAL void doca_flow_ct_meta_set_match_zone (struct doca_flow_meta *meta, uint32_t zone, bool is_reply)
 Set meta match zone data to doca_flow meta. More...
 
DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_zone_offset (bool is_reply)
 Get zone data bit offset in meta data field. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_aging_counter_state_get (struct doca_flow_ct_aging_ctx *ctx, struct doca_flow_ct_aging_counter_state *ctrs, uint32_t n)
 Get counter state inside aging plugin timer callback. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_aging_counter_state_set (struct doca_flow_ct_aging_ctx *ctx, struct doca_flow_ct_aging_counter_state *ctrs, uint32_t n)
 Set counter state inside aging plugin timer callback. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_aging_counter_query (struct doca_flow_ct_aging_ctx *ctx, struct doca_flow_ct_aging_counter *ctrs, uint32_t n)
 Get counter statistics inside aging plugin timer callback. More...
 
DOCA_EXPERIMENTAL void doca_flow_ct_aging_conn_update (struct doca_flow_ct_aging_ctx *ctx, struct doca_flow_ct_aging_conn_update_info *info, uint32_t n)
 Update connection counter inside aging plugin timer callback. More...
 
DOCA_EXPERIMENTAL void doca_flow_ct_aging_conn_timeout (struct doca_flow_ct_aging_ctx *ctx, uint32_t *aging_conn_ids, uint32_t n)
 Remove timeout connections inside aging plugin timer callback. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_entries_process (struct doca_flow_port *port, uint16_t pipe_queue, uint32_t min_room, uint32_t max_processed_entries, uint32_t *queue_room)
 Process CT entries in queue. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_entry_prepare (uint16_t queue, struct doca_flow_pipe *pipe, uint32_t flags, struct doca_flow_ct_match *match_origin, uint32_t hash_origin, struct doca_flow_ct_match *match_reply, uint32_t hash_reply, struct doca_flow_pipe_entry **entry, bool *conn_found)
 Lookup recent CT entry and create on miss. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_entry_prepare_rollback (uint16_t queue, struct doca_flow_pipe *pipe, struct doca_flow_pipe_entry *entry)
 Free the CT entry that hasn't been added to CT pipe. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_add_entry (uint16_t queue, struct doca_flow_pipe *pipe, uint32_t flags, struct doca_flow_ct_match *match_origin, struct doca_flow_ct_match *match_reply, const struct doca_flow_ct_actions *actions_origin, const struct doca_flow_ct_actions *actions_reply, uint32_t fwd_handle_origin, uint32_t fwd_handle_reply, uint32_t timeout_s, void *usr_ctx, struct doca_flow_pipe_entry *entry)
 Add new entry to doca flow CT pipe. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_entry_add_dir (uint16_t queue, struct doca_flow_pipe *pipe, uint32_t flags, struct doca_flow_ct_match *match, const struct doca_flow_ct_actions *actions, uint32_t fwd_handle, struct doca_flow_pipe_entry *entry)
 Add missing direction rule to CT connection. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_update_entry (uint16_t queue, struct doca_flow_pipe *pipe, uint32_t flags, struct doca_flow_pipe_entry *entry, const struct doca_flow_ct_actions *actions_origin, const struct doca_flow_ct_actions *actions_reply, uint32_t fwd_handle_origin, uint32_t fwd_handle_reply, uint32_t timeout_s)
 Update CT entry meta or counter. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_rm_entry (uint16_t queue, struct doca_flow_pipe *pipe, uint32_t flags, struct doca_flow_pipe_entry *entry)
 remove CT entry. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_get_entry (uint16_t queue, struct doca_flow_pipe *pipe, uint32_t flags, struct doca_flow_pipe_entry *entry, struct doca_flow_ct_match *match_origin, struct doca_flow_ct_match *match_reply, uint64_t *entry_flags)
 Get CT entry match pattern. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_query_entry (uint16_t queue, struct doca_flow_pipe *pipe, uint32_t flags, struct doca_flow_pipe_entry *entry, struct doca_flow_resource_query *stats_origin, struct doca_flow_resource_query *stats_reply, uint64_t *last_hit_s)
 Extract information about specific entry. More...
 
DOCA_EXPERIMENTAL void * doca_flow_ct_entry_get_priv_data (uint16_t queue, struct doca_flow_pipe *pipe, struct doca_flow_pipe_entry *entry)
 
DOCA_EXPERIMENTAL uint32_t doca_flow_ct_entry_get_conn_id (uint16_t queue, struct doca_flow_pipe *pipe, struct doca_flow_pipe_entry *entry)
 
DOCA_EXPERIMENTAL uint32_t doca_flow_ct_entry_get_aging_conn_id (uint16_t queue, struct doca_flow_pipe *pipe, struct doca_flow_pipe_entry *entry)
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_entry_get_by_id (uint16_t queue, struct doca_flow_pipe *pipe, uint32_t conn_id, struct doca_flow_pipe_entry **entry, void **priv_data)
 Retrieves the entry from CT pipe based on the given connection ID. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_actions_add_shared (uint16_t ctrl_queue, struct doca_flow_pipe *pipe, const struct doca_flow_ct_actions actions[], uint32_t nb_actions, uint32_t actions_handles[])
 Add shared modify-action. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_actions_update_shared (uint16_t ctrl_queue, struct doca_flow_pipe *pipe, const struct doca_flow_ct_actions actions[], uint32_t nb_actions, uint32_t actions_handles[])
 Update shared modify-action. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_actions_rm_shared (uint16_t ctrl_queue, struct doca_flow_pipe *pipe, uint32_t actions_handles[], uint32_t nb_actions)
 Remove shared modify-action. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_fwd_register (struct doca_flow_port *port, uint32_t fwd_count, struct doca_flow_fwd fwd[], uint32_t fwd_handle[])
 CT register multiple forwards pipes. More...