Signed-off-by: Dmitry Eremin-Solenikov <[email protected]>
---
platform/linux-generic/include/odp_buffer_inlines.h | 2 ++
platform/linux-generic/include/odp_buffer_internal.h | 3 +++
platform/linux-generic/odp_event.c | 5 +++++
platform/linux-generic/odp_packet.c | 1 +
platform/linux-generic/odp_pool.c | 11 +++++++++++
5 files changed, 22 insertions(+)
diff --git a/platform/linux-generic/include/odp_buffer_inlines.h
b/platform/linux-generic/include/odp_buffer_inlines.h
index cf817d907ab5..4c0e73390948 100644
--- a/platform/linux-generic/include/odp_buffer_inlines.h
+++ b/platform/linux-generic/include/odp_buffer_inlines.h
@@ -21,6 +21,8 @@ extern "C" {
odp_event_type_t _odp_buffer_event_type(odp_buffer_t buf);
void _odp_buffer_event_type_set(odp_buffer_t buf, int ev);
+odp_event_subtype_t _odp_buffer_event_subtype(odp_buffer_t buf);
+void _odp_buffer_event_subtype_set(odp_buffer_t buf, int ev);
int odp_buffer_snprint(char *str, uint32_t n, odp_buffer_t buf);
static inline odp_buffer_t odp_hdr_to_buf(odp_buffer_hdr_t *hdr)
diff --git a/platform/linux-generic/include/odp_buffer_internal.h
b/platform/linux-generic/include/odp_buffer_internal.h
index 076abe96e072..dadf285e796d 100644
--- a/platform/linux-generic/include/odp_buffer_internal.h
+++ b/platform/linux-generic/include/odp_buffer_internal.h
@@ -96,6 +96,9 @@ struct odp_buffer_hdr_t {
/* Event type. Maybe different than pool type (crypto compl event) */
int8_t event_type;
+ /* Event subtype. Should be ODP_EVENT_NO_SUBTYPE except packets. */
+ int8_t event_subtype;
+
/* Burst table */
struct odp_buffer_hdr_t *burst[BUFFER_BURST_SIZE];
diff --git a/platform/linux-generic/odp_event.c
b/platform/linux-generic/odp_event.c
index d71f4464af48..3cd4a73cbefb 100644
--- a/platform/linux-generic/odp_event.c
+++ b/platform/linux-generic/odp_event.c
@@ -19,6 +19,11 @@ odp_event_type_t odp_event_type(odp_event_t event)
return _odp_buffer_event_type(odp_buffer_from_event(event));
}
+odp_event_subtype_t odp_event_subtype(odp_event_t event)
+{
+ return _odp_buffer_event_subtype(odp_buffer_from_event(event));
+}
+
void odp_event_free(odp_event_t event)
{
switch (odp_event_type(event)) {
diff --git a/platform/linux-generic/odp_packet.c
b/platform/linux-generic/odp_packet.c
index eb66af2d3b9c..3789feca45f9 100644
--- a/platform/linux-generic/odp_packet.c
+++ b/platform/linux-generic/odp_packet.c
@@ -268,6 +268,7 @@ static inline void packet_init(odp_packet_hdr_t *pkt_hdr,
uint32_t len)
CONFIG_PACKET_TAILROOM;
pkt_hdr->input = ODP_PKTIO_INVALID;
+ pkt_hdr->buf_hdr.event_subtype = ODP_EVENT_PACKET_BASIC;
}
static inline void init_segments(odp_packet_hdr_t *pkt_hdr[], int num)
diff --git a/platform/linux-generic/odp_pool.c
b/platform/linux-generic/odp_pool.c
index 9dba734130b4..23b80698d3b0 100644
--- a/platform/linux-generic/odp_pool.c
+++ b/platform/linux-generic/odp_pool.c
@@ -259,6 +259,7 @@ static void init_buffers(pool_t *pool)
buf_hdr->size = seg_size;
buf_hdr->type = type;
buf_hdr->event_type = type;
+ buf_hdr->event_subtype = ODP_EVENT_NO_SUBTYPE;
buf_hdr->pool_hdl = pool->pool_hdl;
buf_hdr->uarea_addr = uarea;
/* Show user requested size through API */
@@ -566,6 +567,16 @@ void _odp_buffer_event_type_set(odp_buffer_t buf, int ev)
buf_hdl_to_hdr(buf)->event_type = ev;
}
+odp_event_subtype_t _odp_buffer_event_subtype(odp_buffer_t buf)
+{
+ return buf_hdl_to_hdr(buf)->event_subtype;
+}
+
+void _odp_buffer_event_subtype_set(odp_buffer_t buf, int ev)
+{
+ buf_hdl_to_hdr(buf)->event_subtype = ev;
+}
+
odp_pool_t odp_pool_lookup(const char *name)
{
uint32_t i;
--
2.11.0