aboutsummaryrefslogtreecommitdiff
path: root/example
diff options
context:
space:
mode:
authorBogdan Pricope <bogdan.pricope@linaro.org>2017-03-28 14:03:25 +0300
committerMaxim Uvarov <maxim.uvarov@linaro.org>2017-03-30 19:24:00 +0300
commit6b417e477b0a7b743c7b68a840c4ac19f08f8dbd (patch)
tree7cbcce7750ee9f276fc76798a366d88d7c534cdc /example
parent62298f0a5a25f3f3d0b2289b004dfc79246d7dbc (diff)
test: generator: receive packets in bursts
Signed-off-by: Bogdan Pricope <bogdan.pricope@linaro.org> Reviewed-and-tested-by: Yi He <yi.he@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Diffstat (limited to 'example')
-rw-r--r--example/generator/odp_generator.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/example/generator/odp_generator.c b/example/generator/odp_generator.c
index a9b07e5cb..452fa8b98 100644
--- a/example/generator/odp_generator.c
+++ b/example/generator/odp_generator.c
@@ -27,6 +27,7 @@
#define POOL_PKT_LEN 1856 /* Max packet length */
#define DEFAULT_PKT_INTERVAL 1000 /* Interval between each packet */
#define MAX_UDP_TX_BURST 32
+#define MAX_RX_BURST 32
#define APPL_MODE_UDP 0 /**< UDP mode */
#define APPL_MODE_PING 1 /**< ping mode */
@@ -637,8 +638,9 @@ static int gen_recv_thread(void *arg)
int thr;
odp_pktio_t pktio;
thread_args_t *thr_args;
- odp_packet_t pkt;
- odp_event_t ev;
+ odp_packet_t pkts[MAX_RX_BURST], pkt;
+ odp_event_t events[MAX_RX_BURST];
+ int pkt_cnt, ev_cnt, i;
thr = odp_thread_id();
thr_args = arg;
@@ -661,18 +663,24 @@ static int gen_recv_thread(void *arg)
}
/* Use schedule to get buf from any input queue */
- ev = odp_schedule(NULL, ODP_SCHED_WAIT);
-
- pkt = odp_packet_from_event(ev);
- /* Drop packets with errors */
- if (odp_unlikely(odp_packet_has_error(pkt))) {
- odp_packet_free(pkt);
+ ev_cnt = odp_schedule_multi(NULL, ODP_SCHED_WAIT,
+ events, MAX_RX_BURST);
+ if (ev_cnt == 0)
continue;
+ for (i = 0, pkt_cnt = 0; i < ev_cnt; i++) {
+ pkt = odp_packet_from_event(events[i]);
+
+ /* Drop packets with errors */
+ if (odp_unlikely(odp_packet_has_error(pkt))) {
+ odp_packet_free(pkt);
+ continue;
+ }
+ pkts[pkt_cnt++] = pkt;
}
- print_pkts(thr, &pkt, 1);
+ print_pkts(thr, pkts, pkt_cnt);
- odp_packet_free(pkt);
+ odp_packet_free_multi(pkts, pkt_cnt);
}
return 0;