Branch data Line data Source code
1 : : /* SPDX-License-Identifier: BSD-3-Clause 2 : : * Copyright(C) 2021 Marvell. 3 : : */ 4 : : 5 : : #include <rte_devargs.h> 6 : : 7 : : #include "cnxk_cryptodev.h" 8 : : 9 : : #define CNXK_MAX_QPS_LIMIT "max_qps_limit" 10 : : #define CNXK_MAX_QPS_LIMIT_MIN 1 11 : : #define CNXK_MAX_QPS_LIMIT_MAX (ROC_CPT_MAX_LFS - 1) 12 : : 13 : : static int 14 : 0 : parse_max_qps_limit(const char *key, const char *value, void *extra_args) 15 : : { 16 : : RTE_SET_USED(key); 17 : : uint32_t val; 18 : : 19 : 0 : val = atoi(value); 20 : : 21 [ # # ]: 0 : if (val < CNXK_MAX_QPS_LIMIT_MIN || val > CNXK_MAX_QPS_LIMIT_MAX) 22 : : return -EINVAL; 23 : : 24 : 0 : *(uint16_t *)extra_args = val; 25 : : 26 : 0 : return 0; 27 : : } 28 : : 29 : : int 30 : 0 : cnxk_cpt_parse_devargs(struct rte_devargs *devargs, struct cnxk_cpt_vf *vf) 31 : : { 32 : 0 : uint16_t max_qps_limit = CNXK_MAX_QPS_LIMIT_MAX; 33 : : struct rte_kvargs *kvlist; 34 : : int rc; 35 : : 36 [ # # ]: 0 : if (devargs == NULL) 37 : 0 : goto null_devargs; 38 : : 39 : 0 : kvlist = rte_kvargs_parse(devargs->args, NULL); 40 [ # # ]: 0 : if (kvlist == NULL) 41 : 0 : goto exit; 42 : : 43 : 0 : rc = rte_kvargs_process(kvlist, CNXK_MAX_QPS_LIMIT, 44 : : &parse_max_qps_limit, &max_qps_limit); 45 [ # # ]: 0 : if (rc < 0) { 46 : 0 : plt_err("max_qps_limit should in the range <%d-%d>", 47 : : CNXK_MAX_QPS_LIMIT_MIN, CNXK_MAX_QPS_LIMIT_MAX); 48 : 0 : rte_kvargs_free(kvlist); 49 : 0 : goto exit; 50 : : } 51 : 0 : rte_kvargs_free(kvlist); 52 : : 53 : 0 : null_devargs: 54 : 0 : vf->max_qps_limit = max_qps_limit; 55 : 0 : return 0; 56 : : 57 : : exit: 58 : : return -EINVAL; 59 : : } 60 : : 61 : : RTE_PMD_REGISTER_PARAM_STRING(crypto_cnxk, CNXK_MAX_QPS_LIMIT "=<1-63>");