There is no need to have this parsing inlined in the header.
It brings kvargs dependency to every crypto drivers.
The functions are moved into rte_cryptodev.c.

Signed-off-by: Thomas Monjalon <thomas.monjalon at 6wind.com>
---
v2:
- remove kvargs dep in null PMD
- add function in .map file
---
 drivers/crypto/null/Makefile                   |  1 -
 lib/librte_cryptodev/rte_cryptodev.c           | 91 ++++++++++++++++++++++++
 lib/librte_cryptodev/rte_cryptodev.h           | 95 ++------------------------
 lib/librte_cryptodev/rte_cryptodev_version.map |  7 ++
 4 files changed, 102 insertions(+), 92 deletions(-)

diff --git a/drivers/crypto/null/Makefile b/drivers/crypto/null/Makefile
index 573894f..35db8b1 100644
--- a/drivers/crypto/null/Makefile
+++ b/drivers/crypto/null/Makefile
@@ -56,6 +56,5 @@ DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO) += lib/librte_eal
 DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO) += lib/librte_mbuf
 DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO) += lib/librte_cryptodev
 DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO) += lib/librte_ring
-DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO) += lib/librte_kvargs

 include $(RTE_SDK)/mk/rte.lib.mk
diff --git a/lib/librte_cryptodev/rte_cryptodev.c 
b/lib/librte_cryptodev/rte_cryptodev.c
index 960e2d5..20e5beb 100644
--- a/lib/librte_cryptodev/rte_cryptodev.c
+++ b/lib/librte_cryptodev/rte_cryptodev.c
@@ -102,6 +102,97 @@ struct rte_cryptodev_callback {
        uint32_t active;                        /**< Callback is executing */
 };

+#define RTE_CRYPTODEV_VDEV_MAX_NB_QP_ARG               ("max_nb_queue_pairs")
+#define RTE_CRYPTODEV_VDEV_MAX_NB_SESS_ARG             ("max_nb_sessions")
+#define RTE_CRYPTODEV_VDEV_SOCKET_ID                   ("socket_id")
+
+static const char *cryptodev_vdev_valid_params[] = {
+       RTE_CRYPTODEV_VDEV_MAX_NB_QP_ARG,
+       RTE_CRYPTODEV_VDEV_MAX_NB_SESS_ARG,
+       RTE_CRYPTODEV_VDEV_SOCKET_ID
+};
+
+static uint8_t
+number_of_sockets(void)
+{
+       int sockets = 0;
+       int i;
+       const struct rte_memseg *ms = rte_eal_get_physmem_layout();
+
+       for (i = 0; ((i < RTE_MAX_MEMSEG) && (ms[i].addr != NULL)); i++) {
+               if (sockets < ms[i].socket_id)
+                       sockets = ms[i].socket_id;
+       }
+
+       /* Number of sockets = maximum socket_id + 1 */
+       return ++sockets;
+}
+
+/** Parse integer from integer argument */
+static int
+parse_integer_arg(const char *key __rte_unused,
+               const char *value, void *extra_args)
+{
+       int *i = (int *) extra_args;
+
+       *i = atoi(value);
+       if (*i < 0) {
+               CDEV_LOG_ERR("Argument has to be positive.");
+               return -1;
+       }
+
+       return 0;
+}
+
+int
+rte_cryptodev_parse_vdev_init_params(struct rte_crypto_vdev_init_params 
*params,
+               const char *input_args)
+{
+       struct rte_kvargs *kvlist;
+       int ret;
+
+       if (params == NULL)
+               return -EINVAL;
+
+       if (input_args) {
+               kvlist = rte_kvargs_parse(input_args,
+                               cryptodev_vdev_valid_params);
+               if (kvlist == NULL)
+                       return -1;
+
+               ret = rte_kvargs_process(kvlist,
+                                       RTE_CRYPTODEV_VDEV_MAX_NB_QP_ARG,
+                                       &parse_integer_arg,
+                                       &params->max_nb_queue_pairs);
+               if (ret < 0)
+                       goto free_kvlist;
+
+               ret = rte_kvargs_process(kvlist,
+                                       RTE_CRYPTODEV_VDEV_MAX_NB_SESS_ARG,
+                                       &parse_integer_arg,
+                                       &params->max_nb_sessions);
+               if (ret < 0)
+                       goto free_kvlist;
+
+               ret = rte_kvargs_process(kvlist, RTE_CRYPTODEV_VDEV_SOCKET_ID,
+                                       &parse_integer_arg,
+                                       &params->socket_id);
+               if (ret < 0)
+                       goto free_kvlist;
+
+               if (params->socket_id >= number_of_sockets()) {
+                       CDEV_LOG_ERR("Invalid socket id specified to create "
+                               "the virtual crypto device on");
+                       goto free_kvlist;
+               }
+       }
+
+       return 0;
+
+free_kvlist:
+       rte_kvargs_free(kvlist);
+       return ret;
+}

 const char *
 rte_cryptodev_get_feature_name(uint64_t flag)
diff --git a/lib/librte_cryptodev/rte_cryptodev.h 
b/lib/librte_cryptodev/rte_cryptodev.h
index 27cf8ef..7768f0a 100644
--- a/lib/librte_cryptodev/rte_cryptodev.h
+++ b/lib/librte_cryptodev/rte_cryptodev.h
@@ -300,48 +300,6 @@ struct rte_crypto_vdev_init_params {
        uint8_t socket_id;
 };

-#define RTE_CRYPTODEV_VDEV_MAX_NB_QP_ARG               ("max_nb_queue_pairs")
-#define RTE_CRYPTODEV_VDEV_MAX_NB_SESS_ARG             ("max_nb_sessions")
-#define RTE_CRYPTODEV_VDEV_SOCKET_ID                   ("socket_id")
-
-static const char *cryptodev_vdev_valid_params[] = {
-       RTE_CRYPTODEV_VDEV_MAX_NB_QP_ARG,
-       RTE_CRYPTODEV_VDEV_MAX_NB_SESS_ARG,
-       RTE_CRYPTODEV_VDEV_SOCKET_ID
-};
-
-static inline uint8_t
-number_of_sockets(void)
-{
-       int sockets = 0;
-       int i;
-       const struct rte_memseg *ms = rte_eal_get_physmem_layout();
-
-       for (i = 0; ((i < RTE_MAX_MEMSEG) && (ms[i].addr != NULL)); i++) {
-               if (sockets < ms[i].socket_id)
-                       sockets = ms[i].socket_id;
-       }
-
-       /* Number of sockets = maximum socket_id + 1 */
-       return ++sockets;
-}
-
-/** Parse integer from integer argument */
-static inline int
-__rte_cryptodev_parse_integer_arg(const char *key __rte_unused,
-               const char *value, void *extra_args)
-{
-       int *i = (int *) extra_args;
-
-       *i = atoi(value);
-       if (*i < 0) {
-               CDEV_LOG_ERR("Argument has to be positive.");
-               return -1;
-       }
-
-       return 0;
-}
-
 /**
  * Parse virtual device initialisation parameters input arguments
  * @internal
@@ -353,55 +311,10 @@ __rte_cryptodev_parse_integer_arg(const char *key 
__rte_unused,
  * 0 on successful parse
  * <0 on failure to parse
  */
-static inline int
-rte_cryptodev_parse_vdev_init_params(struct rte_crypto_vdev_init_params 
*params,
-               const char *input_args)
-{
-       struct rte_kvargs *kvlist;
-       int ret;
-
-       if (params == NULL)
-               return -EINVAL;
-
-       if (input_args) {
-               kvlist = rte_kvargs_parse(input_args,
-                               cryptodev_vdev_valid_params);
-               if (kvlist == NULL)
-                       return -1;
-
-               ret = rte_kvargs_process(kvlist,
-                                       RTE_CRYPTODEV_VDEV_MAX_NB_QP_ARG,
-                                       &__rte_cryptodev_parse_integer_arg,
-                                       &params->max_nb_queue_pairs);
-               if (ret < 0)
-                       goto free_kvlist;
-
-               ret = rte_kvargs_process(kvlist,
-                                       RTE_CRYPTODEV_VDEV_MAX_NB_SESS_ARG,
-                                       &__rte_cryptodev_parse_integer_arg,
-                                       &params->max_nb_sessions);
-               if (ret < 0)
-                       goto free_kvlist;
-
-               ret = rte_kvargs_process(kvlist, RTE_CRYPTODEV_VDEV_SOCKET_ID,
-                                       &__rte_cryptodev_parse_integer_arg,
-                                       &params->socket_id);
-               if (ret < 0)
-                       goto free_kvlist;
-
-               if (params->socket_id >= number_of_sockets()) {
-                       CDEV_LOG_ERR("Invalid socket id specified to create "
-                               "the virtual crypto device on");
-                       goto free_kvlist;
-               }
-       }
-
-       return 0;
-
-free_kvlist:
-       rte_kvargs_free(kvlist);
-       return ret;
-}
+int
+rte_cryptodev_parse_vdev_init_params(
+               struct rte_crypto_vdev_init_params *params,
+               const char *input_args);

 /**
  * Create a virtual crypto device
diff --git a/lib/librte_cryptodev/rte_cryptodev_version.map 
b/lib/librte_cryptodev/rte_cryptodev_version.map
index 41004e1..a08fd20 100644
--- a/lib/librte_cryptodev/rte_cryptodev_version.map
+++ b/lib/librte_cryptodev/rte_cryptodev_version.map
@@ -32,3 +32,10 @@ DPDK_16.04 {

        local: *;
 };
+
+DPDK_16.07 {
+       global:
+
+       rte_cryptodev_parse_vdev_init_params;
+
+} DPDK_16.04;
-- 
2.7.0

Reply via email to