> On 14-Apr-2017, at 11:28 PM, Bill Fischofer <[email protected]> wrote:
>
> On Fri, Apr 14, 2017 at 11:28 AM, Dmitry Eremin-Solenikov
> <[email protected]> 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 <[email protected]>
>> ---
>> 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
>>