mbuf: fix data room size calculation in pool init
[dpdk.git] / examples / vhost / main.c
index 3220bf6..fc73d1e 100644 (file)
@@ -747,19 +747,6 @@ us_vhost_parse_args(int argc, char **argv)
                                        return -1;
                                } else
                                        zero_copy = ret;
-
-                               if (zero_copy) {
-#ifdef RTE_MBUF_REFCNT
-                                       RTE_LOG(ERR, VHOST_CONFIG, "Before running "
-                                       "zero copy vhost APP, please "
-                                       "disable RTE_MBUF_REFCNT\n"
-                                       "in config file and then rebuild DPDK "
-                                       "core lib!\n"
-                                       "Otherwise please disable zero copy "
-                                       "flag in command line!\n");
-                                       return -1;
-#endif
-                               }
                        }
 
                        /* Specify the descriptor number on RX. */
@@ -1447,7 +1434,7 @@ put_desc_to_used_list_zcp(struct vhost_virtqueue *vq, uint16_t desc_idx)
 
        /* Kick the guest if necessary. */
        if (!(vq->avail->flags & VRING_AVAIL_F_NO_INTERRUPT))
-               eventfd_write((int)vq->kickfd, 1);
+               eventfd_write((int)vq->callfd, 1);
 }
 
 /*
@@ -1640,7 +1627,7 @@ txmbuf_clean_zcp(struct virtio_net *dev, struct vpool *vpool)
 
        /* Kick guest if required. */
        if (!(vq->avail->flags & VRING_AVAIL_F_NO_INTERRUPT))
-               eventfd_write((int)vq->kickfd, 1);
+               eventfd_write((int)vq->callfd, 1);
 
        return 0;
 }
@@ -1788,7 +1775,7 @@ virtio_dev_rx_zcp(struct virtio_net *dev, struct rte_mbuf **pkts,
 
        /* Kick the guest if necessary. */
        if (!(vq->avail->flags & VRING_AVAIL_F_NO_INTERRUPT))
-               eventfd_write((int)vq->kickfd, 1);
+               eventfd_write((int)vq->callfd, 1);
 
        return count;
 }
@@ -2628,9 +2615,10 @@ new_device (struct virtio_net *dev)
 
                }
 
-               vdev->regions_hpa = (struct virtio_memory_regions_hpa *) rte_zmalloc("vhost hpa region",
-                       sizeof(struct virtio_memory_regions_hpa) * vdev->nregions_hpa,
-                       RTE_CACHE_LINE_SIZE);
+               vdev->regions_hpa = rte_calloc("vhost hpa region",
+                                              vdev->nregions_hpa,
+                                              sizeof(struct virtio_memory_regions_hpa),
+                                              RTE_CACHE_LINE_SIZE);
                if (vdev->regions_hpa == NULL) {
                        RTE_LOG(ERR, VHOST_CONFIG, "Cannot allocate memory for hpa region\n");
                        rte_free(vdev);
@@ -2759,8 +2747,7 @@ new_device (struct virtio_net *dev)
                RTE_LOG(INFO, VHOST_DATA, "(%"PRIu64") Failed to add device to data core\n", dev->device_fh);
                vdev->ready = DEVICE_SAFE_REMOVE;
                destroy_device(dev);
-               if (vdev->regions_hpa)
-                       rte_free(vdev->regions_hpa);
+               rte_free(vdev->regions_hpa);
                rte_free(vdev);
                return -1;
        }
@@ -2857,11 +2844,10 @@ static void
 setup_mempool_tbl(int socket, uint32_t index, char *pool_name,
        char *ring_name, uint32_t nb_mbuf)
 {
-       uint16_t roomsize = VIRTIO_DESCRIPTOR_LEN_ZCP + RTE_PKTMBUF_HEADROOM;
        vpool_array[index].pool
                = rte_mempool_create(pool_name, nb_mbuf, MBUF_SIZE_ZCP,
                MBUF_CACHE_SIZE_ZCP, sizeof(struct rte_pktmbuf_pool_private),
-               rte_pktmbuf_pool_init, (void *)(uintptr_t)roomsize,
+               rte_pktmbuf_pool_init, NULL,
                rte_pktmbuf_init, NULL, socket, 0);
        if (vpool_array[index].pool != NULL) {
                vpool_array[index].ring
@@ -2883,7 +2869,7 @@ setup_mempool_tbl(int socket, uint32_t index, char *pool_name,
                }
 
                /* Need consider head room. */
-               vpool_array[index].buf_size = roomsize - RTE_PKTMBUF_HEADROOM;
+               vpool_array[index].buf_size = VIRTIO_DESCRIPTOR_LEN_ZCP;
        } else {
                rte_exit(EXIT_FAILURE, "mempool_create(%s) failed", pool_name);
        }