Updates scheduled queue mode to use the new multi-queue pktio
API.

Signed-off-by: Petri Savolainen <[email protected]>
---
 test/performance/odp_l2fwd.c | 52 ++++++++++++++++++++++++++------------------
 1 file changed, 31 insertions(+), 21 deletions(-)

diff --git a/test/performance/odp_l2fwd.c b/test/performance/odp_l2fwd.c
index 67a23ed..06eb29f 100644
--- a/test/performance/odp_l2fwd.c
+++ b/test/performance/odp_l2fwd.c
@@ -384,11 +384,7 @@ static void *pktio_direct_recv_thread(void *arg)
 static int create_pktio(const char *dev, int index, int num_rx, int num_tx,
                        odp_pool_t pool)
 {
-       char inq_name[ODP_QUEUE_NAME_LEN];
-       odp_queue_param_t qparam;
-       odp_queue_t inq_def;
        odp_pktio_t pktio;
-       int ret;
        odp_pktio_param_t pktio_param;
        odp_schedule_sync_t  sync_mode;
        odp_pktio_capability_t capa;
@@ -404,6 +400,7 @@ static int create_pktio(const char *dev, int index, int 
num_rx, int num_tx,
                pktio_param.out_mode = ODP_PKTOUT_MODE_SEND;
        } else {
                pktio_param.in_mode = ODP_PKTIN_MODE_SCHED;
+               pktio_param.out_mode = ODP_PKTOUT_MODE_SEND;
        }
 
        pktio = odp_pktio_open(dev, pool, &pktio_param);
@@ -420,6 +417,9 @@ static int create_pktio(const char *dev, int index, int 
num_rx, int num_tx,
                return -1;
        }
 
+       odp_pktio_input_queue_param_init(&in_queue_param);
+       odp_pktio_output_queue_param_init(&out_queue_param);
+
        if (gbl_args->appl.mode == DIRECT_RECV) {
                if (num_rx > (int)capa.max_input_queues) {
                        printf("Sharing %i input queues between %i workers\n",
@@ -435,9 +435,6 @@ static int create_pktio(const char *dev, int index, int 
num_rx, int num_tx,
                        single_tx = 0;
                }
 
-               odp_pktio_input_queue_param_init(&in_queue_param);
-               odp_pktio_output_queue_param_init(&out_queue_param);
-
                in_queue_param.single_user = single_rx;
                in_queue_param.hash_enable = 1;
                in_queue_param.hash_proto.proto.ipv4_udp = 1;
@@ -487,27 +484,40 @@ static int create_pktio(const char *dev, int index, int 
num_rx, int num_tx,
        else
                sync_mode = ODP_SCHED_SYNC_NONE;
 
-       odp_queue_param_init(&qparam);
-       qparam.sched.prio  = ODP_SCHED_PRIO_DEFAULT;
-       qparam.sched.sync  = sync_mode;
-       qparam.sched.group = ODP_SCHED_GROUP_ALL;
-       snprintf(inq_name, sizeof(inq_name), "%" PRIu64 "-pktio_inq_def",
-                odp_pktio_to_u64(pktio));
-       inq_name[ODP_QUEUE_NAME_LEN - 1] = '\0';
+       /* Using scheduler for input. Single_user param not relevant. */
+       in_queue_param.hash_enable = 1;
+       in_queue_param.hash_proto.proto.ipv4_udp = 1;
+       in_queue_param.num_queues  = num_rx;
+       in_queue_param.queue_param.sched.prio  = ODP_SCHED_PRIO_DEFAULT;
+       in_queue_param.queue_param.sched.sync  = sync_mode;
+       in_queue_param.queue_param.sched.group = ODP_SCHED_GROUP_ALL;
 
-       inq_def = odp_queue_create(inq_name, ODP_QUEUE_TYPE_PKTIN, &qparam);
-       if (inq_def == ODP_QUEUE_INVALID) {
-               LOG_ERR("Error: pktio queue creation failed\n");
+       if (odp_pktio_input_queues_config(pktio, &in_queue_param)) {
+               LOG_ERR("Error: input queue config failed %s\n", dev);
                return -1;
        }
 
-       ret = odp_pktio_inq_setdef(pktio, inq_def);
-       if (ret != 0) {
-               LOG_ERR("Error: default input-Q setup\n");
+       out_queue_param.single_user = 0;
+       out_queue_param.num_queues  = num_tx;
+
+       if (odp_pktio_output_queues_config(pktio, &out_queue_param)) {
+               LOG_ERR("Error: output queue config failed %s\n", dev);
                return -1;
        }
 
-       gbl_args->pktios[index].pktio = pktio;
+       if (odp_pktio_pktout_queues(pktio,
+                                   gbl_args->pktios[index].pktout,
+                                   num_tx) != num_tx) {
+               LOG_ERR("Error: pktout queue query failed %s\n", dev);
+               return -1;
+       }
+
+       printf("created %i input and %i output queues on (%s)\n",
+              num_rx, num_tx, dev);
+
+       gbl_args->pktios[index].num_rx_queue = num_rx;
+       gbl_args->pktios[index].num_tx_queue = num_tx;
+       gbl_args->pktios[index].pktio        = pktio;
 
        return 0;
 }
-- 
2.6.3

_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to