diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am
index b3ee86c67..6261cf0a6 100644
--- a/platform/linux-generic/Makefile.am
+++ b/platform/linux-generic/Makefile.am
@@ -187,12 +187,12 @@ noinst_HEADERS = \
 		  ${srcdir}/include/odp_packet_io_internal.h \
 		  ${srcdir}/include/odp_packet_io_ring_internal.h \
 		  ${srcdir}/include/odp_packet_dpdk.h \
-		  ${srcdir}/include/odp_packet_tap.h \
 		  ${srcdir}/include/odp_pktio_ops_ipc.h \
 		  ${srcdir}/include/odp_pktio_ops_loopback.h \
 		  ${srcdir}/include/odp_pktio_ops_netmap.h \
 		  ${srcdir}/include/odp_pktio_ops_pcap.h \
 		  ${srcdir}/include/odp_pktio_ops_socket.h \
+		  ${srcdir}/include/odp_pktio_ops_tap.h \
 		  ${srcdir}/include/odp_pktio_ops_subsystem.h \
 		  ${srcdir}/include/odp_pkt_queue_internal.h \
 		  ${srcdir}/include/odp_pool_internal.h \
diff --git a/platform/linux-generic/include/odp_packet_io_internal.h b/platform/linux-generic/include/odp_packet_io_internal.h
index f58ef8721..7c2833fc6 100644
--- a/platform/linux-generic/include/odp_packet_io_internal.h
+++ b/platform/linux-generic/include/odp_packet_io_internal.h
@@ -31,7 +31,6 @@ extern "C" {
 #include <net/if.h>
 
 #define PKTIO_MAX_QUEUES 64
-#include <odp_packet_tap.h>
 #include <odp_packet_dpdk.h>
 
 /* Forward declaration */
@@ -59,7 +58,6 @@ struct pktio_entry {
 	odp_pktio_t handle;		/**< pktio handle */
 	union {
 		pkt_dpdk_t pkt_dpdk;		/**< using DPDK for IO */
-		pkt_tap_t pkt_tap;		/**< using TAP for IO */
 	};
 	enum {
 		/* Not allocated */
diff --git a/platform/linux-generic/include/odp_pktio_ops_subsystem.h b/platform/linux-generic/include/odp_pktio_ops_subsystem.h
index 952d9be55..5c01e34f6 100644
--- a/platform/linux-generic/include/odp_pktio_ops_subsystem.h
+++ b/platform/linux-generic/include/odp_pktio_ops_subsystem.h
@@ -84,6 +84,7 @@ typedef ODP_MODULE_CLASS(pktio_ops) {
 #include <odp_pktio_ops_netmap.h>
 #include <odp_pktio_ops_pcap.h>
 #include <odp_pktio_ops_socket.h>
+#include <odp_pktio_ops_tap.h>
 
 /* Per implementation private data
  * TODO: refactory each implementation to hide it internally
@@ -95,6 +96,7 @@ typedef union {
 	pktio_ops_pcap_data_t pcap;
 	pktio_ops_socket_data_t socket;
 	pktio_ops_socket_mmap_data_t mmap;
+	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_packet_tap.h b/platform/linux-generic/include/odp_pktio_ops_tap.h
similarity index 85%
rename from platform/linux-generic/include/odp_packet_tap.h
rename to platform/linux-generic/include/odp_pktio_ops_tap.h
index a90bfbce0..e8e2e270e 100644
--- a/platform/linux-generic/include/odp_packet_tap.h
+++ b/platform/linux-generic/include/odp_pktio_ops_tap.h
@@ -4,8 +4,8 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-#ifndef ODP_PACKET_TAP_H_
-#define ODP_PACKET_TAP_H_
+#ifndef ODP_PACKET_OPS_TAP_H_
+#define ODP_PACKET_OPS_TAP_H_
 
 #include <odp/api/pool.h>
 
@@ -16,6 +16,6 @@ typedef struct {
 	unsigned char if_mac[ETH_ALEN];	/**< MAC address of pktio side (not a
 					     MAC address of kernel interface)*/
 	odp_pool_t pool;		/**< pool to alloc packets from */
-} pkt_tap_t;
+} pktio_ops_tap_data_t;
 
 #endif
diff --git a/platform/linux-generic/pktio/tap.c b/platform/linux-generic/pktio/tap.c
index a5c15e11e..090e51b66 100644
--- a/platform/linux-generic/pktio/tap.c
+++ b/platform/linux-generic/pktio/tap.c
@@ -63,7 +63,7 @@ static int tap_pktio_open(odp_pktio_t id ODP_UNUSED,
 	int fd, skfd, flags;
 	uint32_t mtu;
 	struct ifreq ifr;
-	pkt_tap_t *tap = &pktio_entry->s.pkt_tap;
+	pktio_ops_tap_data_t *tap = &pktio_entry->ops_data(tap);
 
 	if (strncmp(devname, "tap:", 4) != 0)
 		return -1;
@@ -163,7 +163,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;
-	pkt_tap_t *tap = &pktio_entry->s.pkt_tap;
+	pktio_ops_tap_data_t *tap = &pktio_entry->ops_data(tap);
 
 	if (tap->fd != -1 && close(tap->fd) != 0) {
 		__odp_errno = errno;
@@ -190,13 +190,13 @@ 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->s.pkt_tap.pool,
+					&pktio_entry->ops_data(tap).pool,
 					&parsed_hdr)) {
 			return ODP_PACKET_INVALID;
 		}
 	}
 
-	num = packet_alloc_multi(pktio_entry->s.pkt_tap.pool, len, &pkt, 1);
+	num = packet_alloc_multi(pktio_entry->ops_data(tap).pool, len, &pkt, 1);
 
 	if (num != 1)
 		return ODP_PACKET_INVALID;
@@ -227,7 +227,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];
-	pkt_tap_t *tap = &pktio_entry->s.pkt_tap;
+	pktio_ops_tap_data_t *tap = &pktio_entry->ops_data(tap);
 	odp_time_t ts_val;
 	odp_time_t *ts = NULL;
 
@@ -267,7 +267,7 @@ static int tap_pktio_send_lockless(pktio_entry_t *pktio_entry,
 	int i, n;
 	uint32_t pkt_len;
 	uint8_t buf[BUF_SIZE];
-	pkt_tap_t *tap = &pktio_entry->s.pkt_tap;
+	pktio_ops_tap_data_t *tap = &pktio_entry->ops_data(tap);
 
 	for (i = 0; i < len; i++) {
 		pkt_len = odp_packet_len(pkts[i]);
@@ -330,10 +330,10 @@ static uint32_t tap_mtu_get(pktio_entry_t *pktio_entry)
 {
 	uint32_t ret;
 
-	ret =  mtu_get_fd(pktio_entry->s.pkt_tap.skfd,
+	ret =  mtu_get_fd(pktio_entry->ops_data(tap).skfd,
 			  pktio_entry->s.name + 4);
 	if (ret > 0)
-		pktio_entry->s.pkt_tap.mtu = ret;
+		pktio_entry->ops_data(tap).mtu = ret;
 
 	return ret;
 }
@@ -341,19 +341,19 @@ 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->s.pkt_tap.skfd,
+	return promisc_mode_set_fd(pktio_entry->ops_data(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->s.pkt_tap.skfd,
+	return promisc_mode_get_fd(pktio_entry->ops_data(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->s.pkt_tap.if_mac, ETH_ALEN);
+	memcpy(mac_addr, pktio_entry->ops_data(tap).if_mac, ETH_ALEN);
 	return ETH_ALEN;
 }
 
