#include <rte_mempool.h>
#include <rte_mbuf.h>
#include <rte_version.h>
-#include <rte_eth_bond.h>
#include <rte_sched.h>
#include <rte_net.h>
#include <rte_bus_pci.h>
#include <rte_flow.h>
-#include <vnet/unix/pcap.h>
#include <vnet/devices/devices.h>
#if CLIB_DEBUG > 0
#include <vlib/pci/pci.h>
#include <vnet/flow/flow.h>
-#define NB_MBUF (16<<10)
-
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;
_ ("net_ixgbe_vf", IXGBEVF) \
_ ("net_i40e", I40E) \
_ ("net_i40e_vf", I40EVF) \
+ _ ("net_ice", ICE) \
_ ("net_virtio", VIRTIO) \
_ ("net_enic", ENIC) \
_ ("net_vmxnet3", VMXNET3) \
_ ("AF_PACKET PMD", AF_PACKET) \
- _ ("net_bonding", BOND) \
_ ("net_fm10k", FM10K) \
_ ("net_cxgbe", CXGBE) \
_ ("net_mlx4", MLX4) \
VNET_DPDK_PORT_TYPE_ETH_50G,
VNET_DPDK_PORT_TYPE_ETH_56G,
VNET_DPDK_PORT_TYPE_ETH_100G,
- VNET_DPDK_PORT_TYPE_ETH_BOND,
VNET_DPDK_PORT_TYPE_ETH_SWITCH,
VNET_DPDK_PORT_TYPE_AF_PACKET,
VNET_DPDK_PORT_TYPE_ETH_VF,
_( 4, MAYBE_MULTISEG, "maybe-multiseg") \
_( 5, HAVE_SUBIF, "subif") \
_( 6, HQOS, "hqos") \
- _( 7, BOND_SLAVE, "bond-slave") \
- _( 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 */
dpdk_device_hqos_per_worker_thread_t *hqos_wt;
dpdk_device_hqos_per_hqos_thread_t *hqos_ht;
- /* af_packet or BondEthernet instance number */
+ /* af_packet instance number */
u16 af_packet_instance_num;
- u16 bond_instance_num;
-
- /* Bonded interface port# of a slave -
- only valid if DPDK_DEVICE_FLAG_BOND_SLAVE bit is set */
- dpdk_portid_t bond_port;
struct rte_eth_link link;
f64 time_last_link_update;
struct rte_eth_stats stats;
struct rte_eth_stats last_stats;
- struct rte_eth_stats last_cleared_stats;
struct rte_eth_xstat *xstats;
- struct rte_eth_xstat *last_cleared_xstats;
f64 time_last_stats_update;
dpdk_port_type_t port_type;
int dpdk_hqos_validate_mask (u64 mask, u32 n);
void dpdk_device_config_hqos_pipe_profile_default (dpdk_device_config_hqos_t *
hqos, u32 pipe_profile_id);
+#if 0
void dpdk_device_config_hqos_default (dpdk_device_config_hqos_t * hqos);
+#endif
clib_error_t *dpdk_port_setup_hqos (dpdk_device_t * xd,
dpdk_device_config_hqos_t * hqos);
void dpdk_hqos_metadata_set (dpdk_device_hqos_per_worker_thread_t * hqos,
typedef struct
{
vlib_pci_addr_t pci_addr;
+ u8 *name;
u8 is_blacklisted;
u8 vlan_strip_offload;
#define DPDK_DEVICE_VLAN_STRIP_DEFAULT 0
clib_bitmap_t * workers;
u32 hqos_enabled;
dpdk_device_config_hqos_t hqos;
+ u8 tso;
+#define DPDK_DEVICE_TSO_DEFAULT 0
+#define DPDK_DEVICE_TSO_OFF 1
+#define DPDK_DEVICE_TSO_ON 2
} dpdk_device_config_t;
typedef struct
u8 nchannels_set_manually;
u32 coremask;
u32 nchannels;
- u32 num_mbufs;
+ u32 num_crypto_mbufs;
/*
* format interface names ala xxxEthernet%d/%d/%d instead of
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;
u32 buffers[DPDK_RX_BURST_SZ];
u16 next[DPDK_RX_BURST_SZ];
u16 etype[DPDK_RX_BURST_SZ];
- u8 flags[DPDK_RX_BURST_SZ];
+ u16 flags[DPDK_RX_BURST_SZ];
vlib_buffer_t buffer_template;
} dpdk_per_thread_data_t;
-typedef struct
-{
- int pcap_enable;
- u32 pcap_sw_if_index;
- pcap_main_t pcap_main;
-} dpdk_pcap_t;
-
typedef struct
{
/* buffer flags template, configurable to enable/disable tcp / udp cksum */
u32 buffer_flags_template;
- /* pcap tracing */
- dpdk_pcap_t pcap[VLIB_N_RX_TX];
-
- int pcap_enable;
- pcap_main_t pcap_main;
- u8 *pcap_filename;
- u32 pcap_sw_if_index;
- u32 pcap_pkts_to_capture;
-
/*
* flag indicating that a posted admin up/down
* (via post_sw_interface_set_flags) is in progress
vnet_main_t *vnet_main;
dpdk_config_main_t *conf;
- /* mempool */
- struct rte_mempool **pktmbuf_pools;
-
/* API message ID base */
u16 msg_id_base;
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_rss_fn (unformat_input_t * input, uword * rss_fn);
clib_error_t *unformat_hqos (unformat_input_t * input,
dpdk_device_config_hqos_t * hqos);
-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, 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);
+void dpdk_cli_reference (void);
#if CLI_DEBUG
int dpdk_buffer_validate_trajectory_all (u32 * uninitialized);