Remove the previous _odp_packet_copy_to_packet() internal API and replace with the official odp_packet_copy_from_pkt() API.
Signed-off-by: Bill Fischofer <[email protected]> --- .../linux-generic/include/odp_packet_internal.h | 4 -- platform/linux-generic/odp_crypto.c | 10 +-- platform/linux-generic/odp_packet.c | 83 ++++++++++------------ 3 files changed, 44 insertions(+), 53 deletions(-) diff --git a/platform/linux-generic/include/odp_packet_internal.h b/platform/linux-generic/include/odp_packet_internal.h index 9ea95c3..93a92a0 100644 --- a/platform/linux-generic/include/odp_packet_internal.h +++ b/platform/linux-generic/include/odp_packet_internal.h @@ -290,10 +290,6 @@ static inline int packet_parse_not_complete(odp_packet_hdr_t *pkt_hdr) } /* Forward declarations */ -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 packet_alloc(odp_pool_t pool_hdl, uint32_t len, int parse); diff --git a/platform/linux-generic/odp_crypto.c b/platform/linux-generic/odp_crypto.c index 7448575..f603bcd 100644 --- a/platform/linux-generic/odp_crypto.c +++ b/platform/linux-generic/odp_crypto.c @@ -731,11 +731,11 @@ odp_crypto_operation(odp_crypto_op_params_t *params, if (params->pkt != params->out_pkt) { if (odp_unlikely(ODP_PACKET_INVALID == params->out_pkt)) ODP_ABORT(); - (void)_odp_packet_copy_to_packet(params->pkt, - 0, - params->out_pkt, - 0, - odp_packet_len(params->pkt)); + (void)odp_packet_copy_from_pkt(params->out_pkt, + 0, + params->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 e4f9620..e806a75 100644 --- a/platform/linux-generic/odp_packet.c +++ b/platform/linux-generic/odp_packet.c @@ -630,11 +630,9 @@ int odp_packet_add_data(odp_packet_t *pkt_ptr, uint32_t offset, uint32_t len) if (newpkt == ODP_PACKET_INVALID) return -1; - if (_odp_packet_copy_to_packet(pkt, 0, - newpkt, 0, offset) != 0 || - _odp_packet_copy_to_packet(pkt, offset, newpkt, - offset + len, - pktlen - offset) != 0) { + if (odp_packet_copy_from_pkt(newpkt, 0, pkt, 0, offset) != 0 || + odp_packet_copy_from_pkt(newpkt, offset + len, pkt, offset, + pktlen - offset) != 0) { odp_packet_free(newpkt); return -1; } @@ -661,11 +659,9 @@ int odp_packet_rem_data(odp_packet_t *pkt_ptr, uint32_t offset, uint32_t len) if (newpkt == ODP_PACKET_INVALID) return -1; - if (_odp_packet_copy_to_packet(pkt, 0, - newpkt, 0, offset) != 0 || - _odp_packet_copy_to_packet(pkt, offset + len, - newpkt, offset, - pktlen - offset - len) != 0) { + if (odp_packet_copy_from_pkt(newpkt, 0, pkt, 0, offset) != 0 || + odp_packet_copy_from_pkt(newpkt, offset, pkt, offset + len, + pktlen - offset - len) != 0) { odp_packet_free(newpkt); return -1; } @@ -702,8 +698,8 @@ odp_packet_t odp_packet_copy(odp_packet_t pkt, odp_pool_t pool) memcpy(newstart, srcstart, sizeof(odp_packet_hdr_t) - meta_offset); - if (_odp_packet_copy_to_packet(pkt, 0, - newpkt, 0, pktlen) != 0) { + if (odp_packet_copy_from_pkt(newpkt, 0, pkt, 0, + pktlen) != 0) { odp_packet_free(newpkt); newpkt = ODP_PACKET_INVALID; } @@ -760,6 +756,37 @@ int odp_packet_copy_from_mem(odp_packet_t pkt, uint32_t offset, return 0; } +int odp_packet_copy_from_pkt(odp_packet_t dst, uint32_t dst_offset, + odp_packet_t src, uint32_t src_offset, + uint32_t len) +{ + odp_packet_hdr_t *dst_hdr = odp_packet_hdr(dst); + odp_packet_hdr_t *src_hdr = odp_packet_hdr(src); + void *dst_map; + void *src_map; + uint32_t cpylen, minseg; + uint32_t dst_seglen = 0; /* GCC */ + uint32_t src_seglen = 0; /* GCC */ + + if (dst_offset + len > dst_hdr->frame_len || + src_offset + len > src_hdr->frame_len) + return -1; + + while (len > 0) { + dst_map = packet_map(dst_hdr, dst_offset, &dst_seglen); + src_map = packet_map(src_hdr, src_offset, &src_seglen); + + minseg = dst_seglen > src_seglen ? src_seglen : dst_seglen; + cpylen = len > minseg ? minseg : len; + memcpy(dst_map, src_map, cpylen); + + dst_offset += cpylen; + src_offset += cpylen; + len -= cpylen; + } + + return 0; +} /* * * Debugging @@ -835,38 +862,6 @@ void _odp_packet_copy_md_to_packet(odp_packet_t srcpkt, odp_packet_t dstpkt) 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) -{ - odp_packet_hdr_t *srchdr = odp_packet_hdr(srcpkt); - odp_packet_hdr_t *dsthdr = odp_packet_hdr(dstpkt); - void *srcmap; - void *dstmap; - uint32_t cpylen, minseg; - uint32_t srcseglen = 0; /* GCC */ - uint32_t dstseglen = 0; /* GCC */ - - if (srcoffset + len > srchdr->frame_len || - dstoffset + len > dsthdr->frame_len) - return -1; - - while (len > 0) { - srcmap = packet_map(srchdr, srcoffset, &srcseglen); - dstmap = packet_map(dsthdr, dstoffset, &dstseglen); - - minseg = dstseglen > srcseglen ? srcseglen : dstseglen; - cpylen = len > minseg ? minseg : len; - memcpy(dstmap, srcmap, cpylen); - - srcoffset += cpylen; - dstoffset += cpylen; - len -= cpylen; - } - - return 0; -} - /** * Parser helper function for IPv4 */ -- 2.5.0 _______________________________________________ lng-odp mailing list [email protected] https://lists.linaro.org/mailman/listinfo/lng-odp
