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. > + > + > +/** > + * @} > + */ > + > +#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 >