DPDK-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: dev@dpdk.org
Cc: Stephen Hemminger <stephen@networkplumber.org>,
	Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Subject: [RFC 6/6] port: remove legacy API
Date: Fri, 24 Jul 2026 09:44:02 -0700	[thread overview]
Message-ID: <20260724164520.192203-7-stephen@networkplumber.org> (raw)
In-Reply-To: <20260724164520.192203-1-stephen@networkplumber.org>

Remove the legacy port library API (rte_port_*) as announced for
removal in the 24.11 release. The SWX port API remains.

The sched, ip_frag, cryptodev and eventdev dependencies were only
used by the legacy port types, so drop them. The pcap dependency
is kept for the SWX source/sink port.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 doc/api/doxy-api-index.md                  |   7 -
 doc/guides/prog_guide/img/figure32.png     | Bin 11603 -> 0 bytes
 doc/guides/prog_guide/packet_framework.rst | 132 +---
 doc/guides/rel_notes/deprecation.rst       |   5 -
 doc/guides/rel_notes/release_26_11.rst     |   3 +
 lib/port/meson.build                       |  22 +-
 lib/port/port_log.c                        |   7 -
 lib/port/port_log.h                        |  11 -
 lib/port/rte_port.h                        | 223 ------
 lib/port/rte_port_ethdev.c                 | 530 --------------
 lib/port/rte_port_ethdev.h                 |  75 --
 lib/port/rte_port_eventdev.c               | 590 ---------------
 lib/port/rte_port_eventdev.h               |  94 ---
 lib/port/rte_port_fd.c                     | 524 --------------
 lib/port/rte_port_fd.h                     |  74 --
 lib/port/rte_port_frag.c                   | 280 --------
 lib/port/rte_port_frag.h                   |  70 --
 lib/port/rte_port_ras.c                    | 336 ---------
 lib/port/rte_port_ras.h                    |  58 --
 lib/port/rte_port_ring.c                   | 796 ---------------------
 lib/port/rte_port_ring.h                   |  91 ---
 lib/port/rte_port_sched.c                  | 298 --------
 lib/port/rte_port_sched.h                  |  52 --
 lib/port/rte_port_source_sink.c            | 616 ----------------
 lib/port/rte_port_source_sink.h            |  57 --
 lib/port/rte_port_sym_crypto.c             | 558 ---------------
 lib/port/rte_port_sym_crypto.h             |  92 ---
 27 files changed, 10 insertions(+), 5591 deletions(-)
 delete mode 100644 doc/guides/prog_guide/img/figure32.png
 delete mode 100644 lib/port/port_log.c
 delete mode 100644 lib/port/port_log.h
 delete mode 100644 lib/port/rte_port.h
 delete mode 100644 lib/port/rte_port_ethdev.c
 delete mode 100644 lib/port/rte_port_ethdev.h
 delete mode 100644 lib/port/rte_port_eventdev.c
 delete mode 100644 lib/port/rte_port_eventdev.h
 delete mode 100644 lib/port/rte_port_fd.c
 delete mode 100644 lib/port/rte_port_fd.h
 delete mode 100644 lib/port/rte_port_frag.c
 delete mode 100644 lib/port/rte_port_frag.h
 delete mode 100644 lib/port/rte_port_ras.c
 delete mode 100644 lib/port/rte_port_ras.h
 delete mode 100644 lib/port/rte_port_ring.c
 delete mode 100644 lib/port/rte_port_ring.h
 delete mode 100644 lib/port/rte_port_sched.c
 delete mode 100644 lib/port/rte_port_sched.h
 delete mode 100644 lib/port/rte_port_source_sink.c
 delete mode 100644 lib/port/rte_port_source_sink.h
 delete mode 100644 lib/port/rte_port_sym_crypto.c
 delete mode 100644 lib/port/rte_port_sym_crypto.h

diff --git a/doc/api/doxy-api-index.md b/doc/api/doxy-api-index.md
index 760b770d6f..16827a602b 100644
--- a/doc/api/doxy-api-index.md
+++ b/doc/api/doxy-api-index.md
@@ -182,13 +182,6 @@ The public API headers are grouped by topics:
   [bitmap](@ref rte_bitmap.h)
 
 - **packet framework**:
-  * [port](@ref rte_port.h):
-    [ethdev](@ref rte_port_ethdev.h),
-    [ring](@ref rte_port_ring.h),
-    [frag](@ref rte_port_frag.h),
-    [reass](@ref rte_port_ras.h),
-    [sched](@ref rte_port_sched.h),
-    [src/sink](@ref rte_port_source_sink.h)
   * SWX pipeline:
     [control](@ref rte_swx_ctl.h),
     [extern](@ref rte_swx_extern.h),
diff --git a/doc/guides/prog_guide/img/figure32.png b/doc/guides/prog_guide/img/figure32.png
deleted file mode 100644
index 5215113fd9d533ff56526e21e1832bc7a6cabd04..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 11603
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
XpF?WbPu~YeLUe8#Xq8>R7xljYKq0l$

diff --git a/doc/guides/prog_guide/packet_framework.rst b/doc/guides/prog_guide/packet_framework.rst
index 98cf3be109..3b5ede7dc2 100644
--- a/doc/guides/prog_guide/packet_framework.rst
+++ b/doc/guides/prog_guide/packet_framework.rst
@@ -4,132 +4,12 @@
 Packet Framework Library
 ========================
 
-Design Objectives
------------------
-
-The main design objectives for the DPDK Packet Framework are:
-
-*   Provide standard methodology to build complex packet processing pipelines.
-    Provide reusable and extensible templates for the commonly used pipeline functional blocks;
-
-*   Provide capability to switch between pure software and hardware-accelerated implementations for the same pipeline functional block;
-
-*   Provide the best trade-off between flexibility and performance.
-    Hardcoded pipelines usually provide the best performance, but are not flexible,
-    while developing flexible frameworks is never a problem, but performance is usually low;
-
-*   Provide a framework that is logically similar to Open Flow.
-
-Overview
---------
-
-Packet processing applications are frequently structured as pipelines of multiple stages,
-with the logic of each stage glued around a lookup table.
-For each incoming packet, the table defines the set of actions to be applied to the packet,
-as well as the next stage to send the packet to.
-
-The DPDK Packet Framework minimizes the development effort required to build packet processing pipelines
-by defining a standard methodology for pipeline development,
-as well as providing libraries of reusable templates for the commonly used pipeline blocks.
-
-The pipeline is constructed by connecting the set of input ports with the set of output ports
-through the set of tables in a tree-like topology.
-As a result of lookup operation for the current packet in the current table,
-one of the table entries (on lookup hit) or the default table entry (on lookup miss)
-provides the set of actions to be applied on the current packet,
-as well as the next hop for the packet, which can be either another table, an output port or packet drop.
-
-An example of packet processing pipeline is presented in :numref:`packet_framework_figure_32`:
-
-.. _packet_framework_figure_32:
-
-.. figure:: img/figure32.*
-
-   Example of Packet Processing Pipeline where Input Ports 0 and 1
-   are Connected with Output Ports 0, 1 and 2 through Tables 0 and 1
-
-
-Port Library Design
--------------------
-
-Port Types
-~~~~~~~~~~
-
-:numref:`packet_framework_table_qos_19` is a non-exhaustive list of ports
-that can be implemented with the Packet Framework.
-
-.. _packet_framework_table_qos_19:
-
-.. table:: Port Types
-
-   +---+------------------+---------------------------------------------------------------------------------------+
-   | # | Port type        | Description                                                                           |
-   |   |                  |                                                                                       |
-   +===+==================+=======================================================================================+
-   | 1 | SW ring          | SW circular buffer used for message passing between the application threads. Uses     |
-   |   |                  | the DPDK rte_ring primitive. Expected to be the most commonly used type of            |
-   |   |                  | port.                                                                                 |
-   |   |                  |                                                                                       |
-   +---+------------------+---------------------------------------------------------------------------------------+
-   | 2 | HW ring          | Queue of buffer descriptors used to interact with NIC, switch or accelerator ports.   |
-   |   |                  | For NIC ports, it uses the DPDK rte_eth_rx_queue or rte_eth_tx_queue                  |
-   |   |                  | primitives.                                                                           |
-   |   |                  |                                                                                       |
-   +---+------------------+---------------------------------------------------------------------------------------+
-   | 3 | IP reassembly    | Input packets are either IP fragments or complete IP datagrams. Output packets are    |
-   |   |                  | complete IP datagrams.                                                                |
-   |   |                  |                                                                                       |
-   +---+------------------+---------------------------------------------------------------------------------------+
-   | 4 | IP fragmentation | Input packets are jumbo (IP datagrams with length bigger than MTU) or non-jumbo       |
-   |   |                  | packets. Output packets are non-jumbo packets.                                        |
-   |   |                  |                                                                                       |
-   +---+------------------+---------------------------------------------------------------------------------------+
-   | 5 | Traffic manager  | Traffic manager attached to a specific NIC output port, performing congestion         |
-   |   |                  | management and hierarchical scheduling according to pre-defined SLAs.                 |
-   |   |                  |                                                                                       |
-   +---+------------------+---------------------------------------------------------------------------------------+
-   | 6 | Source           | Input port used as packet generator. Similar to Linux kernel /dev/zero character      |
-   |   |                  | device.                                                                               |
-   |   |                  |                                                                                       |
-   +---+------------------+---------------------------------------------------------------------------------------+
-   | 7 | Sink             | Output port used to drop all input packets. Similar to Linux kernel /dev/null         |
-   |   |                  | character device.                                                                     |
-   |   |                  |                                                                                       |
-   +---+------------------+---------------------------------------------------------------------------------------+
-   | 8 | Sym_crypto       | Output port used to extract DPDK Cryptodev operations from a fixed offset of the      |
-   |   |                  | packet and then enqueue to the Cryptodev PMD. Input port used to dequeue the          |
-   |   |                  | Cryptodev operations from the Cryptodev PMD and then retrieve the packets from them.  |
-   +---+------------------+---------------------------------------------------------------------------------------+
-
-Port Interface
-~~~~~~~~~~~~~~
-
-Each port is unidirectional, i.e. either input port or output port.
-Each input/output port is required to implement an abstract interface that
-defines the initialization and run-time operation of the port.
-The port abstract interface is described below.
-
-.. table:: 20 Port Abstract Interface
-
-   +---+----------------+-----------------------------------------------------------------------------------------+
-   | # | Port Operation | Description                                                                             |
-   |   |                |                                                                                         |
-   +===+================+=========================================================================================+
-   | 1 | Create         | Create the low-level port object (e.g. queue). Can internally allocate memory.          |
-   |   |                |                                                                                         |
-   +---+----------------+-----------------------------------------------------------------------------------------+
-   | 2 | Free           | Free the resources (e.g. memory) used by the low-level port object.                     |
-   |   |                |                                                                                         |
-   +---+----------------+-----------------------------------------------------------------------------------------+
-   | 3 | RX             | Read a burst of input packets. Non-blocking operation. Only defined for input ports.    |
-   |   |                |                                                                                         |
-   +---+----------------+-----------------------------------------------------------------------------------------+
-   | 4 | TX             | Write a burst of input packets. Non-blocking operation. Only defined for output ports.  |
-   |   |                |                                                                                         |
-   +---+----------------+-----------------------------------------------------------------------------------------+
-   | 5 | Flush          | Flush the output buffer. Only defined for output ports.                                 |
-   |   |                |                                                                                         |
-   +---+----------------+-----------------------------------------------------------------------------------------+
+The Packet Framework is a set of libraries (port, table and pipeline)
+for building flexible packet processing pipelines:
+the pipeline is constructed by connecting a set of input ports
+with a set of output ports through a set of match-action tables.
+The current framework API is the Software Switch (SWX) pipeline
+described below.
 
 The Software Switch (SWX) Pipeline
 ----------------------------------
diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index 9dcf86098f..75b56b0e10 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -148,11 +148,6 @@ Deprecation Notices
   The graph walk functions will process nodes in topological order
   using bitmap scanning instead of the circular buffer.
 
-* port: The port library legacy API (functions rte_port_*)
-  will be deprecated and subsequently removed in DPDK 24.11 release.
-  Before this, the new port library API (functions rte_swx_port_*)
-  will gradually transition from experimental to stable status.
-
 * bus/vmbus: Starting DPDK 25.11, all the vmbus API defined in
   ``drivers/bus/vmbus/rte_bus_vmbus.h`` will become internal to DPDK.
   Those API functions are used internally by DPDK core and netvsc PMD.
diff --git a/doc/guides/rel_notes/release_26_11.rst b/doc/guides/rel_notes/release_26_11.rst
index 306482c1d9..bc0ac01d5d 100644
--- a/doc/guides/rel_notes/release_26_11.rst
+++ b/doc/guides/rel_notes/release_26_11.rst
@@ -82,6 +82,9 @@ Removed Items
 * Removed the legacy table library API (``rte_table_*`` functions).
   The SWX table API (``rte_swx_table_*``) remains.
 
+* Removed the legacy port library API (``rte_port_*`` functions).
+  The SWX port API (``rte_swx_port_*``) remains.
+
 
 API Changes
 -----------
diff --git a/lib/port/meson.build b/lib/port/meson.build
index b597772872..ef88b917a3 100644
--- a/lib/port/meson.build
+++ b/lib/port/meson.build
@@ -8,39 +8,19 @@ if is_windows
 endif
 
 sources = files(
-        'port_log.c',
-        'rte_port_ethdev.c',
-        'rte_port_fd.c',
-        'rte_port_frag.c',
-        'rte_port_ras.c',
-        'rte_port_ring.c',
-        'rte_port_sched.c',
-        'rte_port_source_sink.c',
-        'rte_port_sym_crypto.c',
-        'rte_port_eventdev.c',
         'rte_swx_port_ethdev.c',
         'rte_swx_port_fd.c',
         'rte_swx_port_ring.c',
         'rte_swx_port_source_sink.c',
 )
 headers = files(
-        'rte_port_ethdev.h',
-        'rte_port_fd.h',
-        'rte_port_frag.h',
-        'rte_port_ras.h',
-        'rte_port.h',
-        'rte_port_ring.h',
-        'rte_port_sched.h',
-        'rte_port_source_sink.h',
-        'rte_port_sym_crypto.h',
-        'rte_port_eventdev.h',
         'rte_swx_port.h',
         'rte_swx_port_ethdev.h',
         'rte_swx_port_fd.h',
         'rte_swx_port_ring.h',
         'rte_swx_port_source_sink.h',
 )
-deps += ['ethdev', 'sched', 'ip_frag', 'cryptodev', 'eventdev']
+deps += ['ethdev']
 
 if dpdk_conf.has('RTE_HAS_LIBPCAP')
     dpdk_conf.set('RTE_PORT_PCAP', 1)
diff --git a/lib/port/port_log.c b/lib/port/port_log.c
deleted file mode 100644
index e7a10d80ef..0000000000
--- a/lib/port/port_log.c
+++ /dev/null
@@ -1,7 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright (c) 2024 Stephen Hemminger <stephen@networkplumber.org>
- */
-
-#include <rte_log.h>
-
-RTE_LOG_REGISTER_DEFAULT(port_logtype, INFO);
diff --git a/lib/port/port_log.h b/lib/port/port_log.h
deleted file mode 100644
index 28d75ee48b..0000000000
--- a/lib/port/port_log.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright (c) 2023 Red Hat, Inc.
- */
-
-#include <rte_log.h>
-
-extern int port_logtype;
-#define RTE_LOGTYPE_PORT port_logtype
-
-#define PORT_LOG(level, ...) \
-	RTE_LOG_LINE(level, PORT, "" __VA_ARGS__)
diff --git a/lib/port/rte_port.h b/lib/port/rte_port.h
deleted file mode 100644
index 81f57c41a5..0000000000
--- a/lib/port/rte_port.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2014 Intel Corporation
- */
-
-#ifndef __INCLUDE_RTE_PORT_H__
-#define __INCLUDE_RTE_PORT_H__
-
-/**
- * @file
- * RTE Port
- *
- * This tool is part of the DPDK Packet Framework tool suite and provides
- * a standard interface to implement different types of packet ports.
- */
-
-#include <stdint.h>
-#include <rte_mbuf.h>
-
-/**@{
- * Macros to allow accessing metadata stored in the mbuf headroom
- * just beyond the end of the mbuf data structure returned by a port
- */
-#define RTE_MBUF_METADATA_UINT8_PTR(mbuf, offset)          \
-	(&((uint8_t *)(mbuf))[offset])
-#define RTE_MBUF_METADATA_UINT16_PTR(mbuf, offset)         \
-	((uint16_t *) RTE_MBUF_METADATA_UINT8_PTR(mbuf, offset))
-#define RTE_MBUF_METADATA_UINT32_PTR(mbuf, offset)         \
-	((uint32_t *) RTE_MBUF_METADATA_UINT8_PTR(mbuf, offset))
-#define RTE_MBUF_METADATA_UINT64_PTR(mbuf, offset)         \
-	((uint64_t *) RTE_MBUF_METADATA_UINT8_PTR(mbuf, offset))
-
-#define RTE_MBUF_METADATA_UINT8(mbuf, offset)              \
-	(*RTE_MBUF_METADATA_UINT8_PTR(mbuf, offset))
-#define RTE_MBUF_METADATA_UINT16(mbuf, offset)             \
-	(*RTE_MBUF_METADATA_UINT16_PTR(mbuf, offset))
-#define RTE_MBUF_METADATA_UINT32(mbuf, offset)             \
-	(*RTE_MBUF_METADATA_UINT32_PTR(mbuf, offset))
-#define RTE_MBUF_METADATA_UINT64(mbuf, offset)             \
-	(*RTE_MBUF_METADATA_UINT64_PTR(mbuf, offset))
-/**@}*/
-
-/*
- * Port IN
- */
-/** Maximum number of packets read from any input port in a single burst.
-Cannot be changed. */
-#define RTE_PORT_IN_BURST_SIZE_MAX                         64
-
-/** Input port statistics */
-struct rte_port_in_stats {
-	uint64_t n_pkts_in;
-	uint64_t n_pkts_drop;
-};
-
-/**
- * Input port create
- *
- * @param params
- *   Parameters for input port creation
- * @param socket_id
- *   CPU socket ID (e.g. for memory allocation purpose)
- * @return
- *   Handle to input port instance
- */
-typedef void* (*rte_port_in_op_create)(void *params, int socket_id);
-
-/**
- * Input port free
- *
- * @param port
- *   Handle to input port instance
- * @return
- *   0 on success, error code otherwise
- */
-typedef int (*rte_port_in_op_free)(void *port);
-
-/**
- * Input port packet burst RX
- *
- * @param port
- *   Handle to input port instance
- * @param pkts
- *   Burst of input packets
- * @param n_pkts
- *   Number of packets in the input burst
- * @return
- *   0 on success, error code otherwise
- */
-typedef int (*rte_port_in_op_rx)(
-	void *port,
-	struct rte_mbuf **pkts,
-	uint32_t n_pkts);
-
-/**
- * Input port stats get
- *
- * @param port
- *   Handle to output port instance
- * @param stats
- *   Handle to port_in stats struct to copy data
- * @param clear
- *   Flag indicating that stats should be cleared after read
- *
- * @return
- *   Error code or 0 on success.
- */
-typedef int (*rte_port_in_op_stats_read)(
-		void *port,
-		struct rte_port_in_stats *stats,
-		int clear);
-
-/** Input port interface defining the input port operation */
-struct rte_port_in_ops {
-	rte_port_in_op_create f_create;      /**< Create */
-	rte_port_in_op_free f_free;          /**< Free */
-	rte_port_in_op_rx f_rx;              /**< Packet RX (packet burst) */
-	rte_port_in_op_stats_read f_stats;   /**< Stats */
-};
-
-/*
- * Port OUT
- */
-/** Output port statistics */
-struct rte_port_out_stats {
-	uint64_t n_pkts_in;
-	uint64_t n_pkts_drop;
-};
-
-/**
- * Output port create
- *
- * @param params
- *   Parameters for output port creation
- * @param socket_id
- *   CPU socket ID (e.g. for memory allocation purpose)
- * @return
- *   Handle to output port instance
- */
-typedef void* (*rte_port_out_op_create)(void *params, int socket_id);
-
-/**
- * Output port free
- *
- * @param port
- *   Handle to output port instance
- * @return
- *   0 on success, error code otherwise
- */
-typedef int (*rte_port_out_op_free)(void *port);
-
-/**
- * Output port single packet TX
- *
- * @param port
- *   Handle to output port instance
- * @param pkt
- *   Input packet
- * @return
- *   0 on success, error code otherwise
- */
-typedef int (*rte_port_out_op_tx)(
-	void *port,
-	struct rte_mbuf *pkt);
-
-/**
- * Output port packet burst TX
- *
- * @param port
- *   Handle to output port instance
- * @param pkts
- *   Burst of input packets specified as array of up to 64 pointers to struct
- *   rte_mbuf
- * @param pkts_mask
- *   64-bit bitmask specifying which packets in the input burst are valid. When
- *   pkts_mask bit n is set, then element n of pkts array is pointing to a
- *   valid packet. Otherwise, element n of pkts array will not be accessed.
- * @return
- *   0 on success, error code otherwise
- */
-typedef int (*rte_port_out_op_tx_bulk)(
-	void *port,
-	struct rte_mbuf **pkts,
-	uint64_t pkts_mask);
-
-/**
- * Output port flush
- *
- * @param port
- *   Handle to output port instance
- * @return
- *   0 on success, error code otherwise
- */
-typedef int (*rte_port_out_op_flush)(void *port);
-
-/**
- * Output port stats read
- *
- * @param port
- *   Handle to output port instance
- * @param stats
- *   Handle to port_out stats struct to copy data
- * @param clear
- *   Flag indicating that stats should be cleared after read
- *
- * @return
- *   Error code or 0 on success.
- */
-typedef int (*rte_port_out_op_stats_read)(
-		void *port,
-		struct rte_port_out_stats *stats,
-		int clear);
-
-/** Output port interface defining the output port operation */
-struct rte_port_out_ops {
-	rte_port_out_op_create f_create;      /**< Create */
-	rte_port_out_op_free f_free;          /**< Free */
-	rte_port_out_op_tx f_tx;              /**< Packet TX (single packet) */
-	rte_port_out_op_tx_bulk f_tx_bulk;    /**< Packet TX (packet burst) */
-	rte_port_out_op_flush f_flush;        /**< Flush */
-	rte_port_out_op_stats_read f_stats;   /**< Stats */
-};
-
-#endif
diff --git a/lib/port/rte_port_ethdev.c b/lib/port/rte_port_ethdev.c
deleted file mode 100644
index bdab2fbf6c..0000000000
--- a/lib/port/rte_port_ethdev.c
+++ /dev/null
@@ -1,530 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2014 Intel Corporation
- */
-#include <string.h>
-#include <stdint.h>
-
-#include <eal_export.h>
-#include <rte_mbuf.h>
-#include <rte_ethdev.h>
-#include <rte_malloc.h>
-
-#include "rte_port_ethdev.h"
-
-#include "port_log.h"
-
-/*
- * Port ETHDEV Reader
- */
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_ETHDEV_READER_STATS_PKTS_IN_ADD(port, val) \
-	port->stats.n_pkts_in += val
-#define RTE_PORT_ETHDEV_READER_STATS_PKTS_DROP_ADD(port, val) \
-	port->stats.n_pkts_drop += val
-
-#else
-
-#define RTE_PORT_ETHDEV_READER_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_ETHDEV_READER_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_ethdev_reader {
-	struct rte_port_in_stats stats;
-
-	uint16_t queue_id;
-	uint16_t port_id;
-};
-
-static void *
-rte_port_ethdev_reader_create(void *params, int socket_id)
-{
-	struct rte_port_ethdev_reader_params *conf =
-			params;
-	struct rte_port_ethdev_reader *port;
-
-	/* Check input parameters */
-	if (conf == NULL) {
-		PORT_LOG(ERR, "%s: params is NULL", __func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate port", __func__);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->port_id = conf->port_id;
-	port->queue_id = conf->queue_id;
-
-	return port;
-}
-
-static int
-rte_port_ethdev_reader_rx(void *port, struct rte_mbuf **pkts, uint32_t n_pkts)
-{
-	struct rte_port_ethdev_reader *p =
-		port;
-	uint16_t rx_pkt_cnt;
-
-	rx_pkt_cnt = rte_eth_rx_burst(p->port_id, p->queue_id, pkts, n_pkts);
-	RTE_PORT_ETHDEV_READER_STATS_PKTS_IN_ADD(p, rx_pkt_cnt);
-	return rx_pkt_cnt;
-}
-
-static int
-rte_port_ethdev_reader_free(void *port)
-{
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: port is NULL", __func__);
-		return -EINVAL;
-	}
-
-	rte_free(port);
-
-	return 0;
-}
-
-static int rte_port_ethdev_reader_stats_read(void *port,
-		struct rte_port_in_stats *stats, int clear)
-{
-	struct rte_port_ethdev_reader *p =
-			port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Port ETHDEV Writer
- */
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_ETHDEV_WRITER_STATS_PKTS_IN_ADD(port, val) \
-	port->stats.n_pkts_in += val
-#define RTE_PORT_ETHDEV_WRITER_STATS_PKTS_DROP_ADD(port, val) \
-	port->stats.n_pkts_drop += val
-
-#else
-
-#define RTE_PORT_ETHDEV_WRITER_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_ETHDEV_WRITER_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_ethdev_writer {
-	struct rte_port_out_stats stats;
-
-	struct rte_mbuf *tx_buf[2 * RTE_PORT_IN_BURST_SIZE_MAX];
-	uint32_t tx_burst_sz;
-	uint16_t tx_buf_count;
-	uint64_t bsz_mask;
-	uint16_t queue_id;
-	uint16_t port_id;
-};
-
-static void *
-rte_port_ethdev_writer_create(void *params, int socket_id)
-{
-	struct rte_port_ethdev_writer_params *conf =
-			params;
-	struct rte_port_ethdev_writer *port;
-
-	/* Check input parameters */
-	if ((conf == NULL) ||
-		(conf->tx_burst_sz == 0) ||
-		(conf->tx_burst_sz > RTE_PORT_IN_BURST_SIZE_MAX) ||
-		(!rte_is_power_of_2(conf->tx_burst_sz))) {
-		PORT_LOG(ERR, "%s: Invalid input parameters", __func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate port", __func__);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->port_id = conf->port_id;
-	port->queue_id = conf->queue_id;
-	port->tx_burst_sz = conf->tx_burst_sz;
-	port->tx_buf_count = 0;
-	port->bsz_mask = 1LLU << (conf->tx_burst_sz - 1);
-
-	return port;
-}
-
-static inline void
-send_burst(struct rte_port_ethdev_writer *p)
-{
-	uint32_t nb_tx;
-
-	nb_tx = rte_eth_tx_burst(p->port_id, p->queue_id,
-			 p->tx_buf, p->tx_buf_count);
-
-	RTE_PORT_ETHDEV_WRITER_STATS_PKTS_DROP_ADD(p, p->tx_buf_count - nb_tx);
-	for ( ; nb_tx < p->tx_buf_count; nb_tx++)
-		rte_pktmbuf_free(p->tx_buf[nb_tx]);
-
-	p->tx_buf_count = 0;
-}
-
-static int
-rte_port_ethdev_writer_tx(void *port, struct rte_mbuf *pkt)
-{
-	struct rte_port_ethdev_writer *p =
-		port;
-
-	p->tx_buf[p->tx_buf_count++] = pkt;
-	RTE_PORT_ETHDEV_WRITER_STATS_PKTS_IN_ADD(p, 1);
-	if (p->tx_buf_count >= p->tx_burst_sz)
-		send_burst(p);
-
-	return 0;
-}
-
-static int
-rte_port_ethdev_writer_tx_bulk(void *port,
-		struct rte_mbuf **pkts,
-		uint64_t pkts_mask)
-{
-	struct rte_port_ethdev_writer *p =
-		port;
-	uint64_t bsz_mask = p->bsz_mask;
-	uint32_t tx_buf_count = p->tx_buf_count;
-	uint64_t expr = (pkts_mask & (pkts_mask + 1)) |
-			((pkts_mask & bsz_mask) ^ bsz_mask);
-
-	if (expr == 0) {
-		uint64_t n_pkts = rte_popcount64(pkts_mask);
-		uint32_t n_pkts_ok;
-
-		if (tx_buf_count)
-			send_burst(p);
-
-		RTE_PORT_ETHDEV_WRITER_STATS_PKTS_IN_ADD(p, n_pkts);
-		n_pkts_ok = rte_eth_tx_burst(p->port_id, p->queue_id, pkts,
-			n_pkts);
-
-		RTE_PORT_ETHDEV_WRITER_STATS_PKTS_DROP_ADD(p, n_pkts - n_pkts_ok);
-		for ( ; n_pkts_ok < n_pkts; n_pkts_ok++) {
-			struct rte_mbuf *pkt = pkts[n_pkts_ok];
-
-			rte_pktmbuf_free(pkt);
-		}
-	} else {
-		for ( ; pkts_mask; ) {
-			uint32_t pkt_index = rte_ctz64(pkts_mask);
-			uint64_t pkt_mask = 1LLU << pkt_index;
-			struct rte_mbuf *pkt = pkts[pkt_index];
-
-			p->tx_buf[tx_buf_count++] = pkt;
-			RTE_PORT_ETHDEV_WRITER_STATS_PKTS_IN_ADD(p, 1);
-			pkts_mask &= ~pkt_mask;
-		}
-
-		p->tx_buf_count = tx_buf_count;
-		if (tx_buf_count >= p->tx_burst_sz)
-			send_burst(p);
-	}
-
-	return 0;
-}
-
-static int
-rte_port_ethdev_writer_flush(void *port)
-{
-	struct rte_port_ethdev_writer *p =
-		port;
-
-	if (p->tx_buf_count > 0)
-		send_burst(p);
-
-	return 0;
-}
-
-static int
-rte_port_ethdev_writer_free(void *port)
-{
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Port is NULL", __func__);
-		return -EINVAL;
-	}
-
-	rte_port_ethdev_writer_flush(port);
-	rte_free(port);
-
-	return 0;
-}
-
-static int rte_port_ethdev_writer_stats_read(void *port,
-		struct rte_port_out_stats *stats, int clear)
-{
-	struct rte_port_ethdev_writer *p =
-		port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Port ETHDEV Writer Nodrop
- */
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_ETHDEV_WRITER_NODROP_STATS_PKTS_IN_ADD(port, val) \
-	port->stats.n_pkts_in += val
-#define RTE_PORT_ETHDEV_WRITER_NODROP_STATS_PKTS_DROP_ADD(port, val) \
-	port->stats.n_pkts_drop += val
-
-#else
-
-#define RTE_PORT_ETHDEV_WRITER_NODROP_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_ETHDEV_WRITER_NODROP_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_ethdev_writer_nodrop {
-	struct rte_port_out_stats stats;
-
-	struct rte_mbuf *tx_buf[2 * RTE_PORT_IN_BURST_SIZE_MAX];
-	uint32_t tx_burst_sz;
-	uint16_t tx_buf_count;
-	uint64_t bsz_mask;
-	uint64_t n_retries;
-	uint16_t queue_id;
-	uint16_t port_id;
-};
-
-static void *
-rte_port_ethdev_writer_nodrop_create(void *params, int socket_id)
-{
-	struct rte_port_ethdev_writer_nodrop_params *conf =
-			params;
-	struct rte_port_ethdev_writer_nodrop *port;
-
-	/* Check input parameters */
-	if ((conf == NULL) ||
-		(conf->tx_burst_sz == 0) ||
-		(conf->tx_burst_sz > RTE_PORT_IN_BURST_SIZE_MAX) ||
-		(!rte_is_power_of_2(conf->tx_burst_sz))) {
-		PORT_LOG(ERR, "%s: Invalid input parameters", __func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate port", __func__);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->port_id = conf->port_id;
-	port->queue_id = conf->queue_id;
-	port->tx_burst_sz = conf->tx_burst_sz;
-	port->tx_buf_count = 0;
-	port->bsz_mask = 1LLU << (conf->tx_burst_sz - 1);
-
-	/*
-	 * When n_retries is 0 it means that we should wait for every packet to
-	 * send no matter how many retries should it take. To limit number of
-	 * branches in fast path, we use UINT64_MAX instead of branching.
-	 */
-	port->n_retries = (conf->n_retries == 0) ? UINT64_MAX : conf->n_retries;
-
-	return port;
-}
-
-static inline void
-send_burst_nodrop(struct rte_port_ethdev_writer_nodrop *p)
-{
-	uint32_t nb_tx = 0, i;
-
-	nb_tx = rte_eth_tx_burst(p->port_id, p->queue_id, p->tx_buf,
-			p->tx_buf_count);
-
-	/* We sent all the packets in a first try */
-	if (nb_tx >= p->tx_buf_count) {
-		p->tx_buf_count = 0;
-		return;
-	}
-
-	for (i = 0; i < p->n_retries; i++) {
-		nb_tx += rte_eth_tx_burst(p->port_id, p->queue_id,
-							 p->tx_buf + nb_tx, p->tx_buf_count - nb_tx);
-
-		/* We sent all the packets in more than one try */
-		if (nb_tx >= p->tx_buf_count) {
-			p->tx_buf_count = 0;
-			return;
-		}
-	}
-
-	/* We didn't send the packets in maximum allowed attempts */
-	RTE_PORT_ETHDEV_WRITER_NODROP_STATS_PKTS_DROP_ADD(p, p->tx_buf_count - nb_tx);
-	for ( ; nb_tx < p->tx_buf_count; nb_tx++)
-		rte_pktmbuf_free(p->tx_buf[nb_tx]);
-
-	p->tx_buf_count = 0;
-}
-
-static int
-rte_port_ethdev_writer_nodrop_tx(void *port, struct rte_mbuf *pkt)
-{
-	struct rte_port_ethdev_writer_nodrop *p =
-		port;
-
-	p->tx_buf[p->tx_buf_count++] = pkt;
-	RTE_PORT_ETHDEV_WRITER_NODROP_STATS_PKTS_IN_ADD(p, 1);
-	if (p->tx_buf_count >= p->tx_burst_sz)
-		send_burst_nodrop(p);
-
-	return 0;
-}
-
-static int
-rte_port_ethdev_writer_nodrop_tx_bulk(void *port,
-		struct rte_mbuf **pkts,
-		uint64_t pkts_mask)
-{
-	struct rte_port_ethdev_writer_nodrop *p =
-		port;
-
-	uint64_t bsz_mask = p->bsz_mask;
-	uint32_t tx_buf_count = p->tx_buf_count;
-	uint64_t expr = (pkts_mask & (pkts_mask + 1)) |
-			((pkts_mask & bsz_mask) ^ bsz_mask);
-
-	if (expr == 0) {
-		uint64_t n_pkts = rte_popcount64(pkts_mask);
-		uint32_t n_pkts_ok;
-
-		if (tx_buf_count)
-			send_burst_nodrop(p);
-
-		RTE_PORT_ETHDEV_WRITER_NODROP_STATS_PKTS_IN_ADD(p, n_pkts);
-		n_pkts_ok = rte_eth_tx_burst(p->port_id, p->queue_id, pkts,
-			n_pkts);
-
-		if (n_pkts_ok >= n_pkts)
-			return 0;
-
-		/*
-		 * If we did not manage to send all packets in single burst,
-		 * move remaining packets to the buffer and call send burst.
-		 */
-		for (; n_pkts_ok < n_pkts; n_pkts_ok++) {
-			struct rte_mbuf *pkt = pkts[n_pkts_ok];
-			p->tx_buf[p->tx_buf_count++] = pkt;
-		}
-		send_burst_nodrop(p);
-	} else {
-		for ( ; pkts_mask; ) {
-			uint32_t pkt_index = rte_ctz64(pkts_mask);
-			uint64_t pkt_mask = 1LLU << pkt_index;
-			struct rte_mbuf *pkt = pkts[pkt_index];
-
-			p->tx_buf[tx_buf_count++] = pkt;
-			RTE_PORT_ETHDEV_WRITER_NODROP_STATS_PKTS_IN_ADD(p, 1);
-			pkts_mask &= ~pkt_mask;
-		}
-
-		p->tx_buf_count = tx_buf_count;
-		if (tx_buf_count >= p->tx_burst_sz)
-			send_burst_nodrop(p);
-	}
-
-	return 0;
-}
-
-static int
-rte_port_ethdev_writer_nodrop_flush(void *port)
-{
-	struct rte_port_ethdev_writer_nodrop *p =
-		port;
-
-	if (p->tx_buf_count > 0)
-		send_burst_nodrop(p);
-
-	return 0;
-}
-
-static int
-rte_port_ethdev_writer_nodrop_free(void *port)
-{
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Port is NULL", __func__);
-		return -EINVAL;
-	}
-
-	rte_port_ethdev_writer_nodrop_flush(port);
-	rte_free(port);
-
-	return 0;
-}
-
-static int rte_port_ethdev_writer_nodrop_stats_read(void *port,
-		struct rte_port_out_stats *stats, int clear)
-{
-	struct rte_port_ethdev_writer_nodrop *p =
-		port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Summary of port operations
- */
-RTE_EXPORT_SYMBOL(rte_port_ethdev_reader_ops)
-struct rte_port_in_ops rte_port_ethdev_reader_ops = {
-	.f_create = rte_port_ethdev_reader_create,
-	.f_free = rte_port_ethdev_reader_free,
-	.f_rx = rte_port_ethdev_reader_rx,
-	.f_stats = rte_port_ethdev_reader_stats_read,
-};
-
-RTE_EXPORT_SYMBOL(rte_port_ethdev_writer_ops)
-struct rte_port_out_ops rte_port_ethdev_writer_ops = {
-	.f_create = rte_port_ethdev_writer_create,
-	.f_free = rte_port_ethdev_writer_free,
-	.f_tx = rte_port_ethdev_writer_tx,
-	.f_tx_bulk = rte_port_ethdev_writer_tx_bulk,
-	.f_flush = rte_port_ethdev_writer_flush,
-	.f_stats = rte_port_ethdev_writer_stats_read,
-};
-
-RTE_EXPORT_SYMBOL(rte_port_ethdev_writer_nodrop_ops)
-struct rte_port_out_ops rte_port_ethdev_writer_nodrop_ops = {
-	.f_create = rte_port_ethdev_writer_nodrop_create,
-	.f_free = rte_port_ethdev_writer_nodrop_free,
-	.f_tx = rte_port_ethdev_writer_nodrop_tx,
-	.f_tx_bulk = rte_port_ethdev_writer_nodrop_tx_bulk,
-	.f_flush = rte_port_ethdev_writer_nodrop_flush,
-	.f_stats = rte_port_ethdev_writer_nodrop_stats_read,
-};
diff --git a/lib/port/rte_port_ethdev.h b/lib/port/rte_port_ethdev.h
deleted file mode 100644
index 7729ff0da3..0000000000
--- a/lib/port/rte_port_ethdev.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2014 Intel Corporation
- */
-
-#ifndef __INCLUDE_RTE_PORT_ETHDEV_H__
-#define __INCLUDE_RTE_PORT_ETHDEV_H__
-
-/**
- * @file
- * RTE Port Ethernet Device
- *
- * ethdev_reader: input port built on top of pre-initialized NIC RX queue
- * ethdev_writer: output port built on top of pre-initialized NIC TX queue
- */
-
-#include <stdint.h>
-
-#include "rte_port.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** ethdev_reader port parameters */
-struct rte_port_ethdev_reader_params {
-	/** NIC RX port ID */
-	uint16_t port_id;
-
-	/** NIC RX queue ID */
-	uint16_t queue_id;
-};
-
-/** ethdev_reader port operations */
-extern struct rte_port_in_ops rte_port_ethdev_reader_ops;
-
-/** ethdev_writer port parameters */
-struct rte_port_ethdev_writer_params {
-	/** NIC RX port ID */
-	uint16_t port_id;
-
-	/** NIC RX queue ID */
-	uint16_t queue_id;
-
-	/** Recommended burst size to NIC TX queue. The actual burst size can be
-	bigger or smaller than this value. */
-	uint32_t tx_burst_sz;
-};
-
-/** ethdev_writer port operations */
-extern struct rte_port_out_ops rte_port_ethdev_writer_ops;
-
-/** ethdev_writer_nodrop port parameters */
-struct rte_port_ethdev_writer_nodrop_params {
-	/** NIC RX port ID */
-	uint16_t port_id;
-
-	/** NIC RX queue ID */
-	uint16_t queue_id;
-
-	/** Recommended burst size to NIC TX queue. The actual burst size can be
-	bigger or smaller than this value. */
-	uint32_t tx_burst_sz;
-
-	/** Maximum number of retries, 0 for no limit */
-	uint32_t n_retries;
-};
-
-/** ethdev_writer_nodrop port operations */
-extern struct rte_port_out_ops rte_port_ethdev_writer_nodrop_ops;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/lib/port/rte_port_eventdev.c b/lib/port/rte_port_eventdev.c
deleted file mode 100644
index c3a287b834..0000000000
--- a/lib/port/rte_port_eventdev.c
+++ /dev/null
@@ -1,590 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2019 Intel Corporation
- */
-
-#include <string.h>
-#include <stdint.h>
-
-#include <eal_export.h>
-#include <rte_mbuf.h>
-#include <rte_malloc.h>
-
-#include "rte_port_eventdev.h"
-
-#include "port_log.h"
-
-/*
- * Port EVENTDEV Reader
- */
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_EVENTDEV_READER_STATS_PKTS_IN_ADD(port, val) \
-	do {port->stats.n_pkts_in += val;} while (0)
-#define RTE_PORT_EVENTDEV_READER_STATS_PKTS_DROP_ADD(port, val) \
-	do {port->stats.n_pkts_drop += val;} while (0)
-
-#else
-
-#define RTE_PORT_EVENTDEV_READER_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_EVENTDEV_READER_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_eventdev_reader {
-	struct rte_port_in_stats stats;
-
-	uint8_t  eventdev_id;
-	uint16_t port_id;
-
-	struct rte_event ev[RTE_PORT_IN_BURST_SIZE_MAX];
-};
-
-static void *
-rte_port_eventdev_reader_create(void *params, int socket_id)
-{
-	struct rte_port_eventdev_reader_params *conf =
-			params;
-	struct rte_port_eventdev_reader *port;
-
-	/* Check input parameters */
-	if (conf == NULL) {
-		PORT_LOG(ERR, "%s: params is NULL", __func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-		RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate port", __func__);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->eventdev_id = conf->eventdev_id;
-	port->port_id = conf->port_id;
-
-	return port;
-}
-
-static int
-rte_port_eventdev_reader_rx(void *port, struct rte_mbuf **pkts, uint32_t n_pkts)
-{
-	struct rte_port_eventdev_reader *p = port;
-	uint16_t rx_evts_cnt, i;
-
-	rx_evts_cnt = rte_event_dequeue_burst(p->eventdev_id, p->port_id,
-			p->ev, n_pkts, 0);
-
-	for (i = 0; i < rx_evts_cnt; i++)
-		pkts[i] = p->ev[i].mbuf;
-
-	RTE_PORT_EVENTDEV_READER_STATS_PKTS_IN_ADD(p, rx_evts_cnt);
-
-	return rx_evts_cnt;
-}
-
-static int
-rte_port_eventdev_reader_free(void *port)
-{
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: port is NULL", __func__);
-		return -EINVAL;
-	}
-
-	rte_free(port);
-
-	return 0;
-}
-
-static int rte_port_eventdev_reader_stats_read(void *port,
-	struct rte_port_in_stats *stats, int clear)
-{
-	struct rte_port_eventdev_reader *p =
-			port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Port EVENTDEV Writer
- */
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_EVENTDEV_WRITER_STATS_PKTS_IN_ADD(port, val) \
-	do {port->stats.n_pkts_in += val;} while (0)
-#define RTE_PORT_EVENTDEV_WRITER_STATS_PKTS_DROP_ADD(port, val) \
-	do {port->stats.n_pkts_drop += val;} while (0)
-
-#else
-
-#define RTE_PORT_EVENTDEV_WRITER_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_EVENTDEV_WRITER_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_eventdev_writer {
-	struct rte_port_out_stats stats;
-
-	struct rte_event ev[2 * RTE_PORT_IN_BURST_SIZE_MAX];
-
-	uint32_t enq_burst_sz;
-	uint32_t enq_buf_count;
-	uint64_t bsz_mask;
-
-	uint8_t eventdev_id;
-	uint8_t port_id;
-	uint8_t queue_id;
-	uint8_t sched_type;
-	uint8_t evt_op;
-};
-
-static void *
-rte_port_eventdev_writer_create(void *params, int socket_id)
-{
-	struct rte_port_eventdev_writer_params *conf =
-			params;
-	struct rte_port_eventdev_writer *port;
-	unsigned int i;
-
-	/* Check input parameters */
-	if ((conf == NULL) ||
-		(conf->enq_burst_sz == 0) ||
-		(conf->enq_burst_sz > RTE_PORT_IN_BURST_SIZE_MAX) ||
-		(!rte_is_power_of_2(conf->enq_burst_sz))) {
-		PORT_LOG(ERR, "%s: Invalid input parameters", __func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-		RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate port", __func__);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->enq_burst_sz = conf->enq_burst_sz;
-	port->enq_buf_count = 0;
-	port->bsz_mask = 1LLU << (conf->enq_burst_sz - 1);
-
-	port->eventdev_id = conf->eventdev_id;
-	port->port_id = conf->port_id;
-	port->queue_id = conf->queue_id;
-	port->sched_type = conf->sched_type;
-	port->evt_op = conf->evt_op;
-	memset(&port->ev, 0, sizeof(port->ev));
-
-	for (i = 0; i < RTE_DIM(port->ev); i++) {
-		port->ev[i].queue_id = port->queue_id;
-		port->ev[i].sched_type = port->sched_type;
-		port->ev[i].op = port->evt_op;
-	}
-
-	return port;
-}
-
-static inline void
-send_burst(struct rte_port_eventdev_writer *p)
-{
-	uint32_t nb_enq;
-
-	nb_enq = rte_event_enqueue_burst(p->eventdev_id, p->port_id,
-			p->ev, p->enq_buf_count);
-
-	RTE_PORT_EVENTDEV_WRITER_STATS_PKTS_DROP_ADD(p, p->enq_buf_count -
-			nb_enq);
-
-	for (; nb_enq < p->enq_buf_count; nb_enq++)
-		rte_pktmbuf_free(p->ev[nb_enq].mbuf);
-
-	p->enq_buf_count = 0;
-}
-
-static int
-rte_port_eventdev_writer_tx(void *port, struct rte_mbuf *pkt)
-{
-	struct rte_port_eventdev_writer *p = port;
-
-	p->ev[p->enq_buf_count++].mbuf  = pkt;
-	RTE_PORT_EVENTDEV_WRITER_STATS_PKTS_IN_ADD(p, 1);
-	if (p->enq_buf_count >= p->enq_burst_sz)
-		send_burst(p);
-
-	return 0;
-}
-
-static int
-rte_port_eventdev_writer_tx_bulk(void *port,
-	struct rte_mbuf **pkts,
-	uint64_t pkts_mask)
-{
-	struct rte_port_eventdev_writer *p =
-			port;
-	uint64_t bsz_mask = p->bsz_mask;
-	uint32_t enq_buf_count = p->enq_buf_count;
-	uint64_t expr = (pkts_mask & (pkts_mask + 1)) |
-					((pkts_mask & bsz_mask) ^ bsz_mask);
-
-	if (expr == 0) {
-		uint64_t n_pkts = rte_popcount64(pkts_mask);
-		uint32_t i, n_enq_ok;
-
-		if (enq_buf_count)
-			send_burst(p);
-
-		RTE_PORT_EVENTDEV_WRITER_STATS_PKTS_IN_ADD(p, n_pkts);
-
-		struct rte_event events[2 * RTE_PORT_IN_BURST_SIZE_MAX] = {};
-		for (i = 0; i < n_pkts; i++) {
-			events[i].mbuf = pkts[i];
-			events[i].queue_id = p->queue_id;
-			events[i].sched_type = p->sched_type;
-			events[i].op = p->evt_op;
-		}
-
-		n_enq_ok = rte_event_enqueue_burst(p->eventdev_id, p->port_id,
-				events, n_pkts);
-
-		RTE_PORT_EVENTDEV_WRITER_STATS_PKTS_DROP_ADD(p,
-				n_pkts - n_enq_ok);
-		for (; n_enq_ok < n_pkts; n_enq_ok++)
-			rte_pktmbuf_free(pkts[n_enq_ok]);
-
-	} else {
-		for (; pkts_mask;) {
-			uint32_t pkt_index = rte_ctz64(pkts_mask);
-			uint64_t pkt_mask = 1LLU << pkt_index;
-
-			p->ev[enq_buf_count++].mbuf = pkts[pkt_index];
-
-			RTE_PORT_EVENTDEV_WRITER_STATS_PKTS_IN_ADD(p, 1);
-			pkts_mask &= ~pkt_mask;
-		}
-
-		p->enq_buf_count = enq_buf_count;
-		if (enq_buf_count >= p->enq_burst_sz)
-			send_burst(p);
-	}
-
-	return 0;
-}
-
-static int
-rte_port_eventdev_writer_flush(void *port)
-{
-	struct rte_port_eventdev_writer *p =
-			port;
-
-	if (p->enq_buf_count > 0)
-		send_burst(p);
-
-	return 0;
-}
-
-static int
-rte_port_eventdev_writer_free(void *port)
-{
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Port is NULL", __func__);
-		return -EINVAL;
-	}
-
-	rte_port_eventdev_writer_flush(port);
-	rte_free(port);
-
-	return 0;
-}
-
-static int rte_port_eventdev_writer_stats_read(void *port,
-	struct rte_port_out_stats *stats, int clear)
-{
-	struct rte_port_eventdev_writer *p =
-			port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Port EVENTDEV Writer Nodrop
- */
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_EVENTDEV_WRITER_NODROP_STATS_PKTS_IN_ADD(port, val) \
-	do {port->stats.n_pkts_in += val;} while (0)
-#define RTE_PORT_EVENTDEV_WRITER_NODROP_STATS_PKTS_DROP_ADD(port, val) \
-	do {port->stats.n_pkts_drop += val;} while (0)
-
-#else
-
-#define RTE_PORT_EVENTDEV_WRITER_NODROP_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_EVENTDEV_WRITER_NODROP_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_eventdev_writer_nodrop {
-	struct rte_port_out_stats stats;
-
-	struct rte_event ev[2 * RTE_PORT_IN_BURST_SIZE_MAX];
-
-	uint32_t enq_burst_sz;
-	uint32_t enq_buf_count;
-	uint64_t bsz_mask;
-	uint64_t n_retries;
-	uint8_t eventdev_id;
-	uint8_t port_id;
-	uint8_t queue_id;
-	uint8_t sched_type;
-	uint8_t evt_op;
-};
-
-
-static void *
-rte_port_eventdev_writer_nodrop_create(void *params, int socket_id)
-{
-	struct rte_port_eventdev_writer_nodrop_params *conf =
-			params;
-	struct rte_port_eventdev_writer_nodrop *port;
-	unsigned int i;
-
-	/* Check input parameters */
-	if ((conf == NULL) ||
-		(conf->enq_burst_sz == 0) ||
-		(conf->enq_burst_sz > RTE_PORT_IN_BURST_SIZE_MAX) ||
-		(!rte_is_power_of_2(conf->enq_burst_sz))) {
-		PORT_LOG(ERR, "%s: Invalid input parameters", __func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-		RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate port", __func__);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->enq_burst_sz = conf->enq_burst_sz;
-	port->enq_buf_count = 0;
-	port->bsz_mask = 1LLU << (conf->enq_burst_sz - 1);
-
-	port->eventdev_id = conf->eventdev_id;
-	port->port_id = conf->port_id;
-	port->queue_id = conf->queue_id;
-	port->sched_type = conf->sched_type;
-	port->evt_op = conf->evt_op;
-	memset(&port->ev, 0, sizeof(port->ev));
-
-	for (i = 0; i < RTE_DIM(port->ev); i++) {
-		port->ev[i].queue_id = port->queue_id;
-		port->ev[i].sched_type = port->sched_type;
-		port->ev[i].op = port->evt_op;
-	}
-	/*
-	 * When n_retries is 0 it means that we should wait for every event to
-	 * send no matter how many retries should it take. To limit number of
-	 * branches in fast path, we use UINT64_MAX instead of branching.
-	 */
-	port->n_retries = (conf->n_retries == 0) ? UINT64_MAX : conf->n_retries;
-
-	return port;
-}
-
-static inline void
-send_burst_nodrop(struct rte_port_eventdev_writer_nodrop *p)
-{
-	uint32_t nb_enq, i;
-
-	nb_enq = rte_event_enqueue_burst(p->eventdev_id, p->port_id,
-			p->ev, p->enq_buf_count);
-
-	/* We sent all the packets in a first try */
-	if (nb_enq >= p->enq_buf_count) {
-		p->enq_buf_count = 0;
-		return;
-	}
-
-	for (i = 0; i < p->n_retries; i++) {
-		nb_enq += rte_event_enqueue_burst(p->eventdev_id, p->port_id,
-							p->ev + nb_enq,
-							p->enq_buf_count - nb_enq);
-
-		/* We sent all the events in more than one try */
-		if (nb_enq >= p->enq_buf_count) {
-			p->enq_buf_count = 0;
-			return;
-		}
-	}
-	/* We didn't send the events in maximum allowed attempts */
-	RTE_PORT_EVENTDEV_WRITER_NODROP_STATS_PKTS_DROP_ADD(p,
-			p->enq_buf_count - nb_enq);
-	for (; nb_enq < p->enq_buf_count; nb_enq++)
-		rte_pktmbuf_free(p->ev[nb_enq].mbuf);
-
-	p->enq_buf_count = 0;
-}
-
-static int
-rte_port_eventdev_writer_nodrop_tx(void *port, struct rte_mbuf *pkt)
-{
-	struct rte_port_eventdev_writer_nodrop *p = port;
-
-	p->ev[p->enq_buf_count++].mbuf = pkt;
-
-	RTE_PORT_EVENTDEV_WRITER_NODROP_STATS_PKTS_IN_ADD(p, 1);
-	if (p->enq_buf_count >= p->enq_burst_sz)
-		send_burst_nodrop(p);
-
-	return 0;
-}
-
-static int
-rte_port_eventdev_writer_nodrop_tx_bulk(void *port,
-	struct rte_mbuf **pkts,
-	uint64_t pkts_mask)
-{
-	struct rte_port_eventdev_writer_nodrop *p =
-			port;
-
-	uint64_t bsz_mask = p->bsz_mask;
-	uint32_t enq_buf_count = p->enq_buf_count;
-	uint64_t expr = (pkts_mask & (pkts_mask + 1)) |
-					((pkts_mask & bsz_mask) ^ bsz_mask);
-
-	if (expr == 0) {
-		uint64_t n_pkts = rte_popcount64(pkts_mask);
-		uint32_t i, n_enq_ok;
-
-		if (enq_buf_count)
-			send_burst_nodrop(p);
-
-		RTE_PORT_EVENTDEV_WRITER_NODROP_STATS_PKTS_IN_ADD(p, n_pkts);
-
-		struct rte_event events[RTE_PORT_IN_BURST_SIZE_MAX] = {};
-
-		for (i = 0; i < n_pkts; i++) {
-			events[i].mbuf = pkts[i];
-			events[i].queue_id = p->queue_id;
-			events[i].sched_type = p->sched_type;
-			events[i].op = p->evt_op;
-		}
-
-		n_enq_ok = rte_event_enqueue_burst(p->eventdev_id, p->port_id,
-				events, n_pkts);
-
-		if (n_enq_ok >= n_pkts)
-			return 0;
-
-		/*
-		 * If we did not manage to enqueue all events in single burst,
-		 * move remaining events to the buffer and call send burst.
-		 */
-		for (; n_enq_ok < n_pkts; n_enq_ok++) {
-			struct rte_mbuf *pkt = pkts[n_enq_ok];
-			p->ev[p->enq_buf_count++].mbuf = pkt;
-		}
-		send_burst_nodrop(p);
-	} else {
-		for (; pkts_mask;) {
-			uint32_t pkt_index = rte_ctz64(pkts_mask);
-			uint64_t pkt_mask = 1LLU << pkt_index;
-
-			p->ev[enq_buf_count++].mbuf = pkts[pkt_index];
-
-			RTE_PORT_EVENTDEV_WRITER_STATS_PKTS_IN_ADD(p, 1);
-			pkts_mask &= ~pkt_mask;
-		}
-
-		p->enq_buf_count = enq_buf_count;
-		if (enq_buf_count >= p->enq_burst_sz)
-			send_burst_nodrop(p);
-	}
-
-	return 0;
-}
-
-static int
-rte_port_eventdev_writer_nodrop_flush(void *port)
-{
-	struct rte_port_eventdev_writer_nodrop *p =
-			port;
-
-	if (p->enq_buf_count > 0)
-		send_burst_nodrop(p);
-
-	return 0;
-}
-
-static int
-rte_port_eventdev_writer_nodrop_free(void *port)
-{
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Port is NULL", __func__);
-		return -EINVAL;
-	}
-
-	rte_port_eventdev_writer_nodrop_flush(port);
-	rte_free(port);
-
-	return 0;
-}
-
-static int rte_port_eventdev_writer_nodrop_stats_read(void *port,
-	struct rte_port_out_stats *stats, int clear)
-{
-	struct rte_port_eventdev_writer_nodrop *p =
-			port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Summary of port operations
- */
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_port_eventdev_reader_ops, 19.11)
-struct rte_port_in_ops rte_port_eventdev_reader_ops = {
-	.f_create = rte_port_eventdev_reader_create,
-	.f_free = rte_port_eventdev_reader_free,
-	.f_rx = rte_port_eventdev_reader_rx,
-	.f_stats = rte_port_eventdev_reader_stats_read,
-};
-
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_port_eventdev_writer_ops, 19.11)
-struct rte_port_out_ops rte_port_eventdev_writer_ops = {
-	.f_create = rte_port_eventdev_writer_create,
-	.f_free = rte_port_eventdev_writer_free,
-	.f_tx = rte_port_eventdev_writer_tx,
-	.f_tx_bulk = rte_port_eventdev_writer_tx_bulk,
-	.f_flush = rte_port_eventdev_writer_flush,
-	.f_stats = rte_port_eventdev_writer_stats_read,
-};
-
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_port_eventdev_writer_nodrop_ops, 19.11)
-struct rte_port_out_ops rte_port_eventdev_writer_nodrop_ops = {
-	.f_create = rte_port_eventdev_writer_nodrop_create,
-	.f_free = rte_port_eventdev_writer_nodrop_free,
-	.f_tx = rte_port_eventdev_writer_nodrop_tx,
-	.f_tx_bulk = rte_port_eventdev_writer_nodrop_tx_bulk,
-	.f_flush = rte_port_eventdev_writer_nodrop_flush,
-	.f_stats = rte_port_eventdev_writer_nodrop_stats_read,
-};
diff --git a/lib/port/rte_port_eventdev.h b/lib/port/rte_port_eventdev.h
deleted file mode 100644
index d9eccf07d4..0000000000
--- a/lib/port/rte_port_eventdev.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2019 Intel Corporation
- */
-
-#ifndef __INCLUDE_RTE_PORT_EVENTDEV_H__
-#define __INCLUDE_RTE_PORT_EVENTDEV_H__
-
-/**
- * @file
- * RTE Port Eventdev Interface
- *
- * eventdev_reader: input port built on top of pre-initialized eventdev
- * interface
- * eventdev_writer: output port built on top of pre-initialized eventdev
- * interface
- */
-
-#include <stdint.h>
-#include <rte_eventdev.h>
-
-#include "rte_port.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Eventdev_reader port parameters */
-struct rte_port_eventdev_reader_params {
-	/** Eventdev Device ID */
-	uint8_t eventdev_id;
-
-	/** Eventdev Port ID */
-	uint8_t port_id;
-};
-
-/** Eventdev_reader port operations. */
-extern struct rte_port_in_ops rte_port_eventdev_reader_ops;
-
-/** Eventdev_writer port parameters. */
-struct rte_port_eventdev_writer_params {
-	/** Eventdev Device ID. */
-	uint8_t eventdev_id;
-
-	/** Eventdev Port ID. */
-	uint8_t port_id;
-
-	/** Eventdev Queue ID. */
-	uint8_t queue_id;
-
-	/** Burst size to eventdev interface. */
-	uint32_t enq_burst_sz;
-
-	/** Scheduler synchronization type (RTE_SCHED_TYPE_*)*/
-	uint8_t sched_type;
-
-	/** The type of eventdev enqueue operation - new/forward/release */
-	uint8_t evt_op;
-};
-
-/** Eventdev_writer port operations. */
-extern struct rte_port_out_ops rte_port_eventdev_writer_ops;
-
-/** Event_writer_nodrop port parameters. */
-struct rte_port_eventdev_writer_nodrop_params {
-	/** Eventdev Device ID. */
-	uint8_t eventdev_id;
-
-	/** Eventdev Port ID. */
-	uint16_t port_id;
-
-	/** Eventdev Queue ID. */
-	uint16_t queue_id;
-
-	/** Burst size to eventdev interface. */
-	uint32_t enq_burst_sz;
-
-	/** Scheduler synchronization type (RTE_SCHED_TYPE_*)*/
-	uint8_t sched_type;
-
-	/** The type of eventdev enqueue operation - new/forward/release */
-	uint8_t evt_op;
-
-	/** Maximum number of retries, 0 for no limit. */
-	uint32_t n_retries;
-};
-
-/** Eventdev_writer_nodrop port operations. */
-extern struct rte_port_out_ops rte_port_eventdev_writer_nodrop_ops;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/lib/port/rte_port_fd.c b/lib/port/rte_port_fd.c
deleted file mode 100644
index dbc9efef1b..0000000000
--- a/lib/port/rte_port_fd.c
+++ /dev/null
@@ -1,524 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2016 Intel Corporation
- */
-#include <string.h>
-#include <stdint.h>
-#include <unistd.h>
-
-#include <eal_export.h>
-#include <rte_mbuf.h>
-#include <rte_malloc.h>
-
-#include "rte_port_fd.h"
-
-#include "port_log.h"
-
-/*
- * Port FD Reader
- */
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_FD_READER_STATS_PKTS_IN_ADD(port, val) \
-	do { port->stats.n_pkts_in += val; } while (0)
-#define RTE_PORT_FD_READER_STATS_PKTS_DROP_ADD(port, val) \
-	do { port->stats.n_pkts_drop += val; } while (0)
-
-#else
-
-#define RTE_PORT_FD_READER_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_FD_READER_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_fd_reader {
-	struct rte_port_in_stats stats;
-	int fd;
-	uint32_t mtu;
-	struct rte_mempool *mempool;
-};
-
-static void *
-rte_port_fd_reader_create(void *params, int socket_id)
-{
-	struct rte_port_fd_reader_params *conf =
-			params;
-	struct rte_port_fd_reader *port;
-
-	/* Check input parameters */
-	if (conf == NULL) {
-		PORT_LOG(ERR, "%s: params is NULL", __func__);
-		return NULL;
-	}
-	if (conf->fd < 0) {
-		PORT_LOG(ERR, "%s: Invalid file descriptor", __func__);
-		return NULL;
-	}
-	if (conf->mtu == 0) {
-		PORT_LOG(ERR, "%s: Invalid MTU", __func__);
-		return NULL;
-	}
-	if (conf->mempool == NULL) {
-		PORT_LOG(ERR, "%s: Invalid mempool", __func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate port", __func__);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->fd = conf->fd;
-	port->mtu = conf->mtu;
-	port->mempool = conf->mempool;
-
-	return port;
-}
-
-static int
-rte_port_fd_reader_rx(void *port, struct rte_mbuf **pkts, uint32_t n_pkts)
-{
-	struct rte_port_fd_reader *p = port;
-	uint32_t i, j;
-
-	if (rte_pktmbuf_alloc_bulk(p->mempool, pkts, n_pkts) != 0)
-		return 0;
-
-	for (i = 0; i < n_pkts; i++) {
-		struct rte_mbuf *pkt = pkts[i];
-		void *pkt_data = rte_pktmbuf_mtod(pkt, void *);
-		ssize_t n_bytes;
-
-		n_bytes = read(p->fd, pkt_data, (size_t) p->mtu);
-		if (n_bytes <= 0)
-			break;
-
-		pkt->data_len = n_bytes;
-		pkt->pkt_len = n_bytes;
-	}
-
-	for (j = i; j < n_pkts; j++)
-		rte_pktmbuf_free(pkts[j]);
-
-	RTE_PORT_FD_READER_STATS_PKTS_IN_ADD(p, i);
-
-	return i;
-}
-
-static int
-rte_port_fd_reader_free(void *port)
-{
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: port is NULL", __func__);
-		return -EINVAL;
-	}
-
-	rte_free(port);
-
-	return 0;
-}
-
-static int rte_port_fd_reader_stats_read(void *port,
-		struct rte_port_in_stats *stats, int clear)
-{
-	struct rte_port_fd_reader *p =
-			port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Port FD Writer
- */
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_FD_WRITER_STATS_PKTS_IN_ADD(port, val) \
-	do { port->stats.n_pkts_in += val; } while (0)
-#define RTE_PORT_FD_WRITER_STATS_PKTS_DROP_ADD(port, val) \
-	do { port->stats.n_pkts_drop += val; } while (0)
-
-#else
-
-#define RTE_PORT_FD_WRITER_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_FD_WRITER_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_fd_writer {
-	struct rte_port_out_stats stats;
-
-	struct rte_mbuf *tx_buf[2 * RTE_PORT_IN_BURST_SIZE_MAX];
-	uint32_t tx_burst_sz;
-	uint16_t tx_buf_count;
-	uint32_t fd;
-};
-
-static void *
-rte_port_fd_writer_create(void *params, int socket_id)
-{
-	struct rte_port_fd_writer_params *conf =
-		params;
-	struct rte_port_fd_writer *port;
-
-	/* Check input parameters */
-	if ((conf == NULL) ||
-		(conf->tx_burst_sz == 0) ||
-		(conf->tx_burst_sz > RTE_PORT_IN_BURST_SIZE_MAX) ||
-		(!rte_is_power_of_2(conf->tx_burst_sz))) {
-		PORT_LOG(ERR, "%s: Invalid input parameters", __func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-		RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate port", __func__);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->fd = conf->fd;
-	port->tx_burst_sz = conf->tx_burst_sz;
-	port->tx_buf_count = 0;
-
-	return port;
-}
-
-static inline void
-send_burst(struct rte_port_fd_writer *p)
-{
-	uint32_t i;
-
-	for (i = 0; i < p->tx_buf_count; i++) {
-		struct rte_mbuf *pkt = p->tx_buf[i];
-		void *pkt_data = rte_pktmbuf_mtod(pkt, void*);
-		size_t n_bytes = rte_pktmbuf_data_len(pkt);
-		ssize_t ret;
-
-		ret = write(p->fd, pkt_data, n_bytes);
-		if (ret < 0)
-			break;
-	}
-
-	RTE_PORT_FD_WRITER_STATS_PKTS_DROP_ADD(p, p->tx_buf_count - i);
-
-	for (i = 0; i < p->tx_buf_count; i++)
-		rte_pktmbuf_free(p->tx_buf[i]);
-
-	p->tx_buf_count = 0;
-}
-
-static int
-rte_port_fd_writer_tx(void *port, struct rte_mbuf *pkt)
-{
-	struct rte_port_fd_writer *p =
-		port;
-
-	p->tx_buf[p->tx_buf_count++] = pkt;
-	RTE_PORT_FD_WRITER_STATS_PKTS_IN_ADD(p, 1);
-	if (p->tx_buf_count >= p->tx_burst_sz)
-		send_burst(p);
-
-	return 0;
-}
-
-static int
-rte_port_fd_writer_tx_bulk(void *port,
-	struct rte_mbuf **pkts,
-	uint64_t pkts_mask)
-{
-	struct rte_port_fd_writer *p =
-		port;
-	uint32_t tx_buf_count = p->tx_buf_count;
-
-	if ((pkts_mask & (pkts_mask + 1)) == 0) {
-		uint64_t n_pkts = rte_popcount64(pkts_mask);
-		uint32_t i;
-
-		for (i = 0; i < n_pkts; i++)
-			p->tx_buf[tx_buf_count++] = pkts[i];
-		RTE_PORT_FD_WRITER_STATS_PKTS_IN_ADD(p, n_pkts);
-	} else
-		for ( ; pkts_mask; ) {
-			uint32_t pkt_index = rte_ctz64(pkts_mask);
-			uint64_t pkt_mask = 1LLU << pkt_index;
-			struct rte_mbuf *pkt = pkts[pkt_index];
-
-			p->tx_buf[tx_buf_count++] = pkt;
-			RTE_PORT_FD_WRITER_STATS_PKTS_IN_ADD(p, 1);
-			pkts_mask &= ~pkt_mask;
-		}
-
-	p->tx_buf_count = tx_buf_count;
-	if (tx_buf_count >= p->tx_burst_sz)
-		send_burst(p);
-
-	return 0;
-}
-
-static int
-rte_port_fd_writer_flush(void *port)
-{
-	struct rte_port_fd_writer *p =
-		port;
-
-	if (p->tx_buf_count > 0)
-		send_burst(p);
-
-	return 0;
-}
-
-static int
-rte_port_fd_writer_free(void *port)
-{
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Port is NULL", __func__);
-		return -EINVAL;
-	}
-
-	rte_port_fd_writer_flush(port);
-	rte_free(port);
-
-	return 0;
-}
-
-static int rte_port_fd_writer_stats_read(void *port,
-		struct rte_port_out_stats *stats, int clear)
-{
-	struct rte_port_fd_writer *p =
-		port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Port FD Writer Nodrop
- */
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_FD_WRITER_NODROP_STATS_PKTS_IN_ADD(port, val) \
-	do { port->stats.n_pkts_in += val; } while (0)
-#define RTE_PORT_FD_WRITER_NODROP_STATS_PKTS_DROP_ADD(port, val) \
-	do { port->stats.n_pkts_drop += val; } while (0)
-
-#else
-
-#define RTE_PORT_FD_WRITER_NODROP_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_FD_WRITER_NODROP_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_fd_writer_nodrop {
-	struct rte_port_out_stats stats;
-
-	struct rte_mbuf *tx_buf[2 * RTE_PORT_IN_BURST_SIZE_MAX];
-	uint32_t tx_burst_sz;
-	uint16_t tx_buf_count;
-	uint64_t n_retries;
-	uint32_t fd;
-};
-
-static void *
-rte_port_fd_writer_nodrop_create(void *params, int socket_id)
-{
-	struct rte_port_fd_writer_nodrop_params *conf =
-			params;
-	struct rte_port_fd_writer_nodrop *port;
-
-	/* Check input parameters */
-	if ((conf == NULL) ||
-		(conf->fd < 0) ||
-		(conf->tx_burst_sz == 0) ||
-		(conf->tx_burst_sz > RTE_PORT_IN_BURST_SIZE_MAX) ||
-		(!rte_is_power_of_2(conf->tx_burst_sz))) {
-		PORT_LOG(ERR, "%s: Invalid input parameters", __func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-		RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate port", __func__);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->fd = conf->fd;
-	port->tx_burst_sz = conf->tx_burst_sz;
-	port->tx_buf_count = 0;
-
-	/*
-	 * When n_retries is 0 it means that we should wait for every packet to
-	 * send no matter how many retries should it take. To limit number of
-	 * branches in fast path, we use UINT64_MAX instead of branching.
-	 */
-	port->n_retries = (conf->n_retries == 0) ? UINT64_MAX : conf->n_retries;
-
-	return port;
-}
-
-static inline void
-send_burst_nodrop(struct rte_port_fd_writer_nodrop *p)
-{
-	uint64_t n_retries;
-	uint32_t i;
-
-	n_retries = 0;
-	for (i = 0; (i < p->tx_buf_count) && (n_retries < p->n_retries); i++) {
-		struct rte_mbuf *pkt = p->tx_buf[i];
-		void *pkt_data = rte_pktmbuf_mtod(pkt, void*);
-		size_t n_bytes = rte_pktmbuf_data_len(pkt);
-
-		for ( ; n_retries < p->n_retries; n_retries++) {
-			ssize_t ret;
-
-			ret = write(p->fd, pkt_data, n_bytes);
-			if (ret)
-				break;
-		}
-	}
-
-	RTE_PORT_FD_WRITER_NODROP_STATS_PKTS_DROP_ADD(p, p->tx_buf_count - i);
-
-	for (i = 0; i < p->tx_buf_count; i++)
-		rte_pktmbuf_free(p->tx_buf[i]);
-
-	p->tx_buf_count = 0;
-}
-
-static int
-rte_port_fd_writer_nodrop_tx(void *port, struct rte_mbuf *pkt)
-{
-	struct rte_port_fd_writer_nodrop *p =
-		port;
-
-	p->tx_buf[p->tx_buf_count++] = pkt;
-	RTE_PORT_FD_WRITER_NODROP_STATS_PKTS_IN_ADD(p, 1);
-	if (p->tx_buf_count >= p->tx_burst_sz)
-		send_burst_nodrop(p);
-
-	return 0;
-}
-
-static int
-rte_port_fd_writer_nodrop_tx_bulk(void *port,
-	struct rte_mbuf **pkts,
-	uint64_t pkts_mask)
-{
-	struct rte_port_fd_writer_nodrop *p =
-		port;
-	uint32_t tx_buf_count = p->tx_buf_count;
-
-	if ((pkts_mask & (pkts_mask + 1)) == 0) {
-		uint64_t n_pkts = rte_popcount64(pkts_mask);
-		uint32_t i;
-
-		for (i = 0; i < n_pkts; i++)
-			p->tx_buf[tx_buf_count++] = pkts[i];
-		RTE_PORT_FD_WRITER_NODROP_STATS_PKTS_IN_ADD(p, n_pkts);
-	} else
-		for ( ; pkts_mask; ) {
-			uint32_t pkt_index = rte_ctz64(pkts_mask);
-			uint64_t pkt_mask = 1LLU << pkt_index;
-			struct rte_mbuf *pkt = pkts[pkt_index];
-
-			p->tx_buf[tx_buf_count++] = pkt;
-			RTE_PORT_FD_WRITER_NODROP_STATS_PKTS_IN_ADD(p, 1);
-			pkts_mask &= ~pkt_mask;
-		}
-
-	p->tx_buf_count = tx_buf_count;
-	if (tx_buf_count >= p->tx_burst_sz)
-		send_burst_nodrop(p);
-
-	return 0;
-}
-
-static int
-rte_port_fd_writer_nodrop_flush(void *port)
-{
-	struct rte_port_fd_writer_nodrop *p =
-		port;
-
-	if (p->tx_buf_count > 0)
-		send_burst_nodrop(p);
-
-	return 0;
-}
-
-static int
-rte_port_fd_writer_nodrop_free(void *port)
-{
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Port is NULL", __func__);
-		return -EINVAL;
-	}
-
-	rte_port_fd_writer_nodrop_flush(port);
-	rte_free(port);
-
-return 0;
-}
-
-static int rte_port_fd_writer_nodrop_stats_read(void *port,
-		struct rte_port_out_stats *stats, int clear)
-{
-	struct rte_port_fd_writer_nodrop *p =
-		port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Summary of port operations
- */
-RTE_EXPORT_SYMBOL(rte_port_fd_reader_ops)
-struct rte_port_in_ops rte_port_fd_reader_ops = {
-	.f_create = rte_port_fd_reader_create,
-	.f_free = rte_port_fd_reader_free,
-	.f_rx = rte_port_fd_reader_rx,
-	.f_stats = rte_port_fd_reader_stats_read,
-};
-
-RTE_EXPORT_SYMBOL(rte_port_fd_writer_ops)
-struct rte_port_out_ops rte_port_fd_writer_ops = {
-	.f_create = rte_port_fd_writer_create,
-	.f_free = rte_port_fd_writer_free,
-	.f_tx = rte_port_fd_writer_tx,
-	.f_tx_bulk = rte_port_fd_writer_tx_bulk,
-	.f_flush = rte_port_fd_writer_flush,
-	.f_stats = rte_port_fd_writer_stats_read,
-};
-
-RTE_EXPORT_SYMBOL(rte_port_fd_writer_nodrop_ops)
-struct rte_port_out_ops rte_port_fd_writer_nodrop_ops = {
-	.f_create = rte_port_fd_writer_nodrop_create,
-	.f_free = rte_port_fd_writer_nodrop_free,
-	.f_tx = rte_port_fd_writer_nodrop_tx,
-	.f_tx_bulk = rte_port_fd_writer_nodrop_tx_bulk,
-	.f_flush = rte_port_fd_writer_nodrop_flush,
-	.f_stats = rte_port_fd_writer_nodrop_stats_read,
-};
diff --git a/lib/port/rte_port_fd.h b/lib/port/rte_port_fd.h
deleted file mode 100644
index 40a5e4a426..0000000000
--- a/lib/port/rte_port_fd.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2016 Intel Corporation
- */
-
-#ifndef __INCLUDE_RTE_PORT_FD_H__
-#define __INCLUDE_RTE_PORT_FD_H__
-
-/**
- * @file
- * RTE Port FD Device
- *
- * fd_reader: input port built on top of valid non-blocking file descriptor
- * fd_writer: output port built on top of valid non-blocking file descriptor
- */
-
-#include <stdint.h>
-
-#include "rte_port.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** fd_reader port parameters */
-struct rte_port_fd_reader_params {
-	/** File descriptor */
-	int fd;
-
-	/** Maximum Transfer Unit (MTU) */
-	uint32_t mtu;
-
-	/** Pre-initialized buffer pool */
-	struct rte_mempool *mempool;
-};
-
-/** fd_reader port operations */
-extern struct rte_port_in_ops rte_port_fd_reader_ops;
-
-/** fd_writer port parameters */
-struct rte_port_fd_writer_params {
-	/** File descriptor */
-	int fd;
-
-	/**< Recommended write burst size. The actual burst size can be
-	 * bigger or smaller than this value.
-	 */
-	uint32_t tx_burst_sz;
-};
-
-/** fd_writer port operations */
-extern struct rte_port_out_ops rte_port_fd_writer_ops;
-
-/** fd_writer_nodrop port parameters */
-struct rte_port_fd_writer_nodrop_params {
-	/** File descriptor */
-	int fd;
-
-	/**< Recommended write burst size. The actual burst size can be
-	 * bigger or smaller than this value.
-	 */
-	uint32_t tx_burst_sz;
-
-	/** Maximum number of retries, 0 for no limit */
-	uint32_t n_retries;
-};
-
-/** fd_writer_nodrop port operations */
-extern struct rte_port_out_ops rte_port_fd_writer_nodrop_ops;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/lib/port/rte_port_frag.c b/lib/port/rte_port_frag.c
deleted file mode 100644
index 9444f5939c..0000000000
--- a/lib/port/rte_port_frag.c
+++ /dev/null
@@ -1,280 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2014 Intel Corporation
- */
-#include <string.h>
-
-#include <eal_export.h>
-#include <rte_ip_frag.h>
-
-#include "rte_port_frag.h"
-
-#include "port_log.h"
-
-/* Max number of fragments per packet allowed */
-#define	RTE_PORT_FRAG_MAX_FRAGS_PER_PACKET 0x80
-
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_RING_READER_FRAG_STATS_PKTS_IN_ADD(port, val) \
-	port->stats.n_pkts_in += val
-#define RTE_PORT_RING_READER_FRAG_STATS_PKTS_DROP_ADD(port, val) \
-	port->stats.n_pkts_drop += val
-
-#else
-
-#define RTE_PORT_RING_READER_FRAG_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_RING_READER_FRAG_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-typedef int32_t
-		(*frag_op)(struct rte_mbuf *pkt_in,
-			struct rte_mbuf **pkts_out,
-			uint16_t nb_pkts_out,
-			uint16_t mtu_size,
-			struct rte_mempool *pool_direct,
-			struct rte_mempool *pool_indirect);
-
-struct __rte_cache_aligned rte_port_ring_reader_frag {
-	struct rte_port_in_stats stats;
-
-	/* Input parameters */
-	struct rte_ring *ring;
-	uint32_t mtu;
-	uint32_t metadata_size;
-	struct rte_mempool *pool_direct;
-	struct rte_mempool *pool_indirect;
-
-	/* Internal buffers */
-	struct rte_mbuf *pkts[RTE_PORT_IN_BURST_SIZE_MAX];
-	struct rte_mbuf *frags[RTE_PORT_FRAG_MAX_FRAGS_PER_PACKET];
-	uint32_t n_pkts;
-	uint32_t pos_pkts;
-	uint32_t n_frags;
-	uint32_t pos_frags;
-
-	frag_op f_frag;
-};
-
-static void *
-rte_port_ring_reader_frag_create(void *params, int socket_id, int is_ipv4)
-{
-	struct rte_port_ring_reader_frag_params *conf =
-			params;
-	struct rte_port_ring_reader_frag *port;
-
-	/* Check input parameters */
-	if (conf == NULL) {
-		PORT_LOG(ERR, "%s: Parameter conf is NULL", __func__);
-		return NULL;
-	}
-	if (conf->ring == NULL) {
-		PORT_LOG(ERR, "%s: Parameter ring is NULL", __func__);
-		return NULL;
-	}
-	if (conf->mtu == 0) {
-		PORT_LOG(ERR, "%s: Parameter mtu is invalid", __func__);
-		return NULL;
-	}
-	if (conf->pool_direct == NULL) {
-		PORT_LOG(ERR, "%s: Parameter pool_direct is NULL",
-			__func__);
-		return NULL;
-	}
-	if (conf->pool_indirect == NULL) {
-		PORT_LOG(ERR, "%s: Parameter pool_indirect is NULL",
-			__func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port), RTE_CACHE_LINE_SIZE,
-		socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: port is NULL", __func__);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->ring = conf->ring;
-	port->mtu = conf->mtu;
-	port->metadata_size = conf->metadata_size;
-	port->pool_direct = conf->pool_direct;
-	port->pool_indirect = conf->pool_indirect;
-
-	port->n_pkts = 0;
-	port->pos_pkts = 0;
-	port->n_frags = 0;
-	port->pos_frags = 0;
-
-	port->f_frag = (is_ipv4) ?
-			rte_ipv4_fragment_packet : rte_ipv6_fragment_packet;
-
-	return port;
-}
-
-static void *
-rte_port_ring_reader_ipv4_frag_create(void *params, int socket_id)
-{
-	return rte_port_ring_reader_frag_create(params, socket_id, 1);
-}
-
-static void *
-rte_port_ring_reader_ipv6_frag_create(void *params, int socket_id)
-{
-	return rte_port_ring_reader_frag_create(params, socket_id, 0);
-}
-
-static int
-rte_port_ring_reader_frag_rx(void *port,
-		struct rte_mbuf **pkts,
-		uint32_t n_pkts)
-{
-	struct rte_port_ring_reader_frag *p =
-			port;
-	uint32_t n_pkts_out;
-
-	n_pkts_out = 0;
-
-	/* Get packets from the "frag" buffer */
-	if (p->n_frags >= n_pkts) {
-		memcpy(pkts, &p->frags[p->pos_frags], n_pkts * sizeof(void *));
-		p->pos_frags += n_pkts;
-		p->n_frags -= n_pkts;
-
-		return n_pkts;
-	}
-
-	memcpy(pkts, &p->frags[p->pos_frags], p->n_frags * sizeof(void *));
-	n_pkts_out = p->n_frags;
-	p->n_frags = 0;
-
-	/* Look to "pkts" buffer to get more packets */
-	for ( ; ; ) {
-		struct rte_mbuf *pkt;
-		uint32_t n_pkts_to_provide, i;
-		int status;
-
-		/* If "pkts" buffer is empty, read packet burst from ring */
-		if (p->n_pkts == 0) {
-			p->n_pkts = rte_ring_sc_dequeue_burst(p->ring,
-				(void **) p->pkts, RTE_PORT_IN_BURST_SIZE_MAX,
-				NULL);
-			RTE_PORT_RING_READER_FRAG_STATS_PKTS_IN_ADD(p, p->n_pkts);
-			if (p->n_pkts == 0)
-				return n_pkts_out;
-			p->pos_pkts = 0;
-		}
-
-		/* Read next packet from "pkts" buffer */
-		pkt = p->pkts[p->pos_pkts++];
-		p->n_pkts--;
-
-		/* If not jumbo, pass current packet to output */
-		if (pkt->pkt_len <= p->mtu) {
-			pkts[n_pkts_out++] = pkt;
-
-			n_pkts_to_provide = n_pkts - n_pkts_out;
-			if (n_pkts_to_provide == 0)
-				return n_pkts;
-
-			continue;
-		}
-
-		/* Fragment current packet into the "frags" buffer */
-		status = p->f_frag(
-			pkt,
-			p->frags,
-			RTE_PORT_FRAG_MAX_FRAGS_PER_PACKET,
-			p->mtu,
-			p->pool_direct,
-			p->pool_indirect
-		);
-
-		if (status < 0) {
-			rte_pktmbuf_free(pkt);
-			RTE_PORT_RING_READER_FRAG_STATS_PKTS_DROP_ADD(p, 1);
-			continue;
-		}
-
-		p->n_frags = (uint32_t) status;
-		p->pos_frags = 0;
-
-		/* Copy meta-data from input jumbo packet to its fragments */
-		for (i = 0; i < p->n_frags; i++) {
-			uint8_t *src =
-			  RTE_MBUF_METADATA_UINT8_PTR(pkt, sizeof(struct rte_mbuf));
-			uint8_t *dst =
-			  RTE_MBUF_METADATA_UINT8_PTR(p->frags[i], sizeof(struct rte_mbuf));
-
-			memcpy(dst, src, p->metadata_size);
-		}
-
-		/* Free input jumbo packet */
-		rte_pktmbuf_free(pkt);
-
-		/* Get packets from "frag" buffer */
-		n_pkts_to_provide = n_pkts - n_pkts_out;
-		if (p->n_frags >= n_pkts_to_provide) {
-			memcpy(&pkts[n_pkts_out], p->frags,
-				n_pkts_to_provide * sizeof(void *));
-			p->n_frags -= n_pkts_to_provide;
-			p->pos_frags += n_pkts_to_provide;
-
-			return n_pkts;
-		}
-
-		memcpy(&pkts[n_pkts_out], p->frags,
-			p->n_frags * sizeof(void *));
-		n_pkts_out += p->n_frags;
-		p->n_frags = 0;
-	}
-}
-
-static int
-rte_port_ring_reader_frag_free(void *port)
-{
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Parameter port is NULL", __func__);
-		return -1;
-	}
-
-	rte_free(port);
-
-	return 0;
-}
-
-static int
-rte_port_frag_reader_stats_read(void *port,
-		struct rte_port_in_stats *stats, int clear)
-{
-	struct rte_port_ring_reader_frag *p =
-		port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Summary of port operations
- */
-RTE_EXPORT_SYMBOL(rte_port_ring_reader_ipv4_frag_ops)
-struct rte_port_in_ops rte_port_ring_reader_ipv4_frag_ops = {
-	.f_create = rte_port_ring_reader_ipv4_frag_create,
-	.f_free = rte_port_ring_reader_frag_free,
-	.f_rx = rte_port_ring_reader_frag_rx,
-	.f_stats = rte_port_frag_reader_stats_read,
-};
-
-RTE_EXPORT_SYMBOL(rte_port_ring_reader_ipv6_frag_ops)
-struct rte_port_in_ops rte_port_ring_reader_ipv6_frag_ops = {
-	.f_create = rte_port_ring_reader_ipv6_frag_create,
-	.f_free = rte_port_ring_reader_frag_free,
-	.f_rx = rte_port_ring_reader_frag_rx,
-	.f_stats = rte_port_frag_reader_stats_read,
-};
diff --git a/lib/port/rte_port_frag.h b/lib/port/rte_port_frag.h
deleted file mode 100644
index 9a10f10523..0000000000
--- a/lib/port/rte_port_frag.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2014 Intel Corporation
- */
-
-#ifndef __INCLUDE_RTE_PORT_IP_FRAG_H__
-#define __INCLUDE_RTE_PORT_IP_FRAG_H__
-
-/**
- * @file
- * RTE Port for IPv4 Fragmentation
- *
- * This port is built on top of pre-initialized single consumer rte_ring. In
- * order to minimize the amount of packets stored in the ring at any given
- * time, the IP fragmentation functionality is executed on ring read operation,
- * hence this port is implemented as an input port. A regular ring_writer port
- * can be created to write to the same ring.
- *
- * The packets written to the ring are either complete IP datagrams or jumbo
- * frames (i.e. IP packets with length bigger than provided MTU value). The
- * packets read from the ring are all non-jumbo frames. The complete IP
- * datagrams written to the ring are not changed. The jumbo frames are
- * fragmented into several IP packets with length less or equal to MTU.
- */
-
-#include <stdint.h>
-
-
-#include "rte_port.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** ring_reader_ipv4_frag port parameters */
-struct rte_port_ring_reader_frag_params {
-	/** Underlying single consumer ring that has to be pre-initialized. */
-	struct rte_ring *ring;
-
-	/** Maximum Transfer Unit (MTU). Maximum IP packet size (in bytes). */
-	uint32_t mtu;
-
-	/** Size of application dependent meta-data stored per each input packet
-	    that has to be copied to each of the fragments originating from the
-	    same input IP datagram. */
-	uint32_t metadata_size;
-
-	/** Pre-initialized buffer pool used for allocating direct buffers for
-	    the output fragments. */
-	struct rte_mempool *pool_direct;
-
-	/** Pre-initialized buffer pool used for allocating indirect buffers for
-	    the output fragments. */
-	struct rte_mempool *pool_indirect;
-};
-
-#define rte_port_ring_reader_ipv4_frag_params rte_port_ring_reader_frag_params
-
-#define rte_port_ring_reader_ipv6_frag_params rte_port_ring_reader_frag_params
-
-/** ring_reader_ipv4_frag port operations */
-extern struct rte_port_in_ops rte_port_ring_reader_ipv4_frag_ops;
-
-/** ring_reader_ipv6_frag port operations */
-extern struct rte_port_in_ops rte_port_ring_reader_ipv6_frag_ops;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/lib/port/rte_port_ras.c b/lib/port/rte_port_ras.c
deleted file mode 100644
index 58ab7a1c5b..0000000000
--- a/lib/port/rte_port_ras.c
+++ /dev/null
@@ -1,336 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2014 Intel Corporation
- */
-#include <string.h>
-
-#include <eal_export.h>
-#include <rte_ip_frag.h>
-#include <rte_cycles.h>
-#include <rte_log.h>
-
-#include "rte_port_ras.h"
-
-#include "port_log.h"
-
-#ifndef RTE_PORT_RAS_N_BUCKETS
-#define RTE_PORT_RAS_N_BUCKETS                                 4094
-#endif
-
-#ifndef RTE_PORT_RAS_N_ENTRIES_PER_BUCKET
-#define RTE_PORT_RAS_N_ENTRIES_PER_BUCKET                      8
-#endif
-
-#ifndef RTE_PORT_RAS_N_ENTRIES
-#define RTE_PORT_RAS_N_ENTRIES (RTE_PORT_RAS_N_BUCKETS * RTE_PORT_RAS_N_ENTRIES_PER_BUCKET)
-#endif
-
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_RING_WRITER_RAS_STATS_PKTS_IN_ADD(port, val) \
-	port->stats.n_pkts_in += val
-#define RTE_PORT_RING_WRITER_RAS_STATS_PKTS_DROP_ADD(port, val) \
-	port->stats.n_pkts_drop += val
-
-#else
-
-#define RTE_PORT_RING_WRITER_RAS_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_RING_WRITER_RAS_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_ring_writer_ras;
-
-typedef void (*ras_op)(
-		struct rte_port_ring_writer_ras *p,
-		struct rte_mbuf *pkt);
-
-static void
-process_ipv4(struct rte_port_ring_writer_ras *p, struct rte_mbuf *pkt);
-static void
-process_ipv6(struct rte_port_ring_writer_ras *p, struct rte_mbuf *pkt);
-
-struct rte_port_ring_writer_ras {
-	struct rte_port_out_stats stats;
-
-	struct rte_mbuf *tx_buf[RTE_PORT_IN_BURST_SIZE_MAX];
-	struct rte_ring *ring;
-	uint32_t tx_burst_sz;
-	uint32_t tx_buf_count;
-	struct rte_ip_frag_tbl *frag_tbl;
-	struct rte_ip_frag_death_row death_row;
-
-	ras_op f_ras;
-};
-
-static void *
-rte_port_ring_writer_ras_create(void *params, int socket_id, int is_ipv4)
-{
-	struct rte_port_ring_writer_ras_params *conf =
-			params;
-	struct rte_port_ring_writer_ras *port;
-	uint64_t frag_cycles;
-
-	/* Check input parameters */
-	if (conf == NULL) {
-		PORT_LOG(ERR, "%s: Parameter conf is NULL", __func__);
-		return NULL;
-	}
-	if (conf->ring == NULL) {
-		PORT_LOG(ERR, "%s: Parameter ring is NULL", __func__);
-		return NULL;
-	}
-	if ((conf->tx_burst_sz == 0) ||
-	    (conf->tx_burst_sz > RTE_PORT_IN_BURST_SIZE_MAX)) {
-		PORT_LOG(ERR, "%s: Parameter tx_burst_sz is invalid",
-			__func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate socket", __func__);
-		return NULL;
-	}
-
-	/* Create fragmentation table */
-	frag_cycles = (rte_get_tsc_hz() + MS_PER_S - 1) / MS_PER_S * MS_PER_S;
-	frag_cycles *= 100;
-
-	port->frag_tbl = rte_ip_frag_table_create(
-		RTE_PORT_RAS_N_BUCKETS,
-		RTE_PORT_RAS_N_ENTRIES_PER_BUCKET,
-		RTE_PORT_RAS_N_ENTRIES,
-		frag_cycles,
-		socket_id);
-
-	if (port->frag_tbl == NULL) {
-		PORT_LOG(ERR, "%s: rte_ip_frag_table_create failed",
-			__func__);
-		rte_free(port);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->ring = conf->ring;
-	port->tx_burst_sz = conf->tx_burst_sz;
-	port->tx_buf_count = 0;
-
-	port->f_ras = (is_ipv4 == 1) ? process_ipv4 : process_ipv6;
-
-	return port;
-}
-
-static void *
-rte_port_ring_writer_ipv4_ras_create(void *params, int socket_id)
-{
-	return rte_port_ring_writer_ras_create(params, socket_id, 1);
-}
-
-static void *
-rte_port_ring_writer_ipv6_ras_create(void *params, int socket_id)
-{
-	return rte_port_ring_writer_ras_create(params, socket_id, 0);
-}
-
-static inline void
-send_burst(struct rte_port_ring_writer_ras *p)
-{
-	uint32_t nb_tx;
-
-	nb_tx = rte_ring_sp_enqueue_burst(p->ring, (void **)p->tx_buf,
-			p->tx_buf_count, NULL);
-
-	RTE_PORT_RING_WRITER_RAS_STATS_PKTS_DROP_ADD(p, p->tx_buf_count - nb_tx);
-	for ( ; nb_tx < p->tx_buf_count; nb_tx++)
-		rte_pktmbuf_free(p->tx_buf[nb_tx]);
-
-	p->tx_buf_count = 0;
-}
-
-static void
-process_ipv4(struct rte_port_ring_writer_ras *p, struct rte_mbuf *pkt)
-{
-	/* Assume there is no ethernet header */
-	struct rte_ipv4_hdr *pkt_hdr =
-		rte_pktmbuf_mtod(pkt, struct rte_ipv4_hdr *);
-
-	/* Get "More fragments" flag and fragment offset */
-	uint16_t frag_field = rte_be_to_cpu_16(pkt_hdr->fragment_offset);
-	uint16_t frag_offset = (uint16_t)(frag_field & RTE_IPV4_HDR_OFFSET_MASK);
-	uint16_t frag_flag = (uint16_t)(frag_field & RTE_IPV4_HDR_MF_FLAG);
-
-	/* If it is a fragmented packet, then try to reassemble */
-	if ((frag_flag == 0) && (frag_offset == 0))
-		p->tx_buf[p->tx_buf_count++] = pkt;
-	else {
-		struct rte_mbuf *mo;
-		struct rte_ip_frag_tbl *tbl = p->frag_tbl;
-		struct rte_ip_frag_death_row *dr = &p->death_row;
-
-		pkt->l3_len = sizeof(*pkt_hdr);
-
-		/* Process this fragment */
-		mo = rte_ipv4_frag_reassemble_packet(tbl, dr, pkt, rte_rdtsc(),
-				pkt_hdr);
-		if (mo != NULL)
-			p->tx_buf[p->tx_buf_count++] = mo;
-
-		rte_ip_frag_free_death_row(&p->death_row, 3);
-	}
-}
-
-static void
-process_ipv6(struct rte_port_ring_writer_ras *p, struct rte_mbuf *pkt)
-{
-	/* Assume there is no ethernet header */
-	struct rte_ipv6_hdr *pkt_hdr =
-		rte_pktmbuf_mtod(pkt, struct rte_ipv6_hdr *);
-
-	struct rte_ipv6_fragment_ext *frag_hdr;
-	uint16_t frag_data = 0;
-	frag_hdr = rte_ipv6_frag_get_ipv6_fragment_header(pkt_hdr);
-	if (frag_hdr != NULL)
-		frag_data = rte_be_to_cpu_16(frag_hdr->frag_data);
-
-	/* If it is a fragmented packet, then try to reassemble */
-	if ((frag_data & RTE_IPV6_FRAG_USED_MASK) == 0)
-		p->tx_buf[p->tx_buf_count++] = pkt;
-	else {
-		struct rte_mbuf *mo;
-		struct rte_ip_frag_tbl *tbl = p->frag_tbl;
-		struct rte_ip_frag_death_row *dr = &p->death_row;
-
-		pkt->l3_len = sizeof(*pkt_hdr) + sizeof(*frag_hdr);
-
-		/* Process this fragment */
-		mo = rte_ipv6_frag_reassemble_packet(tbl, dr, pkt, rte_rdtsc(), pkt_hdr,
-				frag_hdr);
-		if (mo != NULL)
-			p->tx_buf[p->tx_buf_count++] = mo;
-
-		rte_ip_frag_free_death_row(&p->death_row, 3);
-	}
-}
-
-static int
-rte_port_ring_writer_ras_tx(void *port, struct rte_mbuf *pkt)
-{
-	struct rte_port_ring_writer_ras *p =
-			port;
-
-	RTE_PORT_RING_WRITER_RAS_STATS_PKTS_IN_ADD(p, 1);
-	p->f_ras(p, pkt);
-	if (p->tx_buf_count >= p->tx_burst_sz)
-		send_burst(p);
-
-	return 0;
-}
-
-static int
-rte_port_ring_writer_ras_tx_bulk(void *port,
-		struct rte_mbuf **pkts,
-		uint64_t pkts_mask)
-{
-	struct rte_port_ring_writer_ras *p =
-			port;
-
-	if ((pkts_mask & (pkts_mask + 1)) == 0) {
-		uint64_t n_pkts = rte_popcount64(pkts_mask);
-		uint32_t i;
-
-		for (i = 0; i < n_pkts; i++) {
-			struct rte_mbuf *pkt = pkts[i];
-
-			RTE_PORT_RING_WRITER_RAS_STATS_PKTS_IN_ADD(p, 1);
-			p->f_ras(p, pkt);
-			if (p->tx_buf_count >= p->tx_burst_sz)
-				send_burst(p);
-		}
-	} else {
-		for ( ; pkts_mask; ) {
-			uint32_t pkt_index = rte_ctz64(pkts_mask);
-			uint64_t pkt_mask = 1LLU << pkt_index;
-			struct rte_mbuf *pkt = pkts[pkt_index];
-
-			RTE_PORT_RING_WRITER_RAS_STATS_PKTS_IN_ADD(p, 1);
-			p->f_ras(p, pkt);
-			if (p->tx_buf_count >= p->tx_burst_sz)
-				send_burst(p);
-
-			pkts_mask &= ~pkt_mask;
-		}
-	}
-
-	return 0;
-}
-
-static int
-rte_port_ring_writer_ras_flush(void *port)
-{
-	struct rte_port_ring_writer_ras *p =
-			port;
-
-	if (p->tx_buf_count > 0)
-		send_burst(p);
-
-	return 0;
-}
-
-static int
-rte_port_ring_writer_ras_free(void *port)
-{
-	struct rte_port_ring_writer_ras *p =
-			port;
-
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Parameter port is NULL", __func__);
-		return -1;
-	}
-
-	rte_port_ring_writer_ras_flush(port);
-	rte_ip_frag_table_destroy(p->frag_tbl);
-	rte_free(port);
-
-	return 0;
-}
-
-static int
-rte_port_ras_writer_stats_read(void *port,
-		struct rte_port_out_stats *stats, int clear)
-{
-	struct rte_port_ring_writer_ras *p =
-		port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Summary of port operations
- */
-RTE_EXPORT_SYMBOL(rte_port_ring_writer_ipv4_ras_ops)
-struct rte_port_out_ops rte_port_ring_writer_ipv4_ras_ops = {
-	.f_create = rte_port_ring_writer_ipv4_ras_create,
-	.f_free = rte_port_ring_writer_ras_free,
-	.f_tx = rte_port_ring_writer_ras_tx,
-	.f_tx_bulk = rte_port_ring_writer_ras_tx_bulk,
-	.f_flush = rte_port_ring_writer_ras_flush,
-	.f_stats = rte_port_ras_writer_stats_read,
-};
-
-RTE_EXPORT_SYMBOL(rte_port_ring_writer_ipv6_ras_ops)
-struct rte_port_out_ops rte_port_ring_writer_ipv6_ras_ops = {
-	.f_create = rte_port_ring_writer_ipv6_ras_create,
-	.f_free = rte_port_ring_writer_ras_free,
-	.f_tx = rte_port_ring_writer_ras_tx,
-	.f_tx_bulk = rte_port_ring_writer_ras_tx_bulk,
-	.f_flush = rte_port_ring_writer_ras_flush,
-	.f_stats = rte_port_ras_writer_stats_read,
-};
diff --git a/lib/port/rte_port_ras.h b/lib/port/rte_port_ras.h
deleted file mode 100644
index 86e36f5362..0000000000
--- a/lib/port/rte_port_ras.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2014 Intel Corporation
- */
-
-#ifndef __INCLUDE_RTE_PORT_RAS_H__
-#define __INCLUDE_RTE_PORT_RAS_H__
-
-/**
- * @file
- * RTE Port for IPv4 Reassembly
- *
- * This port is built on top of pre-initialized single producer rte_ring. In
- * order to minimize the amount of packets stored in the ring at any given
- * time, the IP reassembly functionality is executed on ring write operation,
- * hence this port is implemented as an output port. A regular ring_reader port
- * can be created to read from the same ring.
- *
- * The packets written to the ring are either complete IP datagrams or IP
- * fragments. The packets read from the ring are all complete IP datagrams,
- * either jumbo frames (i.e. IP packets with length bigger than MTU) or not.
- * The complete IP datagrams written to the ring are not changed. The IP
- * fragments written to the ring are first reassembled and into complete IP
- * datagrams or dropped on error or IP reassembly time-out.
- */
-
-#include <stdint.h>
-
-#include "rte_port.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** ring_writer_ipv4_ras port parameters */
-struct rte_port_ring_writer_ras_params {
-	/** Underlying single consumer ring that has to be pre-initialized. */
-	struct rte_ring *ring;
-
-	/** Recommended burst size to ring. The actual burst size can be bigger
-	or smaller than this value. */
-	uint32_t tx_burst_sz;
-};
-
-#define rte_port_ring_writer_ipv4_ras_params rte_port_ring_writer_ras_params
-
-#define rte_port_ring_writer_ipv6_ras_params rte_port_ring_writer_ras_params
-
-/** ring_writer_ipv4_ras port operations */
-extern struct rte_port_out_ops rte_port_ring_writer_ipv4_ras_ops;
-
-/** ring_writer_ipv6_ras port operations */
-extern struct rte_port_out_ops rte_port_ring_writer_ipv6_ras_ops;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/lib/port/rte_port_ring.c b/lib/port/rte_port_ring.c
deleted file mode 100644
index 307a576d65..0000000000
--- a/lib/port/rte_port_ring.c
+++ /dev/null
@@ -1,796 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2014 Intel Corporation
- */
-#include <string.h>
-#include <stdint.h>
-
-#include <eal_export.h>
-#include <rte_mbuf.h>
-#include <rte_ring.h>
-#include <rte_malloc.h>
-
-#include "rte_port_ring.h"
-
-#include "port_log.h"
-
-/*
- * Port RING Reader
- */
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_RING_READER_STATS_PKTS_IN_ADD(port, val) \
-	port->stats.n_pkts_in += val
-#define RTE_PORT_RING_READER_STATS_PKTS_DROP_ADD(port, val) \
-	port->stats.n_pkts_drop += val
-
-#else
-
-#define RTE_PORT_RING_READER_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_RING_READER_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_ring_reader {
-	struct rte_port_in_stats stats;
-
-	struct rte_ring *ring;
-};
-
-static void *
-rte_port_ring_reader_create_internal(void *params, int socket_id,
-	uint32_t is_multi)
-{
-	struct rte_port_ring_reader_params *conf =
-			params;
-	struct rte_port_ring_reader *port;
-
-	/* Check input parameters */
-	if ((conf == NULL) ||
-		(conf->ring == NULL) ||
-		(rte_ring_is_cons_single(conf->ring) && is_multi) ||
-		(!rte_ring_is_cons_single(conf->ring) && !is_multi)) {
-		PORT_LOG(ERR, "%s: Invalid Parameters", __func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate port", __func__);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->ring = conf->ring;
-
-	return port;
-}
-
-static void *
-rte_port_ring_reader_create(void *params, int socket_id)
-{
-	return rte_port_ring_reader_create_internal(params, socket_id, 0);
-}
-
-static void *
-rte_port_ring_multi_reader_create(void *params, int socket_id)
-{
-	return rte_port_ring_reader_create_internal(params, socket_id, 1);
-}
-
-static int
-rte_port_ring_reader_rx(void *port, struct rte_mbuf **pkts, uint32_t n_pkts)
-{
-	struct rte_port_ring_reader *p = port;
-	uint32_t nb_rx;
-
-	nb_rx = rte_ring_sc_dequeue_burst(p->ring, (void **) pkts,
-			n_pkts, NULL);
-	RTE_PORT_RING_READER_STATS_PKTS_IN_ADD(p, nb_rx);
-
-	return nb_rx;
-}
-
-static int
-rte_port_ring_multi_reader_rx(void *port, struct rte_mbuf **pkts,
-	uint32_t n_pkts)
-{
-	struct rte_port_ring_reader *p = port;
-	uint32_t nb_rx;
-
-	nb_rx = rte_ring_mc_dequeue_burst(p->ring, (void **) pkts,
-			n_pkts, NULL);
-	RTE_PORT_RING_READER_STATS_PKTS_IN_ADD(p, nb_rx);
-
-	return nb_rx;
-}
-
-static int
-rte_port_ring_reader_free(void *port)
-{
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: port is NULL", __func__);
-		return -EINVAL;
-	}
-
-	rte_free(port);
-
-	return 0;
-}
-
-static int
-rte_port_ring_reader_stats_read(void *port,
-		struct rte_port_in_stats *stats, int clear)
-{
-	struct rte_port_ring_reader *p =
-		port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Port RING Writer
- */
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_RING_WRITER_STATS_PKTS_IN_ADD(port, val) \
-	port->stats.n_pkts_in += val
-#define RTE_PORT_RING_WRITER_STATS_PKTS_DROP_ADD(port, val) \
-	port->stats.n_pkts_drop += val
-
-#else
-
-#define RTE_PORT_RING_WRITER_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_RING_WRITER_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_ring_writer {
-	struct rte_port_out_stats stats;
-
-	struct rte_mbuf *tx_buf[2 * RTE_PORT_IN_BURST_SIZE_MAX];
-	struct rte_ring *ring;
-	uint32_t tx_burst_sz;
-	uint32_t tx_buf_count;
-	uint64_t bsz_mask;
-	uint32_t is_multi;
-};
-
-static void *
-rte_port_ring_writer_create_internal(void *params, int socket_id,
-	uint32_t is_multi)
-{
-	struct rte_port_ring_writer_params *conf =
-			params;
-	struct rte_port_ring_writer *port;
-
-	/* Check input parameters */
-	if ((conf == NULL) ||
-		(conf->ring == NULL) ||
-		(rte_ring_is_prod_single(conf->ring) && is_multi) ||
-		(!rte_ring_is_prod_single(conf->ring) && !is_multi) ||
-		(conf->tx_burst_sz > RTE_PORT_IN_BURST_SIZE_MAX)) {
-		PORT_LOG(ERR, "%s: Invalid Parameters", __func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate port", __func__);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->ring = conf->ring;
-	port->tx_burst_sz = conf->tx_burst_sz;
-	port->tx_buf_count = 0;
-	port->bsz_mask = 1LLU << (conf->tx_burst_sz - 1);
-	port->is_multi = is_multi;
-
-	return port;
-}
-
-static void *
-rte_port_ring_writer_create(void *params, int socket_id)
-{
-	return rte_port_ring_writer_create_internal(params, socket_id, 0);
-}
-
-static void *
-rte_port_ring_multi_writer_create(void *params, int socket_id)
-{
-	return rte_port_ring_writer_create_internal(params, socket_id, 1);
-}
-
-static inline void
-send_burst(struct rte_port_ring_writer *p)
-{
-	uint32_t nb_tx;
-
-	nb_tx = rte_ring_sp_enqueue_burst(p->ring, (void **)p->tx_buf,
-			p->tx_buf_count, NULL);
-
-	RTE_PORT_RING_WRITER_STATS_PKTS_DROP_ADD(p, p->tx_buf_count - nb_tx);
-	for ( ; nb_tx < p->tx_buf_count; nb_tx++)
-		rte_pktmbuf_free(p->tx_buf[nb_tx]);
-
-	p->tx_buf_count = 0;
-}
-
-static inline void
-send_burst_mp(struct rte_port_ring_writer *p)
-{
-	uint32_t nb_tx;
-
-	nb_tx = rte_ring_mp_enqueue_burst(p->ring, (void **)p->tx_buf,
-			p->tx_buf_count, NULL);
-
-	RTE_PORT_RING_WRITER_STATS_PKTS_DROP_ADD(p, p->tx_buf_count - nb_tx);
-	for ( ; nb_tx < p->tx_buf_count; nb_tx++)
-		rte_pktmbuf_free(p->tx_buf[nb_tx]);
-
-	p->tx_buf_count = 0;
-}
-
-static int
-rte_port_ring_writer_tx(void *port, struct rte_mbuf *pkt)
-{
-	struct rte_port_ring_writer *p = port;
-
-	p->tx_buf[p->tx_buf_count++] = pkt;
-	RTE_PORT_RING_WRITER_STATS_PKTS_IN_ADD(p, 1);
-	if (p->tx_buf_count >= p->tx_burst_sz)
-		send_burst(p);
-
-	return 0;
-}
-
-static int
-rte_port_ring_multi_writer_tx(void *port, struct rte_mbuf *pkt)
-{
-	struct rte_port_ring_writer *p = port;
-
-	p->tx_buf[p->tx_buf_count++] = pkt;
-	RTE_PORT_RING_WRITER_STATS_PKTS_IN_ADD(p, 1);
-	if (p->tx_buf_count >= p->tx_burst_sz)
-		send_burst_mp(p);
-
-	return 0;
-}
-
-static __rte_always_inline int
-rte_port_ring_writer_tx_bulk_internal(void *port,
-		struct rte_mbuf **pkts,
-		uint64_t pkts_mask,
-		uint32_t is_multi)
-{
-	struct rte_port_ring_writer *p =
-		port;
-
-	uint64_t bsz_mask = p->bsz_mask;
-	uint32_t tx_buf_count = p->tx_buf_count;
-	uint64_t expr = (pkts_mask & (pkts_mask + 1)) |
-			((pkts_mask & bsz_mask) ^ bsz_mask);
-
-	if (expr == 0) {
-		uint64_t n_pkts = rte_popcount64(pkts_mask);
-		uint32_t n_pkts_ok;
-
-		if (tx_buf_count) {
-			if (is_multi)
-				send_burst_mp(p);
-			else
-				send_burst(p);
-		}
-
-		RTE_PORT_RING_WRITER_STATS_PKTS_IN_ADD(p, n_pkts);
-		if (is_multi)
-			n_pkts_ok = rte_ring_mp_enqueue_burst(p->ring,
-					(void **)pkts, n_pkts, NULL);
-		else
-			n_pkts_ok = rte_ring_sp_enqueue_burst(p->ring,
-					(void **)pkts, n_pkts, NULL);
-
-		RTE_PORT_RING_WRITER_STATS_PKTS_DROP_ADD(p, n_pkts - n_pkts_ok);
-		for ( ; n_pkts_ok < n_pkts; n_pkts_ok++) {
-			struct rte_mbuf *pkt = pkts[n_pkts_ok];
-
-			rte_pktmbuf_free(pkt);
-		}
-	} else {
-		for ( ; pkts_mask; ) {
-			uint32_t pkt_index = rte_ctz64(pkts_mask);
-			uint64_t pkt_mask = 1LLU << pkt_index;
-			struct rte_mbuf *pkt = pkts[pkt_index];
-
-			p->tx_buf[tx_buf_count++] = pkt;
-			RTE_PORT_RING_WRITER_STATS_PKTS_IN_ADD(p, 1);
-			pkts_mask &= ~pkt_mask;
-		}
-
-		p->tx_buf_count = tx_buf_count;
-		if (tx_buf_count >= p->tx_burst_sz) {
-			if (is_multi)
-				send_burst_mp(p);
-			else
-				send_burst(p);
-		}
-	}
-
-	return 0;
-}
-
-static int
-rte_port_ring_writer_tx_bulk(void *port,
-		struct rte_mbuf **pkts,
-		uint64_t pkts_mask)
-{
-	return rte_port_ring_writer_tx_bulk_internal(port, pkts, pkts_mask, 0);
-}
-
-static int
-rte_port_ring_multi_writer_tx_bulk(void *port,
-		struct rte_mbuf **pkts,
-		uint64_t pkts_mask)
-{
-	return rte_port_ring_writer_tx_bulk_internal(port, pkts, pkts_mask, 1);
-}
-
-static int
-rte_port_ring_writer_flush(void *port)
-{
-	struct rte_port_ring_writer *p = port;
-
-	if (p->tx_buf_count > 0)
-		send_burst(p);
-
-	return 0;
-}
-
-static int
-rte_port_ring_multi_writer_flush(void *port)
-{
-	struct rte_port_ring_writer *p = port;
-
-	if (p->tx_buf_count > 0)
-		send_burst_mp(p);
-
-	return 0;
-}
-
-static int
-rte_port_ring_writer_free(void *port)
-{
-	struct rte_port_ring_writer *p = port;
-
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Port is NULL", __func__);
-		return -EINVAL;
-	}
-
-	if (p->is_multi)
-		rte_port_ring_multi_writer_flush(port);
-	else
-		rte_port_ring_writer_flush(port);
-
-	rte_free(port);
-
-	return 0;
-}
-
-static int
-rte_port_ring_writer_stats_read(void *port,
-		struct rte_port_out_stats *stats, int clear)
-{
-	struct rte_port_ring_writer *p =
-		port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Port RING Writer Nodrop
- */
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_RING_WRITER_NODROP_STATS_PKTS_IN_ADD(port, val) \
-	port->stats.n_pkts_in += val
-#define RTE_PORT_RING_WRITER_NODROP_STATS_PKTS_DROP_ADD(port, val) \
-	port->stats.n_pkts_drop += val
-
-#else
-
-#define RTE_PORT_RING_WRITER_NODROP_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_RING_WRITER_NODROP_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_ring_writer_nodrop {
-	struct rte_port_out_stats stats;
-
-	struct rte_mbuf *tx_buf[2 * RTE_PORT_IN_BURST_SIZE_MAX];
-	struct rte_ring *ring;
-	uint32_t tx_burst_sz;
-	uint32_t tx_buf_count;
-	uint64_t bsz_mask;
-	uint64_t n_retries;
-	uint32_t is_multi;
-};
-
-static void *
-rte_port_ring_writer_nodrop_create_internal(void *params, int socket_id,
-	uint32_t is_multi)
-{
-	struct rte_port_ring_writer_nodrop_params *conf =
-			params;
-	struct rte_port_ring_writer_nodrop *port;
-
-	/* Check input parameters */
-	if ((conf == NULL) ||
-		(conf->ring == NULL) ||
-		(rte_ring_is_prod_single(conf->ring) && is_multi) ||
-		(!rte_ring_is_prod_single(conf->ring) && !is_multi) ||
-		(conf->tx_burst_sz > RTE_PORT_IN_BURST_SIZE_MAX)) {
-		PORT_LOG(ERR, "%s: Invalid Parameters", __func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate port", __func__);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->ring = conf->ring;
-	port->tx_burst_sz = conf->tx_burst_sz;
-	port->tx_buf_count = 0;
-	port->bsz_mask = 1LLU << (conf->tx_burst_sz - 1);
-	port->is_multi = is_multi;
-
-	/*
-	 * When n_retries is 0 it means that we should wait for every packet to
-	 * send no matter how many retries should it take. To limit number of
-	 * branches in fast path, we use UINT64_MAX instead of branching.
-	 */
-	port->n_retries = (conf->n_retries == 0) ? UINT64_MAX : conf->n_retries;
-
-	return port;
-}
-
-static void *
-rte_port_ring_writer_nodrop_create(void *params, int socket_id)
-{
-	return rte_port_ring_writer_nodrop_create_internal(params, socket_id, 0);
-}
-
-static void *
-rte_port_ring_multi_writer_nodrop_create(void *params, int socket_id)
-{
-	return rte_port_ring_writer_nodrop_create_internal(params, socket_id, 1);
-}
-
-static inline void
-send_burst_nodrop(struct rte_port_ring_writer_nodrop *p)
-{
-	uint32_t nb_tx = 0, i;
-
-	nb_tx = rte_ring_sp_enqueue_burst(p->ring, (void **)p->tx_buf,
-				p->tx_buf_count, NULL);
-
-	/* We sent all the packets in a first try */
-	if (nb_tx >= p->tx_buf_count) {
-		p->tx_buf_count = 0;
-		return;
-	}
-
-	for (i = 0; i < p->n_retries; i++) {
-		nb_tx += rte_ring_sp_enqueue_burst(p->ring,
-				(void **) (p->tx_buf + nb_tx),
-				p->tx_buf_count - nb_tx, NULL);
-
-		/* We sent all the packets in more than one try */
-		if (nb_tx >= p->tx_buf_count) {
-			p->tx_buf_count = 0;
-			return;
-		}
-	}
-
-	/* We didn't send the packets in maximum allowed attempts */
-	RTE_PORT_RING_WRITER_NODROP_STATS_PKTS_DROP_ADD(p, p->tx_buf_count - nb_tx);
-	for ( ; nb_tx < p->tx_buf_count; nb_tx++)
-		rte_pktmbuf_free(p->tx_buf[nb_tx]);
-
-	p->tx_buf_count = 0;
-}
-
-static inline void
-send_burst_mp_nodrop(struct rte_port_ring_writer_nodrop *p)
-{
-	uint32_t nb_tx = 0, i;
-
-	nb_tx = rte_ring_mp_enqueue_burst(p->ring, (void **)p->tx_buf,
-				p->tx_buf_count, NULL);
-
-	/* We sent all the packets in a first try */
-	if (nb_tx >= p->tx_buf_count) {
-		p->tx_buf_count = 0;
-		return;
-	}
-
-	for (i = 0; i < p->n_retries; i++) {
-		nb_tx += rte_ring_mp_enqueue_burst(p->ring,
-				(void **) (p->tx_buf + nb_tx),
-				p->tx_buf_count - nb_tx, NULL);
-
-		/* We sent all the packets in more than one try */
-		if (nb_tx >= p->tx_buf_count) {
-			p->tx_buf_count = 0;
-			return;
-		}
-	}
-
-	/* We didn't send the packets in maximum allowed attempts */
-	RTE_PORT_RING_WRITER_NODROP_STATS_PKTS_DROP_ADD(p, p->tx_buf_count - nb_tx);
-	for ( ; nb_tx < p->tx_buf_count; nb_tx++)
-		rte_pktmbuf_free(p->tx_buf[nb_tx]);
-
-	p->tx_buf_count = 0;
-}
-
-static int
-rte_port_ring_writer_nodrop_tx(void *port, struct rte_mbuf *pkt)
-{
-	struct rte_port_ring_writer_nodrop *p =
-			port;
-
-	p->tx_buf[p->tx_buf_count++] = pkt;
-	RTE_PORT_RING_WRITER_NODROP_STATS_PKTS_IN_ADD(p, 1);
-	if (p->tx_buf_count >= p->tx_burst_sz)
-		send_burst_nodrop(p);
-
-	return 0;
-}
-
-static int
-rte_port_ring_multi_writer_nodrop_tx(void *port, struct rte_mbuf *pkt)
-{
-	struct rte_port_ring_writer_nodrop *p =
-			port;
-
-	p->tx_buf[p->tx_buf_count++] = pkt;
-	RTE_PORT_RING_WRITER_NODROP_STATS_PKTS_IN_ADD(p, 1);
-	if (p->tx_buf_count >= p->tx_burst_sz)
-		send_burst_mp_nodrop(p);
-
-	return 0;
-}
-
-static __rte_always_inline int
-rte_port_ring_writer_nodrop_tx_bulk_internal(void *port,
-		struct rte_mbuf **pkts,
-		uint64_t pkts_mask,
-		uint32_t is_multi)
-{
-	struct rte_port_ring_writer_nodrop *p =
-		port;
-
-	uint64_t bsz_mask = p->bsz_mask;
-	uint32_t tx_buf_count = p->tx_buf_count;
-	uint64_t expr = (pkts_mask & (pkts_mask + 1)) |
-			((pkts_mask & bsz_mask) ^ bsz_mask);
-
-	if (expr == 0) {
-		uint64_t n_pkts = rte_popcount64(pkts_mask);
-		uint32_t n_pkts_ok;
-
-		if (tx_buf_count) {
-			if (is_multi)
-				send_burst_mp_nodrop(p);
-			else
-				send_burst_nodrop(p);
-		}
-
-		RTE_PORT_RING_WRITER_NODROP_STATS_PKTS_IN_ADD(p, n_pkts);
-		if (is_multi)
-			n_pkts_ok =
-				rte_ring_mp_enqueue_burst(p->ring,
-						(void **)pkts, n_pkts, NULL);
-		else
-			n_pkts_ok =
-				rte_ring_sp_enqueue_burst(p->ring,
-						(void **)pkts, n_pkts, NULL);
-
-		if (n_pkts_ok >= n_pkts)
-			return 0;
-
-		/*
-		 * If we didn't manage to send all packets in single burst, move
-		 * remaining packets to the buffer and call send burst.
-		 */
-		for (; n_pkts_ok < n_pkts; n_pkts_ok++) {
-			struct rte_mbuf *pkt = pkts[n_pkts_ok];
-
-			p->tx_buf[p->tx_buf_count++] = pkt;
-		}
-		if (is_multi)
-			send_burst_mp_nodrop(p);
-		else
-			send_burst_nodrop(p);
-	} else {
-		for ( ; pkts_mask; ) {
-			uint32_t pkt_index = rte_ctz64(pkts_mask);
-			uint64_t pkt_mask = 1LLU << pkt_index;
-			struct rte_mbuf *pkt = pkts[pkt_index];
-
-			p->tx_buf[tx_buf_count++] = pkt;
-			RTE_PORT_RING_WRITER_NODROP_STATS_PKTS_IN_ADD(p, 1);
-			pkts_mask &= ~pkt_mask;
-		}
-
-		p->tx_buf_count = tx_buf_count;
-		if (tx_buf_count >= p->tx_burst_sz) {
-			if (is_multi)
-				send_burst_mp_nodrop(p);
-			else
-				send_burst_nodrop(p);
-		}
-	}
-
-	return 0;
-}
-
-static int
-rte_port_ring_writer_nodrop_tx_bulk(void *port,
-		struct rte_mbuf **pkts,
-		uint64_t pkts_mask)
-{
-	return
-		rte_port_ring_writer_nodrop_tx_bulk_internal(port, pkts, pkts_mask, 0);
-}
-
-static int
-rte_port_ring_multi_writer_nodrop_tx_bulk(void *port,
-		struct rte_mbuf **pkts,
-		uint64_t pkts_mask)
-{
-	return
-		rte_port_ring_writer_nodrop_tx_bulk_internal(port, pkts, pkts_mask, 1);
-}
-
-static int
-rte_port_ring_writer_nodrop_flush(void *port)
-{
-	struct rte_port_ring_writer_nodrop *p =
-			port;
-
-	if (p->tx_buf_count > 0)
-		send_burst_nodrop(p);
-
-	return 0;
-}
-
-static int
-rte_port_ring_multi_writer_nodrop_flush(void *port)
-{
-	struct rte_port_ring_writer_nodrop *p =
-			port;
-
-	if (p->tx_buf_count > 0)
-		send_burst_mp_nodrop(p);
-
-	return 0;
-}
-
-static int
-rte_port_ring_writer_nodrop_free(void *port)
-{
-	struct rte_port_ring_writer_nodrop *p =
-			port;
-
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Port is NULL", __func__);
-		return -EINVAL;
-	}
-
-	if (p->is_multi)
-		rte_port_ring_multi_writer_nodrop_flush(port);
-	else
-		rte_port_ring_writer_nodrop_flush(port);
-
-	rte_free(port);
-
-	return 0;
-}
-
-static int
-rte_port_ring_writer_nodrop_stats_read(void *port,
-		struct rte_port_out_stats *stats, int clear)
-{
-	struct rte_port_ring_writer_nodrop *p =
-		port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Summary of port operations
- */
-RTE_EXPORT_SYMBOL(rte_port_ring_reader_ops)
-struct rte_port_in_ops rte_port_ring_reader_ops = {
-	.f_create = rte_port_ring_reader_create,
-	.f_free = rte_port_ring_reader_free,
-	.f_rx = rte_port_ring_reader_rx,
-	.f_stats = rte_port_ring_reader_stats_read,
-};
-
-RTE_EXPORT_SYMBOL(rte_port_ring_writer_ops)
-struct rte_port_out_ops rte_port_ring_writer_ops = {
-	.f_create = rte_port_ring_writer_create,
-	.f_free = rte_port_ring_writer_free,
-	.f_tx = rte_port_ring_writer_tx,
-	.f_tx_bulk = rte_port_ring_writer_tx_bulk,
-	.f_flush = rte_port_ring_writer_flush,
-	.f_stats = rte_port_ring_writer_stats_read,
-};
-
-RTE_EXPORT_SYMBOL(rte_port_ring_writer_nodrop_ops)
-struct rte_port_out_ops rte_port_ring_writer_nodrop_ops = {
-	.f_create = rte_port_ring_writer_nodrop_create,
-	.f_free = rte_port_ring_writer_nodrop_free,
-	.f_tx = rte_port_ring_writer_nodrop_tx,
-	.f_tx_bulk = rte_port_ring_writer_nodrop_tx_bulk,
-	.f_flush = rte_port_ring_writer_nodrop_flush,
-	.f_stats = rte_port_ring_writer_nodrop_stats_read,
-};
-
-RTE_EXPORT_SYMBOL(rte_port_ring_multi_reader_ops)
-struct rte_port_in_ops rte_port_ring_multi_reader_ops = {
-	.f_create = rte_port_ring_multi_reader_create,
-	.f_free = rte_port_ring_reader_free,
-	.f_rx = rte_port_ring_multi_reader_rx,
-	.f_stats = rte_port_ring_reader_stats_read,
-};
-
-RTE_EXPORT_SYMBOL(rte_port_ring_multi_writer_ops)
-struct rte_port_out_ops rte_port_ring_multi_writer_ops = {
-	.f_create = rte_port_ring_multi_writer_create,
-	.f_free = rte_port_ring_writer_free,
-	.f_tx = rte_port_ring_multi_writer_tx,
-	.f_tx_bulk = rte_port_ring_multi_writer_tx_bulk,
-	.f_flush = rte_port_ring_multi_writer_flush,
-	.f_stats = rte_port_ring_writer_stats_read,
-};
-
-RTE_EXPORT_SYMBOL(rte_port_ring_multi_writer_nodrop_ops)
-struct rte_port_out_ops rte_port_ring_multi_writer_nodrop_ops = {
-	.f_create = rte_port_ring_multi_writer_nodrop_create,
-	.f_free = rte_port_ring_writer_nodrop_free,
-	.f_tx = rte_port_ring_multi_writer_nodrop_tx,
-	.f_tx_bulk = rte_port_ring_multi_writer_nodrop_tx_bulk,
-	.f_flush = rte_port_ring_multi_writer_nodrop_flush,
-	.f_stats = rte_port_ring_writer_nodrop_stats_read,
-};
diff --git a/lib/port/rte_port_ring.h b/lib/port/rte_port_ring.h
deleted file mode 100644
index 2089d0889b..0000000000
--- a/lib/port/rte_port_ring.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2014 Intel Corporation
- */
-
-#ifndef __INCLUDE_RTE_PORT_RING_H__
-#define __INCLUDE_RTE_PORT_RING_H__
-
-/**
- * @file
- * RTE Port Ring
- *
- * ring_reader:
- *      input port built on top of pre-initialized single consumer ring
- * ring_writer:
- *      output port built on top of pre-initialized single producer ring
- * ring_multi_reader:
- *      input port built on top of pre-initialized multi consumers ring
- * ring_multi_writer:
- *      output port built on top of pre-initialized multi producers ring
- */
-
-#include <stdint.h>
-
-#include "rte_port.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** ring_reader port parameters */
-struct rte_port_ring_reader_params {
-	/** Underlying consumer ring that has to be pre-initialized */
-	struct rte_ring *ring;
-};
-
-/** ring_reader port operations */
-extern struct rte_port_in_ops rte_port_ring_reader_ops;
-
-/** ring_writer port parameters */
-struct rte_port_ring_writer_params {
-	/** Underlying producer ring that has to be pre-initialized */
-	struct rte_ring *ring;
-
-	/** Recommended burst size to ring. The actual burst size can be
-		bigger or smaller than this value. */
-	uint32_t tx_burst_sz;
-};
-
-/** ring_writer port operations */
-extern struct rte_port_out_ops rte_port_ring_writer_ops;
-
-/** ring_writer_nodrop port parameters */
-struct rte_port_ring_writer_nodrop_params {
-	/** Underlying producer ring that has to be pre-initialized */
-	struct rte_ring *ring;
-
-	/** Recommended burst size to ring. The actual burst size can be
-		bigger or smaller than this value. */
-	uint32_t tx_burst_sz;
-
-	/** Maximum number of retries, 0 for no limit */
-	uint32_t n_retries;
-};
-
-/** ring_writer_nodrop port operations */
-extern struct rte_port_out_ops rte_port_ring_writer_nodrop_ops;
-
-/** ring_multi_reader port parameters */
-#define rte_port_ring_multi_reader_params rte_port_ring_reader_params
-
-/** ring_multi_reader port operations */
-extern struct rte_port_in_ops rte_port_ring_multi_reader_ops;
-
-/** ring_multi_writer port parameters */
-#define rte_port_ring_multi_writer_params rte_port_ring_writer_params
-
-/** ring_multi_writer port operations */
-extern struct rte_port_out_ops rte_port_ring_multi_writer_ops;
-
-/** ring_multi_writer_nodrop port parameters */
-#define rte_port_ring_multi_writer_nodrop_params \
-	rte_port_ring_writer_nodrop_params
-
-/** ring_multi_writer_nodrop port operations */
-extern struct rte_port_out_ops rte_port_ring_multi_writer_nodrop_ops;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/lib/port/rte_port_sched.c b/lib/port/rte_port_sched.c
deleted file mode 100644
index 3091078aa1..0000000000
--- a/lib/port/rte_port_sched.c
+++ /dev/null
@@ -1,298 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2014 Intel Corporation
- */
-#include <string.h>
-
-#include <eal_export.h>
-#include <rte_malloc.h>
-
-#include "rte_port_sched.h"
-
-#include "port_log.h"
-
-/*
- * Reader
- */
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_SCHED_READER_PKTS_IN_ADD(port, val) \
-	port->stats.n_pkts_in += val
-#define RTE_PORT_SCHED_READER_PKTS_DROP_ADD(port, val) \
-	port->stats.n_pkts_drop += val
-
-#else
-
-#define RTE_PORT_SCHED_READER_PKTS_IN_ADD(port, val)
-#define RTE_PORT_SCHED_READER_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_sched_reader {
-	struct rte_port_in_stats stats;
-
-	struct rte_sched_port *sched;
-};
-
-static void *
-rte_port_sched_reader_create(void *params, int socket_id)
-{
-	struct rte_port_sched_reader_params *conf =
-			params;
-	struct rte_port_sched_reader *port;
-
-	/* Check input parameters */
-	if ((conf == NULL) ||
-	    (conf->sched == NULL)) {
-		PORT_LOG(ERR, "%s: Invalid params", __func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate port", __func__);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->sched = conf->sched;
-
-	return port;
-}
-
-static int
-rte_port_sched_reader_rx(void *port, struct rte_mbuf **pkts, uint32_t n_pkts)
-{
-	struct rte_port_sched_reader *p = port;
-	uint32_t nb_rx;
-
-	nb_rx = rte_sched_port_dequeue(p->sched, pkts, n_pkts);
-	RTE_PORT_SCHED_READER_PKTS_IN_ADD(p, nb_rx);
-
-	return nb_rx;
-}
-
-static int
-rte_port_sched_reader_free(void *port)
-{
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: port is NULL", __func__);
-		return -EINVAL;
-	}
-
-	rte_free(port);
-
-	return 0;
-}
-
-static int
-rte_port_sched_reader_stats_read(void *port,
-		struct rte_port_in_stats *stats, int clear)
-{
-	struct rte_port_sched_reader *p =
-		port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Writer
- */
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_SCHED_WRITER_STATS_PKTS_IN_ADD(port, val) \
-	port->stats.n_pkts_in += val
-#define RTE_PORT_SCHED_WRITER_STATS_PKTS_DROP_ADD(port, val) \
-	port->stats.n_pkts_drop += val
-
-#else
-
-#define RTE_PORT_SCHED_WRITER_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_SCHED_WRITER_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_sched_writer {
-	struct rte_port_out_stats stats;
-
-	struct rte_mbuf *tx_buf[2 * RTE_PORT_IN_BURST_SIZE_MAX];
-	struct rte_sched_port *sched;
-	uint32_t tx_burst_sz;
-	uint32_t tx_buf_count;
-	uint64_t bsz_mask;
-};
-
-static void *
-rte_port_sched_writer_create(void *params, int socket_id)
-{
-	struct rte_port_sched_writer_params *conf =
-			params;
-	struct rte_port_sched_writer *port;
-
-	/* Check input parameters */
-	if ((conf == NULL) ||
-	    (conf->sched == NULL) ||
-	    (conf->tx_burst_sz == 0) ||
-	    (conf->tx_burst_sz > RTE_PORT_IN_BURST_SIZE_MAX) ||
-		(!rte_is_power_of_2(conf->tx_burst_sz))) {
-		PORT_LOG(ERR, "%s: Invalid params", __func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate port", __func__);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->sched = conf->sched;
-	port->tx_burst_sz = conf->tx_burst_sz;
-	port->tx_buf_count = 0;
-	port->bsz_mask = 1LLU << (conf->tx_burst_sz - 1);
-
-	return port;
-}
-
-static int
-rte_port_sched_writer_tx(void *port, struct rte_mbuf *pkt)
-{
-	struct rte_port_sched_writer *p = (struct rte_port_sched_writer *) port;
-
-	p->tx_buf[p->tx_buf_count++] = pkt;
-	RTE_PORT_SCHED_WRITER_STATS_PKTS_IN_ADD(p, 1);
-	if (p->tx_buf_count >= p->tx_burst_sz) {
-		__rte_unused uint32_t nb_tx;
-
-		nb_tx = rte_sched_port_enqueue(p->sched, p->tx_buf, p->tx_buf_count);
-		RTE_PORT_SCHED_WRITER_STATS_PKTS_DROP_ADD(p, p->tx_buf_count - nb_tx);
-		p->tx_buf_count = 0;
-	}
-
-	return 0;
-}
-
-static int
-rte_port_sched_writer_tx_bulk(void *port,
-		struct rte_mbuf **pkts,
-		uint64_t pkts_mask)
-{
-	struct rte_port_sched_writer *p = (struct rte_port_sched_writer *) port;
-	uint64_t bsz_mask = p->bsz_mask;
-	uint32_t tx_buf_count = p->tx_buf_count;
-	uint64_t expr = (pkts_mask & (pkts_mask + 1)) |
-			((pkts_mask & bsz_mask) ^ bsz_mask);
-
-	if (expr == 0) {
-		__rte_unused uint32_t nb_tx;
-		uint64_t n_pkts = rte_popcount64(pkts_mask);
-
-		if (tx_buf_count) {
-			nb_tx = rte_sched_port_enqueue(p->sched, p->tx_buf,
-				tx_buf_count);
-			RTE_PORT_SCHED_WRITER_STATS_PKTS_DROP_ADD(p, tx_buf_count - nb_tx);
-			p->tx_buf_count = 0;
-		}
-
-		nb_tx = rte_sched_port_enqueue(p->sched, pkts, n_pkts);
-		RTE_PORT_SCHED_WRITER_STATS_PKTS_DROP_ADD(p, n_pkts - nb_tx);
-	} else {
-		for ( ; pkts_mask; ) {
-			uint32_t pkt_index = rte_ctz64(pkts_mask);
-			uint64_t pkt_mask = 1LLU << pkt_index;
-			struct rte_mbuf *pkt = pkts[pkt_index];
-
-			p->tx_buf[tx_buf_count++] = pkt;
-			RTE_PORT_SCHED_WRITER_STATS_PKTS_IN_ADD(p, 1);
-			pkts_mask &= ~pkt_mask;
-		}
-		p->tx_buf_count = tx_buf_count;
-
-		if (tx_buf_count >= p->tx_burst_sz) {
-			__rte_unused uint32_t nb_tx;
-
-			nb_tx = rte_sched_port_enqueue(p->sched, p->tx_buf,
-				tx_buf_count);
-			RTE_PORT_SCHED_WRITER_STATS_PKTS_DROP_ADD(p, tx_buf_count - nb_tx);
-			p->tx_buf_count = 0;
-		}
-	}
-
-	return 0;
-}
-
-static int
-rte_port_sched_writer_flush(void *port)
-{
-	struct rte_port_sched_writer *p = (struct rte_port_sched_writer *) port;
-
-	if (p->tx_buf_count) {
-		__rte_unused uint32_t nb_tx;
-
-		nb_tx = rte_sched_port_enqueue(p->sched, p->tx_buf, p->tx_buf_count);
-		RTE_PORT_SCHED_WRITER_STATS_PKTS_DROP_ADD(p, p->tx_buf_count - nb_tx);
-		p->tx_buf_count = 0;
-	}
-
-	return 0;
-}
-
-static int
-rte_port_sched_writer_free(void *port)
-{
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: port is NULL", __func__);
-		return -EINVAL;
-	}
-
-	rte_port_sched_writer_flush(port);
-	rte_free(port);
-
-	return 0;
-}
-
-static int
-rte_port_sched_writer_stats_read(void *port,
-		struct rte_port_out_stats *stats, int clear)
-{
-	struct rte_port_sched_writer *p =
-		port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Summary of port operations
- */
-RTE_EXPORT_SYMBOL(rte_port_sched_reader_ops)
-struct rte_port_in_ops rte_port_sched_reader_ops = {
-	.f_create = rte_port_sched_reader_create,
-	.f_free = rte_port_sched_reader_free,
-	.f_rx = rte_port_sched_reader_rx,
-	.f_stats = rte_port_sched_reader_stats_read,
-};
-
-RTE_EXPORT_SYMBOL(rte_port_sched_writer_ops)
-struct rte_port_out_ops rte_port_sched_writer_ops = {
-	.f_create = rte_port_sched_writer_create,
-	.f_free = rte_port_sched_writer_free,
-	.f_tx = rte_port_sched_writer_tx,
-	.f_tx_bulk = rte_port_sched_writer_tx_bulk,
-	.f_flush = rte_port_sched_writer_flush,
-	.f_stats = rte_port_sched_writer_stats_read,
-};
diff --git a/lib/port/rte_port_sched.h b/lib/port/rte_port_sched.h
deleted file mode 100644
index 1bf08ae6a9..0000000000
--- a/lib/port/rte_port_sched.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2014 Intel Corporation
- */
-
-#ifndef __INCLUDE_RTE_PORT_SCHED_H__
-#define __INCLUDE_RTE_PORT_SCHED_H__
-
-/**
- * @file
- * RTE Port Hierarchical Scheduler
- *
- * sched_reader: input port built on top of pre-initialized rte_sched_port
- * sched_writer: output port built on top of pre-initialized rte_sched_port
- */
-
-#include <stdint.h>
-
-#include <rte_sched.h>
-
-#include "rte_port.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** sched_reader port parameters */
-struct rte_port_sched_reader_params {
-	/** Underlying pre-initialized rte_sched_port */
-	struct rte_sched_port *sched;
-};
-
-/** sched_reader port operations */
-extern struct rte_port_in_ops rte_port_sched_reader_ops;
-
-/** sched_writer port parameters */
-struct rte_port_sched_writer_params {
-	/** Underlying pre-initialized rte_sched_port */
-	struct rte_sched_port *sched;
-
-	/** Recommended burst size. The actual burst size can be bigger or
-	smaller than this value. */
-	uint32_t tx_burst_sz;
-};
-
-/** sched_writer port operations */
-extern struct rte_port_out_ops rte_port_sched_writer_ops;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/lib/port/rte_port_source_sink.c b/lib/port/rte_port_source_sink.c
deleted file mode 100644
index 0557e12506..0000000000
--- a/lib/port/rte_port_source_sink.c
+++ /dev/null
@@ -1,616 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2016 Intel Corporation
- */
-#include <stdint.h>
-#include <string.h>
-
-#include <eal_export.h>
-#include <rte_mbuf.h>
-#include <rte_malloc.h>
-#include <rte_memcpy.h>
-
-#ifdef RTE_PORT_PCAP
-#include <rte_ether.h>
-#include <pcap.h>
-#endif
-
-#include "rte_port_source_sink.h"
-
-#include "port_log.h"
-
-/*
- * Port SOURCE
- */
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_SOURCE_STATS_PKTS_IN_ADD(port, val) \
-	port->stats.n_pkts_in += val
-#define RTE_PORT_SOURCE_STATS_PKTS_DROP_ADD(port, val) \
-	port->stats.n_pkts_drop += val
-
-#else
-
-#define RTE_PORT_SOURCE_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_SOURCE_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_source {
-	struct rte_port_in_stats stats;
-
-	struct rte_mempool *mempool;
-
-	/* PCAP buffers and indices */
-	uint8_t **pkts;
-	uint8_t *pkt_buff;
-	uint32_t *pkt_len;
-	uint32_t n_pkts;
-	uint32_t pkt_index;
-};
-
-#ifdef RTE_PORT_PCAP
-
-static int
-pcap_source_load(struct rte_port_source *port,
-		const char *file_name,
-		uint32_t n_bytes_per_pkt,
-		int socket_id)
-{
-	uint32_t n_pkts = 0;
-	uint32_t i;
-	uint32_t *pkt_len_aligns = NULL;
-	size_t total_buff_len = 0;
-	pcap_t *pcap_handle;
-	char pcap_errbuf[PCAP_ERRBUF_SIZE];
-	uint32_t max_len;
-	struct pcap_pkthdr pcap_hdr;
-	const uint8_t *pkt;
-	uint8_t *buff = NULL;
-	uint32_t pktmbuf_maxlen = (uint32_t)
-			(rte_pktmbuf_data_room_size(port->mempool) -
-			RTE_PKTMBUF_HEADROOM);
-
-	if (n_bytes_per_pkt == 0)
-		max_len = pktmbuf_maxlen;
-	else
-		max_len = RTE_MIN(n_bytes_per_pkt, pktmbuf_maxlen);
-
-	/* first time open, get packet number */
-	pcap_handle = pcap_open_offline(file_name, pcap_errbuf);
-	if (pcap_handle == NULL) {
-		PORT_LOG(ERR, "Failed to open pcap file "
-			"'%s' for reading", file_name);
-		goto error_exit;
-	}
-
-	while ((pkt = pcap_next(pcap_handle, &pcap_hdr)) != NULL)
-		n_pkts++;
-
-	pcap_close(pcap_handle);
-
-	port->pkt_len = rte_zmalloc_socket("PCAP",
-		(sizeof(*port->pkt_len) * n_pkts), 0, socket_id);
-	if (port->pkt_len == NULL) {
-		PORT_LOG(ERR, "No enough memory");
-		goto error_exit;
-	}
-
-	pkt_len_aligns = rte_malloc("PCAP",
-		(sizeof(*pkt_len_aligns) * n_pkts), 0);
-	if (pkt_len_aligns == NULL) {
-		PORT_LOG(ERR, "No enough memory");
-		goto error_exit;
-	}
-
-	port->pkts = rte_zmalloc_socket("PCAP",
-		(sizeof(*port->pkts) * n_pkts), 0, socket_id);
-	if (port->pkts == NULL) {
-		PORT_LOG(ERR, "No enough memory");
-		goto error_exit;
-	}
-
-	/* open 2nd time, get pkt_len */
-	pcap_handle = pcap_open_offline(file_name, pcap_errbuf);
-	if (pcap_handle == NULL) {
-		PORT_LOG(ERR, "Failed to open pcap file "
-			"'%s' for reading", file_name);
-		goto error_exit;
-	}
-
-	for (i = 0; i < n_pkts; i++) {
-		pcap_next(pcap_handle, &pcap_hdr);
-		port->pkt_len[i] = RTE_MIN(max_len, pcap_hdr.len);
-		pkt_len_aligns[i] = RTE_CACHE_LINE_ROUNDUP(
-			port->pkt_len[i]);
-		total_buff_len += pkt_len_aligns[i];
-	}
-
-	pcap_close(pcap_handle);
-
-	/* allocate a big trunk of data for pcap file load */
-	buff = rte_zmalloc_socket("PCAP",
-		total_buff_len, 0, socket_id);
-	if (buff == NULL) {
-		PORT_LOG(ERR, "No enough memory");
-		goto error_exit;
-	}
-
-	port->pkt_buff = buff;
-
-	/* open file one last time to copy the pkt content */
-	pcap_handle = pcap_open_offline(file_name, pcap_errbuf);
-	if (pcap_handle == NULL) {
-		PORT_LOG(ERR, "Failed to open pcap file "
-			"'%s' for reading", file_name);
-		goto error_exit;
-	}
-
-	for (i = 0; i < n_pkts; i++) {
-		pkt = pcap_next(pcap_handle, &pcap_hdr);
-		rte_memcpy(buff, pkt, port->pkt_len[i]);
-		port->pkts[i] = buff;
-		buff += pkt_len_aligns[i];
-	}
-
-	pcap_close(pcap_handle);
-
-	port->n_pkts = n_pkts;
-
-	rte_free(pkt_len_aligns);
-
-	PORT_LOG(INFO, "Successfully load pcap file "
-		"'%s' with %u pkts",
-		file_name, port->n_pkts);
-
-	return 0;
-
-error_exit:
-	rte_free(pkt_len_aligns);
-	rte_free(port->pkt_len);
-	rte_free(port->pkts);
-	rte_free(port->pkt_buff);
-
-	return -1;
-}
-
-#define PCAP_SOURCE_LOAD(port, file_name, n_bytes, socket_id)	\
-	pcap_source_load(port, file_name, n_bytes, socket_id)
-
-#else /* RTE_PORT_PCAP */
-
-#define PCAP_SOURCE_LOAD(port, file_name, n_bytes, socket_id)	\
-__extension__ ({						\
-	int _ret = 0;						\
-								\
-	if (file_name) {					\
-		PORT_LOG(ERR, "Source port field "		\
-			"\"file_name\" is not NULL.");	\
-		_ret = -1;					\
-	}							\
-								\
-	_ret;							\
-})
-
-#endif /* RTE_PORT_PCAP */
-
-static void *
-rte_port_source_create(void *params, int socket_id)
-{
-	struct rte_port_source_params *p =
-			params;
-	struct rte_port_source *port;
-
-	/* Check input arguments*/
-	if ((p == NULL) || (p->mempool == NULL)) {
-		PORT_LOG(ERR, "%s: Invalid params", __func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate port", __func__);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->mempool = (struct rte_mempool *) p->mempool;
-
-	if (p->file_name) {
-		int status = PCAP_SOURCE_LOAD(port, p->file_name,
-			p->n_bytes_per_pkt, socket_id);
-
-		if (status < 0) {
-			rte_free(port);
-			port = NULL;
-		}
-	}
-
-	return port;
-}
-
-static int
-rte_port_source_free(void *port)
-{
-	struct rte_port_source *p =
-			port;
-
-	/* Check input parameters */
-	if (p == NULL)
-		return 0;
-
-	rte_free(p->pkt_len);
-	rte_free(p->pkts);
-	rte_free(p->pkt_buff);
-
-	rte_free(p);
-
-	return 0;
-}
-
-static int
-rte_port_source_rx(void *port, struct rte_mbuf **pkts, uint32_t n_pkts)
-{
-	struct rte_port_source *p = port;
-	uint32_t i;
-
-	if (rte_pktmbuf_alloc_bulk(p->mempool, pkts, n_pkts) != 0)
-		return 0;
-
-	if (p->pkt_buff != NULL) {
-		for (i = 0; i < n_pkts; i++) {
-			uint8_t *pkt_data = rte_pktmbuf_mtod(pkts[i],
-				uint8_t *);
-
-			rte_memcpy(pkt_data, p->pkts[p->pkt_index],
-					p->pkt_len[p->pkt_index]);
-			pkts[i]->data_len = p->pkt_len[p->pkt_index];
-			pkts[i]->pkt_len = pkts[i]->data_len;
-
-			p->pkt_index++;
-			if (p->pkt_index >= p->n_pkts)
-				p->pkt_index = 0;
-		}
-	}
-
-	RTE_PORT_SOURCE_STATS_PKTS_IN_ADD(p, n_pkts);
-
-	return n_pkts;
-}
-
-static int
-rte_port_source_stats_read(void *port,
-		struct rte_port_in_stats *stats, int clear)
-{
-	struct rte_port_source *p =
-		port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Port SINK
- */
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_SINK_STATS_PKTS_IN_ADD(port, val) \
-	(port->stats.n_pkts_in += val)
-#define RTE_PORT_SINK_STATS_PKTS_DROP_ADD(port, val) \
-	(port->stats.n_pkts_drop += val)
-
-#else
-
-#define RTE_PORT_SINK_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_SINK_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_sink {
-	struct rte_port_out_stats stats;
-
-	/* PCAP dumper handle and pkts number */
-	void *dumper;
-	uint32_t max_pkts;
-	uint32_t pkt_index;
-	uint32_t dump_finish;
-};
-
-#ifdef RTE_PORT_PCAP
-
-static int
-pcap_sink_open(struct rte_port_sink *port,
-	const char *file_name,
-	uint32_t max_n_pkts)
-{
-	pcap_t *tx_pcap;
-	pcap_dumper_t *pcap_dumper;
-
-	/** Open a dead pcap handler for opening dumper file */
-	tx_pcap = pcap_open_dead(DLT_EN10MB, 65535);
-	if (tx_pcap == NULL) {
-		PORT_LOG(ERR, "Cannot open pcap dead handler");
-		return -1;
-	}
-
-	/* The dumper is created using the previous pcap_t reference */
-	pcap_dumper = pcap_dump_open(tx_pcap, file_name);
-	if (pcap_dumper == NULL) {
-		PORT_LOG(ERR, "Failed to open pcap file "
-			"\"%s\" for writing", file_name);
-		return -1;
-	}
-
-	port->dumper = pcap_dumper;
-	port->max_pkts = max_n_pkts;
-	port->pkt_index = 0;
-	port->dump_finish = 0;
-
-	PORT_LOG(INFO, "Ready to dump packets to file \"%s\"",
-		file_name);
-
-	return 0;
-}
-
-static void
-pcap_sink_write_pkt(struct rte_port_sink *port, struct rte_mbuf *mbuf)
-{
-	uint8_t *pcap_dumper = (port->dumper);
-	struct pcap_pkthdr pcap_hdr;
-	uint8_t jumbo_pkt_buf[RTE_ETHER_MAX_JUMBO_FRAME_LEN];
-	uint8_t *pkt;
-
-	/* Maximum num packets already reached */
-	if (port->dump_finish)
-		return;
-
-	pkt = rte_pktmbuf_mtod(mbuf, uint8_t *);
-
-	pcap_hdr.len = mbuf->pkt_len;
-	pcap_hdr.caplen = pcap_hdr.len;
-	gettimeofday(&(pcap_hdr.ts), NULL);
-
-	if (mbuf->nb_segs > 1) {
-		struct rte_mbuf *jumbo_mbuf;
-		uint32_t pkt_index = 0;
-
-		/* if packet size longer than RTE_ETHER_MAX_JUMBO_FRAME_LEN,
-		 * ignore it.
-		 */
-		if (mbuf->pkt_len > RTE_ETHER_MAX_JUMBO_FRAME_LEN)
-			return;
-
-		for (jumbo_mbuf = mbuf; jumbo_mbuf != NULL;
-				jumbo_mbuf = jumbo_mbuf->next) {
-			rte_memcpy(&jumbo_pkt_buf[pkt_index],
-				rte_pktmbuf_mtod(jumbo_mbuf, uint8_t *),
-				jumbo_mbuf->data_len);
-			pkt_index += jumbo_mbuf->data_len;
-		}
-
-		jumbo_pkt_buf[pkt_index] = '\0';
-
-		pkt = jumbo_pkt_buf;
-	}
-
-	pcap_dump(pcap_dumper, &pcap_hdr, pkt);
-
-	port->pkt_index++;
-
-	if ((port->max_pkts != 0) && (port->pkt_index >= port->max_pkts)) {
-		port->dump_finish = 1;
-		PORT_LOG(INFO, "Dumped %u packets to file",
-				port->pkt_index);
-	}
-
-}
-
-#define PCAP_SINK_OPEN(port, file_name, max_n_pkts)		\
-	pcap_sink_open(port, file_name, max_n_pkts)
-
-#define PCAP_SINK_WRITE_PKT(port, mbuf)				\
-	pcap_sink_write_pkt(port, mbuf)
-
-#define PCAP_SINK_FLUSH_PKT(dumper)				\
-do {								\
-	if (dumper)						\
-		pcap_dump_flush((pcap_dumper_t *)dumper);	\
-} while (0)
-
-#define PCAP_SINK_CLOSE(dumper)					\
-do {								\
-	if (dumper)						\
-		pcap_dump_close((pcap_dumper_t *)dumper);	\
-} while (0)
-
-#else
-
-#define PCAP_SINK_OPEN(port, file_name, max_n_pkts)		\
-__extension__ ({						\
-	int _ret = 0;						\
-								\
-	if (file_name) {					\
-		PORT_LOG(ERR, "Sink port field "		\
-			"\"file_name\" is not NULL.");	\
-		_ret = -1;					\
-	}							\
-								\
-	_ret;							\
-})
-
-#define PCAP_SINK_WRITE_PKT(port, mbuf) {}
-
-#define PCAP_SINK_FLUSH_PKT(dumper)
-
-#define PCAP_SINK_CLOSE(dumper)
-
-#endif
-
-static void *
-rte_port_sink_create(void *params, int socket_id)
-{
-	struct rte_port_sink *port;
-	struct rte_port_sink_params *p = params;
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate port", __func__);
-		return NULL;
-	}
-
-	if (!p)
-		return port;
-
-	if (p->file_name) {
-		int status = PCAP_SINK_OPEN(port, p->file_name,
-			p->max_n_pkts);
-
-		if (status < 0) {
-			rte_free(port);
-			port = NULL;
-		}
-	}
-
-	return port;
-}
-
-static int
-rte_port_sink_tx(void *port, struct rte_mbuf *pkt)
-{
-	struct rte_port_sink *p = port;
-
-	RTE_PORT_SINK_STATS_PKTS_IN_ADD(p, 1);
-	if (p->dumper != NULL)
-		PCAP_SINK_WRITE_PKT(p, pkt);
-	rte_pktmbuf_free(pkt);
-	RTE_PORT_SINK_STATS_PKTS_DROP_ADD(p, 1);
-
-	return 0;
-}
-
-static int
-rte_port_sink_tx_bulk(void *port, struct rte_mbuf **pkts,
-	uint64_t pkts_mask)
-{
-	struct rte_port_sink *p = port;
-
-	if ((pkts_mask & (pkts_mask + 1)) == 0) {
-		uint64_t n_pkts = rte_popcount64(pkts_mask);
-		uint32_t i;
-
-		RTE_PORT_SINK_STATS_PKTS_IN_ADD(p, n_pkts);
-		RTE_PORT_SINK_STATS_PKTS_DROP_ADD(p, n_pkts);
-
-		if (p->dumper) {
-			for (i = 0; i < n_pkts; i++)
-				PCAP_SINK_WRITE_PKT(p, pkts[i]);
-		}
-
-		for (i = 0; i < n_pkts; i++) {
-			struct rte_mbuf *pkt = pkts[i];
-
-			rte_pktmbuf_free(pkt);
-		}
-
-	} else {
-		if (p->dumper) {
-			uint64_t dump_pkts_mask = pkts_mask;
-			uint32_t pkt_index;
-
-			for ( ; dump_pkts_mask; ) {
-				pkt_index = rte_ctz64(
-					dump_pkts_mask);
-				PCAP_SINK_WRITE_PKT(p, pkts[pkt_index]);
-				dump_pkts_mask &= ~(1LLU << pkt_index);
-			}
-		}
-
-		for ( ; pkts_mask; ) {
-			uint32_t pkt_index = rte_ctz64(pkts_mask);
-			uint64_t pkt_mask = 1LLU << pkt_index;
-			struct rte_mbuf *pkt = pkts[pkt_index];
-
-			RTE_PORT_SINK_STATS_PKTS_IN_ADD(p, 1);
-			RTE_PORT_SINK_STATS_PKTS_DROP_ADD(p, 1);
-			rte_pktmbuf_free(pkt);
-			pkts_mask &= ~pkt_mask;
-		}
-	}
-
-	return 0;
-}
-
-static int
-rte_port_sink_flush(void *port)
-{
-	struct rte_port_sink *p =
-			port;
-
-	if (p == NULL)
-		return 0;
-
-	PCAP_SINK_FLUSH_PKT(p->dumper);
-
-	return 0;
-}
-
-static int
-rte_port_sink_free(void *port)
-{
-	struct rte_port_sink *p =
-			port;
-
-	if (p == NULL)
-		return 0;
-
-	PCAP_SINK_CLOSE(p->dumper);
-
-	rte_free(p);
-
-	return 0;
-}
-
-static int
-rte_port_sink_stats_read(void *port, struct rte_port_out_stats *stats,
-		int clear)
-{
-	struct rte_port_sink *p =
-		port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Summary of port operations
- */
-RTE_EXPORT_SYMBOL(rte_port_source_ops)
-struct rte_port_in_ops rte_port_source_ops = {
-	.f_create = rte_port_source_create,
-	.f_free = rte_port_source_free,
-	.f_rx = rte_port_source_rx,
-	.f_stats = rte_port_source_stats_read,
-};
-
-RTE_EXPORT_SYMBOL(rte_port_sink_ops)
-struct rte_port_out_ops rte_port_sink_ops = {
-	.f_create = rte_port_sink_create,
-	.f_free = rte_port_sink_free,
-	.f_tx = rte_port_sink_tx,
-	.f_tx_bulk = rte_port_sink_tx_bulk,
-	.f_flush = rte_port_sink_flush,
-	.f_stats = rte_port_sink_stats_read,
-};
diff --git a/lib/port/rte_port_source_sink.h b/lib/port/rte_port_source_sink.h
deleted file mode 100644
index 3122dd5038..0000000000
--- a/lib/port/rte_port_source_sink.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2016 Intel Corporation
- */
-
-#ifndef __INCLUDE_RTE_PORT_SOURCE_SINK_H__
-#define __INCLUDE_RTE_PORT_SOURCE_SINK_H__
-
-/**
- * @file
- * RTE Port Source/Sink
- *
- * source: input port that can be used to generate packets
- * sink: output port that drops all packets written to it
- */
-
-#include "rte_port.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** source port parameters */
-struct rte_port_source_params {
-	/** Pre-initialized buffer pool */
-	struct rte_mempool *mempool;
-
-	/** The full path of the pcap file to read packets from */
-	const char *file_name;
-	/** The number of bytes to be read from each packet in the
-	 *  pcap file. If this value is 0, the whole packet is read;
-	 *  if it is bigger than packet size, the generated packets
-	 *  will contain the whole packet */
-	uint32_t n_bytes_per_pkt;
-};
-
-/** source port operations */
-extern struct rte_port_in_ops rte_port_source_ops;
-
-/** sink port parameters */
-struct rte_port_sink_params {
-	/** The full path of the pcap file to write the packets to */
-	const char *file_name;
-	/** The maximum number of packets write to the pcap file.
-	 *  If this value is 0, the "infinite" write will be carried
-	 *  out.
-	 */
-	uint32_t max_n_pkts;
-};
-
-/** sink port operations */
-extern struct rte_port_out_ops rte_port_sink_ops;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/lib/port/rte_port_sym_crypto.c b/lib/port/rte_port_sym_crypto.c
deleted file mode 100644
index 30c9d1283e..0000000000
--- a/lib/port/rte_port_sym_crypto.c
+++ /dev/null
@@ -1,558 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2018 Intel Corporation
- */
-#include <string.h>
-
-#include <eal_export.h>
-#include <rte_common.h>
-#include <rte_malloc.h>
-
-#include "rte_port_sym_crypto.h"
-
-#include "port_log.h"
-
-/*
- * Port Crypto Reader
- */
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_SYM_CRYPTO_READER_STATS_PKTS_IN_ADD(port, val) \
-	(port)->stats.n_pkts_in += (val)
-#define RTE_PORT_SYM_CRYPTO_READER_STATS_PKTS_DROP_ADD(port, val) \
-	(port)->stats.n_pkts_drop += (val)
-
-#else
-
-#define RTE_PORT_SYM_CRYPTO_READER_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_SYM_CRYPTO_READER_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_sym_crypto_reader {
-	struct rte_port_in_stats stats;
-
-	uint8_t cryptodev_id;
-	uint16_t queue_id;
-	struct rte_crypto_op *ops[RTE_PORT_IN_BURST_SIZE_MAX];
-	rte_port_sym_crypto_reader_callback_fn f_callback;
-	void *arg_callback;
-};
-
-static void *
-rte_port_sym_crypto_reader_create(void *params, int socket_id)
-{
-	struct rte_port_sym_crypto_reader_params *conf =
-			params;
-	struct rte_port_sym_crypto_reader *port;
-
-	/* Check input parameters */
-	if (conf == NULL) {
-		PORT_LOG(ERR, "%s: params is NULL", __func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-		RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate port", __func__);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->cryptodev_id = conf->cryptodev_id;
-	port->queue_id = conf->queue_id;
-	port->f_callback = conf->f_callback;
-	port->arg_callback = conf->arg_callback;
-
-	return port;
-}
-
-static int
-rte_port_sym_crypto_reader_rx(void *port, struct rte_mbuf **pkts, uint32_t n_pkts)
-{
-	struct rte_port_sym_crypto_reader *p =
-			port;
-	uint16_t rx_ops_cnt, i, n = 0;
-
-	rx_ops_cnt = rte_cryptodev_dequeue_burst(p->cryptodev_id, p->queue_id,
-			p->ops, n_pkts);
-
-	for (i = 0; i < rx_ops_cnt; i++) {
-		struct rte_crypto_op *op = p->ops[i];
-
-		/** Drop failed pkts */
-		if (unlikely(op->status != RTE_CRYPTO_OP_STATUS_SUCCESS)) {
-			rte_pktmbuf_free(op->sym->m_src);
-			continue;
-		}
-
-		pkts[n++] = op->sym->m_src;
-	}
-
-	if (p->f_callback)
-		(*p->f_callback)(pkts, n, p->arg_callback);
-
-	RTE_PORT_SYM_CRYPTO_READER_STATS_PKTS_IN_ADD(p, n);
-	RTE_PORT_SYM_CRYPTO_READER_STATS_PKTS_DROP_ADD(p, rx_ops_cnt - n);
-
-	return n;
-}
-
-static int
-rte_port_sym_crypto_reader_free(void *port)
-{
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: port is NULL", __func__);
-		return -EINVAL;
-	}
-
-	rte_free(port);
-
-	return 0;
-}
-
-static int rte_port_sym_crypto_reader_stats_read(void *port,
-	struct rte_port_in_stats *stats, int clear)
-{
-	struct rte_port_sym_crypto_reader *p =
-			port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Port crypto Writer
- */
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_SYM_CRYPTO_WRITER_STATS_PKTS_IN_ADD(port, val) \
-	(port)->stats.n_pkts_in += (val)
-#define RTE_PORT_SYM_CRYPTO_WRITER_STATS_PKTS_DROP_ADD(port, val) \
-	(port)->stats.n_pkts_drop += (val)
-
-#else
-
-#define RTE_PORT_SYM_CRYPTO_WRITER_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_SYM_CRYPTO_WRITER_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_sym_crypto_writer {
-	struct rte_port_out_stats stats;
-
-	struct rte_crypto_op *tx_buf[2 * RTE_PORT_IN_BURST_SIZE_MAX];
-
-	uint32_t tx_burst_sz;
-	uint32_t tx_buf_count;
-	uint64_t bsz_mask;
-
-	uint8_t cryptodev_id;
-	uint16_t queue_id;
-	uint16_t crypto_op_offset;
-};
-
-static void *
-rte_port_sym_crypto_writer_create(void *params, int socket_id)
-{
-	struct rte_port_sym_crypto_writer_params *conf =
-			params;
-	struct rte_port_sym_crypto_writer *port;
-
-	/* Check input parameters */
-	if ((conf == NULL) ||
-		(conf->tx_burst_sz == 0) ||
-		(conf->tx_burst_sz > RTE_PORT_IN_BURST_SIZE_MAX) ||
-		(!rte_is_power_of_2(conf->tx_burst_sz))) {
-		PORT_LOG(ERR, "%s: Invalid input parameters", __func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-		RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate port", __func__);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->tx_burst_sz = conf->tx_burst_sz;
-	port->tx_buf_count = 0;
-	port->bsz_mask = 1LLU << (conf->tx_burst_sz - 1);
-
-	port->cryptodev_id = conf->cryptodev_id;
-	port->queue_id = conf->queue_id;
-	port->crypto_op_offset = conf->crypto_op_offset;
-
-	return port;
-}
-
-static inline void
-send_burst(struct rte_port_sym_crypto_writer *p)
-{
-	uint32_t nb_tx;
-
-	nb_tx = rte_cryptodev_enqueue_burst(p->cryptodev_id, p->queue_id,
-			p->tx_buf, p->tx_buf_count);
-
-	RTE_PORT_SYM_CRYPTO_WRITER_STATS_PKTS_DROP_ADD(p, p->tx_buf_count -
-			nb_tx);
-	for (; nb_tx < p->tx_buf_count; nb_tx++)
-		rte_pktmbuf_free(p->tx_buf[nb_tx]->sym->m_src);
-
-	p->tx_buf_count = 0;
-}
-
-static int
-rte_port_sym_crypto_writer_tx(void *port, struct rte_mbuf *pkt)
-{
-	struct rte_port_sym_crypto_writer *p =
-			port;
-
-	p->tx_buf[p->tx_buf_count++] = (struct rte_crypto_op *)
-			RTE_MBUF_METADATA_UINT8_PTR(pkt, p->crypto_op_offset);
-	RTE_PORT_SYM_CRYPTO_WRITER_STATS_PKTS_IN_ADD(p, 1);
-	if (p->tx_buf_count >= p->tx_burst_sz)
-		send_burst(p);
-
-	return 0;
-}
-
-static int
-rte_port_sym_crypto_writer_tx_bulk(void *port,
-	struct rte_mbuf **pkts,
-	uint64_t pkts_mask)
-{
-	struct rte_port_sym_crypto_writer *p =
-			port;
-	uint64_t bsz_mask = p->bsz_mask;
-	uint32_t tx_buf_count = p->tx_buf_count;
-	uint64_t expr = (pkts_mask & (pkts_mask + 1)) |
-					((pkts_mask & bsz_mask) ^ bsz_mask);
-
-	if (expr == 0) {
-		uint64_t n_pkts = rte_popcount64(pkts_mask);
-		uint32_t i;
-
-		RTE_PORT_SYM_CRYPTO_WRITER_STATS_PKTS_IN_ADD(p, n_pkts);
-
-		for (i = 0; i < n_pkts; i++)
-			p->tx_buf[p->tx_buf_count++] = (struct rte_crypto_op *)
-					RTE_MBUF_METADATA_UINT8_PTR(pkts[i],
-							p->crypto_op_offset);
-
-		if (p->tx_buf_count >= p->tx_burst_sz)
-			send_burst(p);
-	} else {
-		for (; pkts_mask;) {
-			uint32_t pkt_index = rte_ctz64(pkts_mask);
-			uint64_t pkt_mask = 1LLU << pkt_index;
-			struct rte_mbuf *pkt = pkts[pkt_index];
-
-			p->tx_buf[tx_buf_count++] = (struct rte_crypto_op *)
-					RTE_MBUF_METADATA_UINT8_PTR(pkt,
-							p->crypto_op_offset);
-
-			RTE_PORT_SYM_CRYPTO_WRITER_STATS_PKTS_IN_ADD(p, 1);
-			pkts_mask &= ~pkt_mask;
-		}
-
-		p->tx_buf_count = tx_buf_count;
-		if (tx_buf_count >= p->tx_burst_sz)
-			send_burst(p);
-	}
-
-	return 0;
-}
-
-static int
-rte_port_sym_crypto_writer_flush(void *port)
-{
-	struct rte_port_sym_crypto_writer *p =
-			port;
-
-	if (p->tx_buf_count > 0)
-		send_burst(p);
-
-	return 0;
-}
-
-static int
-rte_port_sym_crypto_writer_free(void *port)
-{
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Port is NULL", __func__);
-		return -EINVAL;
-	}
-
-	rte_port_sym_crypto_writer_flush(port);
-	rte_free(port);
-
-	return 0;
-}
-
-static int rte_port_sym_crypto_writer_stats_read(void *port,
-	struct rte_port_out_stats *stats, int clear)
-{
-	struct rte_port_sym_crypto_writer *p =
-			port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-/*
- * Port crypto Writer Nodrop
- */
-#ifdef RTE_PORT_STATS_COLLECT
-
-#define RTE_PORT_SYM_CRYPTO_WRITER_NODROP_STATS_PKTS_IN_ADD(port, val) \
-	(port)->stats.n_pkts_in += (val)
-#define RTE_PORT_SYM_CRYPTO_WRITER_NODROP_STATS_PKTS_DROP_ADD(port, val) \
-	(port)->stats.n_pkts_drop += (val)
-
-#else
-
-#define RTE_PORT_SYM_CRYPTO_WRITER_NODROP_STATS_PKTS_IN_ADD(port, val)
-#define RTE_PORT_SYM_CRYPTO_WRITER_NODROP_STATS_PKTS_DROP_ADD(port, val)
-
-#endif
-
-struct rte_port_sym_crypto_writer_nodrop {
-	struct rte_port_out_stats stats;
-
-	struct rte_crypto_op *tx_buf[2 * RTE_PORT_IN_BURST_SIZE_MAX];
-	uint32_t tx_burst_sz;
-	uint32_t tx_buf_count;
-	uint64_t bsz_mask;
-	uint64_t n_retries;
-
-	uint8_t cryptodev_id;
-	uint16_t queue_id;
-	uint16_t crypto_op_offset;
-};
-
-static void *
-rte_port_sym_crypto_writer_nodrop_create(void *params, int socket_id)
-{
-	struct rte_port_sym_crypto_writer_nodrop_params *conf =
-		params;
-	struct rte_port_sym_crypto_writer_nodrop *port;
-
-	/* Check input parameters */
-	if ((conf == NULL) ||
-		(conf->tx_burst_sz == 0) ||
-		(conf->tx_burst_sz > RTE_PORT_IN_BURST_SIZE_MAX) ||
-		(!rte_is_power_of_2(conf->tx_burst_sz))) {
-		PORT_LOG(ERR, "%s: Invalid input parameters", __func__);
-		return NULL;
-	}
-
-	/* Memory allocation */
-	port = rte_zmalloc_socket("PORT", sizeof(*port),
-		RTE_CACHE_LINE_SIZE, socket_id);
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Failed to allocate port", __func__);
-		return NULL;
-	}
-
-	/* Initialization */
-	port->cryptodev_id = conf->cryptodev_id;
-	port->queue_id = conf->queue_id;
-	port->crypto_op_offset = conf->crypto_op_offset;
-	port->tx_burst_sz = conf->tx_burst_sz;
-	port->tx_buf_count = 0;
-	port->bsz_mask = 1LLU << (conf->tx_burst_sz - 1);
-
-	/*
-	 * When n_retries is 0 it means that we should wait for every packet to
-	 * send no matter how many retries should it take. To limit number of
-	 * branches in fast path, we use UINT64_MAX instead of branching.
-	 */
-	port->n_retries = (conf->n_retries == 0) ? UINT64_MAX : conf->n_retries;
-
-	return port;
-}
-
-static inline void
-send_burst_nodrop(struct rte_port_sym_crypto_writer_nodrop *p)
-{
-	uint32_t nb_tx = 0, i;
-
-	nb_tx = rte_cryptodev_enqueue_burst(p->cryptodev_id, p->queue_id,
-			p->tx_buf, p->tx_buf_count);
-
-	/* We sent all the packets in a first try */
-	if (nb_tx >= p->tx_buf_count) {
-		p->tx_buf_count = 0;
-		return;
-	}
-
-	for (i = 0; i < p->n_retries; i++) {
-		nb_tx += rte_cryptodev_enqueue_burst(p->cryptodev_id,
-				p->queue_id, p->tx_buf + nb_tx,
-				p->tx_buf_count - nb_tx);
-
-		/* We sent all the packets in more than one try */
-		if (nb_tx >= p->tx_buf_count) {
-			p->tx_buf_count = 0;
-			return;
-		}
-	}
-
-	/* We didn't send the packets in maximum allowed attempts */
-	RTE_PORT_SYM_CRYPTO_WRITER_NODROP_STATS_PKTS_DROP_ADD(p,
-			p->tx_buf_count - nb_tx);
-	for ( ; nb_tx < p->tx_buf_count; nb_tx++)
-		rte_pktmbuf_free(p->tx_buf[nb_tx]->sym->m_src);
-
-	p->tx_buf_count = 0;
-}
-
-static int
-rte_port_sym_crypto_writer_nodrop_tx(void *port, struct rte_mbuf *pkt)
-{
-	struct rte_port_sym_crypto_writer_nodrop *p =
-			port;
-
-	p->tx_buf[p->tx_buf_count++] = (struct rte_crypto_op *)
-			RTE_MBUF_METADATA_UINT8_PTR(pkt, p->crypto_op_offset);
-	RTE_PORT_SYM_CRYPTO_WRITER_STATS_PKTS_IN_ADD(p, 1);
-	if (p->tx_buf_count >= p->tx_burst_sz)
-		send_burst_nodrop(p);
-
-	return 0;
-}
-
-static int
-rte_port_sym_crypto_writer_nodrop_tx_bulk(void *port,
-	struct rte_mbuf **pkts,
-	uint64_t pkts_mask)
-{
-	struct rte_port_sym_crypto_writer_nodrop *p =
-			port;
-
-	uint64_t bsz_mask = p->bsz_mask;
-	uint32_t tx_buf_count = p->tx_buf_count;
-	uint64_t expr = (pkts_mask & (pkts_mask + 1)) |
-					((pkts_mask & bsz_mask) ^ bsz_mask);
-
-	if (expr == 0) {
-		uint64_t n_pkts = rte_popcount64(pkts_mask);
-		uint32_t i;
-
-		RTE_PORT_SYM_CRYPTO_WRITER_NODROP_STATS_PKTS_IN_ADD(p, n_pkts);
-
-		for (i = 0; i < n_pkts; i++)
-			p->tx_buf[p->tx_buf_count++] = (struct rte_crypto_op *)
-					RTE_MBUF_METADATA_UINT8_PTR(pkts[i],
-							p->crypto_op_offset);
-
-		if (p->tx_buf_count >= p->tx_burst_sz)
-			send_burst_nodrop(p);
-	} else {
-		for ( ; pkts_mask; ) {
-			uint32_t pkt_index = rte_ctz64(pkts_mask);
-			uint64_t pkt_mask = 1LLU << pkt_index;
-			struct rte_mbuf *pkt = pkts[pkt_index];
-
-			p->tx_buf[tx_buf_count++] = (struct rte_crypto_op *)
-					RTE_MBUF_METADATA_UINT8_PTR(pkt,
-							p->crypto_op_offset);
-			RTE_PORT_SYM_CRYPTO_WRITER_NODROP_STATS_PKTS_IN_ADD(p,
-					1);
-			pkts_mask &= ~pkt_mask;
-		}
-
-		p->tx_buf_count = tx_buf_count;
-		if (tx_buf_count >= p->tx_burst_sz)
-			send_burst_nodrop(p);
-	}
-
-	return 0;
-}
-
-static int
-rte_port_sym_crypto_writer_nodrop_flush(void *port)
-{
-	struct rte_port_sym_crypto_writer_nodrop *p =
-		port;
-
-	if (p->tx_buf_count > 0)
-		send_burst_nodrop(p);
-
-	return 0;
-}
-
-static int
-rte_port_sym_crypto_writer_nodrop_free(void *port)
-{
-	if (port == NULL) {
-		PORT_LOG(ERR, "%s: Port is NULL", __func__);
-		return -EINVAL;
-	}
-
-	rte_port_sym_crypto_writer_nodrop_flush(port);
-	rte_free(port);
-
-	return 0;
-}
-
-static int rte_port_sym_crypto_writer_nodrop_stats_read(void *port,
-	struct rte_port_out_stats *stats, int clear)
-{
-	struct rte_port_sym_crypto_writer_nodrop *p =
-			port;
-
-	if (stats != NULL)
-		memcpy(stats, &p->stats, sizeof(p->stats));
-
-	if (clear)
-		memset(&p->stats, 0, sizeof(p->stats));
-
-	return 0;
-}
-
-
-/*
- * Summary of port operations
- */
-RTE_EXPORT_SYMBOL(rte_port_sym_crypto_reader_ops)
-struct rte_port_in_ops rte_port_sym_crypto_reader_ops = {
-	.f_create = rte_port_sym_crypto_reader_create,
-	.f_free = rte_port_sym_crypto_reader_free,
-	.f_rx = rte_port_sym_crypto_reader_rx,
-	.f_stats = rte_port_sym_crypto_reader_stats_read,
-};
-
-RTE_EXPORT_SYMBOL(rte_port_sym_crypto_writer_ops)
-struct rte_port_out_ops rte_port_sym_crypto_writer_ops = {
-	.f_create = rte_port_sym_crypto_writer_create,
-	.f_free = rte_port_sym_crypto_writer_free,
-	.f_tx = rte_port_sym_crypto_writer_tx,
-	.f_tx_bulk = rte_port_sym_crypto_writer_tx_bulk,
-	.f_flush = rte_port_sym_crypto_writer_flush,
-	.f_stats = rte_port_sym_crypto_writer_stats_read,
-};
-
-RTE_EXPORT_SYMBOL(rte_port_sym_crypto_writer_nodrop_ops)
-struct rte_port_out_ops rte_port_sym_crypto_writer_nodrop_ops = {
-	.f_create = rte_port_sym_crypto_writer_nodrop_create,
-	.f_free = rte_port_sym_crypto_writer_nodrop_free,
-	.f_tx = rte_port_sym_crypto_writer_nodrop_tx,
-	.f_tx_bulk = rte_port_sym_crypto_writer_nodrop_tx_bulk,
-	.f_flush = rte_port_sym_crypto_writer_nodrop_flush,
-	.f_stats = rte_port_sym_crypto_writer_nodrop_stats_read,
-};
diff --git a/lib/port/rte_port_sym_crypto.h b/lib/port/rte_port_sym_crypto.h
deleted file mode 100644
index d03cdc1e8b..0000000000
--- a/lib/port/rte_port_sym_crypto.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2018 Intel Corporation
- */
-
-#ifndef __INCLUDE_RTE_PORT_SYM_CRYPTO_H__
-#define __INCLUDE_RTE_PORT_SYM_CRYPTO_H__
-
-/**
- * @file
- * RTE Port sym crypto Interface
- *
- * crypto_reader: input port built on top of pre-initialized crypto interface
- * crypto_writer: output port built on top of pre-initialized crypto interface
- */
-
-#include <stdint.h>
-
-#include <rte_cryptodev.h>
-
-#include "rte_port.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Function prototype for reader post action. */
-typedef void (*rte_port_sym_crypto_reader_callback_fn)(struct rte_mbuf **pkts,
-		uint16_t n_pkts, void *arg);
-
-/** Crypto_reader port parameters */
-struct rte_port_sym_crypto_reader_params {
-	/** Target cryptodev ID. */
-	uint8_t cryptodev_id;
-
-	/** Target cryptodev Queue Pair ID. */
-	uint16_t queue_id;
-
-	/** Crypto reader post callback function. */
-	rte_port_sym_crypto_reader_callback_fn f_callback;
-
-	/** Crypto reader post callback function arguments. */
-	void *arg_callback;
-};
-
-/** Crypto_reader port operations. */
-extern struct rte_port_in_ops rte_port_sym_crypto_reader_ops;
-
-
-/** Crypto_writer port parameters. */
-struct rte_port_sym_crypto_writer_params {
-	/** Target cryptodev ID. */
-	uint8_t cryptodev_id;
-
-	/** Target cryptodev Queue Pair ID. */
-	uint16_t queue_id;
-
-	/** offset to rte_crypto_op in the mbufs. */
-	uint16_t crypto_op_offset;
-
-	/** Burst size to crypto interface. */
-	uint32_t tx_burst_sz;
-};
-
-/** Crypto_writer port operations. */
-extern struct rte_port_out_ops rte_port_sym_crypto_writer_ops;
-
-/** Crypto_writer_nodrop port parameters. */
-struct rte_port_sym_crypto_writer_nodrop_params {
-	/** Target cryptodev ID. */
-	uint8_t cryptodev_id;
-
-	/** Target cryptodev queue pair id. */
-	uint16_t queue_id;
-
-	/** Offset to rte_crypto_op in the mbufs. */
-	uint16_t crypto_op_offset;
-
-	/** Burst size to crypto interface. */
-	uint32_t tx_burst_sz;
-
-	/** Maximum number of retries, 0 for no limit. */
-	uint32_t n_retries;
-};
-
-/** Crypto_writer_nodrop port operations. */
-extern struct rte_port_out_ops rte_port_sym_crypto_writer_nodrop_ops;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-- 
2.53.0


      parent reply	other threads:[~2026-07-24 16:46 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-24 16:43 [PATCH 0/6] remove legacy Packet Framework API Stephen Hemminger
2026-07-24 16:43 ` [RFC 1/6] app/test: remove packet framework tests Stephen Hemminger
2026-07-24 16:43 ` [RFC 2/6] app/test-pipeline: remove application Stephen Hemminger
2026-07-24 16:43 ` [RFC 3/6] examples/ip_pipeline: remove example Stephen Hemminger
2026-07-24 16:44 ` [RFC 4/6] pipeline: remove legacy API Stephen Hemminger
2026-07-24 16:44 ` Stephen Hemminger [this message]

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=20260724164520.192203-7-stephen@networkplumber.org \
    --to=stephen@networkplumber.org \
    --cc=cristian.dumitrescu@intel.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox