CLIB_CACHE_LINE_BYTES);
memset ((void *) xd->lockp[q], 0, CLIB_CACHE_LINE_BYTES);
}
- xd->need_txlock = 1;
}
void
clib_mem_free ((void *) xd->lockp[q]);
vec_free (xd->lockp);
xd->lockp = 0;
- xd->need_txlock = 0;
}
static clib_error_t *
/* 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)
}
}
-#if RTE_VERSION < RTE_VERSION_NUM(16, 4, 0, 0)
- /*
- * Older VMXNET3 driver doesn't support jumbo / multi-buffer pkts
- */
- if (xd->pmd == VNET_DPDK_PMD_VMXNET3)
- {
- xd->port_conf.rxmode.max_rx_pkt_len = 1518;
- xd->port_conf.rxmode.jumbo_frame = 0;
- }
-#endif
-
if (xd->pmd == VNET_DPDK_PMD_AF_PACKET)
{
f64 now = vlib_time_now (vm);
clib_warning ("VLAN strip cannot be supported by interface\n");
}
-#if RTE_VERSION < RTE_VERSION_NUM(16, 4, 0, 0)
- /*
- * Older VMXNET3 driver doesn't support jumbo / multi-buffer pkts
- */
- else if (xd->pmd == VNET_DPDK_PMD_VMXNET3)
- hi->max_packet_bytes = 1518;
-#endif
-
hi->max_l3_packet_bytes[VLIB_RX] = hi->max_l3_packet_bytes[VLIB_TX] =
xd->port_conf.rxmode.max_rx_pkt_len - sizeof (ethernet_header_t);
clib_warning ("%d mbufs allocated but total rx/tx ring size is %d\n",
dm->conf->num_mbufs, nb_desc);
- /* init next vhost-user if index */
- dm->next_vu_if_id = 0;
-
return 0;
}
if (!input)
return 0;
+ unformat_skip_white_space (input);
while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
{
if (unformat (input, "num-rx-queues %u", &devconf->num_rx_queues))
conf->device_config_index_by_pci_addr = hash_create (0, sizeof (uword));
- // MATT-FIXME: inverted virtio-vhost logic to use virtio by default
- conf->use_virtio_vhost = 1;
-
while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
{
/* Prime the pump */
;
else if (unformat (input, "socket-mem %s", &socket_mem))
;
- else
- if (unformat
- (input, "vhost-user-coalesce-frames %d",
- &conf->vhost_coalesce_frames))
- ;
- else
- if (unformat
- (input, "vhost-user-coalesce-time %f",
- &conf->vhost_coalesce_time))
- ;
- else if (unformat (input, "enable-vhost-user"))
- conf->use_virtio_vhost = 0;
else if (unformat (input, "no-pci"))
{
no_pci = 1;
break;
}
}
-#if RTE_VERSION >= RTE_VERSION_NUM(16, 4, 0, 0)
if (hw_flags_chg || (xd->link.link_speed != prev_link.link_speed))
{
hw_flags_chg = 1;
break;
}
}
-#else
- if (hw_flags_chg || (xd->link.link_speed != prev_link.link_speed))
- {
- hw_flags_chg = 1;
- switch (xd->link.link_speed)
- {
- case ETH_LINK_SPEED_10:
- hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_10M;
- break;
- case ETH_LINK_SPEED_100:
- hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_100M;
- break;
- case ETH_LINK_SPEED_1000:
- hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_1G;
- break;
- case ETH_LINK_SPEED_10000:
- hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_10G;
- break;
- case ETH_LINK_SPEED_40G:
- hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_40G;
- break;
- case 0:
- break;
- default:
- clib_warning ("unknown link speed %d", xd->link.link_speed);
- break;
- }
- }
-#endif
if (hw_flags_chg)
{
if (LINK_STATE_ELOGS)
ethernet_main_t *em = ðernet_main;
dpdk_device_t *xd;
vlib_thread_main_t *tm = vlib_get_thread_main ();
-#if DPDK_VHOST_USER
- void *vu_state;
-#endif
int i;
error = dpdk_lib_init (dm);
if (error)
clib_error_report (error);
-#if DPDK_VHOST_USER
- dpdk_vhost_user_process_init (&vu_state);
-#endif
-
tm->worker_thread_release = 1;
f64 now = vlib_time_now (vm);
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)
{
if ((now - xd->time_last_link_update) >= dm->link_state_poll_interval)
dpdk_update_link_state (xd, now);
-#if DPDK_VHOST_USER
- if (xd->flags & DPDK_DEVICE_FLAG_VHOST_USER)
- if (dpdk_vhost_user_process_if (vm, xd, vu_state) != 0)
- continue;
-#endif
}
}
-#if DPDK_VHOST_USER
- dpdk_vhost_user_process_cleanup (vu_state);
-#endif
-
return 0;
}
vlib_thread_main_t *tm = vlib_get_thread_main ();
/* verify that structs are cacheline aligned */
- ASSERT (offsetof (dpdk_device_t, cacheline0) == 0);
- ASSERT (offsetof (dpdk_device_t, cacheline1) == CLIB_CACHE_LINE_BYTES);
- ASSERT (offsetof (dpdk_worker_t, cacheline0) == 0);
- ASSERT (offsetof (frame_queue_trace_t, cacheline0) == 0);
+ STATIC_ASSERT (offsetof (dpdk_device_t, cacheline0) == 0,
+ "Cache line marker must be 1st element in dpdk_device_t");
+ 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");
dm->vlib_main = vm;
dm->vnet_main = vnet_get_main ();
dm->efd.consec_full_frames_hi_thresh =
DPDK_EFD_DEFAULT_CONSEC_FULL_FRAMES_HI_THRESH;
- /* vhost-user coalescence frames defaults */
- dm->conf->vhost_coalesce_frames = 32;
- dm->conf->vhost_coalesce_time = 1e-3;
-
/* Default vlib_buffer_t flags, DISABLES tcp/udp checksumming... */
dm->buffer_flags_template =
(VLIB_BUFFER_TOTAL_LENGTH_VALID