[1/1,v2] examples: odp_ipsec: runtime select multiple vs single deq

Message ID 1428647626-3335-1-git-send-email-alexandru.badicioiu@linaro.org
State Accepted
Commit fc84fa582f0f453c6bf5979c26f62b3a207c713a
Headers show

Commit Message

Alexandru Badicioiu April 10, 2015, 6:33 a.m.
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(-)

Comments

Maxim Uvarov April 10, 2015, 4:24 p.m. | #1
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++) {

Patch

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++) {