> 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
>> 

Reply via email to