diff mbox series

[v1,2/9] linux-gen: pktio: loopback: use generic pktio_ops data storage

Message ID 1508414408-10456-3-git-send-email-odpbot@yandex.ru
State New
Headers show
Series [v1,1/9] linux-gen: pktio: introduce generic pktio_ops data storage | expand

Commit Message

Github ODP bot Oct. 19, 2017, noon UTC
From: Bogdan Pricope <bogdan.pricope@linaro.org>


Signed-off-by: Bogdan Pricope <bogdan.pricope@linaro.org>

---
/** Email created from pull request 241 (bogdanPricope:2_0_pktio_ops_pr)
 ** https://github.com/Linaro/odp/pull/241
 ** Patch: https://github.com/Linaro/odp/pull/241.patch
 ** Base sha: 76f82972ecb51aa64215c97cb3d7f94e5de980f9
 ** Merge commit sha: 24c411a2875cbcd686833666d481a0197cc82e90
 **/
 .../include/odp_pktio_ops_subsystem.h              |  2 --
 platform/linux-generic/pktio/loopback.c            | 33 ++++++++++++++++------
 2 files changed, 25 insertions(+), 10 deletions(-)
diff mbox series

Patch

diff --git a/platform/linux-generic/include/odp_pktio_ops_subsystem.h b/platform/linux-generic/include/odp_pktio_ops_subsystem.h
index 07c5dbee7..241ce4673 100644
--- a/platform/linux-generic/include/odp_pktio_ops_subsystem.h
+++ b/platform/linux-generic/include/odp_pktio_ops_subsystem.h
@@ -82,7 +82,6 @@  typedef ODP_MODULE_CLASS(pktio_ops) {
 
 /* All implementations of this subsystem */
 #include <odp_pktio_ops_ipc.h>
-#include <odp_pktio_ops_loopback.h>
 #include <odp_pktio_ops_netmap.h>
 #include <odp_pktio_ops_pcap.h>
 #include <odp_pktio_ops_socket.h>
@@ -94,7 +93,6 @@  typedef ODP_MODULE_CLASS(pktio_ops) {
 typedef union {
 	void *dpdk;
 	pktio_ops_ipc_data_t ipc;
-	pktio_ops_loopback_data_t loopback;
 	pktio_ops_netmap_data_t netmap;
 	pktio_ops_pcap_data_t pcap;
 	pktio_ops_socket_data_t socket;
diff --git a/platform/linux-generic/pktio/loopback.c b/platform/linux-generic/pktio/loopback.c
index b17868a39..01bbc8bc6 100644
--- a/platform/linux-generic/pktio/loopback.c
+++ b/platform/linux-generic/pktio/loopback.c
@@ -14,6 +14,7 @@ 
 #include <odp_debug_internal.h>
 #include <odp/api/hints.h>
 #include <odp_queue_if.h>
+#include <odp_pktio_ops_loopback.h>
 
 #include <protocols/eth.h>
 #include <protocols/ip.h>
@@ -21,6 +22,7 @@ 
 #include <errno.h>
 #include <inttypes.h>
 #include <limits.h>
+#include <linux/if_ether.h>
 
 /* MAC address for the "loop" interface */
 static const char pktio_loop_mac[] = {0x02, 0xe9, 0x34, 0x80, 0x73, 0x01};
@@ -30,6 +32,9 @@  static int loopback_stats_reset(pktio_entry_t *pktio_entry);
 static int loopback_open(odp_pktio_t id, pktio_entry_t *pktio_entry,
 			 const char *devname, odp_pool_t pool ODP_UNUSED)
 {
+	pktio_ops_loopback_data_t *pkt_lbk =
+		odp_ops_data(pktio_entry, loopback);
+
 	if (strcmp(devname, "loop"))
 		return -1;
 
@@ -37,10 +42,9 @@  static int loopback_open(odp_pktio_t id, pktio_entry_t *pktio_entry,
 
 	snprintf(loopq_name, sizeof(loopq_name), "%" PRIu64 "-pktio_loopq",
 		 odp_pktio_to_u64(id));
-	pktio_entry->ops_data(loopback).loopq =
-		odp_queue_create(loopq_name, NULL);
+	pkt_lbk->loopq = odp_queue_create(loopq_name, NULL);
 
-	if (pktio_entry->ops_data(loopback).loopq == ODP_QUEUE_INVALID)
+	if (pkt_lbk->loopq == ODP_QUEUE_INVALID)
 		return -1;
 
 	loopback_stats_reset(pktio_entry);
@@ -50,7 +54,10 @@  static int loopback_open(odp_pktio_t id, pktio_entry_t *pktio_entry,
 
 static int loopback_close(pktio_entry_t *pktio_entry)
 {
-	return odp_queue_destroy(pktio_entry->ops_data(loopback).loopq);
+	pktio_ops_loopback_data_t *pkt_lbk =
+		odp_ops_data(pktio_entry, loopback);
+
+	return odp_queue_destroy(pkt_lbk->loopq);
 }
 
 static int loopback_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
@@ -65,13 +72,15 @@  static int loopback_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
 	odp_time_t *ts = NULL;
 	int num_rx = 0;
 	int failed = 0;
+	pktio_ops_loopback_data_t *pkt_lbk =
+		odp_ops_data(pktio_entry, loopback);
 
 	if (odp_unlikely(len > QUEUE_MULTI_MAX))
 		len = QUEUE_MULTI_MAX;
 
 	odp_ticketlock_lock(&pktio_entry->s.rxl);
 
-	queue = queue_fn->from_ext(pktio_entry->ops_data(loopback).loopq);
+	queue = queue_fn->from_ext(pkt_lbk->loopq);
 	nbr = queue_fn->deq_multi(queue, hdr_tbl, len);
 
 	if (pktio_entry->s.config.pktin.bit.ts_all ||
@@ -155,6 +164,8 @@  static int loopback_send(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
 	int i;
 	int ret;
 	uint32_t bytes = 0;
+	pktio_ops_loopback_data_t *pkt_lbk =
+		odp_ops_data(pktio_entry, loopback);
 
 	if (odp_unlikely(len > QUEUE_MULTI_MAX))
 		len = QUEUE_MULTI_MAX;
@@ -166,7 +177,7 @@  static int loopback_send(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
 
 	odp_ticketlock_lock(&pktio_entry->s.txl);
 
-	queue = queue_fn->from_ext(pktio_entry->ops_data(loopback).loopq);
+	queue = queue_fn->from_ext(pkt_lbk->loopq);
 	ret = queue_fn->enq_multi(queue, hdr_tbl, len);
 
 	if (ret > 0) {
@@ -219,13 +230,19 @@  static int loopback_capability(pktio_entry_t *pktio_entry ODP_UNUSED,
 static int loopback_promisc_mode_set(pktio_entry_t *pktio_entry,
 				     odp_bool_t enable)
 {
-	pktio_entry->ops_data(loopback).promisc = enable;
+	pktio_ops_loopback_data_t *pkt_lbk =
+		odp_ops_data(pktio_entry, loopback);
+
+	pkt_lbk->promisc = enable;
 	return 0;
 }
 
 static int loopback_promisc_mode_get(pktio_entry_t *pktio_entry)
 {
-	return pktio_entry->ops_data(loopback).promisc ? 1 : 0;
+	pktio_ops_loopback_data_t *pkt_lbk =
+		odp_ops_data(pktio_entry, loopback);
+
+	return pkt_lbk->promisc ? 1 : 0;
 }
 
 static int loopback_stats(pktio_entry_t *pktio_entry,