diff mbox series

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

Message ID 1508414408-10456-6-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/include/odp_pktio_ops_tap.h |  1 +
 platform/linux-generic/pktio/tap.c                 | 34 +++++++++++++---------
 3 files changed, 21 insertions(+), 16 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 d945a5cc1..56b7a5fcd 100644
--- a/platform/linux-generic/include/odp_pktio_ops_subsystem.h
+++ b/platform/linux-generic/include/odp_pktio_ops_subsystem.h
@@ -84,7 +84,6 @@  typedef ODP_MODULE_CLASS(pktio_ops) {
 #include <odp_pktio_ops_ipc.h>
 #include <odp_pktio_ops_netmap.h>
 #include <odp_pktio_ops_pcap.h>
-#include <odp_pktio_ops_tap.h>
 
 /* Per implementation private data
  * TODO: refactory each implementation to hide it internally
@@ -94,7 +93,6 @@  typedef union {
 	pktio_ops_ipc_data_t ipc;
 	pktio_ops_netmap_data_t netmap;
 	pktio_ops_pcap_data_t pcap;
-	pktio_ops_tap_data_t tap;
 } pktio_ops_data_t;
 
 /* Extract pktio ops data from pktio entry structure */
diff --git a/platform/linux-generic/include/odp_pktio_ops_tap.h b/platform/linux-generic/include/odp_pktio_ops_tap.h
index e8e2e270e..d9ce8e71d 100644
--- a/platform/linux-generic/include/odp_pktio_ops_tap.h
+++ b/platform/linux-generic/include/odp_pktio_ops_tap.h
@@ -7,6 +7,7 @@ 
 #ifndef ODP_PACKET_OPS_TAP_H_
 #define ODP_PACKET_OPS_TAP_H_
 
+#include <linux/if_ether.h>
 #include <odp/api/pool.h>
 
 typedef struct {
diff --git a/platform/linux-generic/pktio/tap.c b/platform/linux-generic/pktio/tap.c
index 6cef64f18..e256eec3e 100644
--- a/platform/linux-generic/pktio/tap.c
+++ b/platform/linux-generic/pktio/tap.c
@@ -45,6 +45,7 @@ 
 #include <odp_packet_internal.h>
 #include <odp_packet_io_internal.h>
 #include <odp_classification_internal.h>
+#include <odp_pktio_ops_tap.h>
 #include <pktio/common.h>
 
 #define BUF_SIZE 65536
@@ -66,7 +67,7 @@  static int tap_pktio_open(odp_pktio_t id ODP_UNUSED,
 	int fd, skfd, flags;
 	uint32_t mtu;
 	struct ifreq ifr;
-	pktio_ops_tap_data_t *tap = &pktio_entry->ops_data(tap);
+	pktio_ops_tap_data_t *tap = odp_ops_data(pktio_entry, tap);
 
 	if (strncmp(devname, "tap:", 4) != 0)
 		return -1;
@@ -166,7 +167,7 @@  static int tap_pktio_open(odp_pktio_t id ODP_UNUSED,
 static int tap_pktio_close(pktio_entry_t *pktio_entry)
 {
 	int ret = 0;
-	pktio_ops_tap_data_t *tap = &pktio_entry->ops_data(tap);
+	pktio_ops_tap_data_t *tap = odp_ops_data(pktio_entry, tap);
 
 	if (tap->fd != -1 && close(tap->fd) != 0) {
 		__odp_errno = errno;
@@ -186,6 +187,7 @@  static int tap_pktio_close(pktio_entry_t *pktio_entry)
 static odp_packet_t pack_odp_pkt(pktio_entry_t *pktio_entry, const void *data,
 				 unsigned int len, odp_time_t *ts)
 {
+	pktio_ops_tap_data_t *tap = odp_ops_data(pktio_entry, tap);
 	odp_packet_t pkt;
 	odp_packet_hdr_t *pkt_hdr;
 	odp_packet_hdr_t parsed_hdr;
@@ -193,13 +195,12 @@  static odp_packet_t pack_odp_pkt(pktio_entry_t *pktio_entry, const void *data,
 
 	if (pktio_cls_enabled(pktio_entry)) {
 		if (cls_classify_packet(pktio_entry, data, len, len,
-					&pktio_entry->ops_data(tap).pool,
-					&parsed_hdr)) {
+					&tap->pool, &parsed_hdr)) {
 			return ODP_PACKET_INVALID;
 		}
 	}
 
-	num = packet_alloc_multi(pktio_entry->ops_data(tap).pool, len, &pkt, 1);
+	num = packet_alloc_multi(tap->pool, len, &pkt, 1);
 
 	if (num != 1)
 		return ODP_PACKET_INVALID;
@@ -230,7 +231,7 @@  static int tap_pktio_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
 	ssize_t retval;
 	int i;
 	uint8_t buf[BUF_SIZE];
-	pktio_ops_tap_data_t *tap = &pktio_entry->ops_data(tap);
+	pktio_ops_tap_data_t *tap = odp_ops_data(pktio_entry, tap);
 	odp_time_t ts_val;
 	odp_time_t *ts = NULL;
 
@@ -270,7 +271,7 @@  static int tap_pktio_send_lockless(pktio_entry_t *pktio_entry,
 	int i, n;
 	uint32_t pkt_len;
 	uint8_t buf[BUF_SIZE];
-	pktio_ops_tap_data_t *tap = &pktio_entry->ops_data(tap);
+	pktio_ops_tap_data_t *tap = odp_ops_data(pktio_entry, tap);
 
 	for (i = 0; i < len; i++) {
 		pkt_len = odp_packet_len(pkts[i]);
@@ -332,11 +333,11 @@  static int tap_pktio_send(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
 static uint32_t tap_mtu_get(pktio_entry_t *pktio_entry)
 {
 	uint32_t ret;
+	pktio_ops_tap_data_t *tap = odp_ops_data(pktio_entry, tap);
 
-	ret =  mtu_get_fd(pktio_entry->ops_data(tap).skfd,
-			  pktio_entry->s.name + 4);
+	ret =  mtu_get_fd(tap->skfd, pktio_entry->s.name + 4);
 	if (ret > 0)
-		pktio_entry->ops_data(tap).mtu = ret;
+		tap->mtu = ret;
 
 	return ret;
 }
@@ -344,19 +345,24 @@  static uint32_t tap_mtu_get(pktio_entry_t *pktio_entry)
 static int tap_promisc_mode_set(pktio_entry_t *pktio_entry,
 				odp_bool_t enable)
 {
-	return promisc_mode_set_fd(pktio_entry->ops_data(tap).skfd,
+	pktio_ops_tap_data_t *tap = odp_ops_data(pktio_entry, tap);
+
+	return promisc_mode_set_fd(tap->skfd,
 				   pktio_entry->s.name + 4, enable);
 }
 
 static int tap_promisc_mode_get(pktio_entry_t *pktio_entry)
 {
-	return promisc_mode_get_fd(pktio_entry->ops_data(tap).skfd,
-				   pktio_entry->s.name + 4);
+	pktio_ops_tap_data_t *tap = odp_ops_data(pktio_entry, tap);
+
+	return promisc_mode_get_fd(tap->skfd, pktio_entry->s.name + 4);
 }
 
 static int tap_mac_addr_get(pktio_entry_t *pktio_entry, void *mac_addr)
 {
-	memcpy(mac_addr, pktio_entry->ops_data(tap).if_mac, ETH_ALEN);
+	pktio_ops_tap_data_t *tap = odp_ops_data(pktio_entry, tap);
+
+	memcpy(mac_addr, tap->if_mac, ETH_ALEN);
 	return ETH_ALEN;
 }