aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetri Savolainen <petri.savolainen@linaro.org>2017-12-01 15:02:35 +0200
committerMaxim Uvarov <maxim.uvarov@linaro.org>2017-12-27 21:58:43 +0300
commit9531b4a10640e32c432ddd3ae3be5005f2b87b2b (patch)
tree99158090a71c12a5beeefe0de6e9bc40a9f57e74
parent39cbe8bd3cf8789caacf2579f74f081f70a05c69 (diff)
linux-gen: packet: implement event filter packet
Simple implementation of the new event filter packets function. Signed-off-by: Petri Savolainen <petri.savolainen@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Reviewed-by: Balasubramanian Manoharan <bala.manoharan@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
-rw-r--r--platform/linux-generic/odp_packet.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c
index ef8754e3b..83a880947 100644
--- a/platform/linux-generic/odp_packet.c
+++ b/platform/linux-generic/odp_packet.c
@@ -983,6 +983,27 @@ void odp_packet_to_event_multi(const odp_packet_t pkt[], odp_event_t ev[],
ev[i] = odp_packet_to_event(pkt[i]);
}
+int odp_event_filter_packet(const odp_event_t event[],
+ odp_packet_t packet[],
+ odp_event_t remain[], int num)
+{
+ int i;
+ int num_pkt = 0;
+ int num_rem = 0;
+
+ for (i = 0; i < num; i++) {
+ if (odp_event_type(event[i]) == ODP_EVENT_PACKET) {
+ packet[num_pkt] = odp_packet_from_event(event[i]);
+ num_pkt++;
+ } else {
+ remain[num_rem] = event[i];
+ num_rem++;
+ }
+ }
+
+ return num_pkt;
+}
+
/*
*
* Pointers and lengths