X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fdpdk%2Fdevice%2Fdpdk.h;h=0e5851dcbc6df9aacd75b8a5386a0ed4f786eb18;hb=3ae2873e568dd441a22903ab9f8c7954835b0bf1;hp=86cc67057215ec8810da16d239d5598e17210c85;hpb=ed256991f326ce91dd12f6584baf81b2aa5aae4a;p=vpp.git diff --git a/src/plugins/dpdk/device/dpdk.h b/src/plugins/dpdk/device/dpdk.h index 86cc6705721..0e5851dcbc6 100644 --- a/src/plugins/dpdk/device/dpdk.h +++ b/src/plugins/dpdk/device/dpdk.h @@ -18,6 +18,8 @@ /* $$$$ We should rename always_inline -> clib_always_inline */ #undef always_inline +#define ALLOW_EXPERIMENTAL_API + #include #include @@ -42,7 +44,7 @@ #include #include -#include +#include #include #if CLIB_DEBUG > 0 @@ -58,6 +60,7 @@ 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) \ @@ -82,7 +85,9 @@ extern vlib_node_registration_t dpdk_input_node; _ ("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 { @@ -112,6 +117,7 @@ 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; @@ -163,7 +169,8 @@ typedef struct _( 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 { @@ -191,9 +198,12 @@ typedef struct CLIB_CACHE_LINE_ALIGN_MARK (cacheline0); volatile u32 **lockp; - /* Instance ID */ + /* Instance ID to access internal device array. */ dpdk_portid_t device_index; + /* DPDK device port number */ + dpdk_portid_t port_id; + u32 hw_if_index; u32 sw_if_index; @@ -225,7 +235,9 @@ typedef struct /* flow related */ u32 supported_flow_actions; dpdk_flow_entry_t *flow_entries; /* pool */ - dpdk_flow_lookup_entry_t *flow_lookup_entries; /* vector */ + dpdk_flow_lookup_entry_t *flow_lookup_entries; /* pool */ + u32 *parked_lookup_indexes; /* vector */ + u32 parked_loop_count; struct rte_flow_error last_flow_error; /* HQoS related */ @@ -383,10 +395,8 @@ typedef struct 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 @@ -397,9 +407,6 @@ 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; @@ -426,9 +433,6 @@ typedef struct 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; @@ -511,6 +515,9 @@ format_function_t format_dpdk_rx_trace; 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; @@ -518,19 +525,17 @@ 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); -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);