Added type into queue parameters structure, since the type specifies other parameters usage (e.g. sched params must be filled for SCHED queue type). It's also provides future proof odp_queue_create(), etc function prototype definition.
Defined PLAIN as the default type, since it does not require definition of any other queue params (e.g. sched params). Signed-off-by: Petri Savolainen <[email protected]> --- example/classifier/odp_classifier.c | 12 +++---- example/generator/odp_generator.c | 9 ++--- example/ipsec/odp_ipsec.c | 39 ++++++++++++---------- example/packet/odp_pktio.c | 10 +++--- example/time/time_global_test.c | 8 +---- example/timer/odp_timer_test.c | 3 +- include/odp/api/queue.h | 31 +++++++++++++---- platform/linux-generic/odp_packet_io.c | 25 +++++++++----- platform/linux-generic/odp_queue.c | 13 +++++--- platform/linux-generic/odp_schedule.c | 5 ++- platform/linux-generic/pktio/loop.c | 2 +- test/performance/odp_pktio_perf.c | 4 +-- test/performance/odp_scheduling.c | 6 ++-- .../classification/odp_classification_common.c | 9 ++--- .../classification/odp_classification_test_pmr.c | 8 ++--- .../classification/odp_classification_tests.c | 37 +++++++++----------- test/validation/crypto/crypto.c | 3 +- test/validation/pktio/pktio.c | 8 ++--- test/validation/queue/queue.c | 19 ++++++----- test/validation/scheduler/scheduler.c | 36 +++++++++++--------- test/validation/timer/timer.c | 6 ++-- 21 files changed, 155 insertions(+), 138 deletions(-) diff --git a/example/classifier/odp_classifier.c b/example/classifier/odp_classifier.c index afa5444..57a58d9 100644 --- a/example/classifier/odp_classifier.c +++ b/example/classifier/odp_classifier.c @@ -250,6 +250,7 @@ static odp_pktio_t create_pktio(const char *dev, odp_pool_t pool) } odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_PKTIN; qparam.sched.prio = ODP_SCHED_PRIO_DEFAULT; qparam.sched.sync = ODP_SCHED_SYNC_ATOMIC; qparam.sched.group = ODP_SCHED_GROUP_ALL; @@ -257,7 +258,7 @@ static odp_pktio_t create_pktio(const char *dev, odp_pool_t pool) odp_pktio_to_u64(pktio)); inq_name[ODP_QUEUE_NAME_LEN - 1] = '\0'; - inq_def = odp_queue_create(inq_name, ODP_QUEUE_TYPE_PKTIN, &qparam); + inq_def = odp_queue_create(inq_name, &qparam); if (inq_def == ODP_QUEUE_INVALID) { EXAMPLE_ERR("pktio inq create failed for %s\n", dev); exit(EXIT_FAILURE); @@ -369,11 +370,11 @@ static void configure_default_cos(odp_pktio_t pktio, appl_args_t *args) odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_SCHED; qparam.sched.prio = ODP_SCHED_PRIO_DEFAULT; qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL; qparam.sched.group = ODP_SCHED_GROUP_ALL; - queue_default = odp_queue_create(queue_name, - ODP_QUEUE_TYPE_SCHED, &qparam); + queue_default = odp_queue_create(queue_name, &qparam); if (queue_default == ODP_QUEUE_INVALID) { EXAMPLE_ERR("Error: default queue create failed.\n"); exit(EXIT_FAILURE); @@ -442,15 +443,14 @@ static void configure_cos(odp_pktio_t pktio, appl_args_t *args) stats->pmr = odp_pmr_create(&match); odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_SCHED; qparam.sched.prio = i % odp_schedule_num_prio(); qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL; qparam.sched.group = ODP_SCHED_GROUP_ALL; snprintf(queue_name, sizeof(queue_name), "%sQueue%d", args->stats[i].cos_name, i); - stats->queue = odp_queue_create(queue_name, - ODP_QUEUE_TYPE_SCHED, - &qparam); + stats->queue = odp_queue_create(queue_name, &qparam); if (ODP_QUEUE_INVALID == stats->queue) { EXAMPLE_ERR("odp_queue_create failed"); exit(EXIT_FAILURE); diff --git a/example/generator/odp_generator.c b/example/generator/odp_generator.c index f597fea..ab8c7fa 100644 --- a/example/generator/odp_generator.c +++ b/example/generator/odp_generator.c @@ -347,6 +347,7 @@ static odp_pktio_t create_pktio(const char *dev, odp_pool_t pool) * resource */ odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_PKTIN; qparam.sched.prio = ODP_SCHED_PRIO_DEFAULT; qparam.sched.sync = ODP_SCHED_SYNC_ATOMIC; qparam.sched.group = ODP_SCHED_GROUP_ALL; @@ -354,7 +355,7 @@ static odp_pktio_t create_pktio(const char *dev, odp_pool_t pool) odp_pktio_to_u64(pktio)); inq_name[ODP_QUEUE_NAME_LEN - 1] = '\0'; - inq_def = odp_queue_create(inq_name, ODP_QUEUE_TYPE_PKTIN, &qparam); + inq_def = odp_queue_create(inq_name, &qparam); if (inq_def == ODP_QUEUE_INVALID) EXAMPLE_ABORT("Error: pktio inq create failed for %s\n", dev); @@ -771,7 +772,7 @@ int main(int argc, char *argv[]) cpu_first = odp_cpumask_first(&cpumask); odp_cpumask_set(&cpu_mask, cpu_first); - tq = odp_queue_create("", ODP_QUEUE_TYPE_PLAIN, NULL); + tq = odp_queue_create("", NULL); if (tq == ODP_QUEUE_INVALID) abort(); args->thread[1].pktio_dev = args->appl.if_names[0]; @@ -789,7 +790,7 @@ int main(int argc, char *argv[]) gen_recv_thread, &args->thread[1], ODP_THREAD_WORKER); - tq = odp_queue_create("", ODP_QUEUE_TYPE_PLAIN, NULL); + tq = odp_queue_create("", NULL); if (tq == ODP_QUEUE_INVALID) abort(); args->thread[0].pktio_dev = args->appl.if_names[0]; @@ -821,7 +822,7 @@ int main(int argc, char *argv[]) if_idx = i % args->appl.if_count; args->thread[i].pktio_dev = args->appl.if_names[if_idx]; - tq = odp_queue_create("", ODP_QUEUE_TYPE_PLAIN, NULL); + tq = odp_queue_create("", NULL); if (tq == ODP_QUEUE_INVALID) abort(); args->thread[i].pool = pool; diff --git a/example/ipsec/odp_ipsec.c b/example/ipsec/odp_ipsec.c index a038dda..6134ab6 100644 --- a/example/ipsec/odp_ipsec.c +++ b/example/ipsec/odp_ipsec.c @@ -222,7 +222,7 @@ void free_pkt_ctx(pkt_ctx_t *ctx) * Example supports either polling queues or using odp_schedule */ typedef odp_queue_t (*queue_create_func_t) - (const char *, odp_queue_type_t, odp_queue_param_t *); + (const char *, const odp_queue_param_t *); typedef odp_event_t (*schedule_func_t) (odp_queue_t *); static queue_create_func_t queue_create; @@ -238,18 +238,24 @@ static int num_polled_queues; */ static odp_queue_t polled_odp_queue_create(const char *name, - odp_queue_type_t type, - odp_queue_param_t *param EXAMPLE_UNUSED) + const odp_queue_param_t *param) { odp_queue_t my_queue; - odp_queue_type_t my_type = type; + odp_queue_param_t qp; + odp_queue_type_t type; + + odp_queue_param_init(&qp); + if (param) + memcpy(&qp, param, sizeof(odp_queue_param_t)); + + type = qp.type; if (ODP_QUEUE_TYPE_SCHED == type) { printf("%s: change %s to PLAIN\n", __func__, name); - my_type = ODP_QUEUE_TYPE_PLAIN; + qp.type = ODP_QUEUE_TYPE_PLAIN; } - my_queue = odp_queue_create(name, my_type, NULL); + my_queue = odp_queue_create(name, &qp); if ((ODP_QUEUE_TYPE_SCHED == type) || (ODP_QUEUE_TYPE_PKTIN == type)) { poll_queues[num_polled_queues++] = my_queue; @@ -309,25 +315,23 @@ void ipsec_init_pre(void) * - sequence number queue (must be ATOMIC) */ odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_SCHED; qparam.sched.prio = ODP_SCHED_PRIO_HIGHEST; qparam.sched.sync = ODP_SCHED_SYNC_ATOMIC; qparam.sched.group = ODP_SCHED_GROUP_ALL; - completionq = queue_create("completion", - ODP_QUEUE_TYPE_SCHED, - &qparam); + completionq = queue_create("completion", &qparam); if (ODP_QUEUE_INVALID == completionq) { EXAMPLE_ERR("Error: completion queue creation failed\n"); exit(EXIT_FAILURE); } + qparam.type = ODP_QUEUE_TYPE_SCHED; qparam.sched.prio = ODP_SCHED_PRIO_HIGHEST; qparam.sched.sync = ODP_SCHED_SYNC_ATOMIC; qparam.sched.group = ODP_SCHED_GROUP_ALL; - seqnumq = queue_create("seqnum", - ODP_QUEUE_TYPE_SCHED, - &qparam); + seqnumq = queue_create("seqnum", &qparam); if (ODP_QUEUE_INVALID == seqnumq) { EXAMPLE_ERR("Error: sequence number queue creation failed\n"); exit(EXIT_FAILURE); @@ -435,26 +439,24 @@ void initialize_loop(char *intf) /* Create input queue */ odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_SCHED; qparam.sched.prio = ODP_SCHED_PRIO_DEFAULT; qparam.sched.sync = ODP_SCHED_SYNC_ATOMIC; qparam.sched.group = ODP_SCHED_GROUP_ALL; snprintf(queue_name, sizeof(queue_name), "%i-loop_inq_def", idx); queue_name[ODP_QUEUE_NAME_LEN - 1] = '\0'; - inq_def = queue_create(queue_name, ODP_QUEUE_TYPE_SCHED, &qparam); + inq_def = queue_create(queue_name, &qparam); if (ODP_QUEUE_INVALID == inq_def) { EXAMPLE_ERR("Error: input queue creation failed for %s\n", intf); exit(EXIT_FAILURE); } /* Create output queue */ - qparam.sched.prio = ODP_SCHED_PRIO_DEFAULT; - qparam.sched.sync = ODP_SCHED_SYNC_ATOMIC; - qparam.sched.group = ODP_SCHED_GROUP_ALL; snprintf(queue_name, sizeof(queue_name), "%i-loop_outq_def", idx); queue_name[ODP_QUEUE_NAME_LEN - 1] = '\0'; - outq_def = queue_create(queue_name, ODP_QUEUE_TYPE_PLAIN, &qparam); + outq_def = queue_create(queue_name, NULL); if (ODP_QUEUE_INVALID == outq_def) { EXAMPLE_ERR("Error: output queue creation failed for %s\n", intf); @@ -520,6 +522,7 @@ void initialize_intf(char *intf) * resource */ odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_PKTIN; qparam.sched.prio = ODP_SCHED_PRIO_DEFAULT; qparam.sched.sync = ODP_SCHED_SYNC_ATOMIC; qparam.sched.group = ODP_SCHED_GROUP_ALL; @@ -527,7 +530,7 @@ void initialize_intf(char *intf) odp_pktio_to_u64(pktio)); inq_name[ODP_QUEUE_NAME_LEN - 1] = '\0'; - inq_def = queue_create(inq_name, ODP_QUEUE_TYPE_PKTIN, &qparam); + inq_def = queue_create(inq_name, &qparam); if (ODP_QUEUE_INVALID == inq_def) { EXAMPLE_ERR("Error: pktio queue creation failed for %s\n", intf); diff --git a/example/packet/odp_pktio.c b/example/packet/odp_pktio.c index 135caf3..adabc03 100644 --- a/example/packet/odp_pktio.c +++ b/example/packet/odp_pktio.c @@ -151,17 +151,17 @@ static odp_pktio_t create_pktio(const char *dev, odp_pool_t pool, int mode) EXAMPLE_ABORT("Error: unable to start %s\n", dev); return pktio; case APPL_MODE_PKT_QUEUE: - inq_def = odp_queue_create(inq_name, - ODP_QUEUE_TYPE_PKTIN, NULL); + odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_PKTIN; + inq_def = odp_queue_create(inq_name, &qparam); break; case APPL_MODE_PKT_SCHED: odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_PKTIN; qparam.sched.prio = ODP_SCHED_PRIO_DEFAULT; qparam.sched.sync = ODP_SCHED_SYNC_ATOMIC; qparam.sched.group = ODP_SCHED_GROUP_ALL; - - inq_def = odp_queue_create(inq_name, - ODP_QUEUE_TYPE_PKTIN, &qparam); + inq_def = odp_queue_create(inq_name, &qparam); break; default: EXAMPLE_ABORT("invalid mode %d\n", mode); diff --git a/example/time/time_global_test.c b/example/time/time_global_test.c index 717f0bf..7cfd969 100644 --- a/example/time/time_global_test.c +++ b/example/time/time_global_test.c @@ -171,7 +171,6 @@ static void *run_thread(void *ptr) odp_buffer_t buf; test_globals_t *gbls; odp_pool_t buffer_pool; - odp_queue_param_t qparams; odp_queue_t queue, queue_next; timestamp_event_t *timestamp_ev; char queue_name[sizeof(QUEUE_NAME_PREFIX) + 2]; @@ -185,14 +184,9 @@ static void *run_thread(void *ptr) * Own queue is needed to guarantee that next thread for receiving * buffer is not the same thread. */ - odp_queue_param_init(&qparams); - qparams.sched.prio = ODP_SCHED_PRIO_LOWEST; - qparams.sched.sync = ODP_SCHED_SYNC_PARALLEL; - qparams.sched.group = ODP_SCHED_GROUP_WORKER; - id = odp_atomic_fetch_inc_u32(&gbls->id_counter); sprintf(queue_name, QUEUE_NAME_PREFIX "%d", id); - queue = odp_queue_create(queue_name, ODP_QUEUE_TYPE_PLAIN, &qparams); + queue = odp_queue_create(queue_name, NULL); if (queue == ODP_QUEUE_INVALID) EXAMPLE_ABORT("Cannot create thread queue, thread %d", thr); diff --git a/example/timer/odp_timer_test.c b/example/timer/odp_timer_test.c index 62fc07e..e6717bf 100644 --- a/example/timer/odp_timer_test.c +++ b/example/timer/odp_timer_test.c @@ -447,11 +447,12 @@ int main(int argc, char *argv[]) * Create a queue for timer test */ odp_queue_param_init(¶m); + param.type = ODP_QUEUE_TYPE_SCHED; param.sched.prio = ODP_SCHED_PRIO_DEFAULT; param.sched.sync = ODP_SCHED_SYNC_PARALLEL; param.sched.group = ODP_SCHED_GROUP_ALL; - queue = odp_queue_create("timer_queue", ODP_QUEUE_TYPE_SCHED, ¶m); + queue = odp_queue_create("timer_queue", ¶m); if (queue == ODP_QUEUE_INVALID) { err = 1; diff --git a/include/odp/api/queue.h b/include/odp/api/queue.h index 723a9cf..a3cc448 100644 --- a/include/odp/api/queue.h +++ b/include/odp/api/queue.h @@ -74,25 +74,43 @@ typedef enum odp_queue_type_t { * ODP Queue parameters */ typedef struct odp_queue_param_t { - /** Scheduler parameters */ + /** Queue type + * + * Valid values for other parameters in this structure depend on + * the queue type. */ + odp_queue_type_t type; + + /** Scheduler parameters + * + * These parameters are considered only when queue type is + * ODP_QUEUE_TYPE_SCHED. */ odp_schedule_param_t sched; - /** Queue context */ + + /** Queue context pointer + * + * User defined context pointer associated with the queue. The same + * pointer can be accessed with odp_queue_context() and + * odp_queue_context_set() calls. The implementation may read the + * pointer for prefetching the context data. Default value of the + * pointer is NULL. */ void *context; } odp_queue_param_t; - /** * Queue create * + * Create a queue according to the queue parameters. Queue type is specified by + * queue parameter 'type'. Use odp_queue_param_init() to initialize parameters + * into their default values. Default values are also used when 'param' pointer + * is NULL. The default queue type is ODP_QUEUE_TYPE_PLAIN. + * * @param name Queue name - * @param type Queue type * @param param Queue parameters. Uses defaults if NULL. * * @return Queue handle * @retval ODP_QUEUE_INVALID on failure */ -odp_queue_t odp_queue_create(const char *name, odp_queue_type_t type, - odp_queue_param_t *param); +odp_queue_t odp_queue_create(const char *name, const odp_queue_param_t *param); /** * Destroy ODP queue @@ -284,7 +302,6 @@ void odp_queue_param_init(odp_queue_param_t *param); */ typedef struct odp_queue_info_t { const char *name; /**< queue name */ - odp_queue_type_t type; /**< queue type */ odp_queue_param_t param; /**< queue parameters */ } odp_queue_info_t; diff --git a/platform/linux-generic/odp_packet_io.c b/platform/linux-generic/odp_packet_io.c index 1b42f81..cdbef22 100644 --- a/platform/linux-generic/odp_packet_io.c +++ b/platform/linux-generic/odp_packet_io.c @@ -53,6 +53,8 @@ int odp_pktio_init_global(void) odp_spinlock_init(&pktio_tbl->lock); for (id = 1; id <= ODP_CONFIG_PKTIO_ENTRIES; ++id) { + odp_queue_param_t param; + pktio_entry = &pktio_tbl->entries[id - 1]; odp_ticketlock_init(&pktio_entry->s.rxl); @@ -66,7 +68,10 @@ int odp_pktio_init_global(void) snprintf(name, sizeof(name), "%i-pktio_outq_default", (int)id); name[ODP_QUEUE_NAME_LEN-1] = '\0'; - qid = odp_queue_create(name, ODP_QUEUE_TYPE_PKTOUT, NULL); + odp_queue_param_init(¶m); + param.type = ODP_QUEUE_TYPE_PKTOUT; + + qid = odp_queue_create(name, ¶m); if (qid == ODP_QUEUE_INVALID) return -1; pktio_entry->s.outq_default = qid; @@ -1088,17 +1093,19 @@ int odp_pktio_input_queues_config(odp_pktio_t pktio, for (i = 0; i < num_queues; i++) { if (mode == ODP_PKTIN_MODE_QUEUE || mode == ODP_PKTIN_MODE_SCHED) { - odp_queue_type_t type = ODP_QUEUE_TYPE_PLAIN; + odp_queue_param_t queue_param; + + memcpy(&queue_param, ¶m->queue_param, + sizeof(odp_queue_param_t)); + + queue_param.type = ODP_QUEUE_TYPE_PLAIN; if (mode == ODP_PKTIN_MODE_SCHED) - type = ODP_QUEUE_TYPE_SCHED; + queue_param.type = ODP_QUEUE_TYPE_SCHED; + + queue = odp_queue_create("pktio_in", + &queue_param); - /* Ugly cast to uintptr_t is needed since queue_param - * is not defined as const in odp_queue_create() */ - queue = odp_queue_create("pktio_in", type, - (odp_queue_param_t *) - (uintptr_t) - ¶m->queue_param); if (queue == ODP_QUEUE_INVALID) { destroy_in_queues(entry, i + 1); return -1; diff --git a/platform/linux-generic/odp_queue.c b/platform/linux-generic/odp_queue.c index 17a26e8..f689f51 100644 --- a/platform/linux-generic/odp_queue.c +++ b/platform/linux-generic/odp_queue.c @@ -89,7 +89,7 @@ queue_entry_t *get_qentry(uint32_t queue_id) } static int queue_init(queue_entry_t *queue, const char *name, - odp_queue_type_t type, odp_queue_param_t *param) + odp_queue_type_t type, const odp_queue_param_t *param) { strncpy(queue->s.name, name, ODP_QUEUE_NAME_LEN - 1); queue->s.type = type; @@ -252,12 +252,17 @@ int odp_queue_lock_count(odp_queue_t handle) (int)queue->s.param.sched.lock_count : -1; } -odp_queue_t odp_queue_create(const char *name, odp_queue_type_t type, - odp_queue_param_t *param) +odp_queue_t odp_queue_create(const char *name, const odp_queue_param_t *param) { uint32_t i; queue_entry_t *queue; odp_queue_t handle = ODP_QUEUE_INVALID; + odp_queue_type_t type; + + if (param == NULL) + type = ODP_QUEUE_TYPE_PLAIN; + else + type = param->type; for (i = 0; i < ODP_CONFIG_QUEUES; i++) { queue = &queue_tbl->queue[i]; @@ -1003,6 +1008,7 @@ void queue_unlock(queue_entry_t *queue) void odp_queue_param_init(odp_queue_param_t *params) { memset(params, 0, sizeof(odp_queue_param_t)); + params->type = ODP_QUEUE_TYPE_PLAIN; } /* These routines exists here rather than in odp_schedule @@ -1158,7 +1164,6 @@ int odp_queue_info(odp_queue_t handle, odp_queue_info_t *info) } info->name = queue->s.name; - info->type = queue->s.type; info->param = queue->s.param; UNLOCK(&queue->s.lock); diff --git a/platform/linux-generic/odp_schedule.c b/platform/linux-generic/odp_schedule.c index cd1c9db..fc54ee5 100644 --- a/platform/linux-generic/odp_schedule.c +++ b/platform/linux-generic/odp_schedule.c @@ -178,8 +178,7 @@ int odp_schedule_init_global(void) name[10] = '0' + j / 10; name[11] = '0' + j - 10*(j / 10); - queue = odp_queue_create(name, - ODP_QUEUE_TYPE_PLAIN, NULL); + queue = odp_queue_create(name, NULL); if (queue == ODP_QUEUE_INVALID) { ODP_ERR("Sched init: Queue create failed.\n"); @@ -199,7 +198,7 @@ int odp_schedule_init_global(void) name[13] = '0' + i / 10; name[14] = '0' + i - 10 * (i / 10); - queue = odp_queue_create(name, ODP_QUEUE_TYPE_PLAIN, NULL); + queue = odp_queue_create(name, NULL); if (queue == ODP_QUEUE_INVALID) { ODP_ERR("Sched init: Queue create failed.\n"); diff --git a/platform/linux-generic/pktio/loop.c b/platform/linux-generic/pktio/loop.c index a9823d9..e8203ff 100644 --- a/platform/linux-generic/pktio/loop.c +++ b/platform/linux-generic/pktio/loop.c @@ -33,7 +33,7 @@ static int loopback_open(odp_pktio_t id, pktio_entry_t *pktio_entry, snprintf(loopq_name, sizeof(loopq_name), "%" PRIu64 "-pktio_loopq", odp_pktio_to_u64(id)); pktio_entry->s.pkt_loop.loopq = - odp_queue_create(loopq_name, ODP_QUEUE_TYPE_PLAIN, NULL); + odp_queue_create(loopq_name, NULL); if (pktio_entry->s.pkt_loop.loopq == ODP_QUEUE_INVALID) return -1; diff --git a/test/performance/odp_pktio_perf.c b/test/performance/odp_pktio_perf.c index 59ddb98..71407f2 100644 --- a/test/performance/odp_pktio_perf.c +++ b/test/performance/odp_pktio_perf.c @@ -766,6 +766,7 @@ static int test_init(void) /* create and associate an input queue for the RX side */ odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_PKTIN; qparam.sched.prio = ODP_SCHED_PRIO_DEFAULT; qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL; qparam.sched.group = ODP_SCHED_GROUP_ALL; @@ -774,8 +775,7 @@ static int test_init(void) odp_pktio_to_u64(gbl_args->pktio_rx)); inq_def = odp_queue_lookup(inq_name); if (inq_def == ODP_QUEUE_INVALID) - inq_def = odp_queue_create(inq_name, - ODP_QUEUE_TYPE_PKTIN, &qparam); + inq_def = odp_queue_create(inq_name, &qparam); if (inq_def == ODP_QUEUE_INVALID) return -1; diff --git a/test/performance/odp_scheduling.c b/test/performance/odp_scheduling.c index 7458614..564c517 100644 --- a/test/performance/odp_scheduling.c +++ b/test/performance/odp_scheduling.c @@ -902,7 +902,7 @@ int main(int argc, char *argv[]) /* * Create a queue for direct poll test */ - queue = odp_queue_create("poll_queue", ODP_QUEUE_TYPE_PLAIN, NULL); + queue = odp_queue_create("poll_queue", NULL); if (queue == ODP_QUEUE_INVALID) { LOG_ERR("Poll queue create failed.\n"); @@ -926,6 +926,7 @@ int main(int argc, char *argv[]) name[7] = '0' + i - 10*(i/10); odp_queue_param_init(¶m); + param.type = ODP_QUEUE_TYPE_SCHED; param.sched.prio = i; param.sched.sync = ODP_SCHED_SYNC_ATOMIC; param.sched.group = ODP_SCHED_GROUP_ALL; @@ -934,8 +935,7 @@ int main(int argc, char *argv[]) name[9] = '0' + j/10; name[10] = '0' + j - 10*(j/10); - queue = odp_queue_create(name, ODP_QUEUE_TYPE_SCHED, - ¶m); + queue = odp_queue_create(name, ¶m); if (queue == ODP_QUEUE_INVALID) { LOG_ERR("Schedule queue create failed.\n"); diff --git a/test/validation/classification/odp_classification_common.c b/test/validation/classification/odp_classification_common.c index 86ac4de..54ce594 100644 --- a/test/validation/classification/odp_classification_common.c +++ b/test/validation/classification/odp_classification_common.c @@ -161,17 +161,14 @@ odp_queue_t queue_create(const char *queuename, bool sched) if (sched) { odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_SCHED; qparam.sched.prio = ODP_SCHED_PRIO_HIGHEST; qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL; qparam.sched.group = ODP_SCHED_GROUP_ALL; - queue = odp_queue_create(queuename, - ODP_QUEUE_TYPE_SCHED, - &qparam); + queue = odp_queue_create(queuename, &qparam); } else { - queue = odp_queue_create(queuename, - ODP_QUEUE_TYPE_PLAIN, - NULL); + queue = odp_queue_create(queuename, NULL); } return queue; diff --git a/test/validation/classification/odp_classification_test_pmr.c b/test/validation/classification/odp_classification_test_pmr.c index 7edfd90..5f516a7 100644 --- a/test/validation/classification/odp_classification_test_pmr.c +++ b/test/validation/classification/odp_classification_test_pmr.c @@ -56,13 +56,14 @@ odp_pktio_t create_pktio(odp_queue_type_t q_type) return pktio; } -int create_default_inq(odp_pktio_t pktio, odp_queue_type_t qtype) +int create_default_inq(odp_pktio_t pktio, odp_queue_type_t qtype ODP_UNUSED) { odp_queue_param_t qparam; odp_queue_t inq_def; char inq_name[ODP_QUEUE_NAME_LEN]; odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_PKTIN; qparam.sched.prio = ODP_SCHED_PRIO_DEFAULT; qparam.sched.sync = ODP_SCHED_SYNC_ATOMIC; qparam.sched.group = ODP_SCHED_GROUP_ALL; @@ -71,10 +72,7 @@ int create_default_inq(odp_pktio_t pktio, odp_queue_type_t qtype) odp_pktio_to_u64(pktio)); inq_def = odp_queue_lookup(inq_name); if (inq_def == ODP_QUEUE_INVALID) - inq_def = odp_queue_create( - inq_name, - ODP_QUEUE_TYPE_PKTIN, - qtype == ODP_QUEUE_TYPE_PLAIN ? NULL : &qparam); + inq_def = odp_queue_create(inq_name, &qparam); CU_ASSERT_FATAL(inq_def != ODP_QUEUE_INVALID); diff --git a/test/validation/classification/odp_classification_tests.c b/test/validation/classification/odp_classification_tests.c index 0e39348..a194259 100644 --- a/test/validation/classification/odp_classification_tests.c +++ b/test/validation/classification/odp_classification_tests.c @@ -51,13 +51,13 @@ int classification_suite_init(void) } odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_PKTIN; qparam.sched.prio = ODP_SCHED_PRIO_DEFAULT; qparam.sched.sync = ODP_SCHED_SYNC_ATOMIC; qparam.sched.group = ODP_SCHED_GROUP_ALL; sprintf(queuename, "%s", "inq_loop"); - inq_def = odp_queue_create(queuename, - ODP_QUEUE_TYPE_PKTIN, &qparam); + inq_def = odp_queue_create(queuename, &qparam); odp_pktio_inq_setdef(pktio_loop, inq_def); for (i = 0; i < CLS_ENTRIES; i++) @@ -140,15 +140,14 @@ void configure_cls_pmr_chain(void) odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_SCHED; qparam.sched.prio = ODP_SCHED_PRIO_NORMAL; qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL; qparam.sched.group = ODP_SCHED_GROUP_ALL; qparam.sched.lock_count = ODP_CONFIG_MAX_ORDERED_LOCKS_PER_QUEUE; sprintf(queuename, "%s", "SrcQueue"); - queue_list[CLS_PMR_CHAIN_SRC] = odp_queue_create(queuename, - ODP_QUEUE_TYPE_SCHED, - &qparam); + queue_list[CLS_PMR_CHAIN_SRC] = odp_queue_create(queuename, &qparam); CU_ASSERT_FATAL(queue_list[CLS_PMR_CHAIN_SRC] != ODP_QUEUE_INVALID); @@ -166,14 +165,13 @@ void configure_cls_pmr_chain(void) odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_SCHED; qparam.sched.prio = ODP_SCHED_PRIO_NORMAL; qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL; qparam.sched.group = ODP_SCHED_GROUP_ALL; sprintf(queuename, "%s", "DstQueue"); - queue_list[CLS_PMR_CHAIN_DST] = odp_queue_create(queuename, - ODP_QUEUE_TYPE_SCHED, - &qparam); + queue_list[CLS_PMR_CHAIN_DST] = odp_queue_create(queuename, &qparam); CU_ASSERT_FATAL(queue_list[CLS_PMR_CHAIN_DST] != ODP_QUEUE_INVALID); sprintf(poolname, "%s", "DstPool"); @@ -279,12 +277,12 @@ void configure_pktio_default_cos(void) char poolname[ODP_POOL_NAME_LEN]; odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_SCHED; qparam.sched.prio = ODP_SCHED_PRIO_DEFAULT; qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL; qparam.sched.group = ODP_SCHED_GROUP_ALL; sprintf(queuename, "%s", "DefaultQueue"); - queue_list[CLS_DEFAULT] = odp_queue_create(queuename, - ODP_QUEUE_TYPE_SCHED, &qparam); + queue_list[CLS_DEFAULT] = odp_queue_create(queuename, &qparam); CU_ASSERT_FATAL(queue_list[CLS_DEFAULT] != ODP_QUEUE_INVALID); sprintf(poolname, "DefaultPool"); @@ -338,14 +336,13 @@ void configure_pktio_error_cos(void) char poolname[ODP_POOL_NAME_LEN]; odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_SCHED; qparam.sched.prio = ODP_SCHED_PRIO_LOWEST; qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL; qparam.sched.group = ODP_SCHED_GROUP_ALL; sprintf(queuename, "%s", "ErrorCos"); - queue_list[CLS_ERROR] = odp_queue_create(queuename, - ODP_QUEUE_TYPE_SCHED, - &qparam); + queue_list[CLS_ERROR] = odp_queue_create(queuename, &qparam); CU_ASSERT_FATAL(queue_list[CLS_ERROR] != ODP_QUEUE_INVALID); sprintf(poolname, "ErrorPool"); @@ -438,13 +435,13 @@ void configure_cos_with_l2_priority(void) qos_tbl[i] = 0; odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_SCHED; qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL; qparam.sched.group = ODP_SCHED_GROUP_ALL; for (i = 0; i < num_qos; i++) { qparam.sched.prio = ODP_SCHED_PRIO_LOWEST - i; sprintf(queuename, "%s_%d", "L2_Queue", i); - queue_tbl[i] = odp_queue_create(queuename, ODP_QUEUE_TYPE_SCHED, - &qparam); + queue_tbl[i] = odp_queue_create(queuename, &qparam); CU_ASSERT_FATAL(queue_tbl[i] != ODP_QUEUE_INVALID); queue_list[CLS_L2_QOS_0 + i] = queue_tbl[i]; @@ -523,14 +520,13 @@ void configure_pmr_cos(void) CU_ASSERT_FATAL(pmr_list[CLS_PMR] != ODP_PMR_INVAL); odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_SCHED; qparam.sched.prio = ODP_SCHED_PRIO_HIGHEST; qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL; qparam.sched.group = ODP_SCHED_GROUP_ALL; sprintf(queuename, "%s", "PMR_CoS"); - queue_list[CLS_PMR] = odp_queue_create(queuename, - ODP_QUEUE_TYPE_SCHED, - &qparam); + queue_list[CLS_PMR] = odp_queue_create(queuename, &qparam); CU_ASSERT_FATAL(queue_list[CLS_PMR] != ODP_QUEUE_INVALID); sprintf(poolname, "PMR_Pool"); @@ -605,14 +601,13 @@ void configure_pktio_pmr_match_set_cos(void) CU_ASSERT(retval > 0); odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_SCHED; qparam.sched.prio = ODP_SCHED_PRIO_HIGHEST; qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL; qparam.sched.group = ODP_SCHED_GROUP_ALL; sprintf(queuename, "%s", "cos_pmr_set_queue"); - queue_list[CLS_PMR_SET] = odp_queue_create(queuename, - ODP_QUEUE_TYPE_SCHED, - &qparam); + queue_list[CLS_PMR_SET] = odp_queue_create(queuename, &qparam); CU_ASSERT_FATAL(queue_list[CLS_PMR_SET] != ODP_QUEUE_INVALID); sprintf(poolname, "cos_pmr_set_pool"); diff --git a/test/validation/crypto/crypto.c b/test/validation/crypto/crypto.c index c8a84ce..b2d8f45 100644 --- a/test/validation/crypto/crypto.c +++ b/test/validation/crypto/crypto.c @@ -51,8 +51,7 @@ int crypto_init(void) fprintf(stderr, "Packet pool creation failed.\n"); return -1; } - out_queue = odp_queue_create("crypto-out", - ODP_QUEUE_TYPE_PLAIN, NULL); + out_queue = odp_queue_create("crypto-out", NULL); if (ODP_QUEUE_INVALID == out_queue) { fprintf(stderr, "Crypto outq creation failed.\n"); return -1; diff --git a/test/validation/pktio/pktio.c b/test/validation/pktio/pktio.c index 7a9cf0a..1d5d315 100644 --- a/test/validation/pktio/pktio.c +++ b/test/validation/pktio/pktio.c @@ -314,13 +314,14 @@ static odp_pktio_t create_pktio(int iface_idx, odp_pktio_input_mode_t imode, return pktio; } -static int create_inq(odp_pktio_t pktio, odp_queue_type_t qtype) +static int create_inq(odp_pktio_t pktio, odp_queue_type_t qtype ODP_UNUSED) { odp_queue_param_t qparam; odp_queue_t inq_def; char inq_name[ODP_QUEUE_NAME_LEN]; odp_queue_param_init(&qparam); + qparam.type = ODP_QUEUE_TYPE_PKTIN; qparam.sched.prio = ODP_SCHED_PRIO_DEFAULT; qparam.sched.sync = ODP_SCHED_SYNC_ATOMIC; qparam.sched.group = ODP_SCHED_GROUP_ALL; @@ -329,10 +330,7 @@ static int create_inq(odp_pktio_t pktio, odp_queue_type_t qtype) odp_pktio_to_u64(pktio)); inq_def = odp_queue_lookup(inq_name); if (inq_def == ODP_QUEUE_INVALID) - inq_def = odp_queue_create( - inq_name, - ODP_QUEUE_TYPE_PKTIN, - qtype == ODP_QUEUE_TYPE_PLAIN ? NULL : &qparam); + inq_def = odp_queue_create(inq_name, &qparam); CU_ASSERT(inq_def != ODP_QUEUE_INVALID); diff --git a/test/validation/queue/queue.c b/test/validation/queue/queue.c index 9205929..35bb7ce 100644 --- a/test/validation/queue/queue.c +++ b/test/validation/queue/queue.c @@ -54,15 +54,15 @@ void queue_test_sunnydays(void) odp_queue_param_t qparams; odp_queue_param_init(&qparams); + qparams.type = ODP_QUEUE_TYPE_SCHED; qparams.sched.prio = ODP_SCHED_PRIO_LOWEST; qparams.sched.sync = ODP_SCHED_SYNC_PARALLEL; qparams.sched.group = ODP_SCHED_GROUP_WORKER; - queue_creat_id = odp_queue_create("test_queue", - ODP_QUEUE_TYPE_PLAIN, &qparams); + queue_creat_id = odp_queue_create("test_queue", &qparams); CU_ASSERT(ODP_QUEUE_INVALID != queue_creat_id); - CU_ASSERT_EQUAL(ODP_QUEUE_TYPE_PLAIN, + CU_ASSERT_EQUAL(ODP_QUEUE_TYPE_SCHED, odp_queue_type(queue_creat_id)); queue_id = odp_queue_lookup("test_queue"); @@ -140,25 +140,26 @@ void queue_test_info(void) int ret; /* Create a polled queue and set context */ - q_poll = odp_queue_create(nq_poll, ODP_QUEUE_TYPE_PLAIN, NULL); + q_poll = odp_queue_create(nq_poll, NULL); CU_ASSERT(ODP_QUEUE_INVALID != q_poll); CU_ASSERT(odp_queue_context_set(q_poll, q_poll_ctx) == 0); /* Create a scheduled ordered queue with explicitly set params */ odp_queue_param_init(¶m); + param.type = ODP_QUEUE_TYPE_SCHED; param.sched.prio = ODP_SCHED_PRIO_NORMAL; param.sched.sync = ODP_SCHED_SYNC_ORDERED; param.sched.group = ODP_SCHED_GROUP_ALL; param.sched.lock_count = 1; param.context = q_order_ctx; - q_order = odp_queue_create(nq_order, ODP_QUEUE_TYPE_SCHED, ¶m); + q_order = odp_queue_create(nq_order, ¶m); CU_ASSERT(ODP_QUEUE_INVALID != q_order); /* Check info for the polled queue */ CU_ASSERT(odp_queue_info(q_poll, &info) == 0); CU_ASSERT(strcmp(nq_poll, info.name) == 0); - CU_ASSERT(info.type == ODP_QUEUE_TYPE_PLAIN); - CU_ASSERT(info.type == odp_queue_type(q_poll)); + CU_ASSERT(info.param.type == ODP_QUEUE_TYPE_PLAIN); + CU_ASSERT(info.param.type == odp_queue_type(q_poll)); ctx = info.param.context; /* 'char' context ptr */ CU_ASSERT(ctx == q_poll_ctx); CU_ASSERT(info.param.context == odp_queue_context(q_poll)); @@ -166,8 +167,8 @@ void queue_test_info(void) /* Check info for the scheduled ordered queue */ CU_ASSERT(odp_queue_info(q_order, &info) == 0); CU_ASSERT(strcmp(nq_order, info.name) == 0); - CU_ASSERT(info.type == ODP_QUEUE_TYPE_SCHED); - CU_ASSERT(info.type == odp_queue_type(q_order)); + CU_ASSERT(info.param.type == ODP_QUEUE_TYPE_SCHED); + CU_ASSERT(info.param.type == odp_queue_type(q_order)); ctx = info.param.context; /* 'char' context ptr */ CU_ASSERT(ctx == q_order_ctx); CU_ASSERT(info.param.context == odp_queue_context(q_order)); diff --git a/test/validation/scheduler/scheduler.c b/test/validation/scheduler/scheduler.c index cc19696..fce569b 100644 --- a/test/validation/scheduler/scheduler.c +++ b/test/validation/scheduler/scheduler.c @@ -129,7 +129,11 @@ void scheduler_test_wait_time(void) /* check ODP_SCHED_NO_WAIT */ odp_queue_param_init(&qp); - queue = odp_queue_create("dummy_queue", ODP_QUEUE_TYPE_SCHED, &qp); + qp.type = ODP_QUEUE_TYPE_SCHED; + qp.sched.sync = ODP_SCHED_SYNC_PARALLEL; + qp.sched.prio = ODP_SCHED_PRIO_NORMAL; + qp.sched.group = ODP_SCHED_GROUP_ALL; + queue = odp_queue_create("dummy_queue", &qp); CU_ASSERT_FATAL(queue != ODP_QUEUE_INVALID); wait_time = odp_schedule_wait_time(ODP_TIME_SEC_IN_NS); @@ -200,11 +204,12 @@ void scheduler_test_queue_destroy(void) CU_ASSERT_FATAL(p != ODP_POOL_INVALID); for (i = 0; i < 3; i++) { + qp.type = ODP_QUEUE_TYPE_SCHED; qp.sched.prio = ODP_SCHED_PRIO_DEFAULT; qp.sched.sync = sync[i]; + qp.sched.group = ODP_SCHED_GROUP_ALL; - queue = odp_queue_create("sched_destroy_queue", - ODP_QUEUE_TYPE_SCHED, &qp); + queue = odp_queue_create("sched_destroy_queue", &qp); CU_ASSERT_FATAL(queue != ODP_QUEUE_INVALID); @@ -337,13 +342,13 @@ void scheduler_test_groups(void) CU_ASSERT_FATAL(p != ODP_POOL_INVALID); for (i = 0; i < 3; i++) { + qp.type = ODP_QUEUE_TYPE_SCHED; qp.sched.prio = ODP_SCHED_PRIO_DEFAULT; qp.sched.sync = sync[i]; qp.sched.group = mygrp1; /* Create and populate a group in group 1 */ - queue_grp1 = odp_queue_create("sched_group_test_queue_1", - ODP_QUEUE_TYPE_SCHED, &qp); + queue_grp1 = odp_queue_create("sched_group_test_queue_1", &qp); CU_ASSERT_FATAL(queue_grp1 != ODP_QUEUE_INVALID); CU_ASSERT_FATAL(odp_queue_sched_group(queue_grp1) == mygrp1); @@ -360,8 +365,7 @@ void scheduler_test_groups(void) /* Now create and populate a queue in group 2 */ qp.sched.group = mygrp2; - queue_grp2 = odp_queue_create("sched_group_test_queue_2", - ODP_QUEUE_TYPE_SCHED, &qp); + queue_grp2 = odp_queue_create("sched_group_test_queue_2", &qp); CU_ASSERT_FATAL(queue_grp2 != ODP_QUEUE_INVALID); CU_ASSERT_FATAL(odp_queue_sched_group(queue_grp2) == mygrp2); @@ -562,7 +566,9 @@ static void chaos_run(unsigned int qtype) pool = odp_pool_create("sched_chaos_pool", ¶ms); CU_ASSERT_FATAL(pool != ODP_POOL_INVALID); - qp.sched.prio = ODP_SCHED_PRIO_DEFAULT; + qp.type = ODP_QUEUE_TYPE_SCHED; + qp.sched.prio = ODP_SCHED_PRIO_DEFAULT; + qp.sched.group = ODP_SCHED_GROUP_ALL; for (i = 0; i < CHAOS_NUM_QUEUES; i++) { uint32_t ndx = qtype == num_sync ? i % num_sync : qtype; @@ -574,9 +580,7 @@ static void chaos_run(unsigned int qtype) qtypes[ndx]); globals->chaos_q[i].handle = - odp_queue_create(globals->chaos_q[i].name, - ODP_QUEUE_TYPE_SCHED, - &qp); + odp_queue_create(globals->chaos_q[i].name, &qp); CU_ASSERT_FATAL(globals->chaos_q[i].handle != ODP_QUEUE_INVALID); rc = odp_queue_context_set(globals->chaos_q[i].handle, @@ -1318,6 +1322,7 @@ static int create_queues(void) for (i = 0; i < prios; i++) { odp_queue_param_t p; odp_queue_param_init(&p); + p.type = ODP_QUEUE_TYPE_SCHED; p.sched.prio = i; for (j = 0; j < QUEUES_PER_PRIO; j++) { @@ -1327,7 +1332,7 @@ static int create_queues(void) snprintf(name, sizeof(name), "sched_%d_%d_n", i, j); p.sched.sync = ODP_SCHED_SYNC_PARALLEL; - q = odp_queue_create(name, ODP_QUEUE_TYPE_SCHED, &p); + q = odp_queue_create(name, &p); if (q == ODP_QUEUE_INVALID) { printf("Schedule queue create failed.\n"); @@ -1336,7 +1341,7 @@ static int create_queues(void) snprintf(name, sizeof(name), "sched_%d_%d_a", i, j); p.sched.sync = ODP_SCHED_SYNC_ATOMIC; - q = odp_queue_create(name, ODP_QUEUE_TYPE_SCHED, &p); + q = odp_queue_create(name, &p); if (q == ODP_QUEUE_INVALID) { printf("Schedule queue create failed.\n"); @@ -1344,8 +1349,7 @@ static int create_queues(void) } snprintf(name, sizeof(name), "poll_%d_%d_o", i, j); - pq = odp_queue_create(name, - ODP_QUEUE_TYPE_PLAIN, NULL); + pq = odp_queue_create(name, NULL); if (pq == ODP_QUEUE_INVALID) { printf("Poll queue create failed.\n"); return -1; @@ -1373,7 +1377,7 @@ static int create_queues(void) p.sched.sync = ODP_SCHED_SYNC_ORDERED; p.sched.lock_count = ODP_CONFIG_MAX_ORDERED_LOCKS_PER_QUEUE; - q = odp_queue_create(name, ODP_QUEUE_TYPE_SCHED, &p); + q = odp_queue_create(name, &p); if (q == ODP_QUEUE_INVALID) { printf("Schedule queue create failed.\n"); diff --git a/test/validation/timer/timer.c b/test/validation/timer/timer.c index c587368..079114f 100644 --- a/test/validation/timer/timer.c +++ b/test/validation/timer/timer.c @@ -161,7 +161,7 @@ void timer_test_odp_timer_cancel(void) /* Start all created timer pools */ odp_timer_pool_start(); - queue = odp_queue_create("timer_queue", ODP_QUEUE_TYPE_PLAIN, NULL); + queue = odp_queue_create("timer_queue", NULL); if (queue == ODP_QUEUE_INVALID) CU_FAIL_FATAL("Queue create failed"); @@ -278,9 +278,7 @@ static void *worker_entrypoint(void *arg TEST_UNUSED) unsigned seed = thr; int rc; - odp_queue_t queue = odp_queue_create("timer_queue", - ODP_QUEUE_TYPE_PLAIN, - NULL); + odp_queue_t queue = odp_queue_create("timer_queue", NULL); if (queue == ODP_QUEUE_INVALID) CU_FAIL_FATAL("Queue create failed"); -- 2.6.3 _______________________________________________ lng-odp mailing list [email protected] https://lists.linaro.org/mailman/listinfo/lng-odp
