aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/pktio
diff options
context:
space:
mode:
authorMatias Elo <matias.elo@nokia.com>2022-03-23 10:48:38 +0200
committerMatias Elo <matias.elo@nokia.com>2022-03-23 10:48:38 +0200
commit0d1e1234858459525ca2ea5cab1d309101ff1b31 (patch)
tree97f85a371250d24213f7a9ea8065230d697e0a42 /platform/linux-generic/pktio
parent6c96e7253082bdc5b3a6a6f39a1ced8200a39ee0 (diff)
parent751b1b116c9320914e785f22d2e5f69311c42628 (diff)
Merge tag 'v1.35.0.0' of https://github.com/OpenDataPlane/odp into odp-dpdk
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Diffstat (limited to 'platform/linux-generic/pktio')
-rw-r--r--platform/linux-generic/pktio/dpdk.c83
-rw-r--r--platform/linux-generic/pktio/ipc.c7
-rw-r--r--platform/linux-generic/pktio/loop.c106
-rw-r--r--platform/linux-generic/pktio/netmap.c4
-rw-r--r--platform/linux-generic/pktio/null.c5
-rw-r--r--platform/linux-generic/pktio/pcap.c11
-rw-r--r--platform/linux-generic/pktio/socket.c26
-rw-r--r--platform/linux-generic/pktio/socket_mmap.c40
-rw-r--r--platform/linux-generic/pktio/stats/ethtool_stats.c13
-rw-r--r--platform/linux-generic/pktio/stats/sysfs_stats.c9
-rw-r--r--platform/linux-generic/pktio/tap.c27
11 files changed, 225 insertions, 106 deletions
diff --git a/platform/linux-generic/pktio/dpdk.c b/platform/linux-generic/pktio/dpdk.c
index a0407ca62..815ec61b9 100644
--- a/platform/linux-generic/pktio/dpdk.c
+++ b/platform/linux-generic/pktio/dpdk.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2016-2018, Linaro Limited
- * Copyright (c) 2019-2021, Nokia
+ * Copyright (c) 2019-2022, Nokia
* All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
@@ -23,6 +23,7 @@
#include <odp/api/time.h>
#include <odp/api/plat/time_inlines.h>
+#include <odp_align_internal.h>
#include <odp_packet_io_internal.h>
#include <odp_classification_internal.h>
#include <odp_socket_common.h>
@@ -35,6 +36,7 @@
#include <protocols/udp.h>
#include <rte_config.h>
+#include <rte_common.h>
#include <rte_mbuf.h>
#include <rte_malloc.h>
#if __GNUC__ >= 7
@@ -115,7 +117,7 @@ ODP_STATIC_ASSERT((DPDK_NB_MBUF % DPDK_MEMPOOL_CACHE_SIZE == 0) &&
/** DPDK runtime configuration options */
typedef struct {
int num_rx_desc;
- int num_tx_desc;
+ int num_tx_desc_default;
uint8_t multicast_en;
uint8_t rx_drop_en;
uint8_t set_flow_hash;
@@ -147,6 +149,7 @@ typedef struct ODP_ALIGNED_CACHE {
uint32_t mtu_max; /**< maximum supported MTU value */
odp_bool_t mtu_set; /**< DPDK MTU has been modified */
uint16_t port_id; /**< DPDK port identifier */
+ uint16_t num_tx_desc[PKTIO_MAX_QUEUES]; /**< Number of TX descriptors per queue */
/** Use system call to get/set vdev promisc mode */
uint8_t vdev_sysc_promisc;
uint8_t lockless_rx; /**< no locking for rx */
@@ -211,14 +214,8 @@ static int init_options(pktio_entry_t *pktio_entry,
}
if (!lookup_opt("num_tx_desc", dev_info->driver_name,
- &opt->num_tx_desc))
+ &opt->num_tx_desc_default))
return -1;
- if (opt->num_tx_desc < dev_info->tx_desc_lim.nb_min ||
- opt->num_tx_desc > dev_info->tx_desc_lim.nb_max ||
- opt->num_tx_desc % dev_info->tx_desc_lim.nb_align) {
- ODP_ERR("Invalid number of TX descriptors\n");
- return -1;
- }
if (!lookup_opt("rx_drop_en", dev_info->driver_name, &val))
return -1;
@@ -236,7 +233,7 @@ static int init_options(pktio_entry_t *pktio_entry,
pkt_priv(pktio_entry)->port_id);
ODP_DBG(" multicast_en: %d\n", opt->multicast_en);
ODP_DBG(" num_rx_desc: %d\n", opt->num_rx_desc);
- ODP_DBG(" num_tx_desc: %d\n", opt->num_tx_desc);
+ ODP_DBG(" num_tx_desc: %d\n", opt->num_tx_desc_default);
ODP_DBG(" rx_drop_en: %d\n", opt->rx_drop_en);
return 0;
@@ -641,7 +638,7 @@ static inline int mbuf_to_pkt(pktio_entry_t *pktio_entry,
pkt_hdr->input = input;
if (pktio_cls_enabled(pktio_entry)) {
- copy_packet_cls_metadata(&parsed_hdr, pkt_hdr);
+ _odp_packet_copy_cls_md(pkt_hdr, &parsed_hdr);
} else if (parse_layer != ODP_PROTO_LAYER_NONE) {
uint32_t supported_ptypes = pkt_dpdk->supported_ptypes;
@@ -933,7 +930,7 @@ static inline int mbuf_to_pkt_zero(pktio_entry_t *pktio_entry,
pkt_hdr->input = input;
if (pktio_cls_enabled(pktio_entry)) {
- copy_packet_cls_metadata(&parsed_hdr, pkt_hdr);
+ _odp_packet_copy_cls_md(pkt_hdr, &parsed_hdr);
} else if (parse_layer != ODP_PROTO_LAYER_NONE) {
uint32_t supported_ptypes = pkt_dpdk->supported_ptypes;
@@ -959,7 +956,7 @@ static inline int mbuf_to_pkt_zero(pktio_entry_t *pktio_entry,
static inline int pkt_to_mbuf_zero(pktio_entry_t *pktio_entry,
struct rte_mbuf *mbuf_table[],
const odp_packet_t pkt_table[], uint16_t num,
- uint16_t *copy_count, int *tx_ts_idx)
+ uint16_t *copy_count, uint16_t cpy_idx[], int *tx_ts_idx)
{
pkt_dpdk_t *pkt_dpdk = pkt_priv(pktio_entry);
odp_pktout_config_opt_t *pktout_cfg = &pktio_entry->s.config.pktout;
@@ -993,7 +990,7 @@ static inline int pkt_to_mbuf_zero(pktio_entry_t *pktio_entry,
if (odp_unlikely(pkt_to_mbuf(pktio_entry, &mbuf,
&pkt, 1, &dummy_idx) != 1))
goto fail;
- (*copy_count)++;
+ cpy_idx[(*copy_count)++] = i;
}
mbuf_table[i] = mbuf;
@@ -1493,8 +1490,10 @@ static int dpdk_input_queues_config(pktio_entry_t *pktio_entry,
static int dpdk_output_queues_config(pktio_entry_t *pktio_entry,
const odp_pktout_queue_param_t *p)
{
+ struct rte_eth_dev_info dev_info;
pkt_dpdk_t *pkt_dpdk = pkt_priv(pktio_entry);
uint8_t lockless;
+ int ret;
if (p->op_mode == ODP_PKTIO_OP_MT_UNSAFE)
lockless = 1;
@@ -1503,6 +1502,32 @@ static int dpdk_output_queues_config(pktio_entry_t *pktio_entry,
pkt_dpdk->lockless_tx = lockless;
+ ret = rte_eth_dev_info_get(pkt_dpdk->port_id, &dev_info);
+ if (ret) {
+ ODP_ERR("DPDK: rte_eth_dev_info_get() failed: %d\n", ret);
+ return -1;
+ }
+
+ /* Configure TX descriptors */
+ for (uint32_t i = 0; i < p->num_queues; i++) {
+ uint16_t num_tx_desc = pkt_dpdk->opt.num_tx_desc_default;
+
+ if (p->queue_size[i] != 0) {
+ num_tx_desc = p->queue_size[i];
+ /* Make sure correct alignment is used */
+ if (dev_info.tx_desc_lim.nb_align)
+ num_tx_desc = RTE_ALIGN_MUL_CEIL(num_tx_desc,
+ dev_info.tx_desc_lim.nb_align);
+ }
+
+ if (num_tx_desc < dev_info.tx_desc_lim.nb_min ||
+ num_tx_desc > dev_info.tx_desc_lim.nb_max ||
+ num_tx_desc % dev_info.tx_desc_lim.nb_align) {
+ ODP_ERR("DPDK: invalid number of TX descriptors\n");
+ return -1;
+ }
+ pkt_dpdk->num_tx_desc[i] = num_tx_desc;
+ }
return 0;
}
@@ -1532,6 +1557,9 @@ static int dpdk_init_capability(pktio_entry_t *pktio_entry,
capa->max_output_queues = RTE_MIN(dev_info->max_tx_queues,
PKTIO_MAX_QUEUES);
+ capa->min_output_queue_size = dev_info->tx_desc_lim.nb_min;
+ capa->max_output_queue_size = dev_info->tx_desc_lim.nb_max;
+
capa->set_op.op.promisc_mode = 1;
/* Check if setting default MAC address is supporter */
@@ -1823,7 +1851,7 @@ static int dpdk_setup_eth_tx(pktio_entry_t *pktio_entry,
for (i = 0; i < pktio_entry->s.num_out_queue; i++) {
ret = rte_eth_tx_queue_setup(port_id, i,
- pkt_dpdk->opt.num_tx_desc,
+ pkt_dpdk->num_tx_desc[i],
rte_eth_dev_socket_id(port_id),
&dev_info->default_txconf);
if (ret < 0) {
@@ -2065,6 +2093,7 @@ static int dpdk_send(pktio_entry_t *pktio_entry, int index,
struct rte_mbuf *tx_mbufs[num];
pkt_dpdk_t *pkt_dpdk = pkt_priv(pktio_entry);
uint16_t copy_count = 0;
+ uint16_t cpy_idx[num];
int tx_pkts;
int i;
int mbufs;
@@ -2072,7 +2101,7 @@ static int dpdk_send(pktio_entry_t *pktio_entry, int index,
if (_ODP_DPDK_ZERO_COPY)
mbufs = pkt_to_mbuf_zero(pktio_entry, tx_mbufs, pkt_table, num,
- &copy_count, &tx_ts_idx);
+ &copy_count, cpy_idx, &tx_ts_idx);
else
mbufs = pkt_to_mbuf(pktio_entry, tx_mbufs, pkt_table, num,
&tx_ts_idx);
@@ -2092,19 +2121,15 @@ static int dpdk_send(pktio_entry_t *pktio_entry, int index,
if (_ODP_DPDK_ZERO_COPY) {
/* Free copied packets */
if (odp_unlikely(copy_count)) {
- uint16_t freed = 0;
-
- for (i = 0; i < mbufs && freed != copy_count; i++) {
- odp_packet_t pkt = pkt_table[i];
- odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
-
- if (pkt_hdr->seg_count > 1) {
- if (odp_likely(i < tx_pkts))
- odp_packet_free(pkt);
- else
- rte_pktmbuf_free(tx_mbufs[i]);
- freed++;
- }
+ uint16_t idx;
+
+ for (i = 0; i < copy_count; i++) {
+ idx = cpy_idx[i];
+
+ if (odp_likely(idx < tx_pkts))
+ odp_packet_free(pkt_table[idx]);
+ else
+ rte_pktmbuf_free(tx_mbufs[idx]);
}
}
if (odp_unlikely(tx_pkts == 0 && _odp_errno != 0))
diff --git a/platform/linux-generic/pktio/ipc.c b/platform/linux-generic/pktio/ipc.c
index 6a78415c5..81938a983 100644
--- a/platform/linux-generic/pktio/ipc.c
+++ b/platform/linux-generic/pktio/ipc.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2015-2018, Linaro Limited
- * Copyright (c) 2019-2021, Nokia
+ * Copyright (c) 2019-2022, Nokia
* All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
@@ -189,7 +189,8 @@ static const char *_ipc_odp_buffer_pool_shm_name(odp_pool_t pool_hdl)
pool = pool_entry_from_hdl(pool_hdl);
shm = pool->shm;
- odp_shm_info(shm, &info);
+ if (odp_shm_info(shm, &info))
+ return "name_unknown";
return info.name;
}
@@ -705,7 +706,7 @@ static int ipc_pktio_recv_lockless(pktio_entry_t *pktio_entry,
memcpy(pkt_data, rmt_data_ptr, phdr->frame_len);
/* Copy packets L2, L3 parsed offsets and size */
- copy_packet_cls_metadata(phdr, packet_hdr(pkt));
+ _odp_packet_copy_cls_md(packet_hdr(pkt), phdr);
packet_hdr(pkt)->frame_len = phdr->frame_len;
packet_hdr(pkt)->headroom = phdr->headroom;
diff --git a/platform/linux-generic/pktio/loop.c b/platform/linux-generic/pktio/loop.c
index ae6403fe6..b3232cded 100644
--- a/platform/linux-generic/pktio/loop.c
+++ b/platform/linux-generic/pktio/loop.c
@@ -1,24 +1,32 @@
/* Copyright (c) 2013-2018, Linaro Limited
- * Copyright (c) 2013-2021, Nokia Solutions and Networks
+ * Copyright (c) 2013-2022, Nokia Solutions and Networks
* All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
-#include <odp_api.h>
-#include <odp_packet_internal.h>
-#include <odp_packet_io_internal.h>
-#include <odp_classification_internal.h>
-#include <odp_ipsec_internal.h>
-#include <odp_debug_internal.h>
-#include <odp_errno_define.h>
-#include <odp/api/plat/packet_flag_inlines.h>
+#include <odp/api/debug.h>
+#include <odp/api/event.h>
#include <odp/api/hints.h>
+#include <odp/api/packet.h>
+#include <odp/api/packet_io.h>
+#include <odp/api/queue.h>
+#include <odp/api/ticketlock.h>
+#include <odp/api/time.h>
+
#include <odp/api/plat/byteorder_inlines.h>
-#include <odp_queue_if.h>
+#include <odp/api/plat/packet_flag_inlines.h>
#include <odp/api/plat/queue_inlines.h>
-#include <odp_global_data.h>
+
+#include <odp_classification_internal.h>
+#include <odp_debug_internal.h>
+#include <odp_errno_define.h>
#include <odp_event_internal.h>
+#include <odp_global_data.h>
+#include <odp_ipsec_internal.h>
+#include <odp_packet_internal.h>
+#include <odp_packet_io_internal.h>
+#include <odp_queue_if.h>
#include <protocols/eth.h>
#include <protocols/ip.h>
@@ -34,6 +42,8 @@
#define LOOP_MTU_MIN 68
#define LOOP_MTU_MAX UINT16_MAX
+#define LOOP_MAX_TX_QUEUE_SIZE 1024
+
typedef struct {
odp_queue_t loopq; /**< loopback queue for "loop" device */
odp_bool_t promisc; /**< promiscuous mode state */
@@ -55,12 +65,11 @@ static const uint8_t pktio_loop_mac[] = {0x02, 0xe9, 0x34, 0x80, 0x73, 0x01};
static int loopback_stats_reset(pktio_entry_t *pktio_entry);
static int loopback_init_capability(pktio_entry_t *pktio_entry);
-static int loopback_open(odp_pktio_t id, pktio_entry_t *pktio_entry,
+static int loopback_open(odp_pktio_t id ODP_UNUSED, pktio_entry_t *pktio_entry,
const char *devname, odp_pool_t pool ODP_UNUSED)
{
pkt_loop_t *pkt_loop = pkt_priv(pktio_entry);
long idx;
- char loopq_name[ODP_QUEUE_NAME_LEN];
if (!strcmp(devname, "loop")) {
idx = 0;
@@ -74,14 +83,9 @@ static int loopback_open(odp_pktio_t id, pktio_entry_t *pktio_entry,
return -1;
}
- snprintf(loopq_name, sizeof(loopq_name), "%" PRIu64 "-pktio_loopq",
- odp_pktio_to_u64(id));
pkt_loop->idx = idx;
pkt_loop->mtu = LOOP_MTU_MAX;
- pkt_loop->loopq = odp_queue_create(loopq_name, NULL);
-
- if (pkt_loop->loopq == ODP_QUEUE_INVALID)
- return -1;
+ pkt_loop->loopq = ODP_QUEUE_INVALID;
loopback_stats_reset(pktio_entry);
loopback_init_capability(pktio_entry);
@@ -89,9 +93,58 @@ static int loopback_open(odp_pktio_t id, pktio_entry_t *pktio_entry,
return 0;
}
+static int loopback_queue_destroy(odp_queue_t queue)
+{
+ odp_event_t event;
+
+ do {
+ event = odp_queue_deq(queue);
+ if (event != ODP_EVENT_INVALID)
+ odp_event_free(event);
+
+ } while (event != ODP_EVENT_INVALID);
+
+ if (odp_queue_destroy(queue)) {
+ ODP_ERR("Destroying loopback pktio queue failed\n");
+ return -1;
+ }
+ return 0;
+}
+
+static int loopback_pktout_queue_config(pktio_entry_t *pktio_entry,
+ const odp_pktout_queue_param_t *param)
+{
+ pkt_loop_t *pkt_loop = pkt_priv(pktio_entry);
+ odp_queue_param_t queue_param;
+ char queue_name[ODP_QUEUE_NAME_LEN];
+
+ /* Destroy old queue */
+ if (pkt_loop->loopq != ODP_QUEUE_INVALID && loopback_queue_destroy(pkt_loop->loopq))
+ return -1;
+
+ odp_queue_param_init(&queue_param);
+ queue_param.size = param->queue_size[0];
+
+ snprintf(queue_name, sizeof(queue_name), "_odp_pktio_loopq-%" PRIu64 "",
+ odp_pktio_to_u64(pktio_entry->s.handle));
+
+ pkt_loop->loopq = odp_queue_create(queue_name, &queue_param);
+ if (pkt_loop->loopq == ODP_QUEUE_INVALID) {
+ ODP_ERR("Creating loopback pktio queue failed\n");
+ return -1;
+ }
+
+ return 0;
+}
+
static int loopback_close(pktio_entry_t *pktio_entry)
{
- return odp_queue_destroy(pkt_priv(pktio_entry)->loopq);
+ pkt_loop_t *pkt_loop = pkt_priv(pktio_entry);
+
+ if (pkt_loop->loopq != ODP_QUEUE_INVALID)
+ return loopback_queue_destroy(pkt_loop->loopq);
+
+ return 0;
}
static int loopback_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
@@ -424,6 +477,12 @@ static int loopback_link_info(pktio_entry_t *pktio_entry ODP_UNUSED, odp_pktio_l
static int loopback_init_capability(pktio_entry_t *pktio_entry)
{
odp_pktio_capability_t *capa = &pktio_entry->s.capa;
+ odp_queue_capability_t queue_capa;
+
+ if (odp_queue_capability(&queue_capa)) {
+ ODP_ERR("Queue capability failed\n");
+ return -1;
+ }
memset(capa, 0, sizeof(odp_pktio_capability_t));
@@ -438,6 +497,11 @@ static int loopback_init_capability(pktio_entry_t *pktio_entry)
capa->maxlen.min_output = LOOP_MTU_MIN;
capa->maxlen.max_output = LOOP_MTU_MAX;
+ capa->min_output_queue_size = 1;
+ capa->max_output_queue_size = queue_capa.plain.max_size;
+ if (capa->max_output_queue_size == 0)
+ capa->max_output_queue_size = LOOP_MAX_TX_QUEUE_SIZE;
+
odp_pktio_config_init(&capa->config);
capa->config.enable_loop = 1;
capa->config.pktin.bit.ts_all = 1;
@@ -568,5 +632,5 @@ const pktio_if_ops_t _odp_loopback_pktio_ops = {
.pktio_time = NULL,
.config = NULL,
.input_queues_config = NULL,
- .output_queues_config = NULL,
+ .output_queues_config = loopback_pktout_queue_config,
};
diff --git a/platform/linux-generic/pktio/netmap.c b/platform/linux-generic/pktio/netmap.c
index b45cdbe47..0b1345e50 100644
--- a/platform/linux-generic/pktio/netmap.c
+++ b/platform/linux-generic/pktio/netmap.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2015-2018, Linaro Limited
- * Copyright (c) 2019-2021, Nokia
+ * Copyright (c) 2019-2022, Nokia
* All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
@@ -862,7 +862,7 @@ static inline int netmap_pkt_to_odp(pktio_entry_t *pktio_entry,
pkt_hdr->input = pktio_entry->s.handle;
if (pktio_cls_enabled(pktio_entry))
- copy_packet_cls_metadata(&parsed_hdr, pkt_hdr);
+ _odp_packet_copy_cls_md(pkt_hdr, &parsed_hdr);
else
_odp_packet_parse_layer(pkt_hdr,
pktio_entry->s.config.parser.layer,
diff --git a/platform/linux-generic/pktio/null.c b/platform/linux-generic/pktio/null.c
index 8a421986b..90e113ec6 100644
--- a/platform/linux-generic/pktio/null.c
+++ b/platform/linux-generic/pktio/null.c
@@ -4,7 +4,10 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
-#include <odp_api.h>
+#include <odp/api/debug.h>
+#include <odp/api/hints.h>
+#include <odp/api/packet_io.h>
+
#include <odp_packet_io_internal.h>
#include <stdint.h>
diff --git a/platform/linux-generic/pktio/pcap.c b/platform/linux-generic/pktio/pcap.c
index d42840da9..7290626c2 100644
--- a/platform/linux-generic/pktio/pcap.c
+++ b/platform/linux-generic/pktio/pcap.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2015-2018, Linaro Limited
- * Copyright (c) 2021, Nokia
+ * Copyright (c) 2021-2022, Nokia
* All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
@@ -38,9 +38,16 @@
#include <odp_posix_extensions.h>
-#include <odp_api.h>
+#include <odp/api/debug.h>
+#include <odp/api/hints.h>
+#include <odp/api/packet.h>
+#include <odp/api/packet_io.h>
+#include <odp/api/ticketlock.h>
+
#include <odp/api/plat/packet_inlines.h>
+
#include <odp_classification_internal.h>
+#include <odp_debug_internal.h>
#include <odp_global_data.h>
#include <odp_packet_internal.h>
#include <odp_packet_io_internal.h>
diff --git a/platform/linux-generic/pktio/socket.c b/platform/linux-generic/pktio/socket.c
index 0bd7a21c4..81c178b9d 100644
--- a/platform/linux-generic/pktio/socket.c
+++ b/platform/linux-generic/pktio/socket.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2013-2018, Linaro Limited
- * Copyright (c) 2013-2021, Nokia Solutions and Networks
+ * Copyright (c) 2013-2022, Nokia Solutions and Networks
* All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
@@ -7,6 +7,21 @@
#include <odp_posix_extensions.h>
+#include <odp/api/align.h>
+#include <odp/api/debug.h>
+#include <odp/api/hints.h>
+#include <odp/api/packet.h>
+#include <odp/api/packet_io.h>
+#include <odp/api/ticketlock.h>
+
+#include <odp_socket_common.h>
+#include <odp_packet_internal.h>
+#include <odp_packet_io_internal.h>
+#include <odp_packet_io_stats.h>
+#include <odp_debug_internal.h>
+#include <odp_errno_define.h>
+#include <odp_classification_internal.h>
+
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
@@ -20,15 +35,6 @@
#include <errno.h>
#include <sys/syscall.h>
-#include <odp_api.h>
-#include <odp_socket_common.h>
-#include <odp_packet_internal.h>
-#include <odp_packet_io_internal.h>
-#include <odp_packet_io_stats.h>
-#include <odp_debug_internal.h>
-#include <odp_errno_define.h>
-#include <odp_classification_internal.h>
-
typedef struct {
odp_ticketlock_t rx_lock ODP_ALIGNED_CACHE;
odp_ticketlock_t tx_lock ODP_ALIGNED_CACHE;
diff --git a/platform/linux-generic/pktio/socket_mmap.c b/platform/linux-generic/pktio/socket_mmap.c
index 93984af4f..f84834610 100644
--- a/platform/linux-generic/pktio/socket_mmap.c
+++ b/platform/linux-generic/pktio/socket_mmap.c
@@ -1,14 +1,32 @@
/* Copyright (c) 2013-2018, Linaro Limited
- * Copyright (c) 2013-2021, Nokia Solutions and Networks
+ * Copyright (c) 2013-2022, Nokia Solutions and Networks
* All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
-
#include <odp_posix_extensions.h>
+#include <odp/api/debug.h>
+#include <odp/api/hints.h>
+#include <odp/api/packet.h>
+#include <odp/api/packet_io.h>
+#include <odp/api/ticketlock.h>
+
+#include <odp/api/plat/packet_inlines.h>
+
+#include <odp_socket_common.h>
+#include <odp_packet_internal.h>
#include <odp_packet_io_internal.h>
+#include <odp_packet_io_stats.h>
+#include <odp_debug_internal.h>
+#include <odp_errno_define.h>
+#include <odp_classification_datamodel.h>
+#include <odp_classification_internal.h>
+#include <odp_global_data.h>
+
+#include <protocols/eth.h>
+#include <protocols/ip.h>
#include <sys/socket.h>
#include <stdio.h>
@@ -25,22 +43,6 @@
#include <time.h>
#include <linux/if_packet.h>
-#include <odp_api.h>
-#include <odp/api/plat/packet_inlines.h>
-#include <odp_socket_common.h>
-#include <odp_packet_internal.h>
-#include <odp_packet_io_internal.h>
-#include <odp_packet_io_stats.h>
-#include <odp_debug_internal.h>
-#include <odp_errno_define.h>
-#include <odp_classification_datamodel.h>
-#include <odp_classification_internal.h>
-#include <odp/api/hints.h>
-#include <odp_global_data.h>
-
-#include <protocols/eth.h>
-#include <protocols/ip.h>
-
/* VLAN flags in tpacket2_hdr status */
#ifdef TP_STATUS_VLAN_TPID_VALID
#define VLAN_VALID (TP_STATUS_VLAN_VALID | TP_STATUS_VLAN_TPID_VALID)
@@ -275,7 +277,7 @@ static inline unsigned pkt_mmap_v2_rx(pktio_entry_t *pktio_entry,
hdr->input = pktio_entry->s.handle;
if (pktio_cls_enabled(pktio_entry))
- copy_packet_cls_metadata(&parsed_hdr, hdr);
+ _odp_packet_copy_cls_md(hdr, &parsed_hdr);
else
_odp_packet_parse_layer(hdr,
pktio_entry->s.config.parser.layer,
diff --git a/platform/linux-generic/pktio/stats/ethtool_stats.c b/platform/linux-generic/pktio/stats/ethtool_stats.c
index d8b6a7976..f300ed0ba 100644
--- a/platform/linux-generic/pktio/stats/ethtool_stats.c
+++ b/platform/linux-generic/pktio/stats/ethtool_stats.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2015-2018, Linaro Limited
- * Copyright (c) 2021, Nokia
+ * Copyright (c) 2021-2022, Nokia
* All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
@@ -7,6 +7,12 @@
#include <odp_posix_extensions.h>
+#include <odp/api/packet_io_stats.h>
+
+#include <odp_debug_internal.h>
+#include <odp_errno_define.h>
+#include <odp_ethtool_stats.h>
+
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <linux/sockios.h>
@@ -14,11 +20,6 @@
#include <errno.h>
#include <net/if.h>
-#include <odp_api.h>
-#include <odp_ethtool_stats.h>
-#include <odp_debug_internal.h>
-#include <odp_errno_define.h>
-
/*
* Suppress bounds warnings about interior zero length arrays. Such an array
* is used intentionally in sset_info.
diff --git a/platform/linux-generic/pktio/stats/sysfs_stats.c b/platform/linux-generic/pktio/stats/sysfs_stats.c
index 21620013e..1265db117 100644
--- a/platform/linux-generic/pktio/stats/sysfs_stats.c
+++ b/platform/linux-generic/pktio/stats/sysfs_stats.c
@@ -1,13 +1,16 @@
/* Copyright (c) 2015-2018, Linaro Limited
- * Copyright (c) 2021, Nokia
+ * Copyright (c) 2021-2022, Nokia
* All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
-#include <odp_api.h>
-#include <odp_sysfs_stats.h>
+#include <odp/api/packet_io_stats.h>
+
+#include <odp_debug_internal.h>
#include <odp_errno_define.h>
+#include <odp_sysfs_stats.h>
+
#include <dirent.h>
#include <errno.h>
#include <string.h>
diff --git a/platform/linux-generic/pktio/tap.c b/platform/linux-generic/pktio/tap.c
index e7c9417c3..d298c8982 100644
--- a/platform/linux-generic/pktio/tap.c
+++ b/platform/linux-generic/pktio/tap.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2015, Ilya Maximets <i.maximets@samsung.com>
- * Copyright (c) 2021, Nokia
+ * Copyright (c) 2021-2022, Nokia
* All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
@@ -30,6 +30,21 @@
#include <odp_posix_extensions.h>
+#include <odp/api/debug.h>
+#include <odp/api/hints.h>
+#include <odp/api/packet_io.h>
+#include <odp/api/random.h>
+#include <odp/api/ticketlock.h>
+
+#include <odp/api/plat/packet_inlines.h>
+
+#include <odp_debug_internal.h>
+#include <odp_socket_common.h>
+#include <odp_packet_internal.h>
+#include <odp_packet_io_internal.h>
+#include <odp_classification_internal.h>
+#include <odp_errno_define.h>
+
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
@@ -40,14 +55,6 @@
#include <sys/types.h>
#include <linux/if_tun.h>
-#include <odp_api.h>
-#include <odp/api/plat/packet_inlines.h>
-#include <odp_socket_common.h>
-#include <odp_packet_internal.h>
-#include <odp_packet_io_internal.h>
-#include <odp_classification_internal.h>
-#include <odp_errno_define.h>
-
typedef struct {
int fd; /**< file descriptor for tap interface*/
int skfd; /**< socket descriptor */
@@ -306,7 +313,7 @@ static odp_packet_t pack_odp_pkt(pktio_entry_t *pktio_entry, const void *data,
}
if (pktio_cls_enabled(pktio_entry))
- copy_packet_cls_metadata(&parsed_hdr, pkt_hdr);
+ _odp_packet_copy_cls_md(pkt_hdr, &parsed_hdr);
else
_odp_packet_parse_layer(pkt_hdr,
pktio_entry->s.config.parser.layer,