Message ID | 1428647626-3335-1-git-send-email-alexandru.badicioiu@linaro.org |
---|---|
State | Accepted |
Commit | fc84fa582f0f453c6bf5979c26f62b3a207c713a |
Headers | show |
Merged, Maxim. On 04/10/15 09:33, alexandru.badicioiu@linaro.org wrote: > From: Alexandru Badicioiu <alexandru.badicioiu@linaro.org> > > Signed-off-by: Alexandru Badicioiu <alexandru.badicioiu@linaro.org> > --- > example/ipsec/odp_ipsec.c | 3 +++ > example/ipsec/odp_ipsec_stream.c | 27 +++++++++++---------------- > 2 files changed, 14 insertions(+), 16 deletions(-) > > diff --git a/example/ipsec/odp_ipsec.c b/example/ipsec/odp_ipsec.c > index 9fb048a..cb8f535 100644 > --- a/example/ipsec/odp_ipsec.c > +++ b/example/ipsec/odp_ipsec.c > @@ -1498,6 +1498,9 @@ static void usage(char *progname) > " can be used to advanced pkt I/O selection for linux-generic\n" > " ODP_IPSEC_USE_POLL_QUEUES\n" > " to enable use of poll queues instead of scheduled (default)\n" > + " ODP_IPSEC_STREAM_VERIFY_MDEQ\n" > + " to enable use of multiple dequeue for queue draining during\n" > + " stream verification instead of single dequeue (default)\n" > "\n", NO_PATH(progname), NO_PATH(progname) > ); > } > diff --git a/example/ipsec/odp_ipsec_stream.c b/example/ipsec/odp_ipsec_stream.c > index ed07355..35042f5 100644 > --- a/example/ipsec/odp_ipsec_stream.c > +++ b/example/ipsec/odp_ipsec_stream.c > @@ -28,14 +28,6 @@ > > #define STREAM_MAGIC 0xBABE01234567CAFE > > -/** > - * Control use of odp_queue_deq versus odp_queue_deq_multi > - * when draining stream output queues > - * > - * @todo Make this command line driven versus compile time > - * (see https://bugs.linaro.org/show_bug.cgi?id=626) > - */ > -#define LOOP_DEQ_MULTIPLE 0 /**< enable multi packet dequeue */ > #define LOOP_DEQ_COUNT 32 /**< packets to dequeue at once */ > > /** > @@ -517,7 +509,9 @@ odp_bool_t verify_stream_db_outputs(void) > { > odp_bool_t done = TRUE; > stream_db_entry_t *stream = NULL; > + const char *env; > > + env = getenv("ODP_IPSEC_STREAM_VERIFY_MDEQ"); > /* For each stream look for output packets */ > for (stream = stream_db->list; NULL != stream; stream = stream->next) { > int idx; > @@ -531,14 +525,15 @@ odp_bool_t verify_stream_db_outputs(void) > continue; > > for (;;) { > -#if LOOP_DEQ_MULTIPLE > - count = odp_queue_deq_multi(queue, > - ev_tbl, > - LOOP_DEQ_COUNT); > -#else > - ev_tbl[0] = odp_queue_deq(queue); > - count = (ev_tbl[0] != ODP_EVENT_INVALID) ? 1 : 0; > -#endif > + if (env) { > + count = odp_queue_deq_multi(queue, > + ev_tbl, > + LOOP_DEQ_COUNT); > + } else { > + ev_tbl[0] = odp_queue_deq(queue); > + count = (ev_tbl[0] != ODP_EVENT_INVALID) ? > + 1 : 0; > + } > if (!count) > break; > for (idx = 0; idx < count; idx++) {
diff --git a/example/ipsec/odp_ipsec.c b/example/ipsec/odp_ipsec.c index 9fb048a..cb8f535 100644 --- a/example/ipsec/odp_ipsec.c +++ b/example/ipsec/odp_ipsec.c @@ -1498,6 +1498,9 @@ static void usage(char *progname) " can be used to advanced pkt I/O selection for linux-generic\n" " ODP_IPSEC_USE_POLL_QUEUES\n" " to enable use of poll queues instead of scheduled (default)\n" + " ODP_IPSEC_STREAM_VERIFY_MDEQ\n" + " to enable use of multiple dequeue for queue draining during\n" + " stream verification instead of single dequeue (default)\n" "\n", NO_PATH(progname), NO_PATH(progname) ); } diff --git a/example/ipsec/odp_ipsec_stream.c b/example/ipsec/odp_ipsec_stream.c index ed07355..35042f5 100644 --- a/example/ipsec/odp_ipsec_stream.c +++ b/example/ipsec/odp_ipsec_stream.c @@ -28,14 +28,6 @@ #define STREAM_MAGIC 0xBABE01234567CAFE -/** - * Control use of odp_queue_deq versus odp_queue_deq_multi - * when draining stream output queues - * - * @todo Make this command line driven versus compile time - * (see https://bugs.linaro.org/show_bug.cgi?id=626) - */ -#define LOOP_DEQ_MULTIPLE 0 /**< enable multi packet dequeue */ #define LOOP_DEQ_COUNT 32 /**< packets to dequeue at once */ /** @@ -517,7 +509,9 @@ odp_bool_t verify_stream_db_outputs(void) { odp_bool_t done = TRUE; stream_db_entry_t *stream = NULL; + const char *env; + env = getenv("ODP_IPSEC_STREAM_VERIFY_MDEQ"); /* For each stream look for output packets */ for (stream = stream_db->list; NULL != stream; stream = stream->next) { int idx; @@ -531,14 +525,15 @@ odp_bool_t verify_stream_db_outputs(void) continue; for (;;) { -#if LOOP_DEQ_MULTIPLE - count = odp_queue_deq_multi(queue, - ev_tbl, - LOOP_DEQ_COUNT); -#else - ev_tbl[0] = odp_queue_deq(queue); - count = (ev_tbl[0] != ODP_EVENT_INVALID) ? 1 : 0; -#endif + if (env) { + count = odp_queue_deq_multi(queue, + ev_tbl, + LOOP_DEQ_COUNT); + } else { + ev_tbl[0] = odp_queue_deq(queue); + count = (ev_tbl[0] != ODP_EVENT_INVALID) ? + 1 : 0; + } if (!count) break; for (idx = 0; idx < count; idx++) {