[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