clib_error_t *
dpdk_port_setup (dpdk_main_t * dm, dpdk_device_t * xd)
{
- vlib_main_t *vm = vlib_get_main ();
- vlib_buffer_main_t *bm = vm->buffer_main;
int rv;
int j;
rv = rte_eth_rx_queue_setup (xd->device_index, j, xd->nb_rx_desc,
xd->cpu_socket, 0,
- bm->
+ dm->
pktmbuf_pools[xd->cpu_socket_id_by_queue
[j]]);
if (rv < 0)
rv = rte_eth_rx_queue_setup (xd->device_index, j, xd->nb_rx_desc,
SOCKET_ID_ANY, 0,
- bm->
+ dm->
pktmbuf_pools[xd->cpu_socket_id_by_queue
[j]]);
if (rv < 0)
{
int rv;
rv = rte_eth_dev_start (xd->device_index);
+ if (!rv && xd->default_mac_address)
+ rv = rte_eth_dev_default_mac_addr_set (xd->device_index,
+ (struct ether_addr *)
+ xd->default_mac_address);
if (rv < 0)
clib_warning ("rte_eth_dev_start %d returned %d",
xd->device_index, rv);
if (xd->flags & DPDK_DEVICE_FLAG_ADMIN_UP)
{
int rv = rte_eth_dev_start (xd->device_index);
+ if (!rv && xd->default_mac_address)
+ rv = rte_eth_dev_default_mac_addr_set (xd->device_index,
+ (struct ether_addr *)
+ xd->default_mac_address);
if (rv < 0)
clib_warning ("rte_eth_dev_start %d returned %d",
xd->device_index, rv);
vec_validate_aligned (dm->devices_by_cpu, tm->n_vlib_mains - 1,
CLIB_CACHE_LINE_BYTES);
- vec_validate_aligned (dm->workers, tm->n_vlib_mains - 1,
- CLIB_CACHE_LINE_BYTES);
-
dm->hqos_cpu_first_index = 0;
dm->hqos_cpu_count = 0;
vec_validate_aligned (dm->devices_by_hqos_cpu, tm->n_vlib_mains - 1,
CLIB_CACHE_LINE_BYTES);
- vec_validate_aligned (dm->hqos_threads, tm->n_vlib_mains - 1,
- CLIB_CACHE_LINE_BYTES);
-
nports = rte_eth_dev_count ();
if (nports < 1)
{
/* workaround for drivers not setting driver_name */
if ((!dev_info.driver_name) && (dev_info.pci_dev))
-#if RTE_VERSION < RTE_VERSION_NUM(16, 11, 0, 0)
- dev_info.driver_name = dev_info.pci_dev->driver->name;
-#else
dev_info.driver_name = dev_info.pci_dev->driver->driver.name;
-#endif
+
ASSERT (dev_info.driver_name);
if (!xd->pmd)
vec_reset_length (pci_addr);
pci_addr = format (pci_addr, "%U%c", format_vlib_pci_addr, &d->bus_address, 0);
- if (d->device_class != PCI_CLASS_NETWORK_ETHERNET)
+ if (d->device_class != PCI_CLASS_NETWORK_ETHERNET && d->device_class != PCI_CLASS_PROCESSOR_CO)
continue;
if (num_whitelisted)
else if (unformat (input, "no-multi-seg"))
conf->no_multi_seg = 1;
+ else if (unformat (input, "enable-cryptodev"))
+ conf->cryptodev = 1;
+
else if (unformat (input, "dev default %U", unformat_vlib_cli_sub_input,
&sub_input))
{
}
if (!conf->uio_driver_name)
- conf->uio_driver_name = format (0, "igb_uio%c", 0);
+ conf->uio_driver_name = format (0, "uio_pci_generic%c", 0);
/*
* Use 1G huge pages if available.
struct rte_eth_dev_info dev_info;
rte_eth_dev_info_get (i, &dev_info);
if (!dev_info.driver_name)
-#if RTE_VERSION < RTE_VERSION_NUM(16, 11, 0, 0)
- dev_info.driver_name = dev_info.pci_dev->driver->name;
-#else
dev_info.driver_name = dev_info.pci_dev->driver->driver.name;
-#endif
+
ASSERT (dev_info.driver_name);
if (strncmp (dev_info.driver_name, "rte_bond_pmd", 12) == 0)
{
STATIC_ASSERT (offsetof (dpdk_device_t, cacheline1) ==
CLIB_CACHE_LINE_BYTES,
"Data in cache line 0 is bigger than cache line size");
- STATIC_ASSERT (offsetof (dpdk_worker_t, cacheline0) == 0,
- "Cache line marker must be 1st element in dpdk_worker_t");
STATIC_ASSERT (offsetof (frame_queue_trace_t, cacheline0) == 0,
"Cache line marker must be 1st element in frame_queue_trace_t");
/* Default vlib_buffer_t flags, DISABLES tcp/udp checksumming... */
dm->buffer_flags_template =
- (VLIB_BUFFER_TOTAL_LENGTH_VALID | VNET_BUFFER_RTE_MBUF_VALID
+ (VLIB_BUFFER_TOTAL_LENGTH_VALID | VLIB_BUFFER_EXT_HDR_VALID
| IP_BUFFER_L4_CHECKSUM_COMPUTED | IP_BUFFER_L4_CHECKSUM_CORRECT);
dm->stat_poll_interval = DPDK_STATS_POLL_INTERVAL;