3. Data Structures

Here are the data structures with brief descriptions:

doca_compress_deflate_job
doca_compress_lz4_job
doca_dma_job_memcpy
doca_dma_memcpy_result
doca_dpa_dev_sync_event_remote_t
doca_dpi_job
DOCA_DPI job definition
doca_dpi_parsing_info
L2-L4 flow information, used to uniquely define a flow
doca_dpi_result
DOCA_DPI result definition
doca_dpi_sig_data
Extra signature data
doca_dpi_sig_info
Signature info
doca_dpi_stat_info
DPI statistics
doca_ec_job
Galois multiplication. This job will galois multiply the src buffer with the coding matrix and output the result to dst buffer
doca_ec_job_create
Jobs to be dispatched via EC library. This job will galois multiply the src buffer with the coding matrix and output the result to dst buffer
doca_ec_job_recover
Recover job recover lost data blocks by using the remaining data blocks and redundancy blocks
doca_ec_job_update
Update job Update redundancy blocks because a few data blocks were updated
doca_encryption_key
IPSec encryption key
doca_event
Activity completion event
doca_flow_action_desc
Action description
doca_flow_action_desc_field
Action descriptor field
doca_flow_action_descs
Action descriptor array
doca_flow_actions
Doca flow actions information
doca_flow_cfg
Doca flow global configuration
doca_flow_ct_cfg
Doca flow ct global configuration
doca_flow_ct_match
Doca flow CT match pattern
doca_flow_ct_match4
Doca flow CT IPv4 match pattern
doca_flow_ct_match6
Doca flow CT IPv6 match pattern
doca_flow_ct_meta
CT packet meta data
doca_flow_encap_action
Doca flow encap data information
doca_flow_fwd
Forwarding configuration
doca_flow_geneve_option
Doca flow GENEVE option single DW
doca_flow_grpc_bindable_obj
Bindable object configuration
doca_flow_grpc_fwd
Forwarding configuration wrapper
doca_flow_grpc_pipe_cfg
Pipeline configuration wrapper
doca_flow_header_eth
Doca flow eth header
doca_flow_header_eth_vlan
Doca flow vlan header
doca_flow_header_format
Doca flow packet format
doca_flow_header_geneve
Doca flow GENEVE header
doca_flow_header_icmp
Doca flow icmp header in match data
doca_flow_header_ip4
Doca flow ipv4 header in match data
doca_flow_header_ip6
Doca flow ipv6 header in match data
doca_flow_header_l4_port
Doca flow tcp or udp port header in match data
doca_flow_header_mpls
Doca flow MPLS header
doca_flow_header_tcp
Doca flow tcp header in match data
doca_flow_header_udp
Doca flow udp header in match data
doca_flow_ip_addr
Doca flow ip address
doca_flow_match
Doca flow matcher information
doca_flow_meta
Doca flow meta data
doca_flow_mirror_target
Doca flow mirror target
doca_flow_monitor
Doca monitor action configuration
doca_flow_ordered_list
doca_flow_parser_geneve_opt_cfg
User configuration structure using to create parser for single GENEVE TLV option
doca_flow_pipe_attr
Pipe attributes
doca_flow_pipe_cfg
Pipeline configuration
doca_flow_port_cfg
Doca flow port configuration
doca_flow_push_action
Doca flow push data information
doca_flow_query
Flow query result
doca_flow_resource_crypto_cfg
Doca flow crypto resource configuration
doca_flow_resource_meter_cfg
Doca flow meter resource configuration
doca_flow_resource_mirror_cfg
Doca flow mirror resource configuration
doca_flow_resource_rss_cfg
Doca flow rss resource configuration
doca_flow_resources
Doca flow resource quota
doca_flow_shared_resource_cfg
Doca flow shared resource configuration
doca_flow_shared_resource_result
Flow shared resources query result
doca_flow_tun
Doca flow tunnel information
doca_ipsec_sa_attr_egress
IPSec sa egress attributes - attributes for outgoing data
doca_ipsec_sa_attr_ingress
IPSec sa egress attributes - attributes for incoming data
doca_ipsec_sa_attr_sn
IPSec sa sn attributes - attributes for sequence number - only if SN or AR enabled
doca_ipsec_sa_attrs
IPSec attributes for create jobs
doca_ipsec_sa_create_job
DOCA IPSec SA creation job
doca_ipsec_sa_destroy_job
DOCA IPSec SA destroy job
doca_ipsec_sa_event_attrs
IPSec sa events attributes - when turned on will trigger an event
doca_job
Job structure describes request arguments for service provided by context
doca_log_registrator
Registers log source on program start
doca_pcc_dev_algo_meta_data
This struct provides meta data for a pcc user algo
doca_rdma_gid
doca_rdma_job_atomic
doca_rdma_job_read_write
doca_rdma_job_recv
doca_rdma_job_send
doca_rdma_result
doca_regex_job_search
doca_regex_match
doca_regex_search_result
doca_rmax_cpu_affinity_mask
Data structure to describe CPU mask for doca_rmax internal thread
doca_rmax_in_stream_completion
Completion returned by input stream describing the incoming packets
doca_rmax_job_rx_data
Receive data job
doca_rmax_stream_error
Detailed completion error information
doca_sha_job
doca_sha_partial_job
doca_sync_event_job_get
doca_sync_event_job_update_add
doca_sync_event_job_update_set
doca_sync_event_job_wait
doca_sync_event_result

3.1. doca_compress_deflate_job Struct Reference

[DOCA COMPRESS Engine]

DOCA COMPRESS Deflate job to be dispatched via COMPRESS library.

Public Variables

struct doca_job base
doca_buf * dst_buff
uint64_t * output_chksum
const doca_buf * src_buff

Variables

struct doca_jobdoca_compress_deflate_job::base [inherited]

Common job data.

doca_buf * doca_compress_deflate_job::dst_buff [inherited]

Destination data buffer.

uint64_t * doca_compress_deflate_job::output_chksum [inherited]

Output checksum. If it is a compress job the checksum calculated is of the src_buf. If it is a decompress job the checksum result calculated is of the dst_buf. When the job processing will end, the output_chksum will contain the CRC checksum result in the lower 32bit and the Adler checksum result in the upper 32bit.

const doca_buf * doca_compress_deflate_job::src_buff [inherited]

Source data buffer.

3.2. doca_compress_lz4_job Struct Reference

[DOCA COMPRESS Engine]

DOCA COMPRESS LZ4 job to be dispatched via COMPRESS library.

Public Variables

struct doca_job base
doca_buf * dst_buff
uint64_t * output_chksum
const doca_buf * src_buff

Variables

struct doca_jobdoca_compress_lz4_job::base [inherited]

Common job data.

doca_buf * doca_compress_lz4_job::dst_buff [inherited]

Destination data buffer.

uint64_t * doca_compress_lz4_job::output_chksum [inherited]

Output checksum. If it is a compress job the checksum calculated is of the src_buf. If it is a decompress job the checksum result calculated is of the dst_buf. When the job processing will end, the output_chksum will contain the CRC checksum result in the lower 32bit and the Adler checksum result in the upper 32bit.

const doca_buf * doca_compress_lz4_job::src_buff [inherited]

Source data buffer. The source buffer must be from local memory. Note: when using doca_buf linked list, the length of the first data element in the source buffer must be at least 4B.

3.3. doca_dma_job_memcpy Struct Reference

[DOCA DMA Engine]

A job to be dispatched via the DMA library.

Public Variables

struct doca_job base
doca_buf * dst_buff
const doca_buf * src_buff

Variables

struct doca_jobdoca_dma_job_memcpy::base [inherited]

Common job data

doca_buf * doca_dma_job_memcpy::dst_buff [inherited]

Destination data buffer

const doca_buf * doca_dma_job_memcpy::src_buff [inherited]

Source data buffer

3.4. doca_dma_memcpy_result Struct Reference

[DOCA DMA Engine]

Result of a DMA Memcpy job. Will be held inside the doca_event::result field.

Public Variables

doca_error_t result

Variables

doca_error_tdoca_dma_memcpy_result::result [inherited]

Operation result

3.5. doca_dpa_dev_sync_event_remote_t Struct Reference

[DOCA DPA Sync Event]

DPA remote sync event handle type definition

Public Variables

uint64_t  data[2]

Variables

uint64_t doca_dpa_dev_sync_event_remote_t::data[2] [inherited]

Remote DPA sync event opaque

3.6. doca_dpi_job Struct Reference

[Deep Packet Inspection]

Public Variables

struct doca_job base
doca_dpi_flow_ctx * flow_ctx
bool  initiator
uint32_t  payload_offset
doca_buf * pkt
doca_dpi_resultresult

Variables

struct doca_jobdoca_dpi_job::base [inherited]

Opaque struct.

doca_dpi_flow_ctx * doca_dpi_job::flow_ctx [inherited]

The flow context handler, created by calling doca_dpi_flow_create().

bool doca_dpi_job::initiator [inherited]

Indicates to which direction the packet belongs. 1 - if the packet arrives from client to server. 0 - if the packet arrives from server to client. Typically, the first packet will arrive from the initiator (client).

uint32_t doca_dpi_job::payload_offset [inherited]

Indicates where the packet's payload begins.

doca_buf * doca_dpi_job::pkt [inherited]

The packet to be inspected.

doca_dpi_result * doca_dpi_job::result [inherited]

The inspection result buffer, caller must pre-allocate it and ensure it is not freed until result is returned.

3.7. doca_dpi_parsing_info Struct Reference

[Deep Packet Inspection]

Public Variables

doca_dpi_parsing_info::@0  dst_ip
__be16  ethertype
in_addr  ipv4
in6_addr  ipv6
in_port_t  l4_dport
uint8_t  l4_protocol
in_port_t  l4_sport
doca_dpi_parsing_info::@1  src_ip

Variables

doca_dpi_parsing_info::@0 doca_dpi_parsing_info::dst_ip [inherited]

IP destination address

__be16 doca_dpi_parsing_info::ethertype [inherited]

Ethertype of the packet in network byte order

in_addr doca_dpi_parsing_info::ipv4 [inherited]

Ipv4 destination address in network byte order

Ipv4 source address in network byte order

in6_addr doca_dpi_parsing_info::ipv6 [inherited]

Ipv6 destination address in network byte order

Ipv6 source address in network byte order

in_port_t doca_dpi_parsing_info::l4_dport [inherited]

Layer 4 destination port in network byte order

uint8_t doca_dpi_parsing_info::l4_protocol [inherited]

Layer 4 protocol

in_port_t doca_dpi_parsing_info::l4_sport [inherited]

Layer 4 source port in network byte order

doca_dpi_parsing_info::@1 doca_dpi_parsing_info::src_ip [inherited]

IP source address

3.8. doca_dpi_result Struct Reference

[Deep Packet Inspection]

Public Variables

struct doca_dpi_sig_info info
bool  matched
doca_buf * pkt
int  status_flags

Variables

struct doca_dpi_sig_infodoca_dpi_result::info [inherited]

Signature information

bool doca_dpi_result::matched [inherited]

Indicates flow was matched

doca_buf * doca_dpi_result::pkt [inherited]

The packet inspected for this result.

int doca_dpi_result::status_flags [inherited]

doca_dpi_flow_status flags

3.9. doca_dpi_sig_data Struct Reference

[Deep Packet Inspection]

Public Variables

char  name[1024]
uint32_t  sig_id

Variables

char doca_dpi_sig_data::name[1024] [inherited]

Signature name

uint32_t doca_dpi_sig_data::sig_id [inherited]

Signature ID as provided in the signature

3.10. doca_dpi_sig_info Struct Reference

[Deep Packet Inspection]

Public Variables

int  action
uint32_t  sig_id

Variables

int doca_dpi_sig_info::action [inherited]

The action as provided in the signature

uint32_t doca_dpi_sig_info::sig_id [inherited]

Signature ID as provided in the signature

3.11. doca_dpi_stat_info Struct Reference

[Deep Packet Inspection]

Public Variables

uint32_t  nb_http_parser_based
uint32_t  nb_matches
uint32_t  nb_other_l4
uint32_t  nb_other_l7
uint32_t  nb_scanned_pkts
uint32_t  nb_ssl_parser_based
uint32_t  nb_tcp_based
uint32_t  nb_udp_based

Variables

uint32_t doca_dpi_stat_info::nb_http_parser_based [inherited]

Total number of http signature matches

uint32_t doca_dpi_stat_info::nb_matches [inherited]

Total number of signature matches

uint32_t doca_dpi_stat_info::nb_other_l4 [inherited]

Total number of other l4 signature matches

uint32_t doca_dpi_stat_info::nb_other_l7 [inherited]

Total number of other l7 signature matches

uint32_t doca_dpi_stat_info::nb_scanned_pkts [inherited]

Total number of scanned packets

uint32_t doca_dpi_stat_info::nb_ssl_parser_based [inherited]

Total number of ssl signature matches

uint32_t doca_dpi_stat_info::nb_tcp_based [inherited]

Total number of tcp signature matches

uint32_t doca_dpi_stat_info::nb_udp_based [inherited]

Total number of udp signature matches

3.12. doca_ec_job Struct Reference

[DOCA Erasure Coding Engine]

Note:
  • recommended to work with other jobs for EC workflow

  • src_buff and dst_buff should be in multiplication of block size. for example create job:

coding matrix is 10x4 - 10 original blocks, 4 redundancy blocks src_buff size : 10x64KB = 640KB rdnc_buff size : 4x64KB = 256KB

Note:

buff size should be at 64B padd. For example: 500B size should be padd to be 512B. minimum 64B.

Public Variables

struct doca_job base
doca_matrix * coding_matrix
doca_buf * dst_buff
const doca_buf * src_buff

Variables

struct doca_jobdoca_ec_job::base [inherited]

Common job data.

doca_matrix * doca_ec_job::coding_matrix [inherited]

coding matrix (see below doca_ec_matrix_from_raw)

doca_buf * doca_ec_job::dst_buff [inherited]

Destination data buffer.

const doca_buf * doca_ec_job::src_buff [inherited]

Source data buffer.

3.13. doca_ec_job_create Struct Reference

[DOCA Erasure Coding Engine]

Note:

src_buff and dst_buff should be in multiplication of block size. for example create job:

coding matrix is 10x4 - 10 original blocks, 4 redundancy blocks src_buff size : 10x64KB = 640KB rdnc_buff size : 4x64KB = 256KB

Note:

buff size should be at 64B padd. For example: 500B size should be padd to be 512B. minimum 64B.

create job: create redundancy blocks (backup blocks):

Public Variables

struct doca_job base
doca_matrix * create_matrix
doca_buf * dst_rdnc_buff
const doca_buf * src_original_data_buff

Variables

struct doca_jobdoca_ec_job_create::base [inherited]

Common job data.

doca_matrix * doca_ec_job_create::create_matrix [inherited]

create matrix (see below doca_ec_matrix_gen)

doca_buf * doca_ec_job_create::dst_rdnc_buff [inherited]

Destination redundancy data buffer.

const doca_buf * doca_ec_job_create::src_original_data_buff [inherited]

Source original data buffer.

3.14. doca_ec_job_recover Struct Reference

[DOCA Erasure Coding Engine]

Note:

src_buff and dst_buff should be in multiplication of block size. for example create job:

coding matrix is 10x4 - 10 original blocks, 4 redundancy blocks src_buff size : 10x64KB = 640KB rdnc_buff size : 4x64KB = 256KB

Note:

buff size should be at 64B padd. For example: 500B size should be padd to be 512B. minimum 64B.

Public Variables

struct doca_job base
doca_buf * dst_recovered_data_buff
doca_matrix * recover_matrix
const doca_buf * src_remaining_data_buff

Variables

struct doca_jobdoca_ec_job_recover::base [inherited]

Common job data.

doca_buf * doca_ec_job_recover::dst_recovered_data_buff [inherited]

Destination data buffer.

doca_matrix * doca_ec_job_recover::recover_matrix [inherited]

recover matrix (see below doca_ec_recover_matrix_create)

const doca_buf * doca_ec_job_recover::src_remaining_data_buff [inherited]

Source remaining blocks buffer.

3.15. doca_ec_job_update Struct Reference

[DOCA Erasure Coding Engine]

Note:

src_buff and dst_buff should be in multiplication of block size. for example create job:

coding matrix is 10x4 - 10 original blocks, 4 redundancy blocks src_buff size : 10x64KB = 640KB rdnc_buff size : 4x64KB = 256KB

Note:

buff size should be at 64B padd. For example: 500B size should be padd to be 512B. minimum 64B.

Public Variables

struct doca_job base
doca_buf * dst_updated_rdnc_buff
const doca_buf * src_data_rdnc_buff
doca_matrix * update_matrix

Variables

struct doca_jobdoca_ec_job_update::base [inherited]

Common job data.

doca_buf * doca_ec_job_update::dst_updated_rdnc_buff [inherited]

Destination updated redundancy blocks.

const doca_buf * doca_ec_job_update::src_data_rdnc_buff [inherited]

Source old & new data with rdnc blocks.

doca_matrix * doca_ec_job_update::update_matrix [inherited]

update matrix (see below doca_ec_update_matrix_gen)

3.16. doca_encryption_key Struct Reference

[IPsec]

Public Variables

uint64_t  implicit_iv
void * raw_key
uint32_t  salt
enumdoca_encryption_key_type type

Variables

uint64_t doca_encryption_key::implicit_iv [inherited]

The IV is inserted into the GCM engine is calculated by

void * doca_encryption_key::raw_key [inherited]

Raw key buffer. Actual size of this buffer defined by type.

uint32_t doca_encryption_key::salt [inherited]

The salt is inserted into the GCM engine is calculated by

enumdoca_encryption_key_typedoca_encryption_key::type [inherited]

size of enc key

3.17. doca_event Struct Reference

[DOCA Context]

Event structure defines activity completion of: 1. Completion event of submitted job. 2. CTX received event as a result of some external activity.

Public Variables

doca_data  result
int  type
doca_data  user_data

Variables

doca_data doca_event::result [inherited]

Event result defined per action type arguments. If the result is as small as 64 bit (E.g., status or similar), it can be accessed as result.u64. Otherwise the data is pointed to by result.ptr, where the size is fixed for each action type.

int doca_event::type [inherited]

The type of the event originating activity.

doca_data doca_event::user_data [inherited]

Defines the origin of the given event. For events originating from submitted jobs, this will hold the same user_data provided as part of the job. For events originating from external activity, refer to the documentation of the specific event type.

3.18. doca_flow_action_desc Struct Reference

[Flow Defines]

Public Variables

enumdoca_flow_action_type type

3.19. doca_flow_action_desc_field Struct Reference

[Flow Defines]

Field based on a string that is composed out of struct members separated by a dot.

The 1st segment determines the field location in packet "outer", "inner", "tunnel". The 2nd segment determines the protocol. The 3rd segment determines the field.

E.g. "outer.eth.src_mac" "tunnel.gre.protocol" "inner.ipv4.next_proto"

Public Variables

uint32_t  bit_offset
const char * field_string

Variables

uint32_t doca_flow_action_desc_field::bit_offset [inherited]

Field bit offset.

const char * doca_flow_action_desc_field::field_string [inherited]

Field selection by string.

3.20. doca_flow_action_descs Struct Reference

[Flow Defines]

Public Variables

doca_flow_action_descdesc_array
uint8_t  nb_action_desc

Variables

doca_flow_action_desc * doca_flow_action_descs::desc_array [inherited]

action descriptor array pointer.

uint8_t doca_flow_action_descs::nb_action_desc [inherited]

maximum number of action descriptor array.

3.21. doca_flow_actions Struct Reference

[Flow Defines]

Public Variables

uint8_t  action_idx
uint32_t  crypto_id
bool  decap
struct doca_flow_encap_action encap
uint32_t  flags
bool  has_encap
bool  has_push
struct doca_flow_meta meta
struct doca_flow_header_format outer
bool  pop
enumdoca_flow_crypto_protocol_type proto_type
struct doca_flow_push_action push
doca_flow_actions::@9  security
struct doca_flow_tun tun

Variables

uint8_t doca_flow_actions::action_idx [inherited]

index according to place provided on creation

uint32_t doca_flow_actions::crypto_id [inherited]

Crypto shared action id

bool doca_flow_actions::decap [inherited]

when true, will do decap

struct doca_flow_encap_actiondoca_flow_actions::encap [inherited]

encap data information

uint32_t doca_flow_actions::flags [inherited]

action flags

bool doca_flow_actions::has_encap [inherited]

when true, will do encap

bool doca_flow_actions::has_push [inherited]

when true, push header

struct doca_flow_metadoca_flow_actions::meta [inherited]

modify meta data, pipe action as mask

struct doca_flow_header_formatdoca_flow_actions::outer [inherited]

modify outer headers

bool doca_flow_actions::pop [inherited]

when true, pop header

enumdoca_flow_crypto_protocol_typedoca_flow_actions::proto_type [inherited]

Crypto shared action type

struct doca_flow_push_actiondoca_flow_actions::push [inherited]

push header data information

doca_flow_actions::@9 doca_flow_actions::security [inherited]

security shared action

struct doca_flow_tundoca_flow_actions::tun [inherited]

modify tunnel headers

3.22. doca_flow_cfg Struct Reference

[Flow Defines]

Public Variables

doca_flow_entry_process_cb cb
uint64_t  flags
const char * mode_args
uint8_t  nr_acl_collisions
uint32_t  nr_shared_resources[DOCA_FLOW_SHARED_RESOURCE_MAX]
uint32_t  queue_depth
uint16_t  queues
struct doca_flow_resources resource
const uint8_t * rss_key
uint32_t  rss_key_len
doca_flow_shared_resource_unbind_cb unbind_cb

Variables

doca_flow_entry_process_cbdoca_flow_cfg::cb [inherited]

callback for entry create/destroy

uint64_t doca_flow_cfg::flags [inherited]

configuraton flags

const char * doca_flow_cfg::mode_args [inherited]

set doca flow architecture mode switch, vnf

uint8_t doca_flow_cfg::nr_acl_collisions [inherited]

number of pre-configured collisions for the acl module, default to 3, max to 8

uint32_t doca_flow_cfg::nr_shared_resources[DOCA_FLOW_SHARED_RESOURCE_MAX] [inherited]

total shared resource per type

uint32_t doca_flow_cfg::queue_depth [inherited]

Number of pre-configured queue_size, default to 128

uint16_t doca_flow_cfg::queues [inherited]

queue id for each offload thread

struct doca_flow_resourcesdoca_flow_cfg::resource [inherited]

resource quota

const uint8_t * doca_flow_cfg::rss_key [inherited]

RSS optional hash key.

uint32_t doca_flow_cfg::rss_key_len [inherited]

RSS hash key length in bytes.

doca_flow_shared_resource_unbind_cbdoca_flow_cfg::unbind_cb [inherited]

callback for unbinding of a shared resource

3.23. doca_flow_ct_cfg Struct Reference

[Connection Tracking Flow]

Public Variables

uint16_t  aging_core
doca_flow_ct_cfg::@46::@48  direction[2]
uint32_t  flags
enumdoca_flow_ct_hash_type hash_type
void * ib_dev
void * ib_pd
bool  match_inner
uint32_t  meta_action_bits
doca_flow_metameta_modify_mask
uint32_t  meta_user_bits
uint32_t  meta_zone_bits
uint32_t  nb_arm_queues
uint32_t  nb_arm_sessions[DOCA_FLOW_CT_SESSION_MAX]
uint16_t  tcp_session_del_s
uint16_t  tcp_timeout_s
enumdoca_flow_tun_type tunnel_type
uint16_t  udp_timeout_s
uint16_t  vxlan_dst_port

Variables

uint16_t doca_flow_ct_cfg::aging_core [inherited]

CT aging thread bind to CPU core.

doca_flow_ct_cfg::@46::@48 doca_flow_ct_cfg::direction[2] [inherited]

Configuration of each direction

uint32_t doca_flow_ct_cfg::flags [inherited]

CT behavior flags

enumdoca_flow_ct_hash_typedoca_flow_ct_cfg::hash_type [inherited]

Connection hash table type.

void * doca_flow_ct_cfg::ib_dev [inherited]

IB verbs device context

void * doca_flow_ct_cfg::ib_pd [inherited]

device protection domain

bool doca_flow_ct_cfg::match_inner [inherited]

match packet inner layer

uint32_t doca_flow_ct_cfg::meta_action_bits [inherited]

User action data bits carried by identified connection packet

doca_flow_meta * doca_flow_ct_cfg::meta_modify_mask [inherited]

Zone mask to match

uint32_t doca_flow_ct_cfg::meta_user_bits [inherited]

User data bits ignored by worker

uint32_t doca_flow_ct_cfg::meta_zone_bits [inherited]

User zone bits carried by identified connection packets

uint32_t doca_flow_ct_cfg::nb_arm_queues [inherited]

number of ARM CT queues(thread).

uint32_t doca_flow_ct_cfg::nb_arm_sessions[DOCA_FLOW_CT_SESSION_MAX] [inherited]

number of ARM CT sessions.

uint16_t doca_flow_ct_cfg::tcp_session_del_s [inherited]

time to kill TCP session after RST/FIN.

uint16_t doca_flow_ct_cfg::tcp_timeout_s [inherited]

TCP timeout in second.

enumdoca_flow_tun_typedoca_flow_ct_cfg::tunnel_type [inherited]

Tunnel type

uint16_t doca_flow_ct_cfg::udp_timeout_s [inherited]

UDP timeout in second.

uint16_t doca_flow_ct_cfg::vxlan_dst_port [inherited]

outer UDP destination port for VxLAN traffic. BE

3.24. doca_flow_ct_match Struct Reference

[Flow Defines]

3.25. doca_flow_ct_match4 Struct Reference

[Flow Defines]

Public Variables

doca_be32_t  dst_ip
struct doca_flow_header_l4_port l4_port
uint8_t  next_proto
doca_be32_t  src_ip
uint32_t  zone

Variables

doca_be32_t doca_flow_ct_match4::dst_ip [inherited]

ip dst address

struct doca_flow_header_l4_portdoca_flow_ct_match4::l4_port [inherited]

UDP or TCP source and destination port

uint8_t doca_flow_ct_match4::next_proto [inherited]

ip next protocol

doca_be32_t doca_flow_ct_match4::src_ip [inherited]

ip src address

uint32_t doca_flow_ct_match4::zone [inherited]

meta to match

3.26. doca_flow_ct_match6 Struct Reference

[Flow Defines]

Public Variables

doca_be32_t  dst_ip[4]
struct doca_flow_header_l4_port l4_port
uint8_t  next_proto
doca_be32_t  src_ip[4]
uint32_t  zone

Variables

doca_be32_t doca_flow_ct_match6::dst_ip[4] [inherited]

ip dst address

struct doca_flow_header_l4_portdoca_flow_ct_match6::l4_port [inherited]

UDP or TCP source and destination port

uint8_t doca_flow_ct_match6::next_proto [inherited]

ip next protocol

doca_be32_t doca_flow_ct_match6::src_ip[4] [inherited]

ip src address

uint32_t doca_flow_ct_match6::zone [inherited]

zone ID

3.27. doca_flow_ct_meta Union Reference

[Connection Tracking Flow]

Public Variables

uint32_t  data
uint32_t  hairpin
uint32_t  src
uint32_t  type
uint32_t  u32

Variables

uint32_t doca_flow_ct_meta::data [inherited]

Combination of reserved, zone, user action data and user data.

uint32_t doca_flow_ct_meta::hairpin [inherited]

Subject to forward using hairpin.

uint32_t doca_flow_ct_meta::src [inherited]

Source port in multi-port E-Switch mode

uint32_t doca_flow_ct_meta::type [inherited]

Refer to doca_flow_ct_meta_type.

uint32_t doca_flow_ct_meta::u32 [inherited]

CPU endian.

3.28. doca_flow_encap_action Struct Reference

[Flow Defines]

Public Variables

struct doca_flow_header_format outer
struct doca_flow_tun tun

Variables

struct doca_flow_header_formatdoca_flow_encap_action::outer [inherited]

outer header format

struct doca_flow_tundoca_flow_encap_action::tun [inherited]

tunnel info

3.29. doca_flow_fwd Struct Reference

[Flow Defines]

Public Variables

uint32_t  idx
doca_flow_pipe * next_pipe
int  num_of_queues
doca_flow_fwd::@10::@18  ordered_list_pipe
doca_flow_pipe * pipe
uint16_t  port_id
enumdoca_flow_rss_hash_function rss_hash_func
uint32_t  rss_inner_flags
uint32_t  rss_outer_flags
uint16_t * rss_queues
uint32_t  shared_rss_id
doca_flow_target * target
enumdoca_flow_fwd_type type

Variables

uint32_t doca_flow_fwd::idx [inherited]

Index of the ordered list pipe entry.

doca_flow_pipe * doca_flow_fwd::next_pipe [inherited]

next pipe pointer

int doca_flow_fwd::num_of_queues [inherited]

number of queues

doca_flow_fwd::@10::@18 doca_flow_fwd::ordered_list_pipe [inherited]

next ordered list pipe configuration

doca_flow_pipe * doca_flow_fwd::pipe [inherited]

Ordered list pipe to select an entry from.

uint16_t doca_flow_fwd::port_id [inherited]

destination port id

enumdoca_flow_rss_hash_functiondoca_flow_fwd::rss_hash_func [inherited]

hash function

uint32_t doca_flow_fwd::rss_inner_flags [inherited]

rss offload outer types

uint32_t doca_flow_fwd::rss_outer_flags [inherited]

rss offload outer types

uint16_t * doca_flow_fwd::rss_queues [inherited]

rss queues array

uint32_t doca_flow_fwd::shared_rss_id [inherited]

shared rss id, only for pipe's fwd is NULL

doca_flow_target * doca_flow_fwd::target [inherited]

pointer to target handler

enumdoca_flow_fwd_typedoca_flow_fwd::type [inherited]

indicate the forwarding type

3.30. doca_flow_geneve_option Union Reference

[Flow Net Define]

This object describes single DW (4-bytes) from GENEVE option header. It describes either the first DW in the option including class, type and length or any other data DW.

Public Variables

doca_be16_t class_id
doca_be32_t  data
uint8_t  type

Variables

doca_be16_tdoca_flow_geneve_option::class_id [inherited]

option class

doca_be32_t doca_flow_geneve_option::data [inherited]

4 bytes of option data.

uint8_t doca_flow_geneve_option::type [inherited]

option type

3.31. doca_flow_grpc_bindable_obj Struct Reference

[GRPC Flow]

Public Variables

uint64_t  pipe_id
uint32_t  port_id
enumdoca_flow_grpc_bindable_obj_type type

Variables

uint64_t doca_flow_grpc_bindable_obj::pipe_id [inherited]

pipe id if type is pipe

uint32_t doca_flow_grpc_bindable_obj::port_id [inherited]

port id if type is port

enumdoca_flow_grpc_bindable_obj_typedoca_flow_grpc_bindable_obj::type [inherited]

bindable object type

3.32. doca_flow_grpc_fwd Struct Reference

[GRPC Flow]

Public Variables

doca_flow_fwdfwd
uint64_t  next_pipe_id

Variables

doca_flow_fwd * doca_flow_grpc_fwd::fwd [inherited]

doca flow fwd struct

uint64_t doca_flow_grpc_fwd::next_pipe_id [inherited]

next pipe id

3.33. doca_flow_grpc_pipe_cfg Struct Reference

[GRPC Flow]

Public Variables

doca_flow_pipe_cfgcfg
uint16_t  port_id

Variables

doca_flow_pipe_cfg * doca_flow_grpc_pipe_cfg::cfg [inherited]
uint16_t doca_flow_grpc_pipe_cfg::port_id [inherited]

port id

3.34. doca_flow_header_eth Struct Reference

[Flow Net Define]

Public Variables

uint8_t  dst_mac[DOCA_ETHER_ADDR_LEN]
uint8_t  src_mac[DOCA_ETHER_ADDR_LEN]
doca_be16_t type

Variables

uint8_t doca_flow_header_eth::dst_mac[DOCA_ETHER_ADDR_LEN] [inherited]

destination mac address

uint8_t doca_flow_header_eth::src_mac[DOCA_ETHER_ADDR_LEN] [inherited]

source mac address

doca_be16_tdoca_flow_header_eth::type [inherited]

eth type

3.35. doca_flow_header_eth_vlan Struct Reference

[Flow Net Define]

Public Variables

doca_be16_t tci

Variables

doca_be16_tdoca_flow_header_eth_vlan::tci [inherited]

vlan tci

3.36. doca_flow_header_format Struct Reference

[Flow Defines]

Public Variables

struct doca_flow_header_eth eth
struct doca_flow_header_eth_vlan eth_vlan[DOCA_FLOW_VLAN_MAX]
struct doca_flow_header_icmp icmp
struct doca_flow_header_ip4 ip4
struct doca_flow_header_ip6 ip6
uint16_t  l2_valid_headers
enumdoca_flow_l3_type l3_type
enumdoca_flow_l4_type_ext l4_type_ext
struct doca_flow_header_tcp tcp
struct doca_flow_header_udp udp

Variables

struct doca_flow_header_ethdoca_flow_header_format::eth [inherited]

ether head

struct doca_flow_header_eth_vlandoca_flow_header_format::eth_vlan[DOCA_FLOW_VLAN_MAX] [inherited]

vlan header array

struct doca_flow_header_icmpdoca_flow_header_format::icmp [inherited]

icmp header

struct doca_flow_header_ip4doca_flow_header_format::ip4 [inherited]

ipv4 head

struct doca_flow_header_ip6doca_flow_header_format::ip6 [inherited]

ipv6 head

uint16_t doca_flow_header_format::l2_valid_headers [inherited]

indicate which headers are valid

enumdoca_flow_l3_typedoca_flow_header_format::l3_type [inherited]

layer 3 protocol type

enumdoca_flow_l4_type_extdoca_flow_header_format::l4_type_ext [inherited]

l4 layer extend type

struct doca_flow_header_tcpdoca_flow_header_format::tcp [inherited]

tcp header

struct doca_flow_header_udpdoca_flow_header_format::udp [inherited]

udp header

3.37. doca_flow_header_geneve Struct Reference

[Flow Net Define]

Public Variables

doca_be16_t next_proto
uint8_t  o_c
uint8_t  ver_opt_len
doca_be32_t  vni

Variables

doca_be16_tdoca_flow_header_geneve::next_proto [inherited]

next protocol

uint8_t doca_flow_header_geneve::o_c [inherited]

OAM packet (1) + critical options present (1) + reserved (6).

uint8_t doca_flow_header_geneve::ver_opt_len [inherited]

version (2) + options length (6).

doca_be32_t doca_flow_header_geneve::vni [inherited]

geneve vni (24) + reserved (8).

3.38. doca_flow_header_icmp Struct Reference

[Flow Net Define]

Public Variables

uint8_t  code
doca_be16_t ident
uint8_t  type

Variables

uint8_t doca_flow_header_icmp::code [inherited]

icmp code.

doca_be16_tdoca_flow_header_icmp::ident [inherited]

icmp identifier.

uint8_t doca_flow_header_icmp::type [inherited]

icmp type

3.39. doca_flow_header_ip4 Struct Reference

[Flow Net Define]

Public Variables

uint8_t  dscp_ecn
doca_be32_t  dst_ip
uint8_t  next_proto
doca_be32_t  src_ip
uint8_t  ttl
uint8_t  version_ihl

Variables

uint8_t doca_flow_header_ip4::dscp_ecn [inherited]

dscp and ecn

doca_be32_t doca_flow_header_ip4::dst_ip [inherited]

ip dst address

uint8_t doca_flow_header_ip4::next_proto [inherited]

ip next protocol

doca_be32_t doca_flow_header_ip4::src_ip [inherited]

ip src address

uint8_t doca_flow_header_ip4::ttl [inherited]

time to live

uint8_t doca_flow_header_ip4::version_ihl [inherited]

version and internet header length

3.40. doca_flow_header_ip6 Struct Reference

[Flow Net Define]

Public Variables

uint8_t  dscp_ecn
doca_be32_t  dst_ip[4]
uint8_t  hop_limit
uint8_t  next_proto
doca_be32_t  src_ip[4]

Variables

uint8_t doca_flow_header_ip6::dscp_ecn [inherited]

dscp and ecn

doca_be32_t doca_flow_header_ip6::dst_ip[4] [inherited]

ip dst address

uint8_t doca_flow_header_ip6::hop_limit [inherited]

hop limit

uint8_t doca_flow_header_ip6::next_proto [inherited]

ip next protocol

doca_be32_t doca_flow_header_ip6::src_ip[4] [inherited]

ip src address

3.41. doca_flow_header_l4_port Struct Reference

[Flow Net Define]

Public Variables

doca_be16_t dst_port
doca_be16_t src_port

Variables

doca_be16_tdoca_flow_header_l4_port::dst_port [inherited]

destination port

doca_be16_tdoca_flow_header_l4_port::src_port [inherited]

source port

3.42. doca_flow_header_mpls Struct Reference

[Flow Net Define]

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Label | TC |S| TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Public Variables

doca_be32_t  label

Variables

doca_be32_t doca_flow_header_mpls::label [inherited]

MPLS label.

3.43. doca_flow_header_tcp Struct Reference

[Flow Net Define]

Public Variables

uint8_t  flags
struct doca_flow_header_l4_port l4_port

Variables

uint8_t doca_flow_header_tcp::flags [inherited]

tcp flags

struct doca_flow_header_l4_portdoca_flow_header_tcp::l4_port [inherited]

tcp source and destination port

3.44. doca_flow_header_udp Struct Reference

[Flow Net Define]

Public Variables

struct doca_flow_header_l4_port l4_port

Variables

struct doca_flow_header_l4_portdoca_flow_header_udp::l4_port [inherited]

udp source and destination port

3.45. doca_flow_ip_addr Struct Reference

[Flow Net Define]

Public Variables

doca_be32_t  ipv4_addr
doca_be32_t  ipv6_addr[4]
enumdoca_flow_l3_type type

Variables

doca_be32_t doca_flow_ip_addr::ipv4_addr [inherited]

ipv4 address if type is ipv4

doca_be32_t doca_flow_ip_addr::ipv6_addr[4] [inherited]

ipv6 address if type is ipv6

enumdoca_flow_l3_typedoca_flow_ip_addr::type [inherited]

ip address type

3.46. doca_flow_match Struct Reference

[Flow Defines]

Public Variables

uint32_t  flags
struct doca_flow_header_format inner
struct doca_flow_meta meta
struct doca_flow_header_format outer
struct doca_flow_tun tun

Variables

uint32_t doca_flow_match::flags [inherited]

match items which are no value

struct doca_flow_header_formatdoca_flow_match::inner [inherited]

inner layer header format

struct doca_flow_metadoca_flow_match::meta [inherited]

Programmable meta data.

struct doca_flow_header_formatdoca_flow_match::outer [inherited]

outer layer header format

struct doca_flow_tundoca_flow_match::tun [inherited]

tunnel info

3.47. doca_flow_meta Struct Reference

[Flow Defines]

Meta data known as scratch data can be used to match or modify within pipes. Meta data can be set with value in previous pipes and match in later pipes. User can customize meta data structure as long as overall size doens't exceed limit. To match meta data, mask must be specified when creating pipe. Struct must be aligned to 32 bits. No initial value for Meta data, must match after setting value.

Public Variables

uint8_t  ipsec_syndrome
uint32_t  mark
enum doca_flow_meter_color  meter_color
uint32_t  pkt_meta
uint32_t  port_meta
uint16_t  random
uint32_t  u32[DOCA_FLOW_META_MAX/4-1]

Variables

uint8_t doca_flow_meta::ipsec_syndrome [inherited]

IPsec decrypt/authentication syndrome.

uint32_t doca_flow_meta::mark [inherited]

Mark id.

enum doca_flow_meter_color doca_flow_meta::meter_color [inherited]

Meter colors: Green, Yellow, Red.

uint32_t doca_flow_meta::pkt_meta [inherited]

Shared with application via packet.

uint32_t doca_flow_meta::port_meta [inherited]

Programmable source vport.

uint16_t doca_flow_meta::random [inherited]

Matches a random value. This value is not based on the packet data/headers. Application shouldn't assume that this value is kept during the packet lifetime.

uint32_t doca_flow_meta::u32[DOCA_FLOW_META_MAX/4-1] [inherited]

Programmable user data.

3.48. doca_flow_mirror_target Struct Reference

[Flow Defines]

Public Variables

struct doca_flow_encap_action encap
struct doca_flow_fwd fwd
bool  has_encap

Variables

struct doca_flow_encap_actiondoca_flow_mirror_target::encap [inherited]

Encap data.

struct doca_flow_fwddoca_flow_mirror_target::fwd [inherited]

Mirror target, must be filled.

bool doca_flow_mirror_target::has_encap [inherited]

Encap mirrored packets.

3.49. doca_flow_monitor Struct Reference

[Flow Defines]

Public Variables

uint32_t  aging_sec
uint64_t  cbs
uint64_t  cir
uint8_t  flags
enumdoca_flow_meter_limit_type limit_type
enum doca_flow_meter_color  meter_init_color
uint32_t  shared_counter_id
uint32_t  shared_meter_id
uint32_t  shared_mirror_id

Variables

uint32_t doca_flow_monitor::aging_sec [inherited]

aging time in seconds.

uint64_t doca_flow_monitor::cbs [inherited]

Committed Burst Size (bytes).

uint64_t doca_flow_monitor::cir [inherited]

Committed Information Rate (bytes/second).

uint8_t doca_flow_monitor::flags [inherited]

indicate which actions be included

enumdoca_flow_meter_limit_typedoca_flow_monitor::limit_type [inherited]

Meter rate limit type: bytes / packets per second

enum doca_flow_meter_color doca_flow_monitor::meter_init_color [inherited]

meter initial color

uint32_t doca_flow_monitor::shared_counter_id [inherited]

shared counter id

uint32_t doca_flow_monitor::shared_meter_id [inherited]

shared meter id

uint32_t doca_flow_monitor::shared_mirror_id [inherited]

shared mirror id.

3.50. doca_flow_ordered_list Struct Reference

[Flow Defines]

Ordered list configuration.

Public Variables

const * elements
uint32_t  idx
uint32_t  size

Variables

const * doca_flow_ordered_list::elements [inherited]

An array of DOCA flow structure pointers, depending on types.

uint32_t doca_flow_ordered_list::idx [inherited]

List index among the lists of the pipe. At pipe creation, it must match the list position in the array of lists. At entry insertion, it determines which list to use.

uint32_t doca_flow_ordered_list::size [inherited]

Number of elements in the list.

3.51. doca_flow_parser_geneve_opt_cfg Struct Reference

[Flow Defines]

Public Variables

doca_be32_t  data_mask[DOCA_FLOW_GENEVE_DATA_OPTION_LEN_MAX]
enumdoca_flow_parser_geneve_opt_mode match_on_class_mode
doca_be16_t option_class
uint8_t  option_len
uint8_t  option_type

Variables

doca_be32_t doca_flow_parser_geneve_opt_cfg::data_mask[DOCA_FLOW_GENEVE_DATA_OPTION_LEN_MAX] [inherited]

Data mask describing which DWs should be sampled.

enumdoca_flow_parser_geneve_opt_modedoca_flow_parser_geneve_opt_cfg::match_on_class_mode [inherited]

Indicator about class field role in this option.

doca_be16_tdoca_flow_parser_geneve_opt_cfg::option_class [inherited]

The class of the GENEVE TLV option.

uint8_t doca_flow_parser_geneve_opt_cfg::option_len [inherited]

The length of the GENEVE TLV option data in DW granularity.

uint8_t doca_flow_parser_geneve_opt_cfg::option_type [inherited]

The type of the GENEVE TLV option.

3.52. doca_flow_pipe_attr Struct Reference

[Flow Defines]

Public Variables

enumdoca_flow_direction_info dir_info
enumdoca_flow_pipe_domain domain
bool  is_root
const char * name
uint8_t  nb_actions
uint32_t  nb_flows
uint8_t  nb_ordered_lists
enumdoca_flow_pipe_type type

Variables

enumdoca_flow_direction_infodoca_flow_pipe_attr::dir_info [inherited]

Optional direction hint for driver optimization, supported in switch mode only

enumdoca_flow_pipe_domaindoca_flow_pipe_attr::domain [inherited]

pipe steering domain.

bool doca_flow_pipe_attr::is_root [inherited]

pipeline is root or not. If true it means the pipe is a root pipe executed on packet arrival.

const char * doca_flow_pipe_attr::name [inherited]

name for the pipeline

uint8_t doca_flow_pipe_attr::nb_actions [inherited]

maximum number of doca flow action array, default is 1 if not set

uint32_t doca_flow_pipe_attr::nb_flows [inherited]

maximum number of flow rules, default is 8k if not set

uint8_t doca_flow_pipe_attr::nb_ordered_lists [inherited]

number of ordered lists in the array, default 0, mutually exclusive with nb_actions

enumdoca_flow_pipe_typedoca_flow_pipe_attr::type [inherited]

type of pipe. enum doca_flow_pipe_type

3.53. doca_flow_pipe_cfg Struct Reference

[Flow Defines]

Public Variables

action_descs
actions
actions_masks
struct doca_flow_pipe_attr attr
doca_flow_matchmatch
doca_flow_matchmatch_mask
doca_flow_monitormonitor
ordered_lists
doca_flow_port * port

Variables

* doca_flow_pipe_cfg::action_descs [inherited]

action array descriptions

* doca_flow_pipe_cfg::actions [inherited]

actions array for the pipeline

* doca_flow_pipe_cfg::actions_masks [inherited]

actions mask array for the pipeline

struct doca_flow_pipe_attrdoca_flow_pipe_cfg::attr [inherited]

attributes of pipe

doca_flow_match * doca_flow_pipe_cfg::match [inherited]

matcher for the pipeline

doca_flow_match * doca_flow_pipe_cfg::match_mask [inherited]

match mask for the pipeline

doca_flow_monitor * doca_flow_pipe_cfg::monitor [inherited]

monitor for the pipeline

* doca_flow_pipe_cfg::ordered_lists [inherited]

array of ordered list types

doca_flow_port * doca_flow_pipe_cfg::port [inherited]

port for the pipeline

3.54. doca_flow_port_cfg Struct Reference

[Flow Defines]

Public Variables

void * dev
const char * devargs
uint16_t  port_id
uint16_t  priv_data_size
enumdoca_flow_port_type type

Variables

void * doca_flow_port_cfg::dev [inherited]

port's dev

const char * doca_flow_port_cfg::devargs [inherited]

specific per port type cfg

uint16_t doca_flow_port_cfg::port_id [inherited]

dpdk port id

uint16_t doca_flow_port_cfg::priv_data_size [inherited]

user private data

enumdoca_flow_port_typedoca_flow_port_cfg::type [inherited]

mapping type of port

3.55. doca_flow_push_action Struct Reference

[Flow Defines]

Public Variables

enumdoca_flow_push_action_type type

Variables

enumdoca_flow_push_action_typedoca_flow_push_action::type [inherited]

header type to push

3.56. doca_flow_query Struct Reference

[Flow Defines]

Public Variables

uint64_t  total_bytes
uint64_t  total_pkts

Variables

uint64_t doca_flow_query::total_bytes [inherited]

total bytes hit this flow

uint64_t doca_flow_query::total_pkts [inherited]

total packets hit this flow

3.57. doca_flow_resource_crypto_cfg Struct Reference

[Flow Defines]

Public Variables

enumdoca_flow_crypto_action_type action_type
struct doca_flow_fwd fwd
enumdoca_flow_crypto_header_type header_type
uint8_t  key[DOCA_FLOW_CRYPTO_KEY_LEN_MAX]
uint16_t  key_sz
enumdoca_flow_crypto_net_type net_type
enumdoca_flow_crypto_protocol_type proto_type
uint8_t  reformat_data[DOCA_FLOW_CRYPTO_REFORMAT_LEN_MAX]
uint16_t  reformat_data_sz
enumdoca_flow_crypto_icv_size reformat_icv_sz
enumdoca_flow_crypto_reformat_type reformat_type
void * security_ctx

Variables

enumdoca_flow_crypto_action_typedoca_flow_resource_crypto_cfg::action_type [inherited]

crypto action

struct doca_flow_fwddoca_flow_resource_crypto_cfg::fwd [inherited]

Crypto action continuation

enumdoca_flow_crypto_header_typedoca_flow_resource_crypto_cfg::header_type [inherited]

packet header type

uint8_t doca_flow_resource_crypto_cfg::key[DOCA_FLOW_CRYPTO_KEY_LEN_MAX] [inherited]

Crypto key buffer

uint16_t doca_flow_resource_crypto_cfg::key_sz [inherited]

key size in bytes

enumdoca_flow_crypto_net_typedoca_flow_resource_crypto_cfg::net_type [inherited]

packet network mode type

enumdoca_flow_crypto_protocol_typedoca_flow_resource_crypto_cfg::proto_type [inherited]

packet reformat action

uint8_t doca_flow_resource_crypto_cfg::reformat_data[DOCA_FLOW_CRYPTO_REFORMAT_LEN_MAX] [inherited]

reformat header buffer

uint16_t doca_flow_resource_crypto_cfg::reformat_data_sz [inherited]

reformat header length in bytes

enumdoca_flow_crypto_icv_sizedoca_flow_resource_crypto_cfg::reformat_icv_sz [inherited]

Intergtity Check Value in reformat action

enumdoca_flow_crypto_reformat_typedoca_flow_resource_crypto_cfg::reformat_type [inherited]

packet reformat action

void * doca_flow_resource_crypto_cfg::security_ctx [inherited]

crypto object handle

3.58. doca_flow_resource_meter_cfg Struct Reference

[Flow Defines]

Public Variables

enumdoca_flow_meter_algorithm_type alg
uint64_t  cbs
uint64_t  cir
enumdoca_flow_meter_color_mode color_mode
uint64_t  ebs
uint64_t  eir
enumdoca_flow_meter_limit_type limit_type
uint64_t  pbs
uint64_t  pir

Variables

enumdoca_flow_meter_algorithm_typedoca_flow_resource_meter_cfg::alg [inherited]

Meter algorithm by RFCs

uint64_t doca_flow_resource_meter_cfg::cbs [inherited]

Committed Burst Size (bytes or packets).

uint64_t doca_flow_resource_meter_cfg::cir [inherited]

Committed Information Rate (bytes or packets per second).

enumdoca_flow_meter_color_modedoca_flow_resource_meter_cfg::color_mode [inherited]

Meter color mode: blind / aware

uint64_t doca_flow_resource_meter_cfg::ebs [inherited]

Excess Burst Size (EBS) (bytes or packets).

uint64_t doca_flow_resource_meter_cfg::eir [inherited]

Excess Information Rate (bytes or packets per seconds).

enumdoca_flow_meter_limit_typedoca_flow_resource_meter_cfg::limit_type [inherited]

Meter rate limit type: bytes / packets per second

uint64_t doca_flow_resource_meter_cfg::pbs [inherited]

Peak Burst Size (bytes or packets).

uint64_t doca_flow_resource_meter_cfg::pir [inherited]

Peak Information Rate (bytes or packets per seconds).

3.59. doca_flow_resource_mirror_cfg Struct Reference

[Flow Defines]

Public Variables

struct doca_flow_fwd fwd
int  nr_targets
doca_flow_mirror_targettarget

Variables

struct doca_flow_fwddoca_flow_resource_mirror_cfg::fwd [inherited]

Original packet dst, can be filled optional.

int doca_flow_resource_mirror_cfg::nr_targets [inherited]

Mirror target number.

doca_flow_mirror_target * doca_flow_resource_mirror_cfg::target [inherited]

Mirror target pointer.

3.60. doca_flow_resource_rss_cfg Struct Reference

[Flow Defines]

Public Variables

uint32_t  inner_flags
int  nr_queues
uint32_t  outer_flags
uint16_t * queues_array
enumdoca_flow_rss_hash_function rss_hash_func

Variables

uint32_t doca_flow_resource_rss_cfg::inner_flags [inherited]

rss offload inner types

int doca_flow_resource_rss_cfg::nr_queues [inherited]

number of queues

uint32_t doca_flow_resource_rss_cfg::outer_flags [inherited]

rss offload outer types

uint16_t * doca_flow_resource_rss_cfg::queues_array [inherited]

rss queues array

enumdoca_flow_rss_hash_functiondoca_flow_resource_rss_cfg::rss_hash_func [inherited]

hash function

3.61. doca_flow_resources Struct Reference

[Flow Defines]

Public Variables

uint32_t  nb_counters
uint32_t  nb_meters

Variables

uint32_t doca_flow_resources::nb_counters [inherited]

Number of counters to configure

uint32_t doca_flow_resources::nb_meters [inherited]

Number of traffic meters to configure

3.62. doca_flow_shared_resource_cfg Struct Reference

[Flow Defines]

Public Variables

enumdoca_flow_pipe_domain domain

Variables

enumdoca_flow_pipe_domaindoca_flow_shared_resource_cfg::domain [inherited]

Shared resource steering domain

3.63. doca_flow_shared_resource_result Struct Reference

[Flow Defines]

3.64. doca_flow_tun Struct Reference

[Flow Net Define]

Public Variables

doca_be32_t  esp_sn
doca_be32_t  esp_spi
struct doca_flow_header_geneve geneve
union doca_flow_geneve_option geneve_options[DOCA_FLOW_GENEVE_OPT_LEN_MAX]
doca_be32_t  gre_key
doca_be32_t  gtp_teid
bool  key_present
struct doca_flow_header_mpls mpls[DOCA_FLOW_MPLS_LABELS_MAX]
doca_be16_t protocol
enumdoca_flow_tun_type type
doca_be32_t  vxlan_tun_id

Variables

doca_be32_t doca_flow_tun::esp_sn [inherited]

ipsec sequence number

doca_be32_t doca_flow_tun::esp_spi [inherited]

ipsec session parameter index

struct doca_flow_header_genevedoca_flow_tun::geneve [inherited]

geneve header

union doca_flow_geneve_optiondoca_flow_tun::geneve_options[DOCA_FLOW_GENEVE_OPT_LEN_MAX] [inherited]

geneve options as array of doca_be32_t

doca_be32_t doca_flow_tun::gre_key [inherited]

gre key

doca_be32_t doca_flow_tun::gtp_teid [inherited]

gtp teid

bool doca_flow_tun::key_present [inherited]

gre key is present

struct doca_flow_header_mplsdoca_flow_tun::mpls[DOCA_FLOW_MPLS_LABELS_MAX] [inherited]

mpls labels

doca_be16_tdoca_flow_tun::protocol [inherited]

next protocol

enumdoca_flow_tun_typedoca_flow_tun::type [inherited]

tunnel type

doca_be32_t doca_flow_tun::vxlan_tun_id [inherited]

vxlan vni(24) + reserved (8).

3.65. doca_ipsec_sa_attr_egress Struct Reference

[IPsec]

Public Variables

uint32_t  sn_inc_enable

Variables

uint32_t doca_ipsec_sa_attr_egress::sn_inc_enable [inherited]

when set sn increment offloaded

3.66. doca_ipsec_sa_attr_ingress Struct Reference

[IPsec]

Public Variables

uint32_t  antireplay_enable
enumdoca_ipsec_replay_win_size replay_win_sz

Variables

uint32_t doca_ipsec_sa_attr_ingress::antireplay_enable [inherited]

when enabled activates anti-replay protection window.

enumdoca_ipsec_replay_win_sizedoca_ipsec_sa_attr_ingress::replay_win_sz [inherited]

Anti replay window size to enable sequence replay attack handling.

3.67. doca_ipsec_sa_attr_sn Struct Reference

[IPsec]

Public Variables

uint32_t  esn_enable
uint32_t  esn_overlap
uint64_t  sn_initial

Variables

uint32_t doca_ipsec_sa_attr_sn::esn_enable [inherited]

when set esn is enabled

uint32_t doca_ipsec_sa_attr_sn::esn_overlap [inherited]

new/old indication of the High sequence number MSB - when set is old

uint64_t doca_ipsec_sa_attr_sn::sn_initial [inherited]

set the initial sequence number - in antireplay set the lower bound of the window

3.68. doca_ipsec_sa_attrs Struct Reference

[IPsec]

Public Variables

enumdoca_ipsec_direction direction
struct doca_ipsec_sa_attr_egress egress
struct doca_ipsec_sa_event_attrs event
enumdoca_ipsec_icv_length icv_length
struct doca_ipsec_sa_attr_ingress ingress
struct doca_encryption_key key
struct doca_ipsec_sa_attr_sn sn_attr

Variables

enumdoca_ipsec_directiondoca_ipsec_sa_attrs::direction [inherited]

egress/ingress

struct doca_ipsec_sa_attr_egressdoca_ipsec_sa_attrs::egress [inherited]

< egress/ingress attr egress attr

struct doca_ipsec_sa_event_attrsdoca_ipsec_sa_attrs::event [inherited]

Reserve future use - ipsec events flags

enumdoca_ipsec_icv_lengthdoca_ipsec_sa_attrs::icv_length [inherited]

Authentication Tag length

struct doca_ipsec_sa_attr_ingressdoca_ipsec_sa_attrs::ingress [inherited]

ingress attr

struct doca_encryption_keydoca_ipsec_sa_attrs::key [inherited]

IPSec encryption key

struct doca_ipsec_sa_attr_sndoca_ipsec_sa_attrs::sn_attr [inherited]

sn attributes

3.69. doca_ipsec_sa_create_job Struct Reference

[IPsec]

The result of this job if doca_workq_progress_retrieve returns:

  • DOCA_SUCCESS - struct doca_event { .result.ptr } should point to new created `struct doca_ipsec_sa` object.

  • DOCA_ERROR_IO_FAILED - struct doca_event { .result.u64 } should contain IPSec CTX specific error status code.

Public Variables

struct doca_job base
struct doca_ipsec_sa_attrs sa_attrs

Variables

struct doca_jobdoca_ipsec_sa_create_job::base [inherited]

doca job object

struct doca_ipsec_sa_attrsdoca_ipsec_sa_create_job::sa_attrs [inherited]

ipsec sa attr

3.70. doca_ipsec_sa_destroy_job Struct Reference

[IPsec]

The result of this job as struct doca_event { .result.u64 } should contain SA destroy completion status code.

Public Variables

struct doca_job base
doca_ipsec_sa * sa

Variables

struct doca_jobdoca_ipsec_sa_destroy_job::base [inherited]

doca job object

doca_ipsec_sa * doca_ipsec_sa_destroy_job::sa [inherited]

ipsec sa object (from create)

3.71. doca_ipsec_sa_event_attrs Struct Reference

[IPsec]

Public Variables

uint32_t  esn_overlap_event_arm
uint32_t  hard_lifetime_arm
uint32_t  remove_flow_enable
uint32_t  remove_flow_packet_count
uint32_t  remove_flow_soft_lifetime
uint32_t  soft_lifetime_arm

Variables

uint32_t doca_ipsec_sa_event_attrs::esn_overlap_event_arm [inherited]

1 when armed/to arm 0 otherwise.

uint32_t doca_ipsec_sa_event_attrs::hard_lifetime_arm [inherited]

1 when armed/to arm 0 otherwise.

uint32_t doca_ipsec_sa_event_attrs::remove_flow_enable [inherited]

1 when remove flow enabled/to enable; 0 otherwise.

uint32_t doca_ipsec_sa_event_attrs::remove_flow_packet_count [inherited]

Packet counter, Decrements for every packet passing through the SA. Event are triggered occurs when the counter reaches soft- lifetime and hard-lifetime (0). When counter reaches hard-lifetime, all passing packets will return a relevant Syndrome.

uint32_t doca_ipsec_sa_event_attrs::remove_flow_soft_lifetime [inherited]

Soft Lifetime threshold value. When remove_flow_packet_count reaches this value a soft lifetime event is triggered (if armed). See remove_flow_packet_count field in this struct fro more details.

uint32_t doca_ipsec_sa_event_attrs::soft_lifetime_arm [inherited]

1 when armed/to arm 0 otherwise.

3.72. doca_job Struct Reference

[DOCA Context]

A context of given type may serve one or more request types defined as action type (see definition of enum doca_action_type).

DOCA Job layout

SDK job --> +--------------------------+ | DOCA Job (base) | | type | | flags | | ctx | | user data | | | +------------+-------------+ <-- job arguments | | variable size | arguments | SDK specific | . | structure | . | | . | | . | | . | | . | | | +------------+-------------+

Public Variables

doca_ctx * ctx
int  flags
int  type
doca_data  user_data

Variables

doca_ctx * doca_job::ctx [inherited]

Doca CTX targeted by the job.

int doca_job::flags [inherited]

Job submission flags (see `enum doca_job_flags`).

int doca_job::type [inherited]

Defines the type of the job.

doca_data doca_job::user_data [inherited]

Job identifier provided by user. Will be returned back on completion.

3.73. doca_log_registrator Class Reference

[Logging Management]

Should be used to register the log source. For example:

DOCA_LOG_REGISTER(dpi)

void foo { DOCA_LOG_INFO("Message"); }

Note:

The macro also takes care of the dtor() logic on teardown.

3.74. doca_pcc_dev_algo_meta_data Struct Reference

[PCC Device Algo Access]

Public Variables

uint64_t  algo_desc_addr
uint32_t  algo_desc_size
uint32_t  algo_id
uint32_t  algo_major_version
uint32_t  algo_minor_version

Variables

uint64_t doca_pcc_dev_algo_meta_data::algo_desc_addr [inherited]

pointer to description string

uint32_t doca_pcc_dev_algo_meta_data::algo_desc_size [inherited]

size of description string (null terminated)

uint32_t doca_pcc_dev_algo_meta_data::algo_id [inherited]

algo unique identifier

uint32_t doca_pcc_dev_algo_meta_data::algo_major_version [inherited]

algo major version

uint32_t doca_pcc_dev_algo_meta_data::algo_minor_version [inherited]

algo minor version

3.75. doca_rdma_gid Struct Reference

[DOCA Remote Direct Memory Access]

gid struct

Public Variables

uint8_t  raw[DOCA_GID_BYTE_LENGTH]

Variables

uint8_t doca_rdma_gid::raw[DOCA_GID_BYTE_LENGTH] [inherited]

The raw value of the GID

3.76. doca_rdma_job_atomic Struct Reference

[DOCA Remote Direct Memory Access]

RDMA atomic job.

Public Variables

struct doca_job base
uint64_t  cmp_data
doca_buf * cmp_or_add_dest_buff
const doca_rdma_addr * rdma_peer_addr
doca_buf * result_buff
uint64_t  swap_or_add_data

Variables

struct doca_jobdoca_rdma_job_atomic::base [inherited]

Common job data

uint64_t doca_rdma_job_atomic::cmp_data [inherited]

Value to compare for compare and swap.

doca_buf * doca_rdma_job_atomic::cmp_or_add_dest_buff [inherited]

Destination data buffer

const doca_rdma_addr * doca_rdma_job_atomic::rdma_peer_addr [inherited]

Optional: For RDMA context of type DC

doca_buf * doca_rdma_job_atomic::result_buff [inherited]

Result of the atomic operation: remote original data before add, or remote original data before compare

uint64_t doca_rdma_job_atomic::swap_or_add_data [inherited]

For add, the increment value for cmp, the new value to swap

3.77. doca_rdma_job_read_write Struct Reference

[DOCA Remote Direct Memory Access]

RDMA read/write job.

Public Variables

struct doca_job base
doca_buf * dst_buff
doca_be32_t  immediate_data
const doca_rdma_addr * rdma_peer_addr
const doca_buf * src_buff

Variables

struct doca_jobdoca_rdma_job_read_write::base [inherited]

Common job data

doca_buf * doca_rdma_job_read_write::dst_buff [inherited]

Destination data buffer

doca_be32_t doca_rdma_job_read_write::immediate_data [inherited]

Immediate data for write with imm

const doca_rdma_addr * doca_rdma_job_read_write::rdma_peer_addr [inherited]

Optional: For RDMA context of type DC

const doca_buf * doca_rdma_job_read_write::src_buff [inherited]

Source data buffer

3.78. doca_rdma_job_recv Struct Reference

[DOCA Remote Direct Memory Access]

The jobs to be dispatched via the RDMA library RDMA receive job.

Public Variables

struct doca_job base
doca_buf * dst_buff

Variables

struct doca_jobdoca_rdma_job_recv::base [inherited]

Common job data

doca_buf * doca_rdma_job_recv::dst_buff [inherited]

Destination data buffer, chain len must not exceed recv_buf_chain_len property

3.79. doca_rdma_job_send Struct Reference

[DOCA Remote Direct Memory Access]

RDMA send job.

Public Variables

struct doca_job base
doca_be32_t  immediate_data
const doca_rdma_addr * rdma_peer_addr
const doca_buf * src_buff

Variables

struct doca_jobdoca_rdma_job_send::base [inherited]

Common job data

doca_be32_t doca_rdma_job_send::immediate_data [inherited]

Immediate data

const doca_rdma_addr * doca_rdma_job_send::rdma_peer_addr [inherited]

Optional: For RDMA context of type UD or DC

const doca_buf * doca_rdma_job_send::src_buff [inherited]

Source data buffer

3.80. doca_rdma_result Struct Reference

[DOCA Remote Direct Memory Access]

Result of a RDMA jobs. Will be held inside the doca_event::result field. RDMA Context results_fields_set() should be used to define which ones are required

Public Variables

doca_be32_t  immediate_data
uint32_t  length
enumdoca_rdma_opcode_t opcode
doca_rdma_addr * rdma_peer_addr
doca_error_t result

Variables

doca_be32_t doca_rdma_result::immediate_data [inherited]

Immediate data, valid only if opcode indicates

uint32_t doca_rdma_result::length [inherited]

Total length of received data in case of completion (on send and write jobs this field will be 0)

enumdoca_rdma_opcode_tdoca_rdma_result::opcode [inherited]

Opcode in case of doca_rdma_job_recv completion

doca_rdma_addr * doca_rdma_result::rdma_peer_addr [inherited]

Peer Address for UD and DC

doca_error_tdoca_rdma_result::result [inherited]

Operation result

3.82. doca_regex_match Struct Reference

[RegEx Engine]

Description of a RegEx match

Public Variables

uint32_t  length
uint32_t  match_start
doca_regex_matchnext
uint32_t  rule_id

Variables

uint32_t doca_regex_match::length [inherited]

Length of matched value.

uint32_t doca_regex_match::match_start [inherited]

Index relative to the start of the job / stream where the match begins

doca_regex_match * doca_regex_match::next [inherited]

Allows matches to be linked together for easy management and iteration

uint32_t doca_regex_match::rule_id [inherited]

ID of rule used to generate this match.

3.83. doca_regex_search_result Struct Reference

[RegEx Engine]

Result of a RegEx search

Public Variables

uint32_t  detected_matches
doca_regex_matchmatches
doca_regex_mempool * matches_mempool
uint32_t  num_matches
uint64_t  status_flags

Variables

uint32_t doca_regex_search_result::detected_matches [inherited]

Total number of detected matches.

doca_regex_match * doca_regex_search_result::matches [inherited]

Returned matches. Contains num_matches elements as a linked list.

doca_regex_mempool * doca_regex_search_result::matches_mempool [inherited]

Memory pool owning the matches.

uint32_t doca_regex_search_result::num_matches [inherited]

Total number of returned matches.

uint64_t doca_regex_search_result::status_flags [inherited]

Response flags. A bit masked field for zero or more status flags. See doca_regex_status_flag.

3.84. doca_rmax_cpu_affinity_mask Struct Reference

[DOCA RMAX Engine]

Public Variables

doca_rmax_cpu_mask_t cpu_bits[DOCA_RMAX_CPU_SETSIZE/DOCA_RMAX_NCPUBITS]

Variables

doca_rmax_cpu_mask_tdoca_rmax_cpu_affinity_mask::cpu_bits[DOCA_RMAX_CPU_SETSIZE/DOCA_RMAX_NCPUBITS] [inherited]

CPU is included in affinity mask if the corresponding bit is set

3.85. doca_rmax_in_stream_completion Struct Reference

[DOCA RMAX Engine]

Input stream starts to receive packets right after start and attaching any flow.

Public Variables

uint32_t  elements_count
memblk_ptr_arr
uint32_t  memblk_ptr_arr_len
uint32_t  seqn_first
uint64_t  ts_first
uint64_t  ts_last

Variables

uint32_t doca_rmax_in_stream_completion::elements_count [inherited]

Number of packets received

* doca_rmax_in_stream_completion::memblk_ptr_arr [inherited]

Array of pointers to the beginning of the memory block as configured by input stream create step. The offset between packets inside memory block can be queried by doca_rmax_in_stream_get_memblk_stride_size

uint32_t doca_rmax_in_stream_completion::memblk_ptr_arr_len [inherited]

Number of memory blocks placed in memblk_ptr_arr. See doca_rmax_in_stream_get_memblks_count.

uint32_t doca_rmax_in_stream_completion::seqn_first [inherited]

Sequnce number of the first packet

uint64_t doca_rmax_in_stream_completion::ts_first [inherited]

Time of arrival of the first packet

uint64_t doca_rmax_in_stream_completion::ts_last [inherited]

Time of arrival of the last packet

3.86. doca_rmax_job_rx_data Struct Reference

[DOCA RMAX Engine]

Public Variables

struct doca_job base

Variables

struct doca_jobdoca_rmax_job_rx_data::base [inherited]

Common job data

3.87. doca_rmax_stream_error Struct Reference

[DOCA RMAX Engine]

Public Variables

int  code
const char * message

Variables

int doca_rmax_stream_error::code [inherited]

Raw Rivermax error code

const char * doca_rmax_stream_error::message [inherited]

Human-readable error

3.88. doca_sha_job Struct Reference

[SHA Engine]

DOCA SHA job definition. -- "struct doca_sha_job" is used for one-shot SHA calculation. -- Its typical usage is: -- construct a job: struct doca_sha_job job = { .base.type = DOCA_SHA_JOB_SHA1, .req_buf = user_req_buf, .resp_buf = user_resp_buf, .flags = DOCA_SHA_JOB_FLAGS_NONE }; -- submit job: doca_workq_submit(workq, &job.base); -- retrieve event: doca_workq_progress_retrieve(workq, &event, DOCA_WORKQ_RETRIEVE_FLAGS_NONE);

-- For doca_workq_submit() return code: -- DOCA_SUCCESS: -- The job is submitted successfully. It also means: this submitted source data cannot be freely manipulated until its response is received. -- DOCA_ERROR_INVALID_VALUE: -- Some of the job attribute members use illegal value. for example, response buffer length is < 20bytes for SHA1; request buffer length == 0, and the job type attribute is not supported. -- DOCA_ERROR_NO_MEMORY: -- The job resouce is exhausted for now, we need to call progress_retrieve() first to receive response and free job resource, then call job_submit() to try again to submit the same job. -- DOCA_ERROR_BAD_STATE: -- sha_ctx is corrupted now, need reset.

-- For doca_workq_progress_retrieve() return code: -- DOCA_SUCCESS: -- we get a response from SHA engine. user can utilise doca_job's user_data field to setup special data to correlate the returned event and the corresponding job. -- DOCA_ERROR_AGAIN: -- In order to get a response, we need to call progress_retrieve() again. -- DOCA_ERROR_IO_FAILED: -- abnormal occurs in the SHA engine hardware queue, sha_ctx and workq need to be re-initialized. -- DOCA_ERROR_INVALID_VALUE: -- received invalid input.

Public Variables

struct doca_job base
uint64_t  flags
doca_buf * req_buf
doca_buf * resp_buf

Variables

struct doca_jobdoca_sha_job::base [inherited]

Opaque structure.

uint64_t doca_sha_job::flags [inherited]

SHA job flags. For the last segment of a doca_sha_partial_job, use DOCA_SHA_JOB_FLAGS_SHA_PARTIAL_FINAL. Otherwise, use DOCA_SHA_JOB_FLAGS_NONE.

doca_buf * doca_sha_job::req_buf [inherited]

User request. SHA engine accessible buffer pointed to the user input data. The req_buf can be a linked_list doca_buf, so that a chained multiple bufs can be used as valid request.

doca_buf * doca_sha_job::resp_buf [inherited]

User response. The response byte count can be decided by DOCA_SHAXXX_BYTE_COUNT macro. The chained doca_buf is descouraged to be used as a response. Although resp_buf can be a linked_list doca_buf, no submission failure, but only the head element of the chained buf is used for now, because the SHA output is no more than 64bytes.

3.89. doca_sha_partial_job Struct Reference

[SHA Engine]

DOCA SHA_PARTIAL job definition. -- "struct doca_sha_partial_job" is used for stateful SHA calculation. -- Its typical usage for a job composed of 3 segments is: -- get a session handle: doca_sha_partial_session *session; doca_sha_partial_session_create(ctx, workq, &session); -- construct the 1st job: struct doca_sha_partial_job job = { .sha_job.base.type = DOCA_SHA_JOB_SHA1_PARTIAL, .sha_job.req_buf = user_req_buf_of_1st_segment, .sha_job.resp_buf = user_resp_buf, .sha_job.flags = DOCA_SHA_JOB_FLAGS_NONE, .session = session, }; -- submit 1st segment: doca_workq_submit(workq, &job.sha_job.base); -- retrieve 1st event: doca_workq_progress_retrieve(workq, &event, DOCA_WORKQ_RETRIEVE_FLAGS_NONE); The purpose of this call is to make sure the 1st_segment processing is finished before we can continue to send the next segment, because it is necessary to sequentially process all segment for generating correct SHA result. And the "user_resp_buf" at this moment contains garbage values. -- after the DOCA_SUCCESS event of the 1st segment is received, we can continue to submit 2nd segment: -- construct the 2nd job: struct doca_sha_partial_job job = { .sha_job.base.type = DOCA_SHA_JOB_SHA1_PARTIAL, .sha_job.req_buf = user_req_buf_of_2nd_segment, .sha_job.resp_buf = user_resp_buf, .sha_job.flags = DOCA_SHA_JOB_FLAGS_NONE, .session = session, }; -- submit 2nd segment: doca_workq_submit(workq, &job.sha_job.base); -- retrieve 2nd event: doca_workq_progress_retrieve(workq, &event, DOCA_WORKQ_RETRIEVE_FLAGS_NONE); The purpose of this call is also to make sure the 2nd_segment processing is finished. And the "user_resp_buf" at this moment still contains garbage values. -- after the DOCA_SUCCESS event of the 2nd segment is received, we can continue to submit 3rd/final segment: -- construct the 3rd job: struct doca_sha_partial_job job = { .sha_job.base.type = DOCA_SHA_JOB_SHA1_PARTIAL, .sha_job.req_buf = user_req_buf_of_3rd_segment, .sha_job.resp_buf = user_resp_buf, .sha_job.flags = DOCA_SHA_JOB_FLAGS_SHA_PARTIAL_FINAL, .session = session, }; -- submit 3rd segment: doca_workq_submit(workq, &job.sha_job.base); -- retrieve 3rd event: doca_workq_progress_retrieve(workq, &event, DOCA_WORKQ_RETRIEVE_FLAGS_NONE); -- After the DOCA_SUCCESS event of the 3rd segment is received, the whole job processing is done. We can get the expected SHA result from "user_resp_buf". -- release session: doca_sha_partial_session_destroy(ctx, workq, session); -- During the whole process, please make sure to use the same "session" handle. -- And for the last segment, the "DOCA_SHA_JOB_FLAGS_SHA_PARTIAL_FINAL" flag must be set.

-- For doca_workq_submit() return code: -- DOCA_SUCCESS: -- The job is submitted successfully. It also means: this submitted source data cannot be freely manipulated until its response is received. -- DOCA_ERROR_INVALID_VALUE: -- Some of the job attribute members use illegal value. for example, response buffer length is < 20bytes for SHA1; request buffer length == 0, and the job type attribute is not supported. -- DOCA_ERROR_NO_MEMORY: -- The job resouce is exhausted for now, we need to call progress_retrieve() first to receive response and free job resource, then call job_submit() to try again to submit the same job. -- DOCA_ERROR_BAD_STATE: -- sha_ctx is corrupted now, need reset.

-- For doca_workq_progress_retrieve() return code: -- DOCA_SUCCESS: -- we get a response from SHA engine. user can utilise doca_job's user_data field to setup special data to correlate the returned event and the corresponding job. -- DOCA_ERROR_AGAIN: -- In order to get a response, we need to call progress_retrieve() again. -- DOCA_ERROR_IO_FAILED: -- abnormal occurs in the SHA engine hardware queue, sha_ctx and workq need to be re-initialized. -- DOCA_ERROR_INVALID_VALUE: -- received invalid input.

Note: -- sha_partial_job session requirement: -- make sure the same doca_sha_partial_session used for all segments of a whole job. -- before 1st segment submission, call doca_sha_partial_session_create() to grab a session handle. -- from the 1st to the last segment submission, always reuse the same session handle. -- after the last segment processing, to prevent a session resource leak, the user must explicitly call doca_sha_partial_session_destroy() to release this session handle. -- The doca_sha_partial_session_destroy() is provided to let user to free session handle at his will. -- If a session handle is released before the whole stateful SHA is finished, or if different handles are used for a stateful SHA, the job submission may fail due to job validity check failure; even the job submission successes, and the engine is not stalled, a wrong SHA result is expected. -- The "session" resource is limited, it is user's responsibility to make sure all allocated "session" handles are released. -- If "DOCA_SHA_JOB_FLAGS_SHA_PARTIAL_FINAL" is not properly set, the engine will not be stalled, but a wrong SHA result is expected.

-- sha_partial_job segment length requirement: -- only the last segment allows seg-byte-count != multiple-of-64 for sha1 and sha256. For example, for the above example code, the 1st and 2nd segment byte length must be multiple of 64. -- only the last segment allows seg-byte-count != multiple-of-128 for sha512. -- If the above requirement is not met, job_submission will fail.

Public Variables

doca_sha_partial_session * session
struct doca_sha_job sha_job

Variables

doca_sha_partial_session * doca_sha_partial_job::session [inherited]

An opaque structure for user. Used to maintain state for stateful SHA calculation.

struct doca_sha_jobdoca_sha_partial_job::sha_job [inherited]

A basic sha_job.

3.90. doca_sync_event_job_get Struct Reference

[DOCA Sync Event]

Get job to be dispatched on a DOCA WorkQ which attached to the Sync Event. Get the value of the Sync Event.

Public Variables

struct doca_job base
uint64_t * value

Variables

struct doca_jobdoca_sync_event_job_get::base [inherited]

Inherits from DOCA Job

uint64_t * doca_sync_event_job_get::value [inherited]

The Sync Event value

3.91. doca_sync_event_job_update_add Struct Reference

[DOCA Sync Event]

Add job to be dispatched on a DOCA WorkQ which attached to some Sync Event. Atomically increment the value of the Sync Event by the given value.

Public Variables

struct doca_job base
uint64_t * fetched
uint64_t  value

Variables

struct doca_jobdoca_sync_event_job_update_add::base [inherited]

Inherits from DOCA Job

uint64_t * doca_sync_event_job_update_add::fetched [inherited]

Fetched Sync Event value

uint64_t doca_sync_event_job_update_add::value [inherited]

Value to set the Sync Event to

3.92. doca_sync_event_job_update_set Struct Reference

[DOCA Sync Event]

Set job to be dispatched on a DOCA WorkQ which attached to some Sync Event. Set the value of the Sync Event to the given value.

Public Variables

struct doca_job base
uint64_t  value

Variables

struct doca_jobdoca_sync_event_job_update_set::base [inherited]

Inherits from DOCA Job

uint64_t doca_sync_event_job_update_set::value [inherited]

Value to set the Sync Event to

3.93. doca_sync_event_job_wait Struct Reference

[DOCA Sync Event]

Wait job to be dispatched on a DOCA WorkQ which attached to some Sync Event. Wait for the Sync Event to be grater than the given value.

Public Variables

struct doca_job base
uint64_t  mask
uint64_t  value

Variables

struct doca_jobdoca_sync_event_job_wait::base [inherited]

Inherits from DOCA Job

uint64_t doca_sync_event_job_wait::mask [inherited]

Mask for comparing the Sync Event value - mask must be consistent only of 0, 1, 2, 4 or 8 consecutive FFs

uint64_t doca_sync_event_job_wait::value [inherited]

Threshold to wait for the Sync Event to be grater than. Valid values must be in the range [0, 254] and can be submitted for event with value in the range [0, 254] - other scenarios result in undefined behaviour.

3.94. doca_sync_event_result Struct Reference

[DOCA Sync Event]

Result of a Sync Event job. Held inside the doca_event::result.u64 field.

Public Variables

doca_error_t result

Variables

doca_error_tdoca_sync_event_result::result [inherited]

Operation status