diff mbox

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

Message ID 20170414162834.9320-1-dmitry.ereminsolenikov@linaro.org
State Superseded
Headers show

Commit Message

Dmitry Eremin-Solenikov April 14, 2017, 4:28 p.m. UTC
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.ereminsolenikov@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

-- 
2.11.0

Comments

Bill Fischofer April 14, 2017, 5:58 p.m. UTC | #1
On Fri, Apr 14, 2017 at 11:28 AM, Dmitry Eremin-Solenikov
<dmitry.ereminsolenikov@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.ereminsolenikov@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

>
Balasubramanian Manoharan April 14, 2017, 6:02 p.m. UTC | #2
> On 14-Apr-2017, at 11:28 PM, Bill Fischofer <bill.fischofer@linaro.org> wrote:

> 

> On Fri, Apr 14, 2017 at 11:28 AM, Dmitry Eremin-Solenikov

> <dmitry.ereminsolenikov@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.ereminsolenikov@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

>>
diff mbox

Patch

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