Signed-off-by: Nicolas Morey-Chaisemartin <nmo...@kalray.eu>
---
 platform/linux-generic/odp_packet.c | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/platform/linux-generic/odp_packet.c 
b/platform/linux-generic/odp_packet.c
index 1b49624..79bf8b3 100644
--- a/platform/linux-generic/odp_packet.c
+++ b/platform/linux-generic/odp_packet.c
@@ -15,6 +15,7 @@
 #include <odp/helper/tcp.h>
 #include <odp/helper/udp.h>
 
+#include <errno.h>
 #include <string.h>
 #include <stdio.h>
 
@@ -127,11 +128,38 @@ odp_packet_t odp_packet_alloc(odp_pool_t pool_hdl, 
uint32_t len)
        return packet_alloc(pool_hdl, len, 0);
 }
 
+int odp_packet_alloc_multi(odp_pool_t pool_hdl, uint32_t len,
+                          odp_packet_t pkt[], int num)
+{
+       pool_entry_t *pool = odp_pool_to_entry(pool_hdl);
+       size_t pkt_size = len ? len : pool->s.params.buf.size;
+       int count, i;
+
+       if (pool->s.params.type != ODP_POOL_PACKET) {
+               __odp_errno = EINVAL;
+               return -1;
+       }
+
+       count = buffer_alloc_multi(pool_hdl, pkt_size,
+                                  (odp_buffer_t *)pkt, num);
+
+       if (len == 0)
+               for (i = 0; i < count; ++i)
+                       pull_tail(odp_packet_hdr(pkt[i]), pkt_size);
+
+       return count;
+}
+
 void odp_packet_free(odp_packet_t pkt)
 {
        odp_buffer_free((odp_buffer_t)pkt);
 }
 
+void odp_packet_free_multi(const odp_packet_t pkt[], int num)
+{
+       odp_buffer_free_multi((const odp_buffer_t *)pkt, num);
+}
+
 int odp_packet_reset(odp_packet_t pkt, uint32_t len)
 {
        odp_packet_hdr_t *const pkt_hdr = odp_packet_hdr(pkt);
-- 
2.6.1.3.g8d02103


_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to