ring: create device from a ring
authorBruce Richardson <bruce.richardson@intel.com>
Wed, 30 Sep 2015 12:12:21 +0000 (13:12 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Tue, 3 Nov 2015 01:01:56 +0000 (02:01 +0100)
Add a one-parameter function to take an existing rte_ring and wrap it as
an ethdev, returning the port id of the new ethdev instance.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
drivers/net/ring/rte_eth_ring.c
drivers/net/ring/rte_eth_ring.h
drivers/net/ring/rte_eth_ring_version.map

index bfd6f4e..d851f9e 100644 (file)
@@ -36,6 +36,7 @@
 #include <rte_ethdev.h>
 #include <rte_malloc.h>
 #include <rte_memcpy.h>
+#include <rte_memzone.h>
 #include <rte_string_fns.h>
 #include <rte_dev.h>
 #include <rte_kvargs.h>
@@ -392,6 +393,13 @@ error:
        return -1;
 }
 
+int
+rte_eth_from_ring(struct rte_ring *r)
+{
+       return rte_eth_from_rings(r->name, &r, 1, &r, 1,
+                       r->memzone ? r->memzone->socket_id : SOCKET_ID_ANY);
+}
+
 enum dev_action{
        DEV_CREATE,
        DEV_ATTACH
index 5a69bff..4ff83ec 100644 (file)
@@ -65,6 +65,20 @@ int rte_eth_from_rings(const char *name,
                const unsigned nb_tx_queues,
                const unsigned numa_node);
 
+/**
+ * Create a new ethdev port from a ring
+ *
+ * This function is a shortcut call for rte_eth_from_rings for the
+ * case where one wants to take a single rte_ring and use it as though
+ * it were an ethdev
+ *
+ * @param ring
+ *    the ring to be used as an ethdev
+ * @return
+ *    the port number of the newly created ethdev, or -1 on error
+ */
+int rte_eth_from_ring(struct rte_ring *r);
+
 #ifdef __cplusplus
 }
 #endif
index 0875e25..1f785d9 100644 (file)
@@ -5,3 +5,10 @@ DPDK_2.0 {
 
        local: *;
 };
+
+DPDK_2.2 {
+       global:
+
+       rte_eth_from_ring;
+
+} DPDK_2.0;