NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
upf_accel.h File Reference
#include <stdbool.h>
#include <rte_malloc.h>
#include <rte_hash.h>
#include <doca_flow.h>
#include <doca_flow_net.h>
#include <flow_common.h>
#include <packet_parser.h>
Include dependency graph for upf_accel.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  app_shared_counter_ids
 
struct  upf_accel_ip_addr
 
struct  upf_accel_ip_port_range
 
struct  upf_accel_pdr
 
struct  upf_accel_pdrs
 
struct  upf_accel_far
 
struct  upf_accel_fars
 
struct  upf_accel_urr
 
struct  upf_accel_urrs
 
struct  upf_accel_qer
 
struct  upf_accel_qers
 
struct  upf_accel_vxlan
 
struct  upf_accel_vxlans
 
struct  upf_accel_config
 
struct  upf_accel_match_tun
 
struct  upf_accel_match_5t
 
struct  upf_accel_match_8t
 
struct  upf_accel_sw_aging_ll
 
struct  upf_accel_sw_aging_ll_node
 
struct  upf_accel_dyn_entry_ctx
 
struct  upf_accel_static_entry_ctx
 
struct  upf_accel_entry_ctx
 
struct  upf_accel_ctx
 
struct  upf_accel_action_cfg
 
struct  upf_accel_pipe_cfg
 
struct  upf_accel_entry_cfg
 

Macros

#define UPF_ACCEL_NUM_DOMAINS_PER_PORT   2
 
#define UPF_ACCEL_NUM_DOMAINS   (UPF_ACCEL_PORTS_MAX * UPF_ACCEL_NUM_DOMAINS_PER_PORT)
 
#define UPF_ACCEL_PDR_STR_LEN   64
 
#define UPF_ACCEL_PDR_URRIDS_LEN   16
 
#define UPF_ACCEL_PDR_QERIDS_LEN   16
 
#define UPF_ACCEL_LOG_MAX_NUM_PDR   5
 
#define UPF_ACCEL_MAX_NUM_PDR   (1ul << UPF_ACCEL_LOG_MAX_NUM_PDR)
 
#define UPF_ACCEL_NUM_QUOTA_COUNTERS_PER_PORT   UPF_ACCEL_MAX_NUM_PDR
 
#define UPF_ACCEL_SRC_MAC
 
#define UPF_ACCEL_DST_MAC
 
#define UPF_ACCEL_SRC_IP   0xc0a80101
 
#define UPF_ACCEL_DST_IP   0xc0a80201
 
#define UPF_ACCEL_LOG_MAX_PDR_NUM_RATE_METERS   2
 
#define UPF_ACCEL_MAX_PDR_NUM_RATE_METERS   (1ul << UPF_ACCEL_LOG_MAX_PDR_NUM_RATE_METERS)
 
#define UPF_ACCEL_META_PKT_DIR_OFFSET   (UPF_ACCEL_LOG_MAX_NUM_PDR)
 
#define UPF_ACCEL_META_PKT_DIR_UL   (0x1 << UPF_ACCEL_META_PKT_DIR_OFFSET)
 
#define UPF_ACCEL_META_PKT_DIR_DL   (0x2 << UPF_ACCEL_META_PKT_DIR_OFFSET)
 
#define UPF_ACCEL_META_PKT_DIR_MASK   (0x3 << UPF_ACCEL_META_PKT_DIR_OFFSET)
 
#define UPF_ACCEL_HW_AGING_POLL_INTERVAL_SEC   (1)
 
#define UPF_ACCEL_HW_AGING_TIME_DEFAULT_SEC   (15)
 
#define UPF_ACCEL_SW_AGING_TIME_DEFAULT_SEC   (15)
 
#define UPF_ACCEL_DEFAULT_DPI_THRESHOLD   2
 
#define UPF_ACCEL_FIXED_PORT_NONE   (-1)
 
#define UNUSED(x)   ((void)(x))
 

Typedefs

typedef enum upf_accel_port(* upf_accel_get_forwarding_port) (enum upf_accel_port port_id)
 

Enumerations

enum  upf_accel_port { UPF_ACCEL_PORT0 , UPF_ACCEL_PORT1 , UPF_ACCEL_PORTS_MAX }
 
enum  upf_accel_pdr_pdi_si { UPF_ACCEL_PDR_PDI_SI_UL = 0 , UPF_ACCEL_PDR_PDI_SI_DL = 2 }
 
enum  upf_accel_far_action { UPF_ACCEL_FAR_ACTION_DROP = 1 , UPF_ACCEL_FAR_ACTION_FWD = 2 }
 
enum  upf_accel_pipe_drop_type { UPF_ACCEL_DROP_DBG , UPF_ACCEL_DROP_RATE , UPF_ACCEL_DROP_FILTER , UPF_ACCEL_DROP_NUM }
 
enum  upf_accel_pipe_type {
  UPF_ACCEL_PIPE_RX_ROOT , UPF_ACCEL_PIPE_FAR , UPF_ACCEL_PIPE_DL_TO_SW , UPF_ACCEL_PIPE_UL_TO_SW ,
  UPF_ACCEL_PIPE_RX_VXLAN_DECAP , UPF_ACCEL_PIPE_RX_DROPS_START , UPF_ACCEL_PIPE_RX_DROPS_END = UPF_ACCEL_PIPE_RX_DROPS_START + UPF_ACCEL_DROP_NUM , UPF_ACCEL_PIPE_TX_ROOT ,
  UPF_ACCEL_PIPE_TX_COUNTER , UPF_ACCEL_PIPE_TX_VXLAN_ENCAP , UPF_ACCEL_PIPE_TX_DROPS_START , UPF_ACCEL_PIPE_TX_DROPS_END = UPF_ACCEL_PIPE_TX_DROPS_START + UPF_ACCEL_DROP_NUM ,
  UPF_ACCEL_PIPE_TX_SHARED_METERS_START , UPF_ACCEL_PIPE_TX_SHARED_METERS_END = UPF_ACCEL_PIPE_TX_SHARED_METERS_START + UPF_ACCEL_MAX_PDR_NUM_RATE_METERS , UPF_ACCEL_PIPE_TX_COLOR_MATCH_START , UPF_ACCEL_PIPE_TX_COLOR_MATCH_END = UPF_ACCEL_PIPE_TX_COLOR_MATCH_START + UPF_ACCEL_MAX_PDR_NUM_RATE_METERS - 1 ,
  UPF_ACCEL_PIPE_TX_COLOR_MATCH_NO_MORE_METERS , UPF_ACCEL_PIPE_ULDL , UPF_ACCEL_PIPE_EXT_GTP , UPF_ACCEL_PIPE_8T ,
  UPF_ACCEL_PIPE_7T , UPF_ACCEL_PIPE_5T , UPF_ACCEL_PIPE_DECAP , UPF_ACCEL_PIPE_NUM
}
 
enum  upf_accel_encap_action_type { UPF_ACCEL_ENCAP_ACTION_4G , UPF_ACCEL_ENCAP_ACTION_5G , UPF_ACCEL_ENCAP_ACTION_NONE , UPF_ACCEL_ENCAP_ACTION_NUM }
 
enum  upf_accel_rule_type { UPF_ACCEL_RULE_DYNAMIC , UPF_ACCEL_RULE_STATIC }
 
enum  upf_accel_flow_status {
  UPF_ACCEL_FLOW_STATUS_NONE , UPF_ACCEL_FLOW_STATUS_PENDING , UPF_ACCEL_FLOW_STATUS_UNACCELERATED , UPF_ACCEL_FLOW_STATUS_ACCELERATED ,
  UPF_ACCEL_FLOW_STATUS_FAILED_ACCELERATION
}
 

Functions

struct upf_accel_entry_ctx __rte_aligned (RTE_CACHE_LINE_SIZE)
 
static uint8_t upf_accel_drop_idx_get (struct upf_accel_pipe_cfg *pipe_cfg, enum upf_accel_pipe_drop_type drop_type)
 
static uint8_t upf_accel_domain_idx_get (enum upf_accel_port port_id, uint8_t domain)
 
static enum upf_accel_port upf_accel_get_opposite_port (enum upf_accel_port port_id)
 
doca_error_t upf_accel_smf_parse (struct upf_accel_config *cfg)
 
doca_error_t upf_accel_vxlan_parse (struct upf_accel_config *cfg)
 
void upf_accel_smf_cleanup (struct upf_accel_config *cfg)
 
void upf_accel_vxlan_cleanup (struct upf_accel_config *cfg)
 
void upf_accel_sw_aging_ll_init (struct upf_accel_fp_data *fp_data, enum parser_pkt_type pkt_type)
 

Variables

volatile bool force_quit
 
enum upf_accel_rule_type type
 
union {
   struct upf_accel_dyn_entry_ctx   dyn_ctx
 
   struct upf_accel_static_entry_ctx   static_ctx
 
}; 
 
struct upf_accel_ctx __rte_aligned
 

Macro Definition Documentation

◆ UNUSED

#define UNUSED (   x)    ((void)(x))

Definition at line 93 of file upf_accel.h.

◆ UPF_ACCEL_DEFAULT_DPI_THRESHOLD

#define UPF_ACCEL_DEFAULT_DPI_THRESHOLD   2

Definition at line 89 of file upf_accel.h.

◆ UPF_ACCEL_DST_IP

#define UPF_ACCEL_DST_IP   0xc0a80201

Definition at line 68 of file upf_accel.h.

◆ UPF_ACCEL_DST_MAC

#define UPF_ACCEL_DST_MAC
Value:
{ \
0xde, 0xad, 0xbe, 0xef, 0x00, 0x02 \
}

Definition at line 62 of file upf_accel.h.

◆ UPF_ACCEL_FIXED_PORT_NONE

#define UPF_ACCEL_FIXED_PORT_NONE   (-1)

Definition at line 91 of file upf_accel.h.

◆ UPF_ACCEL_HW_AGING_POLL_INTERVAL_SEC

#define UPF_ACCEL_HW_AGING_POLL_INTERVAL_SEC   (1)

Definition at line 78 of file upf_accel.h.

◆ UPF_ACCEL_HW_AGING_TIME_DEFAULT_SEC

#define UPF_ACCEL_HW_AGING_TIME_DEFAULT_SEC   (15)

Definition at line 79 of file upf_accel.h.

◆ UPF_ACCEL_LOG_MAX_NUM_PDR

#define UPF_ACCEL_LOG_MAX_NUM_PDR   5

Definition at line 53 of file upf_accel.h.

◆ UPF_ACCEL_LOG_MAX_PDR_NUM_RATE_METERS

#define UPF_ACCEL_LOG_MAX_PDR_NUM_RATE_METERS   2

Definition at line 70 of file upf_accel.h.

◆ UPF_ACCEL_MAX_NUM_PDR

#define UPF_ACCEL_MAX_NUM_PDR   (1ul << UPF_ACCEL_LOG_MAX_NUM_PDR)

Definition at line 54 of file upf_accel.h.

◆ UPF_ACCEL_MAX_PDR_NUM_RATE_METERS

#define UPF_ACCEL_MAX_PDR_NUM_RATE_METERS   (1ul << UPF_ACCEL_LOG_MAX_PDR_NUM_RATE_METERS)

Definition at line 71 of file upf_accel.h.

◆ UPF_ACCEL_META_PKT_DIR_DL

#define UPF_ACCEL_META_PKT_DIR_DL   (0x2 << UPF_ACCEL_META_PKT_DIR_OFFSET)

Definition at line 75 of file upf_accel.h.

◆ UPF_ACCEL_META_PKT_DIR_MASK

#define UPF_ACCEL_META_PKT_DIR_MASK   (0x3 << UPF_ACCEL_META_PKT_DIR_OFFSET)

Definition at line 76 of file upf_accel.h.

◆ UPF_ACCEL_META_PKT_DIR_OFFSET

#define UPF_ACCEL_META_PKT_DIR_OFFSET   (UPF_ACCEL_LOG_MAX_NUM_PDR)

Definition at line 73 of file upf_accel.h.

◆ UPF_ACCEL_META_PKT_DIR_UL

#define UPF_ACCEL_META_PKT_DIR_UL   (0x1 << UPF_ACCEL_META_PKT_DIR_OFFSET)

Definition at line 74 of file upf_accel.h.

◆ UPF_ACCEL_NUM_DOMAINS

#define UPF_ACCEL_NUM_DOMAINS   (UPF_ACCEL_PORTS_MAX * UPF_ACCEL_NUM_DOMAINS_PER_PORT)

Definition at line 47 of file upf_accel.h.

◆ UPF_ACCEL_NUM_DOMAINS_PER_PORT

#define UPF_ACCEL_NUM_DOMAINS_PER_PORT   2

Definition at line 46 of file upf_accel.h.

◆ UPF_ACCEL_NUM_QUOTA_COUNTERS_PER_PORT

#define UPF_ACCEL_NUM_QUOTA_COUNTERS_PER_PORT   UPF_ACCEL_MAX_NUM_PDR

Definition at line 56 of file upf_accel.h.

◆ UPF_ACCEL_PDR_QERIDS_LEN

#define UPF_ACCEL_PDR_QERIDS_LEN   16

Definition at line 51 of file upf_accel.h.

◆ UPF_ACCEL_PDR_STR_LEN

#define UPF_ACCEL_PDR_STR_LEN   64

Definition at line 49 of file upf_accel.h.

◆ UPF_ACCEL_PDR_URRIDS_LEN

#define UPF_ACCEL_PDR_URRIDS_LEN   16

Definition at line 50 of file upf_accel.h.

◆ UPF_ACCEL_SRC_IP

#define UPF_ACCEL_SRC_IP   0xc0a80101

Definition at line 67 of file upf_accel.h.

◆ UPF_ACCEL_SRC_MAC

#define UPF_ACCEL_SRC_MAC
Value:
{ \
0xde, 0xad, 0xbe, 0xef, 0x00, 0x01 \
}

Definition at line 58 of file upf_accel.h.

◆ UPF_ACCEL_SW_AGING_TIME_DEFAULT_SEC

#define UPF_ACCEL_SW_AGING_TIME_DEFAULT_SEC   (15)

Definition at line 81 of file upf_accel.h.

Typedef Documentation

◆ upf_accel_get_forwarding_port

typedef enum upf_accel_port(* upf_accel_get_forwarding_port) (enum upf_accel_port port_id)

Definition at line 95 of file upf_accel.h.

Enumeration Type Documentation

◆ upf_accel_encap_action_type

Enumerator
UPF_ACCEL_ENCAP_ACTION_4G 
UPF_ACCEL_ENCAP_ACTION_5G 
UPF_ACCEL_ENCAP_ACTION_NONE 
UPF_ACCEL_ENCAP_ACTION_NUM 

Definition at line 150 of file upf_accel.h.

◆ upf_accel_far_action

Enumerator
UPF_ACCEL_FAR_ACTION_DROP 
UPF_ACCEL_FAR_ACTION_FWD 

Definition at line 107 of file upf_accel.h.

◆ upf_accel_flow_status

Enumerator
UPF_ACCEL_FLOW_STATUS_NONE 
UPF_ACCEL_FLOW_STATUS_PENDING 
UPF_ACCEL_FLOW_STATUS_UNACCELERATED 
UPF_ACCEL_FLOW_STATUS_ACCELERATED 
UPF_ACCEL_FLOW_STATUS_FAILED_ACCELERATION 

Definition at line 162 of file upf_accel.h.

◆ upf_accel_pdr_pdi_si

Enumerator
UPF_ACCEL_PDR_PDI_SI_UL 
UPF_ACCEL_PDR_PDI_SI_DL 

Definition at line 101 of file upf_accel.h.

◆ upf_accel_pipe_drop_type

Enumerator
UPF_ACCEL_DROP_DBG 
UPF_ACCEL_DROP_RATE 
UPF_ACCEL_DROP_FILTER 
UPF_ACCEL_DROP_NUM 

Definition at line 112 of file upf_accel.h.

◆ upf_accel_pipe_type

Enumerator
UPF_ACCEL_PIPE_RX_ROOT 
UPF_ACCEL_PIPE_FAR 
UPF_ACCEL_PIPE_DL_TO_SW 
UPF_ACCEL_PIPE_UL_TO_SW 
UPF_ACCEL_PIPE_RX_VXLAN_DECAP 
UPF_ACCEL_PIPE_RX_DROPS_START 
UPF_ACCEL_PIPE_RX_DROPS_END 
UPF_ACCEL_PIPE_TX_ROOT 
UPF_ACCEL_PIPE_TX_COUNTER 
UPF_ACCEL_PIPE_TX_VXLAN_ENCAP 
UPF_ACCEL_PIPE_TX_DROPS_START 
UPF_ACCEL_PIPE_TX_DROPS_END 
UPF_ACCEL_PIPE_TX_SHARED_METERS_START 
UPF_ACCEL_PIPE_TX_SHARED_METERS_END 
UPF_ACCEL_PIPE_TX_COLOR_MATCH_START 
UPF_ACCEL_PIPE_TX_COLOR_MATCH_END 
UPF_ACCEL_PIPE_TX_COLOR_MATCH_NO_MORE_METERS 
UPF_ACCEL_PIPE_ULDL 
UPF_ACCEL_PIPE_EXT_GTP 
UPF_ACCEL_PIPE_8T 
UPF_ACCEL_PIPE_7T 
UPF_ACCEL_PIPE_5T 
UPF_ACCEL_PIPE_DECAP 
UPF_ACCEL_PIPE_NUM 

Definition at line 119 of file upf_accel.h.

◆ upf_accel_port

Enumerator
UPF_ACCEL_PORT0 
UPF_ACCEL_PORT1 
UPF_ACCEL_PORTS_MAX 

Definition at line 40 of file upf_accel.h.

◆ upf_accel_rule_type

Enumerator
UPF_ACCEL_RULE_DYNAMIC 
UPF_ACCEL_RULE_STATIC 

Definition at line 157 of file upf_accel.h.

Function Documentation

◆ __rte_aligned()

struct upf_accel_entry_ctx __rte_aligned ( RTE_CACHE_LINE_SIZE  )

◆ upf_accel_domain_idx_get()

static uint8_t upf_accel_domain_idx_get ( enum upf_accel_port  port_id,
uint8_t  domain 
)
inlinestatic

Definition at line 406 of file upf_accel.h.

◆ upf_accel_drop_idx_get()

static uint8_t upf_accel_drop_idx_get ( struct upf_accel_pipe_cfg pipe_cfg,
enum upf_accel_pipe_drop_type  drop_type 
)
inlinestatic

Definition at line 393 of file upf_accel.h.

◆ upf_accel_get_opposite_port()

static enum upf_accel_port upf_accel_get_opposite_port ( enum upf_accel_port  port_id)
inlinestatic

Definition at line 406 of file upf_accel.h.

◆ upf_accel_smf_cleanup()

void upf_accel_smf_cleanup ( struct upf_accel_config cfg)

Definition at line 1121 of file upf_accel_json_parser.c.

◆ upf_accel_smf_parse()

doca_error_t upf_accel_smf_parse ( struct upf_accel_config cfg)

Definition at line 1043 of file upf_accel_json_parser.c.

◆ upf_accel_sw_aging_ll_init()

void upf_accel_sw_aging_ll_init ( struct upf_accel_fp_data fp_data,
enum parser_pkt_type  pkt_type 
)

Definition at line 231 of file upf_accel_flow_processing.c.

◆ upf_accel_vxlan_cleanup()

void upf_accel_vxlan_cleanup ( struct upf_accel_config cfg)

Definition at line 1254 of file upf_accel_json_parser.c.

◆ upf_accel_vxlan_parse()

doca_error_t upf_accel_vxlan_parse ( struct upf_accel_config cfg)

Definition at line 1218 of file upf_accel_json_parser.c.

Variable Documentation

◆ 

union { ... }

◆ __rte_aligned

struct upf_accel_ctx __rte_aligned

◆ dyn_ctx

struct upf_accel_dyn_entry_ctx dyn_ctx

Definition at line 313 of file upf_accel.h.

◆ force_quit

volatile bool force_quit
extern

Definition at line 38 of file gpu_packet_processing.c.

◆ static_ctx

struct upf_accel_static_entry_ctx static_ctx

Definition at line 313 of file upf_accel.h.

◆ type

Definition at line 313 of file upf_accel.h.