From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id B6662568A for ; Tue, 13 Sep 2016 15:47:45 +0200 (CEST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga101.fm.intel.com with ESMTP; 13 Sep 2016 06:47:44 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.30,328,1470726000"; d="scan'208";a="760233117" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by FMSMGA003.fm.intel.com with ESMTP; 13 Sep 2016 06:47:44 -0700 Received: from sivswdev01.ir.intel.com (sivswdev01.ir.intel.com [10.237.217.45]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id u8DDlhZb010064 for ; Tue, 13 Sep 2016 14:47:43 +0100 Received: from sivswdev01.ir.intel.com (localhost [127.0.0.1]) by sivswdev01.ir.intel.com with ESMTP id u8DDlhBF027008 for ; Tue, 13 Sep 2016 14:47:43 +0100 Received: (from cloftus@localhost) by sivswdev01.ir.intel.com with id u8DDlhRm027004 for dev@dpdk.org; Tue, 13 Sep 2016 14:47:43 +0100 From: Ciara Loftus To: dev@dpdk.org Date: Tue, 13 Sep 2016 14:47:43 +0100 Message-Id: <1473774463-26966-1-git-send-email-ciara.loftus@intel.com> X-Mailer: git-send-email 1.7.4.1 Subject: [dpdk-dev] [PATCH] net/vhost: Add function to retreive the 'vid' for a given port id. X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Sep 2016 13:47:46 -0000 In some cases when using the vHost PMD, certain vHost library functions may still need to be accessed. One such example is the rte_vhost_get_queue_num function which returns the number of virtqueues reported by the guest - information which is not exposed by the PMD. This commit introduces a new rte_eth_vhost function that returns the 'vid' associated with a given port id. This allows the PMD user to call vHost library functions which require the 'vid' value. Signed-off-by: Ciara Loftus --- drivers/net/vhost/rte_eth_vhost.c | 29 +++++++++++++++++++++++++++++ drivers/net/vhost/rte_eth_vhost.h | 9 +++++++++ drivers/net/vhost/rte_pmd_vhost_version.map | 6 ++++++ 3 files changed, 44 insertions(+) diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c index 7539cd4..091517d 100644 --- a/drivers/net/vhost/rte_eth_vhost.c +++ b/drivers/net/vhost/rte_eth_vhost.c @@ -428,6 +428,35 @@ rte_eth_vhost_get_queue_event(uint8_t port_id, return -1; } +int +rte_eth_vhost_get_vid_from_port_id(uint8_t port_id) +{ + struct internal_list *list; + struct rte_eth_dev *eth_dev; + struct vhost_queue *vq; + int vid = -1; + + if (!rte_eth_dev_is_valid_port(port_id)) + return -1; + + pthread_mutex_lock(&internal_list_lock); + + TAILQ_FOREACH(list, &internal_list, next) { + eth_dev = list->eth_dev; + if (eth_dev->data->port_id == port_id) { + vq = eth_dev->data->rx_queues[0]; + if (vq) { + vid = vq->vid; + } + break; + } + } + + pthread_mutex_unlock(&internal_list_lock); + + return vid; +} + static void * vhost_driver_session(void *param __rte_unused) { diff --git a/drivers/net/vhost/rte_eth_vhost.h b/drivers/net/vhost/rte_eth_vhost.h index ff5d877..7c98b1a 100644 --- a/drivers/net/vhost/rte_eth_vhost.h +++ b/drivers/net/vhost/rte_eth_vhost.h @@ -102,6 +102,15 @@ struct rte_eth_vhost_queue_event { int rte_eth_vhost_get_queue_event(uint8_t port_id, struct rte_eth_vhost_queue_event *event); +/** + * Get the 'vid' value associated with the specified port. + * + * @return + * - On success, the 'vid' associated with 'port_id'. + * - On failure, a negative value. + */ +int rte_eth_vhost_get_vid_from_port_id(uint8_t port_id); + #ifdef __cplusplus } #endif diff --git a/drivers/net/vhost/rte_pmd_vhost_version.map b/drivers/net/vhost/rte_pmd_vhost_version.map index 65bf3a8..0533a83 100644 --- a/drivers/net/vhost/rte_pmd_vhost_version.map +++ b/drivers/net/vhost/rte_pmd_vhost_version.map @@ -8,3 +8,9 @@ DPDK_16.04 { local: *; }; + +DPDK_16.11 { + global: + + rte_eth_vhost_get_vid_from_port_id; +} -- 2.4.3