diff options
author | Matias Elo <matias.elo@nokia.com> | 2022-03-23 10:48:38 +0200 |
---|---|---|
committer | Matias Elo <matias.elo@nokia.com> | 2022-03-23 10:48:38 +0200 |
commit | 0d1e1234858459525ca2ea5cab1d309101ff1b31 (patch) | |
tree | 97f85a371250d24213f7a9ea8065230d697e0a42 /platform/linux-generic/pktio | |
parent | 6c96e7253082bdc5b3a6a6f39a1ced8200a39ee0 (diff) | |
parent | 751b1b116c9320914e785f22d2e5f69311c42628 (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.c | 83 | ||||
-rw-r--r-- | platform/linux-generic/pktio/ipc.c | 7 | ||||
-rw-r--r-- | platform/linux-generic/pktio/loop.c | 106 | ||||
-rw-r--r-- | platform/linux-generic/pktio/netmap.c | 4 | ||||
-rw-r--r-- | platform/linux-generic/pktio/null.c | 5 | ||||
-rw-r--r-- | platform/linux-generic/pktio/pcap.c | 11 | ||||
-rw-r--r-- | platform/linux-generic/pktio/socket.c | 26 | ||||
-rw-r--r-- | platform/linux-generic/pktio/socket_mmap.c | 40 | ||||
-rw-r--r-- | platform/linux-generic/pktio/stats/ethtool_stats.c | 13 | ||||
-rw-r--r-- | platform/linux-generic/pktio/stats/sysfs_stats.c | 9 | ||||
-rw-r--r-- | platform/linux-generic/pktio/tap.c | 27 |
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, - ©_count, &tx_ts_idx); + ©_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, |