All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Blunck <jblunck@infradead.org>
To: dev@dpdk.org
Subject: [PATCH 05/38] ether: add allocation helper for virtual drivers
Date: Mon,  6 Mar 2017 10:59:57 +0100	[thread overview]
Message-ID: <1488794430-25179-6-git-send-email-jblunck@infradead.org> (raw)
In-Reply-To: <1488794430-25179-1-git-send-email-jblunck@infradead.org>

This helper should be used by ethdev drivers supporting virtual devices
to help allocating a new ethdev and properly filling the default fields.

Signed-off-by: Jan Blunck <jblunck@infradead.org>
---
 lib/librte_ether/Makefile          |  1 +
 lib/librte_ether/rte_ethdev_vdev.h | 85 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 86 insertions(+)
 create mode 100644 lib/librte_ether/rte_ethdev_vdev.h

diff --git a/lib/librte_ether/Makefile b/lib/librte_ether/Makefile
index 1d095a9..31e6ba7 100644
--- a/lib/librte_ether/Makefile
+++ b/lib/librte_ether/Makefile
@@ -50,6 +50,7 @@ SRCS-y += rte_flow.c
 # Export include files
 #
 SYMLINK-y-include += rte_ethdev.h
+SYMLINK-y-include += rte_ethdev_vdev.h
 SYMLINK-y-include += rte_eth_ctrl.h
 SYMLINK-y-include += rte_dev_info.h
 SYMLINK-y-include += rte_flow.h
diff --git a/lib/librte_ether/rte_ethdev_vdev.h b/lib/librte_ether/rte_ethdev_vdev.h
new file mode 100644
index 0000000..0b47535
--- /dev/null
+++ b/lib/librte_ether/rte_ethdev_vdev.h
@@ -0,0 +1,85 @@
+/*-
+ *   BSD LICENSE
+ *
+ *   Copyright(c) 2017 Brocade Communications Systems, Inc.
+ *   Author: Jan Blunck <jblunck@infradead.org>
+ *
+ *   Redistribution and use in source and binary forms, with or without
+ *   modification, are permitted provided that the following conditions
+ *   are met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in
+ *       the documentation and/or other materials provided with the
+ *       distribution.
+ *     * Neither the name of the copyright holder nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _RTE_ETHDEV_VDEV_H_
+#define _RTE_ETHDEV_VDEV_H_
+
+#include <rte_malloc.h>
+#include <rte_vdev.h>
+#include <rte_ethdev.h>
+
+/**
+ * @internal
+ * Allocates a new ethdev slot for an ethernet device and returns the pointer
+ * to that slot for the driver to use.
+ *
+ * @param dev
+ *	Pointer to virtual device
+ *
+ * @param private_data_size
+ *	Size of private data structure
+ *
+ * @return
+ *	A pointer to a rte_eth_dev or NULL if allocation failed.
+ */
+static inline struct rte_eth_dev *
+rte_eth_vdev_allocate(struct rte_vdev_device *dev, size_t private_data_size)
+{
+	struct rte_eth_dev *eth_dev;
+	const char *name = rte_vdev_device_name(dev);
+
+	eth_dev = rte_eth_dev_allocate(name);
+	if (!eth_dev)
+		return NULL;
+
+	if (private_data_size) {
+		eth_dev->data->dev_private = rte_zmalloc_socket(name,
+			private_data_size, RTE_CACHE_LINE_SIZE,
+			dev->device.numa_node);
+		if (!eth_dev->data->dev_private) {
+			rte_eth_dev_release_port(eth_dev);
+			return NULL;
+		}
+	}
+
+	eth_dev->device = &dev->device;
+	eth_dev->driver = NULL;
+	eth_dev->intr_handle = NULL;
+
+	eth_dev->data->kdrv = RTE_KDRV_NONE;
+	eth_dev->data->numa_node = dev->device.numa_node;
+	eth_dev->data->drv_name = dev->device.driver->name;
+	return eth_dev;
+}
+
+#endif /* _RTE_ETHDEV_VDEV_H_ */
-- 
2.7.4

  parent reply	other threads:[~2017-03-06 10:00 UTC|newest]

Thread overview: 104+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-06  9:59 [PATCH 00/38] Remove struct eth_driver Jan Blunck
2017-03-06  9:59 ` [PATCH 01/38] eal: add name field to generic device Jan Blunck
2017-03-06  9:59 ` [PATCH 02/38] eal: parse "driver" device argument before probing drivers Jan Blunck
2017-03-06  9:59 ` [PATCH 03/38] net/nfp: use library function for DMA zone reserve Jan Blunck
2017-03-10  7:03   ` Shreyansh Jain
2017-03-10  7:20     ` Jan Blunck
2017-03-06  9:59 ` [PATCH 04/38] net/vmxnet3: " Jan Blunck
2017-03-06  9:59 ` Jan Blunck [this message]
2017-03-06  9:59 ` [PATCH 06/38] net/tap: use ethdev allocation helper for virtual devices Jan Blunck
2017-03-06  9:59 ` [PATCH 07/38] net/vhost: " Jan Blunck
2017-03-06 10:00 ` [PATCH 08/38] net/virtio: " Jan Blunck
2017-03-06 10:00 ` [PATCH 09/38] net/af_packet: " Jan Blunck
2017-03-06 10:00 ` [PATCH 10/38] app/test: don't short-circuit null device creation Jan Blunck
2017-03-06 10:00 ` [PATCH 11/38] net/null: internalize eth_dev_null_create() Jan Blunck
2017-03-06 10:00 ` [PATCH 12/38] net/null: use ethdev allocation helper for virtual devices Jan Blunck
2017-03-06 10:00 ` [PATCH 13/38] net/bonding: make bonding API call through EAL on create/free Jan Blunck
2017-03-06 10:00 ` [PATCH 14/38] net/bonding: use ethdev allocation helper for virtual devices Jan Blunck
2017-03-06 10:00 ` [PATCH 15/38] ethdev: add PCI driver helpers Jan Blunck
2017-03-06 10:00 ` [PATCH 16/38] net/virtio: Don't use eth_driver Jan Blunck
2017-03-06 10:00 ` [PATCH 17/38] net/bnx2x: " Jan Blunck
2017-03-06 19:32   ` Harish Patil
2017-03-06 10:00 ` [PATCH 18/38] net/bnxt: " Jan Blunck
2017-03-06 10:00 ` [PATCH 19/38] net/cxgbe: " Jan Blunck
2017-03-06 10:00 ` [PATCH 20/38] net/em: " Jan Blunck
2017-03-06 10:00 ` [PATCH 21/38] net/igb: " Jan Blunck
2017-03-06 10:00 ` [PATCH 22/38] net/ena: " Jan Blunck
2017-03-06 10:00 ` [PATCH 23/38] net/enic: " Jan Blunck
2017-03-06 10:00 ` [PATCH 24/38] net/fm10k: " Jan Blunck
2017-03-06 10:00 ` [PATCH 25/38] net/i40e: " Jan Blunck
2017-03-06 10:00 ` [PATCH 26/38] net/i40evf: " Jan Blunck
2017-03-06 10:00 ` [PATCH 27/38] net/ixgbe: " Jan Blunck
2017-03-06 10:00 ` [PATCH 28/38] net/mlx: Don't reference eth_driver Jan Blunck
2017-03-06 10:00 ` [PATCH 29/38] net/nfp: Don't use eth_driver Jan Blunck
2017-03-06 10:00 ` [PATCH 30/38] net/qede: " Jan Blunck
2017-03-06 19:33   ` Harish Patil
2017-03-06 10:00 ` [PATCH 31/38] net/sfc: " Jan Blunck
2017-03-06 10:00 ` [PATCH 32/38] net/szedata2: " Jan Blunck
2017-03-06 10:00 ` [PATCH 33/38] net/thunderx: " Jan Blunck
2017-03-06 10:00 ` [PATCH 34/38] net/vmxnet3: " Jan Blunck
2017-03-06 10:00 ` [PATCH 35/38] ethdev: remove unused ethdev PCI probe/remove Jan Blunck
2017-03-06 10:00 ` [PATCH 36/38] ethdev: remove unused ethdev driver Jan Blunck
2017-03-06 10:00 ` [PATCH 37/38] ethdev: remove PCI specific helper from generic ethdev header Jan Blunck
2017-03-06 10:00 ` [PATCH 38/38] ethdev: don't include PCI header Jan Blunck
2017-03-23 15:34 ` [PATCH 00/38] Remove struct eth_driver Stephen Hemminger
2017-03-25 10:50   ` Jan Blunck
2017-04-11 15:44 ` [PATCH v2 00/42] " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 01/42] eal: add name field to generic device Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 02/42] eal: parse "driver" device argument before probing drivers Gaetan Rivet
2017-05-10  2:34     ` Ferruh Yigit
2017-05-10 11:01       ` Ferruh Yigit
2017-04-11 15:44   ` [PATCH v2 03/42] net/nfp: use library function for DMA zone reserve Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 04/42] ether: add allocation helper for virtual drivers Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 05/42] net/tap: use ethdev allocation helper for virtual devices Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 06/42] net/vhost: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 07/42] net/virtio: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 08/42] net/af_packet: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 09/42] app/test: don't short-circuit null device creation Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 10/42] net/null: internalize eth_dev_null_create() Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 11/42] net/null: use ethdev allocation helper for virtual devices Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 12/42] net/bonding: make bonding API call through EAL on create/free Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 13/42] net/bonding: use ethdev allocation helper for virtual devices Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 14/42] net/kni: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 15/42] net/pcap: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 16/42] ethdev: add PCI driver helpers Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 17/42] net/virtio: Don't use eth_driver Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 18/42] net/bnx2x: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 19/42] net/bnxt: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 20/42] net/cxgbe: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 21/42] net/em: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 22/42] net/igb: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 23/42] net/ena: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 24/42] net/enic: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 25/42] net/fm10k: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 26/42] net/i40e: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 27/42] net/i40evf: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 28/42] net/ixgbe: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 29/42] net/mlx: Don't reference eth_driver Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 30/42] net/nfp: Don't use eth_driver Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 31/42] net/qede: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 32/42] net/sfc: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 33/42] net/szedata2: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 34/42] net/thunderx: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 35/42] net/vmxnet3: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 36/42] net/avp: " Gaetan Rivet
2017-04-11 18:48     ` Legacy, Allain
2017-04-11 15:44   ` [PATCH v2 37/42] net/liquidio: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 38/42] ethdev: remove unused ethdev PCI probe/remove Gaetan Rivet
2017-04-12 11:24     ` Neil Horman
2017-04-12 11:28       ` Neil Horman
2017-04-11 15:44   ` [PATCH v2 39/42] ethdev: remove unused ethdev driver Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 40/42] test: " Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 41/42] ethdev: remove PCI specific helper from generic ethdev header Gaetan Rivet
2017-04-11 15:44   ` [PATCH v2 42/42] ethdev: don't include PCI header Gaetan Rivet
2017-04-12 16:25   ` [PATCH v2 00/42] Remove struct eth_driver Stephen Hemminger
2017-04-14 13:09     ` Thomas Monjalon
2017-04-18 18:27       ` [PATCH 0/2] next-net: remove ethdev driver Ferruh Yigit
2017-04-18 18:27         ` [PATCH 1/2] net/ark: remove eth_dev Ferruh Yigit
2017-04-18 19:24           ` Ed Czeck
2017-04-19 10:03             ` Ferruh Yigit
2017-04-18 18:27         ` [PATCH 2/2] net/xenvirt: remove ethdev driver Ferruh Yigit
2017-04-19  9:52           ` [PATCH v2] net/xenvirt: fix build error Ferruh Yigit
2017-04-19 12:12             ` Thomas Monjalon
2017-04-18 18:38         ` [PATCH 0/2] next-net: remove ethdev driver Ferruh Yigit
2017-04-19 11:37         ` Shreyansh Jain

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1488794430-25179-6-git-send-email-jblunck@infradead.org \
    --to=jblunck@infradead.org \
    --cc=dev@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.