diff options
Diffstat (limited to 'platform/linux-dpdk/include')
6 files changed, 29 insertions, 18 deletions
diff --git a/platform/linux-dpdk/include/odp/api/plat/packet_inline_types.h b/platform/linux-dpdk/include/odp/api/plat/packet_inline_types.h index 06e322066..e0169579a 100644 --- a/platform/linux-dpdk/include/odp/api/plat/packet_inline_types.h +++ b/platform/linux-dpdk/include/odp/api/plat/packet_inline_types.h @@ -113,7 +113,7 @@ typedef union { uint32_t all_flags; struct { - uint32_t reserved1: 6; + uint32_t reserved1: 7; /* * Init flags @@ -144,14 +144,13 @@ typedef union { uint32_t udp_err: 1; /* UDP error */ uint32_t sctp_err: 1; /* SCTP error */ uint32_t l4_chksum_err: 1; /* L4 checksum error */ - uint32_t crypto_err: 1; /* Crypto packet operation error */ }; /* Flag groups */ struct { - uint32_t reserved2: 6; + uint32_t reserved2: 7; uint32_t other: 18; /* All other flags */ - uint32_t error: 8; /* All error flags */ + uint32_t error: 7; /* All error flags */ } all; } _odp_packet_flags_t; diff --git a/platform/linux-dpdk/include/odp_buffer_internal.h b/platform/linux-dpdk/include/odp_buffer_internal.h index 42b686a2a..3b99961c1 100644 --- a/platform/linux-dpdk/include/odp_buffer_internal.h +++ b/platform/linux-dpdk/include/odp_buffer_internal.h @@ -27,7 +27,6 @@ extern "C" { #include <odp/api/std_types.h> #include <odp/api/thread.h> -#include <odp_align_internal.h> #include <odp_config_internal.h> #include <odp_event_internal.h> diff --git a/platform/linux-dpdk/include/odp_eventdev_internal.h b/platform/linux-dpdk/include/odp_eventdev_internal.h index f6b01ec81..66da6daee 100644 --- a/platform/linux-dpdk/include/odp_eventdev_internal.h +++ b/platform/linux-dpdk/include/odp_eventdev_internal.h @@ -25,9 +25,9 @@ extern "C" { #include <odp/api/thread.h> #include <odp/api/ticketlock.h> -#include <odp_align_internal.h> #include <odp_config_internal.h> #include <odp_forward_typedefs_internal.h> +#include <odp_macros_internal.h> #include <odp_packet_io_internal.h> #include <odp_ptr_ring_mpmc_internal.h> #include <odp_queue_if.h> @@ -88,7 +88,7 @@ struct queue_entry_s { union queue_entry_u { struct queue_entry_s s; - uint8_t pad[ROUNDUP_CACHE_LINE(sizeof(struct queue_entry_s))]; + uint8_t pad[_ODP_ROUNDUP_CACHE_LINE(sizeof(struct queue_entry_s))]; }; /* Eventdev global data */ diff --git a/platform/linux-dpdk/include/odp_packet_internal.h b/platform/linux-dpdk/include/odp_packet_internal.h index a381386fc..02d7ff7b0 100644 --- a/platform/linux-dpdk/include/odp_packet_internal.h +++ b/platform/linux-dpdk/include/odp_packet_internal.h @@ -20,20 +20,23 @@ extern "C" { #include <odp/api/align.h> #include <odp/api/debug.h> +#include <odp/api/hints.h> #include <odp/api/ipsec.h> #include <odp/api/packet.h> -#include <odp/api/plat/packet_inline_types.h> #include <odp/api/packet_io.h> #include <odp/api/crypto.h> #include <odp/api/comp.h> #include <odp/api/std.h> +#include <odp/api/plat/packet_inline_types.h> + #include <odp_config_internal.h> #include <odp_debug_internal.h> #include <odp_event_internal.h> #include <odp_pool_internal.h> #include <protocols/eth.h> +#include <stdint.h> #include <string.h> #include <rte_config.h> @@ -158,13 +161,11 @@ typedef struct odp_packet_hdr_t { int8_t subtype; union { - struct { - /* Result for crypto packet op */ - odp_crypto_packet_result_t crypto_op_result; + /* Result for crypto packet op */ + odp_crypto_packet_result_t crypto_op_result; - /* Context for IPsec */ - odp_ipsec_packet_result_t ipsec_ctx; - }; + /* Context for IPsec */ + odp_ipsec_packet_result_t ipsec_ctx; /* Result for comp packet op */ odp_comp_packet_result_t comp_op_result; @@ -271,7 +272,10 @@ static inline void _odp_packet_copy_md(odp_packet_hdr_t *dst_hdr, odp_packet_hdr_t *src_hdr, odp_bool_t uarea_copy) { + const int8_t subtype = src_hdr->subtype; + dst_hdr->input = src_hdr->input; + dst_hdr->subtype = subtype; dst_hdr->dst_queue = src_hdr->dst_queue; dst_hdr->cos = src_hdr->cos; dst_hdr->cls_mark = src_hdr->cls_mark; @@ -321,6 +325,15 @@ static inline void _odp_packet_copy_md(odp_packet_hdr_t *dst_hdr, dst_hdr->uarea_addr = src_uarea; } } + + if (odp_unlikely(subtype != ODP_EVENT_PACKET_BASIC)) { + if (subtype == ODP_EVENT_PACKET_IPSEC) + dst_hdr->ipsec_ctx = src_hdr->ipsec_ctx; + else if (subtype == ODP_EVENT_PACKET_CRYPTO) + dst_hdr->crypto_op_result = src_hdr->crypto_op_result; + else if (subtype == ODP_EVENT_PACKET_COMP) + dst_hdr->comp_op_result = src_hdr->comp_op_result; + } } static inline void _odp_packet_copy_cls_md(odp_packet_hdr_t *dst_hdr, diff --git a/platform/linux-dpdk/include/odp_packet_io_internal.h b/platform/linux-dpdk/include/odp_packet_io_internal.h index 1f3fb650d..59410eef6 100644 --- a/platform/linux-dpdk/include/odp_packet_io_internal.h +++ b/platform/linux-dpdk/include/odp_packet_io_internal.h @@ -26,10 +26,10 @@ extern "C" { #include <odp/api/plat/packet_io_inlines.h> -#include <odp_align_internal.h> #include <odp_classification_datamodel.h> #include <odp_config_internal.h> #include <odp_debug_internal.h> +#include <odp_macros_internal.h> #include <odp_queue_if.h> #include <inttypes.h> @@ -159,7 +159,7 @@ struct pktio_entry { typedef union { struct pktio_entry s; - uint8_t pad[ROUNDUP_CACHE_LINE(sizeof(struct pktio_entry))]; + uint8_t pad[_ODP_ROUNDUP_CACHE_LINE(sizeof(struct pktio_entry))]; } pktio_entry_t; typedef struct { diff --git a/platform/linux-dpdk/include/odp_queue_basic_internal.h b/platform/linux-dpdk/include/odp_queue_basic_internal.h index 72c77d985..36ef7c6b5 100644 --- a/platform/linux-dpdk/include/odp_queue_basic_internal.h +++ b/platform/linux-dpdk/include/odp_queue_basic_internal.h @@ -20,10 +20,10 @@ extern "C" { #include <odp/api/shared_memory.h> #include <odp/api/ticketlock.h> -#include <odp_align_internal.h> #include <odp_buffer_internal.h> #include <odp_config_internal.h> #include <odp_forward_typedefs_internal.h> +#include <odp_macros_internal.h> #include <odp_ptr_ring_mpmc_internal.h> #include <odp_ptr_ring_st_internal.h> #include <odp_ptr_ring_spsc_internal.h> @@ -70,7 +70,7 @@ struct queue_entry_s { union queue_entry_u { struct queue_entry_s s; - uint8_t pad[ROUNDUP_CACHE_LINE(sizeof(struct queue_entry_s))]; + uint8_t pad[_ODP_ROUNDUP_CACHE_LINE(sizeof(struct queue_entry_s))]; }; typedef struct queue_global_t { |