Re: [lng-odp] [API-NEXT v2] api: feature: factor out definitions for feature support levels

2017-04-14 Thread Bala Manoharan


> On 14-Apr-2017, at 11:28 PM, Bill Fischofer  wrote:
> 
> On Fri, Apr 14, 2017 at 11:28 AM, Dmitry Eremin-Solenikov
>  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 
>> ---
>> 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 ..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 
>> +
>> +#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 
>> +#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 
>> +#include 
>> #include 
>> #include 
>> 
>> @@ -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 

Re: [lng-odp] [API-NEXT v2] api: feature: factor out definitions for feature support levels

2017-04-14 Thread Bill Fischofer
On Fri, Apr 14, 2017 at 11:28 AM, Dmitry Eremin-Solenikov
 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 
> ---
>  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 ..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 
> +
> +#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 
> +#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 
> +#include 
>  #include 
>  #include 
>
> @@ -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 
>  #include 
>  #include 
> +#include 
>  #include 
>
>  #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 ..d0aa8179
> --- /dev/null
> +++ b/platform/linux-generic/include/odp/api/feature.h
> @@ -0,0 +1,34 @@
> +/* Copyright (c) 2017, Linaro Limited
> + * 

[lng-odp] [API-NEXT v2] api: feature: factor out definitions for feature support levels

2017-04-14 Thread Dmitry Eremin-Solenikov
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 
---
 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 ..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 
+
+#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;
+
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#include 
+#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 
+#include 
 #include 
 #include 
 
@@ -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 
 #include 
 #include 
+#include 
 #include 
 
 #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 ..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 
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
-- 
2.11.0