aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/odp_packet.c
diff options
context:
space:
mode:
authorBill Fischofer <bill.fischofer@linaro.org>2014-12-16 14:30:34 +0200
committerMaxim Uvarov <maxim.uvarov@linaro.org>2014-12-16 19:03:39 +0300
commit8822ad6c22f6d135c43829e043c675a779bbd005 (patch)
treeabbef5ec4bddbe90bbcbb964009e668e8bcf9822 /platform/linux-generic/odp_packet.c
parent57408e45ba64d287d402da8bd212edc9aa56d1ba (diff)
api: packet: move helper functions to public API
Signed-off-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Taras Kondratiuk <taras.kondratiuk@linaro.org> Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org> Reviewed-by: Petri Savolainen <petri.savolainen@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Diffstat (limited to 'platform/linux-generic/odp_packet.c')
-rw-r--r--platform/linux-generic/odp_packet.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c
index 726e086b..8a941cec 100644
--- a/platform/linux-generic/odp_packet.c
+++ b/platform/linux-generic/odp_packet.c
@@ -21,6 +21,28 @@ static inline uint8_t parse_ipv4(odp_packet_hdr_t *pkt_hdr,
static inline uint8_t parse_ipv6(odp_packet_hdr_t *pkt_hdr,
odph_ipv6hdr_t *ipv6, size_t *offset_out);
+odp_packet_t odp_packet_alloc(odp_buffer_pool_t pool_id)
+{
+ odp_packet_t pkt;
+ odp_buffer_t buf;
+
+ buf = odp_buffer_alloc(pool_id);
+ if (odp_unlikely(!odp_buffer_is_valid(buf)))
+ return ODP_PACKET_INVALID;
+
+ pkt = odp_packet_from_buffer(buf);
+ odp_packet_init(pkt);
+
+ return pkt;
+}
+
+void odp_packet_free(odp_packet_t pkt)
+{
+ odp_buffer_t buf = odp_packet_to_buffer(pkt);
+
+ odp_buffer_free(buf);
+}
+
void odp_packet_init(odp_packet_t pkt)
{
odp_packet_hdr_t *const pkt_hdr = odp_packet_hdr(pkt);
@@ -368,3 +390,17 @@ void *odp_packet_get_ctx(odp_packet_t pkt)
{
return (void *)(intptr_t)odp_packet_hdr(pkt)->user_ctx;
}
+
+int odp_packet_is_valid(odp_packet_t pkt)
+{
+ odp_buffer_t buf = odp_packet_to_buffer(pkt);
+
+ return odp_buffer_is_valid(buf);
+}
+
+size_t odp_packet_buf_size(odp_packet_t pkt)
+{
+ odp_buffer_t buf = odp_packet_to_buffer(pkt);
+
+ return odp_buffer_size(buf);
+}