Add internal API to allow implementation to copy packet metatdata when replicating a packet. Add the call to crypto to fix test failure.
Signed-off-by: Robbie King <[email protected]> --- platform/linux-generic/include/odp_packet_internal.h | 2 ++ platform/linux-generic/odp_crypto.c | 1 + platform/linux-generic/odp_packet.c | 14 ++++++++++++++ 3 files changed, 17 insertions(+) diff --git a/platform/linux-generic/include/odp_packet_internal.h b/platform/linux-generic/include/odp_packet_internal.h index 0ebc14b..16698cc 100644 --- a/platform/linux-generic/include/odp_packet_internal.h +++ b/platform/linux-generic/include/odp_packet_internal.h @@ -253,6 +253,8 @@ int _odp_packet_copy_to_packet(odp_packet_t srcpkt, uint32_t srcoffset, odp_packet_t dstpkt, uint32_t dstoffset, uint32_t len); +void _odp_packet_copy_md_to_packet(odp_packet_t srcpkt, odp_packet_t dstpkt); + odp_packet_t _odp_packet_alloc(odp_pool_t pool_hdl); int _odp_packet_parse(odp_packet_t pkt); diff --git a/platform/linux-generic/odp_crypto.c b/platform/linux-generic/odp_crypto.c index 0cb87c8..71bee6c 100644 --- a/platform/linux-generic/odp_crypto.c +++ b/platform/linux-generic/odp_crypto.c @@ -368,6 +368,7 @@ odp_crypto_operation(odp_crypto_op_params_t *params, ODP_ABORT(); _odp_packet_copy_to_packet(params->pkt, 0, params->out_pkt, 0, odp_packet_len(params->pkt)); + _odp_packet_copy_md_to_packet(params->pkt, params->out_pkt); odp_packet_free(params->pkt); params->pkt = ODP_PACKET_INVALID; } diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c index bb049d1..a980239 100644 --- a/platform/linux-generic/odp_packet.c +++ b/platform/linux-generic/odp_packet.c @@ -591,6 +591,20 @@ int odp_packet_is_valid(odp_packet_t pkt) * */ +void _odp_packet_copy_md_to_packet(odp_packet_t srcpkt, odp_packet_t dstpkt) +{ + odp_packet_hdr_t *srchdr = odp_packet_hdr(srcpkt); + odp_packet_hdr_t *dsthdr = odp_packet_hdr(dstpkt); + + dsthdr->input = srchdr->input; + dsthdr->buf_hdr.buf_u64 = srchdr->buf_hdr.buf_u64; + odp_atomic_store_u32( + &dsthdr->buf_hdr.ref_count, + odp_atomic_load_u32( + &srchdr->buf_hdr.ref_count)); + copy_packet_parser_metadata(srchdr, dsthdr); +} + int _odp_packet_copy_to_packet(odp_packet_t srcpkt, uint32_t srcoffset, odp_packet_t dstpkt, uint32_t dstoffset, uint32_t len) -- 1.9.1 _______________________________________________ lng-odp mailing list [email protected] http://lists.linaro.org/mailman/listinfo/lng-odp
