23 #ifndef DOCA_ETH_RXQ_CPU_DATA_PATH_H_
24 #define DOCA_ETH_RXQ_CPU_DATA_PATH_H_
50 struct doca_eth_rxq_task_recv;
58 struct doca_eth_rxq_event_managed_recv;
62 struct doca_eth_rxq_event_batch_managed_recv;
112 struct doca_buf *pkt,
138 struct doca_eth_rxq_event_batch_managed_recv *event_batch_managed_recv,
139 uint16_t events_number,
142 struct doca_buf **pkt_array);
170 uint32_t task_recv_num);
227 struct doca_eth_rxq *eth_rxq,
259 struct doca_buf *pkt,
261 struct doca_eth_rxq_task_recv **task_recv);
348 const struct doca_eth_rxq_event_batch_managed_recv *event_batch_managed_recv,
349 const uint8_t **l3_ok_array);
405 const struct doca_eth_rxq_event_batch_managed_recv *event_batch_managed_recv,
406 const uint8_t **l4_ok_array);
425 const uint32_t **metadata_array);
444 const struct doca_eth_rxq_event_managed_recv *event_managed_recv,
445 const uint32_t **metadata_array);
466 const struct doca_eth_rxq_event_batch_managed_recv *event_batch_managed_recv,
467 const uint32_t **metadata_array);
504 const struct doca_eth_rxq_event_managed_recv *event_managed_recv,
524 const struct doca_eth_rxq_event_batch_managed_recv *event_batch_managed_recv,
525 const uint32_t **flow_tag_array);
562 const struct doca_eth_rxq_event_managed_recv *event_managed_recv,
582 const struct doca_eth_rxq_event_batch_managed_recv *event_batch_managed_recv,
583 const uint32_t **rx_hash_array);
620 const struct doca_eth_rxq_event_managed_recv *event_managed_recv,
640 const struct doca_eth_rxq_event_batch_managed_recv *event_batch_managed_recv,
641 const uint64_t **timestamp_array);
657 const struct doca_eth_rxq_event_managed_recv *event_managed_recv);
676 #define doca_eth_rxq_event_batch_managed_recv_metadata_array_get_metadata(metadata_array, \
680 metadata_array[packet_index * metadata_num + metadata_index]
709 const struct doca_eth_rxq_event_managed_recv *event_managed_recv);
723 const struct doca_eth_rxq_event_batch_managed_recv *event_batch_managed_recv);
doca_telemetry_exporter_timestamp_t timestamp
static void task_error_cb(struct doca_task *se_task, union doca_data task_user_data, union doca_data ctx_user_data)
static void task_completion_cb(struct doca_task *se_task, union doca_data task_user_data, union doca_data ctx_user_data)
#define DOCA_EXPERIMENTAL
To set a Symbol (or specifically a function) as experimental.
enum doca_error doca_error_t
DOCA API return codes.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_event_managed_recv_get_timestamp(const struct doca_eth_rxq_event_managed_recv *event_managed_recv, uint64_t *timestamp)
This method gets the timestamp of a managed receive event.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_task_recv_get_flow_tag(const struct doca_eth_rxq_task_recv *task_recv, uint32_t *flow_tag)
This method gets the flow tag of a finished receive task.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_task_recv_allocate_init(struct doca_eth_rxq *eth_rxq, struct doca_buf *pkt, union doca_data user_data, struct doca_eth_rxq_task_recv **task_recv)
This method allocates and initializes a doca_eth_rxq_task_recv task.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_event_managed_recv_get_status(const struct doca_eth_rxq_event_managed_recv *event_managed_recv)
This method gets status of finished doca_eth_rxq_event_managed_recv event.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_task_recv_get_pkt(const struct doca_eth_rxq_task_recv *task_recv, struct doca_buf **pkt)
This method gets packet buffer from doca_eth_rxq_task_recv task.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_event_batch_managed_recv_get_metadata_array(const struct doca_eth_rxq_event_batch_managed_recv *event_batch_managed_recv, const uint32_t **metadata_array)
This method gets metadata array for the packet received by managed receive event batch.
DOCA_EXPERIMENTAL struct doca_ctx * doca_eth_rxq_event_batch_managed_recv_get_ctx(const struct doca_eth_rxq_event_batch_managed_recv *event_batch_managed_recv)
This method gets context of finished doca_eth_rxq_event_batch_managed_recv event.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_event_managed_recv_get_l4_ok(const struct doca_eth_rxq_event_managed_recv *event_managed_recv, uint8_t *l4_ok)
This method checks if L4 checksum of finished doca_eth_rxq_event_managed_recv event is ok.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_event_batch_managed_recv_get_l4_ok_array(const struct doca_eth_rxq_event_batch_managed_recv *event_batch_managed_recv, const uint8_t **l4_ok_array)
This method checks if L4 checksums of received packets in managed receive event batch are ok.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_event_managed_recv_register(struct doca_eth_rxq *eth_rxq, union doca_data user_data, doca_eth_rxq_event_managed_recv_handler_cb_t success_event_handler, doca_eth_rxq_event_managed_recv_handler_cb_t error_event_handler)
This method registers a doca_eth_rxq_event_managed_recv event. can only be called before calling doca...
DOCA_EXPERIMENTAL void doca_eth_rxq_event_batch_managed_recv_pkt_array_free(struct doca_buf **pkt_array)
This method frees the packet array acquired using managed receive event batch and returns it to the o...
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_event_managed_recv_get_metadata_array(const struct doca_eth_rxq_event_managed_recv *event_managed_recv, const uint32_t **metadata_array)
This method gets metadata array for the packet received by managed receive event.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_task_recv_set_conf(struct doca_eth_rxq *eth_rxq, doca_eth_rxq_task_recv_completion_cb_t task_completion_cb, doca_eth_rxq_task_recv_completion_cb_t task_error_cb, uint32_t task_recv_num)
This method sets the doca_eth_rxq_task_recv tasks configuration. can only be called before calling do...
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_event_batch_managed_recv_get_l3_ok_array(const struct doca_eth_rxq_event_batch_managed_recv *event_batch_managed_recv, const uint8_t **l3_ok_array)
This method checks if L3 checksums of received packets in managed receive event batch are ok.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_event_batch_managed_recv_get_flow_tag_array(const struct doca_eth_rxq_event_batch_managed_recv *event_batch_managed_recv, const uint32_t **flow_tag_array)
This method gets the flow tag array of a managed receive event batch.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_event_batch_managed_recv_get_timestamp_array(const struct doca_eth_rxq_event_batch_managed_recv *event_batch_managed_recv, const uint64_t **timestamp_array)
This method gets the timestamp array of a managed receive event batch.
DOCA_EXPERIMENTAL void doca_eth_rxq_task_recv_set_pkt(struct doca_eth_rxq_task_recv *task_recv, struct doca_buf *pkt)
This method sets packet buffer to doca_eth_rxq_task_recv task.
void(* doca_eth_rxq_event_batch_managed_recv_handler_cb_t)(struct doca_eth_rxq_event_batch_managed_recv *event_batch_managed_recv, uint16_t events_number, union doca_data event_batch_user_data, doca_error_t status, struct doca_buf **pkt_array)
Function to be executed on managed receive event batch occurrence.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_task_recv_get_l4_ok(const struct doca_eth_rxq_task_recv *task_recv, uint8_t *l4_ok)
This method checks if L4 checksum of finished doca_eth_rxq_task_recv task is ok.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_event_managed_recv_get_rx_hash(const struct doca_eth_rxq_event_managed_recv *event_managed_recv, uint32_t *rx_hash)
This method gets the RX hash of a managed receive event.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_event_managed_recv_get_flow_tag(const struct doca_eth_rxq_event_managed_recv *event_managed_recv, uint32_t *flow_tag)
This method gets the flow tag of a managed receive event.
void(* doca_eth_rxq_event_managed_recv_handler_cb_t)(struct doca_eth_rxq_event_managed_recv *event_managed_recv, struct doca_buf *pkt, union doca_data event_user_data)
Function to be executed on managed receive event occurrence.
void(* doca_eth_rxq_task_recv_completion_cb_t)(struct doca_eth_rxq_task_recv *task_recv, union doca_data task_user_data, union doca_data ctx_user_data)
Function to execute on task completion.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_task_recv_get_metadata_array(const struct doca_eth_rxq_task_recv *task_recv, const uint32_t **metadata_array)
This method gets metadata array for the packet received by receive task.
DOCA_EXPERIMENTAL struct doca_ctx * doca_eth_rxq_event_managed_recv_get_ctx(const struct doca_eth_rxq_event_managed_recv *event_managed_recv)
This method gets context of finished doca_eth_rxq_event_managed_recv event.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_event_managed_recv_get_l3_ok(const struct doca_eth_rxq_event_managed_recv *event_managed_recv, uint8_t *l3_ok)
This method checks if L3 checksum of finished doca_eth_rxq_event_managed_recv event is ok.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_task_recv_get_timestamp(const struct doca_eth_rxq_task_recv *task_recv, uint64_t *timestamp)
This method gets the timestamp of a finished receive task.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_task_recv_get_rx_hash(const struct doca_eth_rxq_task_recv *task_recv, uint32_t *rx_hash)
This method gets the RX hash of a finished receive task.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_task_recv_get_l3_ok(const struct doca_eth_rxq_task_recv *task_recv, uint8_t *l3_ok)
This method checks if L3 checksum of finished doca_eth_rxq_task_recv task is ok.
DOCA_EXPERIMENTAL struct doca_task * doca_eth_rxq_task_recv_as_doca_task(struct doca_eth_rxq_task_recv *task_recv)
This method converts a doca_eth_rxq_task_recv task to doca_task.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_event_batch_managed_recv_get_rx_hash_array(const struct doca_eth_rxq_event_batch_managed_recv *event_batch_managed_recv, const uint32_t **rx_hash_array)
This method gets the RX hash array of a managed receive event batch.
DOCA_EXPERIMENTAL doca_error_t doca_eth_rxq_event_batch_managed_recv_register(struct doca_eth_rxq *eth_rxq, enum doca_event_batch_events_number events_number_max, enum doca_event_batch_events_number events_number_min, union doca_data user_data, doca_eth_rxq_event_batch_managed_recv_handler_cb_t success_event_batch_handler, doca_eth_rxq_event_batch_managed_recv_handler_cb_t error_event_batch_handler)
This method registers a doca_eth_rxq_event_managed_recv event batch. Allows user to get multiple even...
doca_event_batch_events_number
Convenience type for representing opaque data.