#include <rte_bus_pci.h>
#include <rte_flow.h>
-#include <vnet/unix/pcap.h>
+#include <vppinfra/pcap.h>
#include <vnet/devices/devices.h>
#if CLIB_DEBUG > 0
extern vnet_device_class_t dpdk_device_class;
extern vlib_node_registration_t dpdk_input_node;
+extern vlib_node_registration_t admin_up_down_process_node;
#define foreach_dpdk_pmd \
_ ("net_thunderx", THUNDERX) \
_ ("net_vhost", VHOST_ETHER) \
_ ("net_ena", ENA) \
_ ("net_failsafe", FAILSAFE) \
- _ ("net_liovf", LIOVF_ETHER)
+ _ ("net_liovf", LIOVF_ETHER) \
+ _ ("net_qede", QEDE) \
+ _ ("net_netvsc", NETVSC)
typedef enum
{
VNET_DPDK_PORT_TYPE_VIRTIO_USER,
VNET_DPDK_PORT_TYPE_VHOST_ETHER,
VNET_DPDK_PORT_TYPE_FAILSAFE,
+ VNET_DPDK_PORT_TYPE_NETVSC,
VNET_DPDK_PORT_TYPE_UNKNOWN,
} dpdk_port_type_t;
_( 8, BOND_SLAVE_UP, "bond-slave-up") \
_( 9, TX_OFFLOAD, "tx-offload") \
_(10, INTEL_PHDR_CKSUM, "intel-phdr-cksum") \
- _(11, RX_FLOW_OFFLOAD, "rx-flow-offload")
+ _(11, RX_FLOW_OFFLOAD, "rx-flow-offload") \
+ _(12, RX_IP4_CKSUM, "rx-ip4-cksum")
enum
{
u16 nb_tx_desc;
CLIB_CACHE_LINE_ALIGN_MARK (cacheline1);
+ u8 *name;
u8 *interface_name_suffix;
/* number of sub-interfaces */
typedef struct
{
vlib_pci_addr_t pci_addr;
+ u8 *name;
u8 is_blacklisted;
u8 vlan_strip_offload;
#define DPDK_DEVICE_VLAN_STRIP_DEFAULT 0
dpdk_device_config_t *dev_confs;
uword *device_config_index_by_pci_addr;
+ /* devices blacklist by pci vendor_id, device_id */
+ u32 *blacklist_by_pci_vendor_and_device;
+
} dpdk_config_main_t;
extern dpdk_config_main_t dpdk_config_main;
typedef struct
{
int pcap_enable;
- pcap_main_t pcap_main;
- u8 *pcap_filename;
u32 pcap_sw_if_index;
- u32 pcap_pkts_to_capture;
+ pcap_main_t pcap_main;
} dpdk_pcap_t;
typedef struct
dpdk_device_and_queue_t **devices_by_hqos_cpu;
dpdk_per_thread_data_t *per_thread_data;
- /* per-thread recycle lists */
- u32 **recycle;
-
/* buffer flags template, configurable to enable/disable tcp / udp cksum */
u32 buffer_flags_template;
f64 link_state_poll_interval;
f64 stat_poll_interval;
- /* Sleep for this many usec after each device poll */
- u32 poll_sleep_usec;
-
/* convenience */
vlib_main_t *vlib_main;
vnet_main_t *vnet_main;
format_function_t format_dpdk_rte_mbuf;
format_function_t format_dpdk_rx_rte_mbuf;
format_function_t format_dpdk_flow;
+format_function_t format_dpdk_rss_hf_name;
+format_function_t format_dpdk_rx_offload_caps;
+format_function_t format_dpdk_tx_offload_caps;
unformat_function_t unformat_dpdk_log_level;
vnet_flow_dev_ops_function_t dpdk_flow_ops_fn;
clib_error_t *unformat_hqos (unformat_input_t * input,
dpdk_device_config_hqos_t * hqos);
-uword
-admin_up_down_process (vlib_main_t * vm,
- vlib_node_runtime_t * rt, vlib_frame_t * f);
-
clib_error_t *dpdk_pool_create (vlib_main_t * vm, u8 * pool_name,
u32 elt_size, u32 num_elts,
u32 pool_priv_size, u16 cache_size, u8 numa,
- struct rte_mempool **_mp,
- vlib_physmem_region_index_t * pri);
+ struct rte_mempool **_mp, u32 * map_index);
clib_error_t *dpdk_buffer_pool_create (vlib_main_t * vm, unsigned num_mbufs,
unsigned socket_id);
+struct rte_pci_device *dpdk_get_pci_device (const struct rte_eth_dev_info
+ *info);
+
#if CLI_DEBUG
int dpdk_buffer_validate_trajectory_all (u32 * uninitialized);
void dpdk_buffer_poison_trajectory_all (void);