diff options
author | Matias Elo <matias.elo@nokia.com> | 2022-01-10 09:51:22 +0200 |
---|---|---|
committer | Matias Elo <matias.elo@nokia.com> | 2022-01-12 16:34:48 +0200 |
commit | f7f7d94eaeeaf502b13c0ea4a18fa8addfa79c22 (patch) | |
tree | fa0f3af83ef00cecfa9a9b86953f1df96927c009 | |
parent | 664ecc51e31c1ff8b7b2b3313288234c1f76e8ec (diff) |
linux-gen: packet: move user context pointer to packet header
Move user context pointer from _odp_event_hdr_t to odp_packet_hdr_t since
it's only used by packet buffers.
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com>
-rw-r--r-- | platform/linux-generic/include/odp_event_internal.h | 3 | ||||
-rw-r--r-- | platform/linux-generic/include/odp_packet_internal.h | 5 | ||||
-rw-r--r-- | platform/linux-generic/odp_packet.c | 10 | ||||
-rw-r--r-- | platform/linux-generic/odp_pool.c | 3 |
4 files changed, 12 insertions, 9 deletions
diff --git a/platform/linux-generic/include/odp_event_internal.h b/platform/linux-generic/include/odp_event_internal.h index fa7e5f354..1f88a10ce 100644 --- a/platform/linux-generic/include/odp_event_internal.h +++ b/platform/linux-generic/include/odp_event_internal.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2021, Nokia +/* Copyright (c) 2021-2022, Nokia * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -51,7 +51,6 @@ typedef struct _odp_event_hdr_t { void *pool_ptr; /* --- Mostly read only data --- */ - const void *user_ptr; /* Initial buffer tail pointer */ uint8_t *buf_end; diff --git a/platform/linux-generic/include/odp_packet_internal.h b/platform/linux-generic/include/odp_packet_internal.h index 7c9b7735e..6372705db 100644 --- a/platform/linux-generic/include/odp_packet_internal.h +++ b/platform/linux-generic/include/odp_packet_internal.h @@ -1,5 +1,5 @@ /* Copyright (c) 2013-2018, Linaro Limited - * Copyright (c) 2019-2021, Nokia + * Copyright (c) 2019-2022, Nokia * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -120,6 +120,9 @@ typedef struct ODP_ALIGNED_CACHE odp_packet_hdr_t { /* Flow hash value */ uint32_t flow_hash; + /* User context pointer */ + const void *user_ptr; + /* Classifier mark */ uint16_t cls_mark; diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c index a15508ca2..4f20e97b1 100644 --- a/platform/linux-generic/odp_packet.c +++ b/platform/linux-generic/odp_packet.c @@ -1,5 +1,5 @@ /* Copyright (c) 2013-2018, Linaro Limited - * Copyright (c) 2019-2021, Nokia + * Copyright (c) 2019-2022, Nokia * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -50,7 +50,7 @@ const _odp_packet_inline_offset_t _odp_packet_inline ODP_ALIGNED_CACHE = { .pool = offsetof(odp_packet_hdr_t, event_hdr.pool_ptr), .input = offsetof(odp_packet_hdr_t, input), .seg_count = offsetof(odp_packet_hdr_t, seg_count), - .user_ptr = offsetof(odp_packet_hdr_t, event_hdr.user_ptr), + .user_ptr = offsetof(odp_packet_hdr_t, user_ptr), .user_area = offsetof(odp_packet_hdr_t, event_hdr.uarea_addr), .l2_offset = offsetof(odp_packet_hdr_t, p.l2_offset), .l3_offset = offsetof(odp_packet_hdr_t, p.l3_offset), @@ -193,8 +193,8 @@ static inline void packet_seg_copy_md(odp_packet_hdr_t *dst, if (src->p.flags.payload_off) dst->payload_offset = src->payload_offset; + dst->user_ptr = src->user_ptr; /* event header side packet metadata */ - dst->event_hdr.user_ptr = src->event_hdr.user_ptr; dst->event_hdr.uarea_addr = src->event_hdr.uarea_addr; /* segmentation data is not copied: @@ -1076,7 +1076,7 @@ void odp_packet_user_ptr_set(odp_packet_t pkt, const void *ptr) return; } - pkt_hdr->event_hdr.user_ptr = ptr; + pkt_hdr->user_ptr = ptr; pkt_hdr->p.flags.user_ptr_set = 1; } @@ -1753,7 +1753,7 @@ int _odp_packet_copy_md_to_packet(odp_packet_t srcpkt, odp_packet_t dstpkt) dsthdr->dst_queue = srchdr->dst_queue; dsthdr->cos = srchdr->cos; dsthdr->cls_mark = srchdr->cls_mark; - dsthdr->event_hdr.user_ptr = srchdr->event_hdr.user_ptr; + dsthdr->user_ptr = srchdr->user_ptr; if (dsthdr->event_hdr.uarea_addr != NULL && srchdr->event_hdr.uarea_addr != NULL) { memcpy(dsthdr->event_hdr.uarea_addr, srchdr->event_hdr.uarea_addr, diff --git a/platform/linux-generic/odp_pool.c b/platform/linux-generic/odp_pool.c index 9ef178e5b..fef2ecf8d 100644 --- a/platform/linux-generic/odp_pool.c +++ b/platform/linux-generic/odp_pool.c @@ -1,5 +1,5 @@ /* Copyright (c) 2013-2018, Linaro Limited - * Copyright (c) 2019-2021, Nokia + * Copyright (c) 2019-2022, Nokia * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -449,6 +449,7 @@ static void init_event_hdr(pool_t *pool, _odp_event_hdr_t *event_hdr, uint32_t b if (type == ODP_POOL_PACKET) { odp_packet_hdr_t *pkt_hdr = (void *)event_hdr; + pkt_hdr->user_ptr = NULL; pkt_hdr->seg_data = data_ptr; pkt_hdr->seg_len = pool->seg_len; pkt_hdr->seg_count = 1; |