[dpdk-dev] [PATCH v3 7/8] app/bbdev: add parameter to take input in network order

Chautru, Nicolas nicolas.chautru at intel.com
Wed Apr 14 03:00:13 CEST 2021


If you want this, should this be a new BBDEV capability option?
If not how can you enforce compatibility if you just bypass this in the test vector parsing?

> -----Original Message-----
> From: Hemant Agrawal <hemant.agrawal at nxp.com>
> Sent: Monday, April 12, 2021 10:17 PM
> To: dev at dpdk.org; gakhil at marvell.com; Chautru, Nicolas
> <nicolas.chautru at intel.com>
> Cc: david.marchand at redhat.com; Nipun Gupta <nipun.gupta at nxp.com>
> Subject: [PATCH v3 7/8] app/bbdev: add parameter to take input in network
> order
> 
> From: Nipun Gupta <nipun.gupta at nxp.com>
> 
> Test bbdev application is reading the input and output from the test vector
> files in the same endianness which is of the system.
> This patch adds an option to provide data in the network order i.e. big
> endian format
> 
> Signed-off-by: Nipun Gupta <nipun.gupta at nxp.com>
> ---
>  app/test-bbdev/test_bbdev_vector.c | 18 ++++++++++++++++--  app/test-
> bbdev/test_bbdev_vector.h |  2 ++
>  2 files changed, 18 insertions(+), 2 deletions(-)
> 
> diff --git a/app/test-bbdev/test_bbdev_vector.c b/app/test-
> bbdev/test_bbdev_vector.c
> index 50d1da00f7..fe04bd6b95 100644
> --- a/app/test-bbdev/test_bbdev_vector.c
> +++ b/app/test-bbdev/test_bbdev_vector.c
> @@ -53,7 +53,8 @@ starts_with(const char *str, const char *pre)
> 
>  /* tokenization test values separated by a comma */  static int -
> parse_values(char *tokens, uint32_t **data, uint32_t *data_length)
> +parse_values(char *tokens, uint32_t **data, uint32_t *data_length,
> +	     int network_order)
>  {
>  	uint32_t n_tokens = 0;
>  	uint32_t data_size = 32;
> @@ -94,6 +95,14 @@ parse_values(char *tokens, uint32_t **data, uint32_t
> *data_length)
>  		}
> 
>  		*data_length = *data_length + (strlen(tok) - strlen("0x"))/2;
> +		if (network_order) {
> +			if ((strlen(tok) - strlen("0x"))/2 == 4)
> +				values[n_tokens] =
> +					rte_cpu_to_be_32(values[n_tokens]);
> +			else if ((strlen(tok) - strlen("0x"))/2 == 2)
> +				values[n_tokens] =
> +					rte_cpu_to_be_16(values[n_tokens]);
> +		}
> 
>  		tok = strtok(NULL, VALUE_DELIMITER);
>  		if (tok == NULL)
> @@ -416,7 +425,8 @@ parse_data_entry(const char *key_token, char
> *token,
>  	/* Clear new op data struct */
>  	memset(op_data + *nb_ops, 0, sizeof(struct op_data_buf));
> 
> -	ret = parse_values(token, &data, &data_length);
> +	ret = parse_values(token, &data, &data_length,
> +			vector->network_order);
>  	if (!ret) {
>  		op_data[*nb_ops].addr = data;
>  		op_data[*nb_ops].length = data_length; @@ -728,6 +738,10
> @@ parse_ldpc_encoder_params(const char *key_token, char *token,
>  		ret = parse_expected_status(token, &status, vector-
> >op_type);
>  		if (!ret)
>  			vector->expected_status = status;
> +	} else if (!strcmp(key_token, "network_order")) {
> +		vector->mask |= TEST_BBDEV_VF_NETWORK_ORDER;
> +		vector->network_order = (uint8_t) strtoul(token, &err, 0);
> +		ret = ((err == NULL) || (*err != '\0')) ? -1 : 0;
>  	} else {
>  		printf("Not valid ldpc enc key: '%s'\n", key_token);
>  		return -1;
> diff --git a/app/test-bbdev/test_bbdev_vector.h b/app/test-
> bbdev/test_bbdev_vector.h
> index 4e5dbf5d50..aa53f0bb0d 100644
> --- a/app/test-bbdev/test_bbdev_vector.h
> +++ b/app/test-bbdev/test_bbdev_vector.h
> @@ -35,6 +35,7 @@ enum {
>  	TEST_BBDEV_VF_CODE_BLOCK_MODE = (1ULL << 23),
>  	TEST_BBDEV_VF_OP_FLAGS = (1ULL << 24),
>  	TEST_BBDEV_VF_EXPECTED_STATUS = (1ULL << 25),
> +	TEST_BBDEV_VF_NETWORK_ORDER = (1ULL << 26),
>  };
> 
>  enum op_data_type {
> @@ -60,6 +61,7 @@ struct test_bbdev_vector {
>  	enum rte_bbdev_op_type op_type;
>  	int expected_status;
>  	int mask;
> +	int network_order;
>  	union {
>  		struct rte_bbdev_op_turbo_dec turbo_dec;
>  		struct rte_bbdev_op_turbo_enc turbo_enc;
> --
> 2.17.1



More information about the dev mailing list