clib_error_t * error;
dpdk_device_and_queue_t * dq;
int num_qpairs = 1;
+ dpdk_vu_intf_t *vui = NULL;
#if RTE_VERSION >= RTE_VERSION_NUM(2, 2, 0, 0)
num_qpairs = dm->use_rss < 1 ? 1 : tm->n_vlib_mains;
xd->vu_if_id = if_id;
// reset virtqueues
+ vui = xd->vu_intf;
for (j = 0; j < num_qpairs * VIRTIO_QNUM; j++) {
memset(xd->vu_vhost_dev.virtqueue[j], 0, sizeof(struct vhost_virtqueue));
xd->vu_vhost_dev.virtqueue[j]->kickfd = -1;
xd->vu_vhost_dev.virtqueue[j]->callfd = -1;
xd->vu_vhost_dev.virtqueue[j]->backend = -1;
+ vui->vrings[j].packets = 0;
+ vui->vrings[j].bytes = 0;
}
// reset lockp
xd->device_index = xd - dm->devices;
xd->per_interface_next_index = ~0;
- xd->vu_intf = NULL;
+ xd->vu_intf = clib_mem_alloc (sizeof(*(xd->vu_intf)));
xd->vu_vhost_dev.mem = clib_mem_alloc (sizeof(struct virtio_memory) +
VHOST_MEMORY_MAX_NREGIONS *
* New virtqueue structure is an array of VHOST_MAX_QUEUE_PAIRS * 2
* We need to allocate numq pairs.
*/
+ vui = xd->vu_intf;
for (j = 0; j < num_qpairs * VIRTIO_QNUM; j++) {
xd->vu_vhost_dev.virtqueue[j] = clib_mem_alloc (sizeof(struct vhost_virtqueue));
memset(xd->vu_vhost_dev.virtqueue[j], 0, sizeof(struct vhost_virtqueue));
xd->vu_vhost_dev.virtqueue[j]->kickfd = -1;
xd->vu_vhost_dev.virtqueue[j]->callfd = -1;
xd->vu_vhost_dev.virtqueue[j]->backend = -1;
+ vui->vrings[j].packets = 0;
+ vui->vrings[j].bytes = 0;
}
dpdk_device_lock_init(xd);
sw = vnet_get_hw_sw_interface (dm->vnet_main, xd->vlib_hw_if_index);
xd->vlib_sw_if_index = sw->sw_if_index;
- if (!xd->vu_intf)
- xd->vu_intf = clib_mem_alloc (sizeof(*(xd->vu_intf)));
-
*hw_if_index = xd->vlib_hw_if_index;
DBG_SOCK("xd->device_index: %d, dm->input_cpu_count: %d, "
mem->regions[i].userspace_address = vum->regions[i].userspace_addr;
mapped_size = mem->regions[i].memory_size + vum->regions[i].mmap_offset;
- mapped_address = (uint64_t)(uintptr_t)mmap(NULL, mapped_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd[i], 0);
+ mapped_address = pointer_to_uword(mmap(NULL, mapped_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd[i], 0));
- if ((void *)mapped_address == MAP_FAILED)
+ if (uword_to_pointer(mapped_address, void*) == MAP_FAILED)
{
clib_warning("mmap error");
return 0;