> On 14-Apr-2017, at 11:28 PM, Bill Fischofer <bill.fischo...@linaro.org> wrote: > > On Fri, Apr 14, 2017 at 11:28 AM, Dmitry Eremin-Solenikov > <dmitry.ereminsoleni...@linaro.org> wrote: >> Instead of having magic 0-1-2 numbers, let's have the special enum for >> feature support levels (unsupported/supported/preferred). >> >> Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsoleni...@linaro.org> >> --- >> include/odp/api/spec/feature.h | 54 >> ++++++++++++++++++++++++ >> include/odp/api/spec/ipsec.h | 39 ++++++----------- >> include/odp_api.h | 1 + >> platform/linux-generic/include/odp/api/feature.h | 34 +++++++++++++++ >> 4 files changed, 101 insertions(+), 27 deletions(-) >> create mode 100644 include/odp/api/spec/feature.h >> create mode 100644 platform/linux-generic/include/odp/api/feature.h >> >> diff --git a/include/odp/api/spec/feature.h b/include/odp/api/spec/feature.h >> new file mode 100644 >> index 00000000..80f56d3d >> --- /dev/null >> +++ b/include/odp/api/spec/feature.h >> @@ -0,0 +1,54 @@ >> +/* Copyright (c) 2017, Linaro Limited >> + * All rights reserved. >> + * >> + * SPDX-License-Identifier: BSD-3-Clause >> + */ >> + >> +/** >> + * @file >> + * >> + * ODP feature API >> + */ >> + >> +#ifndef ODP_API_FEATURE_H_ >> +#define ODP_API_FEATURE_H_ >> +#include <odp/visibility_begin.h> >> + >> +#ifdef __cplusplus >> +extern "C" { >> +#endif >> + >> +/** @defgroup odp_feature ODP feature >> + * Common API >> + * @{ >> + */ >> + >> +/** >> + * ODP feature support >> + */ >> +typedef enum odp_feature_t { >> + /** >> + * Feature is not supported >> + */ >> + ODP_IPSEC_FEATURE_UNSUPPORTED, >> + /** >> + * Feature is supported >> + */ >> + ODP_IPSEC_FEATURE_SUPPORTED, >> + /** >> + * Feature is supported and preferred >> + */ >> + ODP_IPSEC_FEATURE_PREFERRED >> +} odp_feature_t; > > For consistency, either the typedef needs to be odp_ipsec_feature_t, > or the individual enum values should be ODP_FEATURE_UNSUPPORTED, etc. > I'd vote for the latter.
IMO, it should be ODP_FEATURE_SUPPORT, since we can use it for other modules like crypto and the naming needs to be generic. Regards, Bala > >> + >> + >> +/** >> + * @} >> + */ >> + >> +#ifdef __cplusplus >> +} >> +#endif >> + >> +#include <odp/visibility_end.h> >> +#endif >> diff --git a/include/odp/api/spec/ipsec.h b/include/odp/api/spec/ipsec.h >> index a0ceb11a..e15eb590 100644 >> --- a/include/odp/api/spec/ipsec.h >> +++ b/include/odp/api/spec/ipsec.h >> @@ -19,6 +19,7 @@ extern "C" { >> #endif >> >> #include <odp/api/crypto.h> >> +#include <odp/api/feature.h> >> #include <odp/api/packet_io.h> >> #include <odp/api/classification.h> >> >> @@ -230,38 +231,22 @@ typedef struct odp_ipsec_capability_t { >> /** Maximum number of IPSEC SAs */ >> uint32_t max_num_sa; >> >> - /** Synchronous IPSEC operation mode (ODP_IPSEC_OP_MODE_SYNC) support >> - * >> - * 0: Synchronous mode is not supported >> - * 1: Synchronous mode is supported >> - * 2: Synchronous mode is supported and preferred >> - */ >> - uint8_t op_mode_sync; >> + /** Synchronous IPSEC operation mode (ODP_IPSEC_OP_MODE_SYNC) >> support */ >> + odp_feature_t op_mode_sync; >> >> - /** Asynchronous IPSEC operation mode (ODP_IPSEC_OP_MODE_ASYNC) >> support >> - * >> - * 0: Asynchronous mode is not supported >> - * 1: Asynchronous mode is supported >> - * 2: Asynchronous mode is supported and preferred >> + /** >> + * Asynchronous IPSEC operation mode (ODP_IPSEC_OP_MODE_ASYNC) >> support >> */ >> - uint8_t op_mode_async; >> + odp_feature_t op_mode_async; >> >> - /** Inline IPSEC operation mode (ODP_IPSEC_OP_MODE_INLINE) support >> - * >> - * 0: Inline IPSEC operation is not supported >> - * 1: Inline IPSEC operation is supported >> - * 2: Inline IPSEC operation is supported and preferred >> - */ >> - uint8_t op_mode_inline; >> + /** Inline IPSEC operation mode (ODP_IPSEC_OP_MODE_INLINE) support */ >> + odp_feature_t op_mode_inline; >> >> - /** Support of pipelined classification (ODP_IPSEC_PIPELINE_CLS) of >> - * resulting inbound packets. >> - * >> - * 0: Classification of resulting packets is not supported >> - * 1: Classification of resulting packets is supported >> - * 2: Classification of resulting packets is supported and preferred >> + /** >> + * Support of pipelined classification (ODP_IPSEC_PIPELINE_CLS) of >> + * resulting inbound packets >> */ >> - uint8_t pipeline_cls; >> + odp_feature_t pipeline_cls; >> >> /** Soft expiry limit in seconds support >> * >> diff --git a/include/odp_api.h b/include/odp_api.h >> index 73e5309a..b736fb88 100644 >> --- a/include/odp_api.h >> +++ b/include/odp_api.h >> @@ -57,6 +57,7 @@ extern "C" { >> #include <odp/api/spinlock_recursive.h> >> #include <odp/api/rwlock_recursive.h> >> #include <odp/api/std_clib.h> >> +#include <odp/api/feature.h> >> #include <odp/api/ipsec.h> >> >> #ifdef __cplusplus >> diff --git a/platform/linux-generic/include/odp/api/feature.h >> b/platform/linux-generic/include/odp/api/feature.h >> new file mode 100644 >> index 00000000..d0aa8179 >> --- /dev/null >> +++ b/platform/linux-generic/include/odp/api/feature.h >> @@ -0,0 +1,34 @@ >> +/* Copyright (c) 2017, Linaro Limited >> + * All rights reserved. >> + * >> + * SPDX-License-Identifier: BSD-3-Clause >> + */ >> + >> +/** >> + * @file >> + * >> + * ODP feature API - platform specific header >> + */ >> + >> +#ifndef ODP_PLAT_FEATURE_H_ >> +#define ODP_PLAT_FEATURE_H_ >> + >> +#ifdef __cplusplus >> +extern "C" { >> +#endif >> + >> +/** @ingroup odp_feature >> + * @{ >> + */ >> + >> +/** >> + * @} >> + */ >> + >> +#include <odp/api/spec/feature.h> >> + >> +#ifdef __cplusplus >> +} >> +#endif >> + >> +#endif >> -- >> 2.11.0 >>