From patchwork Fri Jun 9 17:51:18 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ferruh Yigit X-Patchwork-Id: 25235 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id A35554A63; Fri, 9 Jun 2017 19:51:28 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id CFA8D3798 for ; Fri, 9 Jun 2017 19:51:26 +0200 (CEST) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Jun 2017 10:51:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos; i="5.39,319,1493708400"; d="scan'208"; a="1139701911" Received: from silpixa00372839.ir.intel.com (HELO silpixa00372839.ger.corp.intel.com) ([10.237.222.154]) by orsmga001.jf.intel.com with ESMTP; 09 Jun 2017 10:51:22 -0700 From: Ferruh Yigit To: Bruce Richardson Cc: dev@dpdk.org, Ferruh Yigit Date: Fri, 9 Jun 2017 18:51:18 +0100 Message-Id: <20170609175120.77652-1-ferruh.yigit@intel.com> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170606151008.62680-1-ferruh.yigit@intel.com> References: <20170606151008.62680-1-ferruh.yigit@intel.com> Subject: [dpdk-dev] [PATCH v3 1/3] net/ring: set ethernet device field 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The eth_dev->device link was missing for ring PMD, adding it. This is to generalize rte_device access from eth_dev. Signed-off-by: Ferruh Yigit --- drivers/net/ring/rte_eth_ring.c | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c index d4dce95..6feb137 100644 --- a/drivers/net/ring/rte_eth_ring.c +++ b/drivers/net/ring/rte_eth_ring.c @@ -263,7 +263,8 @@ static int do_eth_dev_ring_create(const char *name, struct rte_ring * const rx_queues[], const unsigned nb_rx_queues, struct rte_ring *const tx_queues[], const unsigned nb_tx_queues, - const unsigned numa_node, enum dev_action action) + const unsigned int numa_node, enum dev_action action, + struct rte_eth_dev **eth_dev_p) { struct rte_eth_dev_data *data = NULL; struct pmd_internals *internals = NULL; @@ -349,6 +350,8 @@ do_eth_dev_ring_create(const char *name, eth_dev->rx_pkt_burst = eth_ring_rx; eth_dev->tx_pkt_burst = eth_ring_tx; + *eth_dev_p = eth_dev; + return data->port_id; error: @@ -369,6 +372,8 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[], const unsigned nb_tx_queues, const unsigned numa_node) { + struct rte_eth_dev *eth_dev = NULL; + /* do some parameter checking */ if (rx_queues == NULL && nb_rx_queues > 0) { rte_errno = EINVAL; @@ -384,7 +389,8 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[], } return do_eth_dev_ring_create(name, rx_queues, nb_rx_queues, - tx_queues, nb_tx_queues, numa_node, DEV_ATTACH); + tx_queues, nb_tx_queues, numa_node, DEV_ATTACH, + ð_dev); } int @@ -396,7 +402,7 @@ rte_eth_from_ring(struct rte_ring *r) static int eth_dev_ring_create(const char *name, const unsigned numa_node, - enum dev_action action) + enum dev_action action, struct rte_eth_dev **eth_dev) { /* rx and tx are so-called from point of view of first port. * They are inverted from the point of view of second port @@ -418,7 +424,7 @@ eth_dev_ring_create(const char *name, const unsigned numa_node, } if (do_eth_dev_ring_create(name, rxtx, num_rings, rxtx, num_rings, - numa_node, action) < 0) + numa_node, action, eth_dev) < 0) return -1; return 0; @@ -508,6 +514,7 @@ rte_pmd_ring_probe(struct rte_vdev_device *dev) struct rte_kvargs *kvlist = NULL; int ret = 0; struct node_action_list *info = NULL; + struct rte_eth_dev *eth_dev = NULL; name = rte_vdev_device_name(dev); params = rte_vdev_device_args(dev); @@ -515,12 +522,13 @@ rte_pmd_ring_probe(struct rte_vdev_device *dev) RTE_LOG(INFO, PMD, "Initializing pmd_ring for %s\n", name); if (params == NULL || params[0] == '\0') { - ret = eth_dev_ring_create(name, rte_socket_id(), DEV_CREATE); + ret = eth_dev_ring_create(name, rte_socket_id(), DEV_CREATE, + ð_dev); if (ret == -1) { RTE_LOG(INFO, PMD, "Attach to pmd_ring for %s\n", name); ret = eth_dev_ring_create(name, rte_socket_id(), - DEV_ATTACH); + DEV_ATTACH, ð_dev); } } else { @@ -530,13 +538,13 @@ rte_pmd_ring_probe(struct rte_vdev_device *dev) RTE_LOG(INFO, PMD, "Ignoring unsupported parameters when creating" " rings-backed ethernet device\n"); ret = eth_dev_ring_create(name, rte_socket_id(), - DEV_CREATE); + DEV_CREATE, ð_dev); if (ret == -1) { RTE_LOG(INFO, PMD, "Attach to pmd_ring for %s\n", name); ret = eth_dev_ring_create(name, rte_socket_id(), - DEV_ATTACH); + DEV_ATTACH, ð_dev); } return ret; } else { @@ -560,7 +568,8 @@ rte_pmd_ring_probe(struct rte_vdev_device *dev) for (info->count = 0; info->count < info->total; info->count++) { ret = eth_dev_ring_create(info->list[info->count].name, info->list[info->count].node, - info->list[info->count].action); + info->list[info->count].action, + ð_dev); if ((ret == -1) && (info->list[info->count].action == DEV_CREATE)) { RTE_LOG(INFO, PMD, @@ -568,12 +577,16 @@ rte_pmd_ring_probe(struct rte_vdev_device *dev) name); ret = eth_dev_ring_create(name, info->list[info->count].node, - DEV_ATTACH); + DEV_ATTACH, + ð_dev); } } } } + if (eth_dev) + eth_dev->device = &dev->device; + out_free: rte_kvargs_free(kvlist); rte_free(info);