]> git.droids-corp.org - dpdk.git/commitdiff
crypto/scheduler: improve slave configuration
authorFan Zhang <roy.fan.zhang@intel.com>
Fri, 17 Feb 2017 12:01:01 +0000 (12:01 +0000)
committerPablo de Lara <pablo.de.lara.guarch@intel.com>
Wed, 5 Apr 2017 22:17:44 +0000 (00:17 +0200)
Since the new device configuration API is updated, we can make use of
this feature to the crypto scheduler PMD to configure its slaves
automatically with the same configurations it got. As originally the
slaves have to be manually configured one by one, this patch should
help reducing the coding complexity.

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Declan Doherty <declan.doherty@intel.com>
drivers/crypto/scheduler/scheduler_pmd_ops.c
test/test/test_cryptodev.c

index d72266de9dee38fbd2467d3711a540cd9cf902b1..968b4fb96288253e0cc20ef765d7bc33e758992e 100644 (file)
@@ -52,11 +52,8 @@ scheduler_pmd_config(struct rte_cryptodev *dev,
 
        for (i = 0; i < sched_ctx->nb_slaves; i++) {
                uint8_t slave_dev_id = sched_ctx->slaves[i].dev_id;
-               struct rte_cryptodev *slave_dev =
-                               rte_cryptodev_pmd_get_dev(slave_dev_id);
 
-               ret = (*slave_dev->dev_ops->dev_configure)(slave_dev,
-                               config);
+               ret = rte_cryptodev_configure(slave_dev_id, config);
                if (ret < 0)
                        break;
        }
@@ -342,11 +339,13 @@ scheduler_pmd_qp_release(struct rte_cryptodev *dev, uint16_t qp_id)
 /** Setup a queue pair */
 static int
 scheduler_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
-       __rte_unused const struct rte_cryptodev_qp_conf *qp_conf, int socket_id)
+       const struct rte_cryptodev_qp_conf *qp_conf, int socket_id)
 {
        struct scheduler_ctx *sched_ctx = dev->data->dev_private;
        struct scheduler_qp_ctx *qp_ctx;
        char name[RTE_CRYPTODEV_NAME_MAX_LEN];
+       uint32_t i;
+       int ret;
 
        if (snprintf(name, RTE_CRYPTODEV_NAME_MAX_LEN,
                        "CRYTO_SCHE PMD %u QP %u",
@@ -359,6 +358,15 @@ scheduler_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
        if (dev->data->queue_pairs[qp_id] != NULL)
                scheduler_pmd_qp_release(dev, qp_id);
 
+       for (i = 0; i < sched_ctx->nb_slaves; i++) {
+               uint8_t slave_id = sched_ctx->slaves[i].dev_id;
+
+               ret = rte_cryptodev_queue_pair_setup(slave_id, qp_id,
+                               qp_conf, socket_id);
+               if (ret < 0)
+                       return ret;
+       }
+
        /* Allocate the queue pair data structure. */
        qp_ctx = rte_zmalloc_socket(name, sizeof(*qp_ctx), RTE_CACHE_LINE_SIZE,
                        socket_id);
index 357a92eafa1f3589185e3258d0763613ecc21923..6fe5362f2a12455e457da68e0e7b009585ae341b 100644 (file)
@@ -7382,17 +7382,8 @@ test_scheduler_attach_slave_op(void)
 {
        struct crypto_testsuite_params *ts_params = &testsuite_params;
        uint8_t sched_id = ts_params->valid_devs[0];
-       uint32_t nb_devs, qp_id, i, nb_devs_attached = 0;
+       uint32_t nb_devs, i, nb_devs_attached = 0;
        int ret;
-       struct rte_cryptodev_config config = {
-                       .nb_queue_pairs = 8,
-                       .socket_id = SOCKET_ID_ANY,
-                       .session_mp = {
-                               .nb_objs = 2048,
-                               .cache_size = 256
-                       }
-       };
-       struct rte_cryptodev_qp_conf qp_conf = {2048};
 
        /* create 2 AESNI_MB if necessary */
        nb_devs = rte_cryptodev_count_devtype(
@@ -7418,19 +7409,6 @@ test_scheduler_attach_slave_op(void)
                if (info.dev_type != RTE_CRYPTODEV_AESNI_MB_PMD)
                        continue;
 
-               ret = rte_cryptodev_configure(i, &config);
-               TEST_ASSERT(ret == 0,
-                       "Failed to configure device %u of pmd : %s", i,
-                       RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD));
-
-               for (qp_id = 0; qp_id < info.max_nb_queue_pairs; qp_id++) {
-                       TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
-                               i, qp_id, &qp_conf,
-                               rte_cryptodev_socket_id(i)),
-                               "Failed to setup queue pair %u on "
-                               "cryptodev %u", qp_id, i);
-               }
-
                ret = rte_cryptodev_scheduler_slave_attach(sched_id,
                                (uint8_t)i);