NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
dpdk_utils.c File Reference
#include <rte_ethdev.h>
#include <rte_ether.h>
#include <rte_malloc.h>
#include <doca_log.h>
#include <doca_mmap.h>
#include <doca_buf_inventory.h>
#include "dpdk_utils.h"
Include dependency graph for dpdk_utils.c:

Go to the source code of this file.

Data Structures

struct  dpdk_mempool_shadow
 

Macros

#define RSS_KEY_LEN   40
 
#define IPv6_BYTES_FMT
 
#define IPv6_BYTES(addr)
 

Functions

 DOCA_LOG_REGISTER (NUTILS)
 
static doca_error_t bind_hairpin_queues (uint16_t port_id)
 
static doca_error_t unbind_hairpin_queues (uint16_t port_id)
 
static doca_error_t setup_hairpin_queues (uint16_t port_id, uint16_t peer_port_id, uint16_t *reserved_hairpin_q_list, int hairpin_queue_len)
 
static void disable_hairpin_queues (uint16_t nb_ports)
 
static doca_error_t enable_hairpin_queues (uint8_t nb_ports)
 
static doca_error_t allocate_mempool (const uint32_t total_nb_mbufs, const uint32_t mbuf_size, struct rte_mempool **mbuf_pool)
 
static doca_error_t port_init (struct rte_mempool *mbuf_pool, uint8_t port, struct application_dpdk_config *app_config)
 
static void dpdk_ports_fini (struct application_dpdk_config *app_dpdk_config, uint16_t nb_ports)
 
static doca_error_t dpdk_ports_init (struct application_dpdk_config *app_config)
 
doca_error_t dpdk_queues_and_ports_init (struct application_dpdk_config *app_dpdk_config)
 
void dpdk_queues_and_ports_fini (struct application_dpdk_config *app_dpdk_config)
 
static void print_ether_addr (const struct rte_ether_addr *dmac, const struct rte_ether_addr *smac, const uint32_t ethertype)
 
static void print_l2_header (const struct rte_mbuf *packet)
 
static void print_ipv4_addr (const rte_be32_t dip, const rte_be32_t sip, const char *packet_type)
 
static void print_ipv6_addr (const uint8_t dst_addr[16], const uint8_t src_addr[16], const char *packet_type)
 
static void print_l3_header (const struct rte_mbuf *packet)
 
static void print_l4_header (const struct rte_mbuf *packet)
 
static void dpdk_chunk_to_mmap_cb (struct rte_mempool *mp, void *opaque, struct rte_mempool_memhdr *memhdr, unsigned int mem_idx)
 
struct dpdk_mempool_shadowdpdk_mempool_shadow_create (struct rte_mempool *mbuf_pool, struct doca_dev *device)
 
static doca_error_t dpdk_ext_chunk_to_mmap (struct dpdk_mempool_shadow *mempool_shadow, void *chunk, size_t len)
 
struct dpdk_mempool_shadowdpdk_mempool_shadow_create_extbuf (const struct rte_pktmbuf_extmem **ext_mem, uint32_t ext_num, struct doca_dev *device)
 
void dpdk_mempool_shadow_destroy (struct dpdk_mempool_shadow *mempool_shadow)
 
doca_error_t dpdk_mempool_shadow_find_buf_by_data (struct dpdk_mempool_shadow *mempool_shadow, struct doca_buf_inventory *inventory, uintptr_t mem_range_start, size_t mem_range_size, struct doca_buf **out_buf)
 
void print_header_info (const struct rte_mbuf *packet, const bool l2, const bool l3, const bool l4)
 
doca_error_t dpdk_init (int argc, char **argv)
 
void dpdk_fini (void)
 

Macro Definition Documentation

◆ IPv6_BYTES

#define IPv6_BYTES (   addr)
Value:
addr[0], addr[1], addr[2], addr[3], addr[4], addr[5], addr[6], addr[7], addr[8], addr[9], addr[10], addr[11], \
addr[12], addr[13], addr[14], addr[15]
uintptr_t addr

Definition at line 44 of file dpdk_utils.c.

◆ IPv6_BYTES_FMT

#define IPv6_BYTES_FMT
Value:
"%02x%02x:%02x%02x:%02x%02x:%02x%02x:" \
"%02x%02x:%02x%02x:%02x%02x:%02x%02x"

Definition at line 41 of file dpdk_utils.c.

◆ RSS_KEY_LEN

#define RSS_KEY_LEN   40

Definition at line 38 of file dpdk_utils.c.

Function Documentation

◆ allocate_mempool()

static doca_error_t allocate_mempool ( const uint32_t  total_nb_mbufs,
const uint32_t  mbuf_size,
struct rte_mempool **  mbuf_pool 
)
static

Definition at line 251 of file dpdk_utils.c.

◆ bind_hairpin_queues()

static doca_error_t bind_hairpin_queues ( uint16_t  port_id)
static

Definition at line 61 of file dpdk_utils.c.

◆ disable_hairpin_queues()

static void disable_hairpin_queues ( uint16_t  nb_ports)
static

Definition at line 201 of file dpdk_utils.c.

◆ DOCA_LOG_REGISTER()

DOCA_LOG_REGISTER ( NUTILS  )

◆ dpdk_chunk_to_mmap_cb()

static void dpdk_chunk_to_mmap_cb ( struct rte_mempool *  mp,
void *  opaque,
struct rte_mempool_memhdr *  memhdr,
unsigned int  mem_idx 
)
static

Definition at line 707 of file dpdk_utils.c.

◆ dpdk_ext_chunk_to_mmap()

static doca_error_t dpdk_ext_chunk_to_mmap ( struct dpdk_mempool_shadow mempool_shadow,
void *  chunk,
size_t  len 
)
static

Definition at line 787 of file dpdk_utils.c.

◆ dpdk_fini()

void dpdk_fini ( void  )

Definition at line 919 of file dpdk_utils.c.

◆ dpdk_init()

doca_error_t dpdk_init ( int  argc,
char **  argv 
)

Definition at line 907 of file dpdk_utils.c.

◆ dpdk_mempool_shadow_create()

struct dpdk_mempool_shadow* dpdk_mempool_shadow_create ( struct rte_mempool *  mbuf_pool,
struct doca_dev *  device 
)

Definition at line 749 of file dpdk_utils.c.

◆ dpdk_mempool_shadow_create_extbuf()

struct dpdk_mempool_shadow* dpdk_mempool_shadow_create_extbuf ( const struct rte_pktmbuf_extmem **  ext_mem,
uint32_t  ext_num,
struct doca_dev *  device 
)

Definition at line 824 of file dpdk_utils.c.

◆ dpdk_mempool_shadow_destroy()

void dpdk_mempool_shadow_destroy ( struct dpdk_mempool_shadow mempool_shadow)

Definition at line 857 of file dpdk_utils.c.

◆ dpdk_mempool_shadow_find_buf_by_data()

doca_error_t dpdk_mempool_shadow_find_buf_by_data ( struct dpdk_mempool_shadow mempool_shadow,
struct doca_buf_inventory *  inventory,
uintptr_t  mem_range_start,
size_t  mem_range_size,
struct doca_buf **  out_buf 
)

Definition at line 869 of file dpdk_utils.c.

◆ dpdk_ports_fini()

static void dpdk_ports_fini ( struct application_dpdk_config app_dpdk_config,
uint16_t  nb_ports 
)
static

Definition at line 444 of file dpdk_utils.c.

◆ dpdk_ports_init()

static doca_error_t dpdk_ports_init ( struct application_dpdk_config app_config)
static

Definition at line 472 of file dpdk_utils.c.

◆ dpdk_queues_and_ports_fini()

void dpdk_queues_and_ports_fini ( struct application_dpdk_config app_dpdk_config)

Definition at line 564 of file dpdk_utils.c.

◆ dpdk_queues_and_ports_init()

doca_error_t dpdk_queues_and_ports_init ( struct application_dpdk_config app_dpdk_config)

Definition at line 515 of file dpdk_utils.c.

◆ enable_hairpin_queues()

static doca_error_t enable_hairpin_queues ( uint8_t  nb_ports)
static

Definition at line 221 of file dpdk_utils.c.

◆ port_init()

static doca_error_t port_init ( struct rte_mempool *  mbuf_pool,
uint8_t  port,
struct application_dpdk_config app_config 
)
static

Definition at line 272 of file dpdk_utils.c.

◆ print_ether_addr()

static void print_ether_addr ( const struct rte_ether_addr *  dmac,
const struct rte_ether_addr *  smac,
const uint32_t  ethertype 
)
static

Definition at line 578 of file dpdk_utils.c.

◆ print_header_info()

void print_header_info ( const struct rte_mbuf *  packet,
const bool  l2,
const bool  l3,
const bool  l4 
)

Definition at line 897 of file dpdk_utils.c.

◆ print_ipv4_addr()

static void print_ipv4_addr ( const rte_be32_t  dip,
const rte_be32_t  sip,
const char *  packet_type 
)
static

Definition at line 609 of file dpdk_utils.c.

◆ print_ipv6_addr()

static void print_ipv6_addr ( const uint8_t  dst_addr[16],
const uint8_t  src_addr[16],
const char *  packet_type 
)
static

Definition at line 630 of file dpdk_utils.c.

◆ print_l2_header()

static void print_l2_header ( const struct rte_mbuf *  packet)
static

Definition at line 595 of file dpdk_utils.c.

◆ print_l3_header()

static void print_l3_header ( const struct rte_mbuf *  packet)
static

Definition at line 643 of file dpdk_utils.c.

◆ print_l4_header()

static void print_l4_header ( const struct rte_mbuf *  packet)
static

Definition at line 665 of file dpdk_utils.c.

◆ setup_hairpin_queues()

static doca_error_t setup_hairpin_queues ( uint16_t  port_id,
uint16_t  peer_port_id,
uint16_t *  reserved_hairpin_q_list,
int  hairpin_queue_len 
)
static

Definition at line 148 of file dpdk_utils.c.

◆ unbind_hairpin_queues()

static doca_error_t unbind_hairpin_queues ( uint16_t  port_id)
static

Definition at line 103 of file dpdk_utils.c.