From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 642951094 for ; Thu, 23 Mar 2017 08:13:13 +0100 (CET) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga105.fm.intel.com with ESMTP; 23 Mar 2017 00:13:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.36,208,1486454400"; d="scan'208";a="837675364" Received: from yliu-dev.sh.intel.com ([10.239.67.162]) by FMSMGA003.fm.intel.com with ESMTP; 23 Mar 2017 00:13:12 -0700 From: Yuanhan Liu To: dev@dpdk.org Cc: Maxime Coquelin , Harris James R , Liu Changpeng , Yuanhan Liu Date: Thu, 23 Mar 2017 15:10:47 +0800 Message-Id: <1490253059-28112-11-git-send-email-yuanhan.liu@linux.intel.com> X-Mailer: git-send-email 1.9.0 In-Reply-To: <1490253059-28112-1-git-send-email-yuanhan.liu@linux.intel.com> References: <1488534682-3494-1-git-send-email-yuanhan.liu@linux.intel.com> <1490253059-28112-1-git-send-email-yuanhan.liu@linux.intel.com> Subject: [dpdk-dev] [PATCH v2 10/22] vhost: export the number of vrings X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Mar 2017 07:13:13 -0000 We used to use rte_vhost_get_queue_num() for telling how many vrings. However, the return value is the number of "queue pairs", which is very virtio-net specific. To make it generic, we should return the number of vrings instead, and let the driver do the proper translation. Say, virtio-net driver could turn it to the number of queue pairs by dividing 2. Meanwhile, mark rte_vhost_get_queue_num as deprecated. Signed-off-by: Yuanhan Liu Reviewed-by: Maxime Coquelin --- v2: - update release note --- doc/guides/rel_notes/release_17_05.rst | 3 +++ drivers/net/vhost/rte_eth_vhost.c | 2 +- lib/librte_vhost/rte_vhost_version.map | 1 + lib/librte_vhost/rte_virtio_net.h | 17 +++++++++++++++++ lib/librte_vhost/vhost.c | 11 +++++++++++ 5 files changed, 33 insertions(+), 1 deletion(-) diff --git a/doc/guides/rel_notes/release_17_05.rst b/doc/guides/rel_notes/release_17_05.rst index dfa636d..eca9451 100644 --- a/doc/guides/rel_notes/release_17_05.rst +++ b/doc/guides/rel_notes/release_17_05.rst @@ -138,6 +138,9 @@ API Changes * The vhost API ``rte_vhost_driver_callback_register(ops)`` takes one more argument: ``rte_vhost_driver_callback_register(path, ops)``. + * The vhost API ``rte_vhost_get_queue_num`` is deprecated, instead, + ``rte_vhost_get_vring_num`` should be used. + ABI Changes ----------- diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c index f6ad616..dc583e4 100644 --- a/drivers/net/vhost/rte_eth_vhost.c +++ b/drivers/net/vhost/rte_eth_vhost.c @@ -569,7 +569,7 @@ struct vhost_xstats_name_off { vq->port = eth_dev->data->port_id; } - for (i = 0; i < rte_vhost_get_queue_num(vid) * VIRTIO_QNUM; i++) + for (i = 0; i < rte_vhost_get_vring_num(vid); i++) rte_vhost_enable_guest_notification(vid, i, 0); rte_vhost_get_mtu(vid, ð_dev->data->mtu); diff --git a/lib/librte_vhost/rte_vhost_version.map b/lib/librte_vhost/rte_vhost_version.map index 7df7af6..ff62c39 100644 --- a/lib/librte_vhost/rte_vhost_version.map +++ b/lib/librte_vhost/rte_vhost_version.map @@ -40,6 +40,7 @@ DPDK_17.05 { rte_vhost_get_negotiated_features rte_vhost_get_vhost_memory; rte_vhost_get_vhost_vring; + rte_vhost_get_vring_num; rte_vhost_gpa_to_vva; } DPDK_16.07; diff --git a/lib/librte_vhost/rte_virtio_net.h b/lib/librte_vhost/rte_virtio_net.h index 36674bb..f700d2f 100644 --- a/lib/librte_vhost/rte_virtio_net.h +++ b/lib/librte_vhost/rte_virtio_net.h @@ -237,17 +237,34 @@ int rte_vhost_driver_callback_register(const char *path, int rte_vhost_get_numa_node(int vid); /** + * @deprecated * Get the number of queues the device supports. * + * Note this function is deprecated, as it returns a queue pair number, + * which is virtio-net specific. Instead, rte_vhost_get_vring_num should + * be used. + * * @param vid * virtio-net device ID * * @return * The number of queues, 0 on failure */ +__rte_deprecated uint32_t rte_vhost_get_queue_num(int vid); /** + * Get the number of vrings the device supports. + * + * @param vid + * vhost device ID + * + * @return + * The number of vrings, 0 on failure + */ +uint16_t rte_vhost_get_vring_num(int vid); + +/** * Get the virtio net device's ifname, which is the vhost-user socket * file path. * diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c index 70477c6..74ae3b2 100644 --- a/lib/librte_vhost/vhost.c +++ b/lib/librte_vhost/vhost.c @@ -317,6 +317,17 @@ struct virtio_net * return dev->nr_vring / 2; } +uint16_t +rte_vhost_get_vring_num(int vid) +{ + struct virtio_net *dev = get_device(vid); + + if (dev == NULL) + return 0; + + return dev->nr_vring; +} + int rte_vhost_get_ifname(int vid, char *buf, size_t len) { -- 1.9.0