aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/include/odp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/linux-generic/include/odp')
-rw-r--r--platform/linux-generic/include/odp/api/plat/event_inline_types.h1
-rw-r--r--platform/linux-generic/include/odp/api/plat/event_inlines.h27
-rw-r--r--platform/linux-generic/include/odp/api/plat/packet_inline_types.h1
-rw-r--r--platform/linux-generic/include/odp/api/plat/packet_inlines.h4
4 files changed, 19 insertions, 14 deletions
diff --git a/platform/linux-generic/include/odp/api/plat/event_inline_types.h b/platform/linux-generic/include/odp/api/plat/event_inline_types.h
index caa075871..cbf01588f 100644
--- a/platform/linux-generic/include/odp/api/plat/event_inline_types.h
+++ b/platform/linux-generic/include/odp/api/plat/event_inline_types.h
@@ -28,6 +28,7 @@ extern "C" {
typedef struct _odp_event_inline_offset_t {
uint16_t event_type;
uint16_t base_data;
+ uint16_t subtype;
uint16_t flow_id;
uint16_t pool;
diff --git a/platform/linux-generic/include/odp/api/plat/event_inlines.h b/platform/linux-generic/include/odp/api/plat/event_inlines.h
index b68ced244..990575166 100644
--- a/platform/linux-generic/include/odp/api/plat/event_inlines.h
+++ b/platform/linux-generic/include/odp/api/plat/event_inlines.h
@@ -49,6 +49,15 @@ static inline odp_event_type_t __odp_event_type_get(odp_event_t event)
return (odp_event_type_t)type;
}
+static inline odp_event_subtype_t __odp_event_subtype_get(odp_event_t event)
+{
+ int8_t type;
+
+ type = _odp_event_hdr_field(event, int8_t, subtype);
+
+ return (odp_event_subtype_t)type;
+}
+
_ODP_INLINE odp_event_type_t odp_event_type(odp_event_t event)
{
return __odp_event_type_get(event);
@@ -90,6 +99,7 @@ _ODP_INLINE void *odp_event_user_area(odp_event_t event)
switch (type) {
case ODP_EVENT_BUFFER:
+ case ODP_EVENT_ML_COMPL:
case ODP_EVENT_DMA_COMPL:
return _odp_buffer_get((odp_buffer_t)event, void *, uarea_addr);
case ODP_EVENT_PACKET:
@@ -112,6 +122,7 @@ _ODP_INLINE void *odp_event_user_area_and_flag(odp_event_t event, int *flag)
switch (type) {
case ODP_EVENT_BUFFER:
case ODP_EVENT_DMA_COMPL:
+ case ODP_EVENT_ML_COMPL:
*flag = -1;
return _odp_buffer_get((odp_buffer_t)event, void *, uarea_addr);
case ODP_EVENT_PACKET:
@@ -145,10 +156,7 @@ _ODP_INLINE void *odp_event_user_area_and_flag(odp_event_t event, int *flag)
_ODP_INLINE odp_event_subtype_t odp_event_subtype(odp_event_t event)
{
- if (__odp_event_type_get(event) != ODP_EVENT_PACKET)
- return ODP_EVENT_NO_SUBTYPE;
-
- return (odp_event_subtype_t)_odp_pkt_get((odp_packet_t)event, int8_t, subtype);
+ return __odp_event_subtype_get(event);
}
_ODP_INLINE odp_event_type_t odp_event_types(odp_event_t event,
@@ -156,9 +164,7 @@ _ODP_INLINE odp_event_type_t odp_event_types(odp_event_t event,
{
odp_event_type_t event_type = __odp_event_type_get(event);
- *subtype = event_type == ODP_EVENT_PACKET ?
- (odp_event_subtype_t)_odp_pkt_get((odp_packet_t)event, int8_t, subtype) :
- ODP_EVENT_NO_SUBTYPE;
+ *subtype = __odp_event_subtype_get(event);
return event_type;
}
@@ -172,11 +178,8 @@ _ODP_INLINE void odp_event_types_multi(const odp_event_t event[], odp_event_type
if (subtype == NULL)
return;
- for (int i = 0; i < num; i++) {
- subtype[i] = (type[i] == ODP_EVENT_PACKET) ?
- (odp_event_subtype_t)_odp_pkt_get((odp_packet_t)event[i], int8_t,
- subtype) : ODP_EVENT_NO_SUBTYPE;
- }
+ for (int i = 0; i < num; i++)
+ subtype[i] = __odp_event_subtype_get(event[i]);
}
_ODP_INLINE uint32_t odp_event_flow_id(odp_event_t event)
diff --git a/platform/linux-generic/include/odp/api/plat/packet_inline_types.h b/platform/linux-generic/include/odp/api/plat/packet_inline_types.h
index eb20ca7d7..691965624 100644
--- a/platform/linux-generic/include/odp/api/plat/packet_inline_types.h
+++ b/platform/linux-generic/include/odp/api/plat/packet_inline_types.h
@@ -50,7 +50,6 @@ typedef struct _odp_packet_inline_offset_t {
uint16_t timestamp;
uint16_t input_flags;
uint16_t flags;
- uint16_t subtype;
uint16_t cls_mark;
uint16_t ipsec_ctx;
uint16_t crypto_op;
diff --git a/platform/linux-generic/include/odp/api/plat/packet_inlines.h b/platform/linux-generic/include/odp/api/plat/packet_inlines.h
index 960dbc5fc..2dd74fa29 100644
--- a/platform/linux-generic/include/odp/api/plat/packet_inlines.h
+++ b/platform/linux-generic/include/odp/api/plat/packet_inlines.h
@@ -24,6 +24,7 @@
#include <odp/api/plat/packet_io_inlines.h>
#include <odp/api/plat/packet_inline_types.h>
#include <odp/api/plat/pool_inline_types.h>
+#include <odp/api/plat/event_inline_types.h>
#include <stdint.h>
#include <string.h>
@@ -571,7 +572,8 @@ _ODP_INLINE void odp_packet_to_event_multi(const odp_packet_t pkt[],
_ODP_INLINE odp_event_subtype_t odp_packet_subtype(odp_packet_t pkt)
{
- return (odp_event_subtype_t)_odp_pkt_get(pkt, int8_t, subtype);
+ return (odp_event_subtype_t)_odp_event_hdr_field((odp_event_t)(uintptr_t)pkt,
+ int8_t, subtype);
}
_ODP_INLINE odp_packet_tx_compl_t odp_packet_tx_compl_from_event(odp_event_t ev)