[v4,1/7] bbdev: allow operation type enum for growth
Checks
Commit Message
Updating the enum for rte_bbdev_op_type
to allow to keep ABI compatible for enum insertion
while adding padded maximum value for array need.
Removing RTE_BBDEV_OP_TYPE_COUNT and instead exposing
RTE_BBDEV_OP_TYPE_PADDED_MAX.
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
---
app/test-bbdev/test_bbdev.c | 2 +-
app/test-bbdev/test_bbdev_perf.c | 4 ++--
examples/bbdev_app/main.c | 2 +-
lib/bbdev/rte_bbdev.c | 9 +++++----
lib/bbdev/rte_bbdev_op.h | 2 +-
5 files changed, 10 insertions(+), 9 deletions(-)
Comments
On 7/5/22 5:23 PM, Nicolas Chautru wrote:
> Updating the enum for rte_bbdev_op_type
> to allow to keep ABI compatible for enum insertion
> while adding padded maximum value for array need.
> Removing RTE_BBDEV_OP_TYPE_COUNT and instead exposing
> RTE_BBDEV_OP_TYPE_PADDED_MAX.
>
> Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
> ---
> app/test-bbdev/test_bbdev.c | 2 +-
> app/test-bbdev/test_bbdev_perf.c | 4 ++--
> examples/bbdev_app/main.c | 2 +-
> lib/bbdev/rte_bbdev.c | 9 +++++----
> lib/bbdev/rte_bbdev_op.h | 2 +-
> 5 files changed, 10 insertions(+), 9 deletions(-)
>
> diff --git a/app/test-bbdev/test_bbdev.c b/app/test-bbdev/test_bbdev.c
> index ac06d73..1063f6e 100644
> --- a/app/test-bbdev/test_bbdev.c
> +++ b/app/test-bbdev/test_bbdev.c
> @@ -521,7 +521,7 @@ struct bbdev_testsuite_params {
> rte_mempool_free(mp);
>
> TEST_ASSERT((mp = rte_bbdev_op_pool_create("Test_INV",
> - RTE_BBDEV_OP_TYPE_COUNT, size, cache_size, 0)) == NULL,
> + RTE_BBDEV_OP_TYPE_PADDED_MAX, size, cache_size, 0)) == NULL,
> "Failed test for rte_bbdev_op_pool_create: "
> "returned value is not NULL for invalid type");
>
> diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
> index fad3b1e..1abda2d 100644
> --- a/app/test-bbdev/test_bbdev_perf.c
> +++ b/app/test-bbdev/test_bbdev_perf.c
> @@ -2428,13 +2428,13 @@ typedef int (test_case_function)(struct active_device *ad,
>
> /* Find capabilities */
> const struct rte_bbdev_op_cap *cap = info.drv.capabilities;
> - for (i = 0; i < RTE_BBDEV_OP_TYPE_COUNT; i++) {
> + do {
> if (cap->type == test_vector.op_type) {
> capabilities = cap;
> break;
> }
> cap++;
> - }
> + } while (cap->type != RTE_BBDEV_OP_NONE);
> TEST_ASSERT_NOT_NULL(capabilities,
> "Couldn't find capabilities");
>
> diff --git a/examples/bbdev_app/main.c b/examples/bbdev_app/main.c
> index fc7e8b8..ef0ba76 100644
> --- a/examples/bbdev_app/main.c
> +++ b/examples/bbdev_app/main.c
> @@ -1041,7 +1041,7 @@ uint16_t bbdev_parse_number(const char *mask)
> void *sigret;
> struct app_config_params app_params = def_app_config;
> struct rte_mempool *ethdev_mbuf_mempool, *bbdev_mbuf_mempool;
> - struct rte_mempool *bbdev_op_pools[RTE_BBDEV_OP_TYPE_COUNT];
> + struct rte_mempool *bbdev_op_pools[RTE_BBDEV_OP_TYPE_PADDED_MAX];
> struct lcore_conf lcore_conf[RTE_MAX_LCORE] = { {0} };
> struct lcore_statistics lcore_stats[RTE_MAX_LCORE] = { {0} };
> struct stats_lcore_params stats_lcore;
> diff --git a/lib/bbdev/rte_bbdev.c b/lib/bbdev/rte_bbdev.c
> index aaee7b7..22bd894 100644
> --- a/lib/bbdev/rte_bbdev.c
> +++ b/lib/bbdev/rte_bbdev.c
> @@ -23,6 +23,8 @@
>
> #define DEV_NAME "BBDEV"
>
> +/* Number of supported operation types */
> +#define BBDEV_OP_TYPE_COUNT 5
>
> /* BBDev library logging ID */
> RTE_LOG_REGISTER_DEFAULT(bbdev_logtype, NOTICE);
> @@ -890,10 +892,10 @@ struct rte_mempool *
> return NULL;
> }
>
> - if (type >= RTE_BBDEV_OP_TYPE_COUNT) {
> + if (type >= BBDEV_OP_TYPE_COUNT) {
> rte_bbdev_log(ERR,
> "Invalid op type (%u), should be less than %u",
> - type, RTE_BBDEV_OP_TYPE_COUNT);
> + type, BBDEV_OP_TYPE_COUNT);
> return NULL;
> }
>
> @@ -1122,10 +1124,9 @@ struct rte_mempool *
> "RTE_BBDEV_OP_TURBO_DEC",
> "RTE_BBDEV_OP_TURBO_ENC",
> "RTE_BBDEV_OP_LDPC_DEC",
> - "RTE_BBDEV_OP_LDPC_ENC",
> };
>
> - if (op_type < RTE_BBDEV_OP_TYPE_COUNT)
> + if (op_type < BBDEV_OP_TYPE_COUNT)
> return op_types[op_type];
>
> rte_bbdev_log(ERR, "Invalid operation type");
> diff --git a/lib/bbdev/rte_bbdev_op.h b/lib/bbdev/rte_bbdev_op.h
> index 6d56133..cd82418 100644
> --- a/lib/bbdev/rte_bbdev_op.h
> +++ b/lib/bbdev/rte_bbdev_op.h
> @@ -748,7 +748,7 @@ enum rte_bbdev_op_type {
> RTE_BBDEV_OP_TURBO_ENC, /**< Turbo encode */
> RTE_BBDEV_OP_LDPC_DEC, /**< LDPC decode */
> RTE_BBDEV_OP_LDPC_ENC, /**< LDPC encode */
> - RTE_BBDEV_OP_TYPE_COUNT, /**< Count of different op types */
Why not keep this enum so you don't have to make the BBDEV_OP_TYPE_COUNT
#define ?
Tom
> + RTE_BBDEV_OP_TYPE_PADDED_MAX = 8, /**< Maximum op type number including padding */
> };
>
> /** Bit indexes of possible errors reported through status field */
Hi Tom,
> -----Original Message-----
> From: Tom Rix <trix@redhat.com>
> Subject: Re: [PATCH v4 1/7] bbdev: allow operation type enum for growth
>
>
> On 7/5/22 5:23 PM, Nicolas Chautru wrote:
> > Updating the enum for rte_bbdev_op_type to allow to keep ABI
> > compatible for enum insertion while adding padded maximum value for
> > array need.
> > Removing RTE_BBDEV_OP_TYPE_COUNT and instead exposing
> > RTE_BBDEV_OP_TYPE_PADDED_MAX.
> >
> > Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
> > ---
> > app/test-bbdev/test_bbdev.c | 2 +-
> > app/test-bbdev/test_bbdev_perf.c | 4 ++--
> > examples/bbdev_app/main.c | 2 +-
> > lib/bbdev/rte_bbdev.c | 9 +++++----
> > lib/bbdev/rte_bbdev_op.h | 2 +-
> > 5 files changed, 10 insertions(+), 9 deletions(-)
> >
> > diff --git a/app/test-bbdev/test_bbdev.c b/app/test-bbdev/test_bbdev.c
> > index ac06d73..1063f6e 100644
> > --- a/app/test-bbdev/test_bbdev.c
> > +++ b/app/test-bbdev/test_bbdev.c
> > @@ -521,7 +521,7 @@ struct bbdev_testsuite_params {
> > rte_mempool_free(mp);
> >
> > TEST_ASSERT((mp = rte_bbdev_op_pool_create("Test_INV",
> > - RTE_BBDEV_OP_TYPE_COUNT, size, cache_size, 0)) ==
> NULL,
> > + RTE_BBDEV_OP_TYPE_PADDED_MAX, size, cache_size,
> 0)) == NULL,
> > "Failed test for rte_bbdev_op_pool_create: "
> > "returned value is not NULL for invalid type");
> >
> > diff --git a/app/test-bbdev/test_bbdev_perf.c
> > b/app/test-bbdev/test_bbdev_perf.c
> > index fad3b1e..1abda2d 100644
> > --- a/app/test-bbdev/test_bbdev_perf.c
> > +++ b/app/test-bbdev/test_bbdev_perf.c
> > @@ -2428,13 +2428,13 @@ typedef int (test_case_function)(struct
> > active_device *ad,
> >
> > /* Find capabilities */
> > const struct rte_bbdev_op_cap *cap = info.drv.capabilities;
> > - for (i = 0; i < RTE_BBDEV_OP_TYPE_COUNT; i++) {
> > + do {
> > if (cap->type == test_vector.op_type) {
> > capabilities = cap;
> > break;
> > }
> > cap++;
> > - }
> > + } while (cap->type != RTE_BBDEV_OP_NONE);
> > TEST_ASSERT_NOT_NULL(capabilities,
> > "Couldn't find capabilities");
> >
> > diff --git a/examples/bbdev_app/main.c b/examples/bbdev_app/main.c
> > index fc7e8b8..ef0ba76 100644
> > --- a/examples/bbdev_app/main.c
> > +++ b/examples/bbdev_app/main.c
> > @@ -1041,7 +1041,7 @@ uint16_t bbdev_parse_number(const char *mask)
> > void *sigret;
> > struct app_config_params app_params = def_app_config;
> > struct rte_mempool *ethdev_mbuf_mempool,
> *bbdev_mbuf_mempool;
> > - struct rte_mempool *bbdev_op_pools[RTE_BBDEV_OP_TYPE_COUNT];
> > + struct rte_mempool
> *bbdev_op_pools[RTE_BBDEV_OP_TYPE_PADDED_MAX];
> > struct lcore_conf lcore_conf[RTE_MAX_LCORE] = { {0} };
> > struct lcore_statistics lcore_stats[RTE_MAX_LCORE] = { {0} };
> > struct stats_lcore_params stats_lcore; diff --git
> > a/lib/bbdev/rte_bbdev.c b/lib/bbdev/rte_bbdev.c index aaee7b7..22bd894
> > 100644
> > --- a/lib/bbdev/rte_bbdev.c
> > +++ b/lib/bbdev/rte_bbdev.c
> > @@ -23,6 +23,8 @@
> >
> > #define DEV_NAME "BBDEV"
> >
> > +/* Number of supported operation types */ #define
> BBDEV_OP_TYPE_COUNT
> > +5
> >
> > /* BBDev library logging ID */
> > RTE_LOG_REGISTER_DEFAULT(bbdev_logtype, NOTICE); @@ -890,10
> +892,10
> > @@ struct rte_mempool *
> > return NULL;
> > }
> >
> > - if (type >= RTE_BBDEV_OP_TYPE_COUNT) {
> > + if (type >= BBDEV_OP_TYPE_COUNT) {
> > rte_bbdev_log(ERR,
> > "Invalid op type (%u), should be less than %u",
> > - type, RTE_BBDEV_OP_TYPE_COUNT);
> > + type, BBDEV_OP_TYPE_COUNT);
> > return NULL;
> > }
> >
> > @@ -1122,10 +1124,9 @@ struct rte_mempool *
> > "RTE_BBDEV_OP_TURBO_DEC",
> > "RTE_BBDEV_OP_TURBO_ENC",
> > "RTE_BBDEV_OP_LDPC_DEC",
> > - "RTE_BBDEV_OP_LDPC_ENC",
> > };
> >
> > - if (op_type < RTE_BBDEV_OP_TYPE_COUNT)
> > + if (op_type < BBDEV_OP_TYPE_COUNT)
> > return op_types[op_type];
> >
> > rte_bbdev_log(ERR, "Invalid operation type"); diff --git
> > a/lib/bbdev/rte_bbdev_op.h b/lib/bbdev/rte_bbdev_op.h index
> > 6d56133..cd82418 100644
> > --- a/lib/bbdev/rte_bbdev_op.h
> > +++ b/lib/bbdev/rte_bbdev_op.h
> > @@ -748,7 +748,7 @@ enum rte_bbdev_op_type {
> > RTE_BBDEV_OP_TURBO_ENC, /**< Turbo encode */
> > RTE_BBDEV_OP_LDPC_DEC, /**< LDPC decode */
> > RTE_BBDEV_OP_LDPC_ENC, /**< LDPC encode */
> > - RTE_BBDEV_OP_TYPE_COUNT, /**< Count of different op types */
>
> Why not keep this enum so you don't have to make the
> BBDEV_OP_TYPE_COUNT #define ?
We are announcing that we are deprecating that enum. We want to make sure this is not being used by application, only the PADDED one should be used moving forward
But I think I will use your suggestion in other commit not to use #define for this and instead just check for array size.
Thanks
Nic
>
> Tom
>
> > + RTE_BBDEV_OP_TYPE_PADDED_MAX = 8, /**< Maximum op type
> number
> > +including padding */
> > };
> >
> > /** Bit indexes of possible errors reported through status field */
@@ -521,7 +521,7 @@ struct bbdev_testsuite_params {
rte_mempool_free(mp);
TEST_ASSERT((mp = rte_bbdev_op_pool_create("Test_INV",
- RTE_BBDEV_OP_TYPE_COUNT, size, cache_size, 0)) == NULL,
+ RTE_BBDEV_OP_TYPE_PADDED_MAX, size, cache_size, 0)) == NULL,
"Failed test for rte_bbdev_op_pool_create: "
"returned value is not NULL for invalid type");
@@ -2428,13 +2428,13 @@ typedef int (test_case_function)(struct active_device *ad,
/* Find capabilities */
const struct rte_bbdev_op_cap *cap = info.drv.capabilities;
- for (i = 0; i < RTE_BBDEV_OP_TYPE_COUNT; i++) {
+ do {
if (cap->type == test_vector.op_type) {
capabilities = cap;
break;
}
cap++;
- }
+ } while (cap->type != RTE_BBDEV_OP_NONE);
TEST_ASSERT_NOT_NULL(capabilities,
"Couldn't find capabilities");
@@ -1041,7 +1041,7 @@ uint16_t bbdev_parse_number(const char *mask)
void *sigret;
struct app_config_params app_params = def_app_config;
struct rte_mempool *ethdev_mbuf_mempool, *bbdev_mbuf_mempool;
- struct rte_mempool *bbdev_op_pools[RTE_BBDEV_OP_TYPE_COUNT];
+ struct rte_mempool *bbdev_op_pools[RTE_BBDEV_OP_TYPE_PADDED_MAX];
struct lcore_conf lcore_conf[RTE_MAX_LCORE] = { {0} };
struct lcore_statistics lcore_stats[RTE_MAX_LCORE] = { {0} };
struct stats_lcore_params stats_lcore;
@@ -23,6 +23,8 @@
#define DEV_NAME "BBDEV"
+/* Number of supported operation types */
+#define BBDEV_OP_TYPE_COUNT 5
/* BBDev library logging ID */
RTE_LOG_REGISTER_DEFAULT(bbdev_logtype, NOTICE);
@@ -890,10 +892,10 @@ struct rte_mempool *
return NULL;
}
- if (type >= RTE_BBDEV_OP_TYPE_COUNT) {
+ if (type >= BBDEV_OP_TYPE_COUNT) {
rte_bbdev_log(ERR,
"Invalid op type (%u), should be less than %u",
- type, RTE_BBDEV_OP_TYPE_COUNT);
+ type, BBDEV_OP_TYPE_COUNT);
return NULL;
}
@@ -1122,10 +1124,9 @@ struct rte_mempool *
"RTE_BBDEV_OP_TURBO_DEC",
"RTE_BBDEV_OP_TURBO_ENC",
"RTE_BBDEV_OP_LDPC_DEC",
- "RTE_BBDEV_OP_LDPC_ENC",
};
- if (op_type < RTE_BBDEV_OP_TYPE_COUNT)
+ if (op_type < BBDEV_OP_TYPE_COUNT)
return op_types[op_type];
rte_bbdev_log(ERR, "Invalid operation type");
@@ -748,7 +748,7 @@ enum rte_bbdev_op_type {
RTE_BBDEV_OP_TURBO_ENC, /**< Turbo encode */
RTE_BBDEV_OP_LDPC_DEC, /**< LDPC decode */
RTE_BBDEV_OP_LDPC_ENC, /**< LDPC encode */
- RTE_BBDEV_OP_TYPE_COUNT, /**< Count of different op types */
+ RTE_BBDEV_OP_TYPE_PADDED_MAX = 8, /**< Maximum op type number including padding */
};
/** Bit indexes of possible errors reported through status field */