26 #ifndef DOCA_GPU_PACKET_PROCESSING_H
27 #define DOCA_GPU_PACKET_PROCESSING_H
58 struct doca_flow_port *
port;
85 struct doca_flow_port *
port;
208 struct doca_flow_port *
init_doca_flow(uint16_t port_id, uint8_t rxq_num);
238 struct doca_flow_port *port,
239 bool connection_based_flows);
262 struct doca_flow_port *port);
293 struct doca_flow_pipe *gpu_rss_pipe,
324 struct doca_flow_port *
df_port,
326 struct doca_dev *
ddev,
358 struct doca_flow_port *
df_port,
360 struct doca_dev *
ddev,
386 struct doca_flow_port *
df_port,
388 struct doca_dev *
ddev,
414 struct doca_dev *
ddev,
415 uint32_t num_packets,
416 uint32_t max_pkt_sz);
doca_error_t kernel_receive_icmp(cudaStream_t stream, uint32_t *exit_cond, struct rxq_icmp_queues *icmp_queues)
doca_error_t enable_tcp_gpu_offload(struct doca_flow_port *port, uint16_t queue_id, struct doca_flow_pipe *gpu_rss_pipe, struct tcp_session_entry *session_entry)
struct doca_flow_port * init_doca_flow(uint16_t port_id, uint8_t rxq_num)
doca_error_t destroy_flow_queue(struct doca_flow_port *port_df, struct rxq_icmp_queues *icmp_queues, struct rxq_udp_queues *udp_queues, struct rxq_tcp_queues *tcp_queues, bool http_server, struct txq_http_queues *http_queues)
doca_error_t create_tx_buf(struct tx_buf *buf, struct doca_gpu *gpu_dev, struct doca_dev *ddev, uint32_t num_packets, uint32_t max_pkt_sz)
doca_error_t create_tcp_gpu_pipe(struct rxq_tcp_queues *tcp_queues, struct doca_flow_port *port, bool connection_based_flows)
doca_error_t register_application_params(void)
void debug_send_packet_icmp_cb(struct doca_eth_txq_gpu_event_notify_send_packet *event_notify, union doca_data event_user_data)
doca_error_t kernel_receive_udp(cudaStream_t stream, uint32_t *exit_cond, struct rxq_udp_queues *udp_queues)
doca_error_t destroy_tx_buf(struct tx_buf *buf)
doca_error_t destroy_tcp_queues(struct rxq_tcp_queues *tcp_queues, bool http_server, struct txq_http_queues *http_queues)
doca_error_t create_root_pipe(struct rxq_udp_queues *udp_queues, struct rxq_tcp_queues *tcp_queues, struct rxq_icmp_queues *icmp_queues, struct doca_flow_port *port)
doca_error_t destroy_icmp_queues(struct rxq_icmp_queues *icmp_queues)
doca_error_t init_doca_device(char *nic_pcie_addr, struct doca_dev **ddev, uint16_t *dpdk_port_id)
doca_error_t create_icmp_queues(struct rxq_icmp_queues *icmp_queues, struct doca_flow_port *df_port, struct doca_gpu *gpu_dev, struct doca_dev *ddev, uint32_t queue_num, struct doca_pe *pe, doca_eth_txq_gpu_event_error_send_packet_cb_t event_error_send_packet_cb, doca_eth_txq_gpu_event_notify_send_packet_cb_t event_notify_send_packet_cb)
doca_error_t kernel_http_server(cudaStream_t stream, uint32_t *exit_cond, struct rxq_tcp_queues *tcp_queues, struct txq_http_queues *http_queues)
doca_error_t disable_tcp_gpu_offload(struct doca_flow_port *port, uint16_t queue_id, struct tcp_session_entry *session_entry)
doca_error_t destroy_udp_queues(struct rxq_udp_queues *udp_queues)
doca_error_t kernel_receive_tcp(cudaStream_t stream, uint32_t *exit_cond, struct rxq_tcp_queues *tcp_queues, bool http_server)
doca_error_t create_tcp_cpu_pipe(struct rxq_tcp_queues *tcp_queues, struct doca_flow_port *port)
doca_error_t create_icmp_gpu_pipe(struct rxq_icmp_queues *icmp_queues, struct doca_flow_port *port)
void error_send_packet_cb(struct doca_eth_txq_gpu_event_error_send_packet *event_error, union doca_data event_user_data)
doca_error_t create_udp_pipe(struct rxq_udp_queues *udp_queues, struct doca_flow_port *port)
doca_error_t create_udp_queues(struct rxq_udp_queues *udp_queues, struct doca_flow_port *df_port, struct doca_gpu *gpu_dev, struct doca_dev *ddev, uint32_t queue_num, uint32_t sem_num)
doca_error_t create_tcp_queues(struct rxq_tcp_queues *tcp_queues, struct doca_flow_port *df_port, struct doca_gpu *gpu_dev, struct doca_dev *ddev, uint32_t queue_num, uint32_t sem_num, bool http_server, struct txq_http_queues *http_queues, struct doca_pe *pe, doca_eth_txq_gpu_event_error_send_packet_cb_t event_error_send_packet_cb)
doca_error_t prepare_tx_buf(struct tx_buf *buf, enum http_page_get page_type)
static struct doca_pe * pe
static struct rxq_icmp_queues icmp_queues
static struct doca_flow_port * df_port
static struct rxq_tcp_queues tcp_queues
static struct rxq_udp_queues udp_queues
static struct doca_gpu * gpu_dev
static struct txq_http_queues http_queues
static struct doca_dev * ddev
#define DOCA_DEVINFO_PCI_ADDR_SIZE
Buffer size to hold PCI BDF format: "XXXX:XX:XX.X". Including a null terminator.
enum doca_error doca_error_t
DOCA API return codes.
void(* doca_eth_txq_gpu_event_error_send_packet_cb_t)(struct doca_eth_txq_gpu_event_error_send_packet *event_error, union doca_data event_user_data)
Function to be executed on send packet error event occurrence.
void(* doca_eth_txq_gpu_event_notify_send_packet_cb_t)(struct doca_eth_txq_gpu_event_notify_send_packet *event_notify, union doca_data event_user_data)
Function to be executed on send packet notify event occurrence.
char nic_pcie_addr[DOCA_DEVINFO_PCI_ADDR_SIZE]
char gpu_pcie_addr[DOCA_DEVINFO_PCI_ADDR_SIZE]
uint8_t eth_src_addr_bytes[ETHER_ADDR_LEN]
uint8_t eth_dst_addr_bytes[ETHER_ADDR_LEN]
struct doca_gpu * gpu_dev
struct doca_flow_port * port
struct doca_mmap * pkt_buff_mmap[MAX_QUEUES]
struct doca_eth_txq * eth_txq_cpu[MAX_QUEUES]
struct doca_flow_pipe * rxq_pipe
void * gpu_pkt_addr[MAX_QUEUES]
int dmabuf_fd[MAX_QUEUES]
struct doca_ctx * eth_txq_ctx[MAX_QUEUES]
struct doca_ctx * eth_rxq_ctx[MAX_QUEUES]
struct doca_gpu_eth_txq * eth_txq_gpu[MAX_QUEUES]
struct doca_gpu_eth_rxq * eth_rxq_gpu[MAX_QUEUES]
struct doca_eth_rxq * eth_rxq_cpu[MAX_QUEUES]
struct doca_flow_pipe_entry * cpu_rss_entry
struct doca_gpu_semaphore * sem_http_cpu[MAX_QUEUES]
void * gpu_pkt_addr[MAX_QUEUES]
struct doca_flow_pipe * rxq_pipe_cpu
struct doca_gpu_eth_rxq * eth_rxq_gpu[MAX_QUEUES]
struct doca_flow_pipe * rxq_pipe_gpu
struct rte_mempool * tcp_ack_pkt_pool
struct doca_gpu_semaphore_gpu * sem_gpu[MAX_QUEUES]
struct doca_flow_port * port
int dmabuf_fd[MAX_QUEUES]
struct doca_gpu * gpu_dev
struct doca_ctx * eth_rxq_ctx[MAX_QUEUES]
struct doca_mmap * pkt_buff_mmap[MAX_QUEUES]
struct doca_eth_rxq * eth_rxq_cpu[MAX_QUEUES]
struct doca_gpu_semaphore * sem_cpu[MAX_QUEUES]
struct doca_gpu_semaphore_gpu * sem_http_gpu[MAX_QUEUES]
struct doca_gpu_semaphore_gpu * sem_gpu[MAX_QUEUES]
struct doca_flow_port * port
struct doca_gpu_eth_rxq * eth_rxq_gpu[MAX_QUEUES]
struct doca_eth_rxq * eth_rxq_cpu[MAX_QUEUES]
struct doca_flow_pipe * root_pipe
struct doca_flow_pipe * rxq_pipe
struct doca_flow_pipe_entry * root_udp_entry
struct doca_gpu_semaphore * sem_cpu[MAX_QUEUES]
struct doca_gpu * gpu_dev
struct doca_mmap * pkt_buff_mmap[MAX_QUEUES]
void * gpu_pkt_addr[MAX_QUEUES]
struct doca_flow_pipe_entry * root_tcp_entry_cpu[3]
struct doca_flow_pipe_entry * root_tcp_entry_gpu
struct doca_ctx * eth_rxq_ctx[MAX_QUEUES]
int dmabuf_fd[MAX_QUEUES]
struct doca_flow_pipe_entry * root_icmp_entry_gpu
struct doca_buf_arr * buf_arr
struct doca_gpu_buf_arr * buf_arr_gpu
struct doca_gpu * gpu_dev
struct tx_buf buf_page_contacts
struct doca_gpu * gpu_dev
struct tx_buf buf_page_not_found
struct doca_eth_txq * eth_txq_cpu[MAX_QUEUES]
struct doca_gpu_eth_txq * eth_txq_gpu[MAX_QUEUES]
struct tx_buf buf_page_index
struct doca_ctx * eth_txq_ctx[MAX_QUEUES]
Convenience type for representing opaque data.