Initially, use the same default ABI file for all architectures. Default values match those defined in odp-linux implementation to minimize changes in this phase. Removed unused type definitions, documentation of those need to be still removed for API spec.
Signed-off-by: Petri Savolainen <petri.savolai...@nokia.com> --- .../arch/arm32-linux/odp/api/abi/classification.h | 7 +++++ .../arch/arm64-linux/odp/api/abi/classification.h | 7 +++++ include/odp/arch/default/api/abi/classification.h | 36 ++++++++++++++++++++++ .../arch/mips64-linux/odp/api/abi/classification.h | 7 +++++ .../power64-linux/odp/api/abi/classification.h | 7 +++++ .../arch/x86_32-linux/odp/api/abi/classification.h | 7 +++++ .../arch/x86_64-linux/odp/api/abi/classification.h | 7 +++++ platform/Makefile.inc | 2 ++ .../linux-generic/include/odp/api/classification.h | 9 ++++-- .../include/odp/api/plat/classification_types.h | 34 ++++++++------------ .../include/odp_classification_datamodel.h | 3 -- platform/linux-generic/odp_classification.c | 12 ++++++-- 12 files changed, 110 insertions(+), 28 deletions(-) create mode 100644 include/odp/arch/arm32-linux/odp/api/abi/classification.h create mode 100644 include/odp/arch/arm64-linux/odp/api/abi/classification.h create mode 100644 include/odp/arch/default/api/abi/classification.h create mode 100644 include/odp/arch/mips64-linux/odp/api/abi/classification.h create mode 100644 include/odp/arch/power64-linux/odp/api/abi/classification.h create mode 100644 include/odp/arch/x86_32-linux/odp/api/abi/classification.h create mode 100644 include/odp/arch/x86_64-linux/odp/api/abi/classification.h diff --git a/include/odp/arch/arm32-linux/odp/api/abi/classification.h b/include/odp/arch/arm32-linux/odp/api/abi/classification.h new file mode 100644 index 0000000..d48a473 --- /dev/null +++ b/include/odp/arch/arm32-linux/odp/api/abi/classification.h @@ -0,0 +1,7 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <odp/arch/default/api/abi/classification.h> diff --git a/include/odp/arch/arm64-linux/odp/api/abi/classification.h b/include/odp/arch/arm64-linux/odp/api/abi/classification.h new file mode 100644 index 0000000..d48a473 --- /dev/null +++ b/include/odp/arch/arm64-linux/odp/api/abi/classification.h @@ -0,0 +1,7 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <odp/arch/default/api/abi/classification.h> diff --git a/include/odp/arch/default/api/abi/classification.h b/include/odp/arch/default/api/abi/classification.h new file mode 100644 index 0000000..6451daa --- /dev/null +++ b/include/odp/arch/default/api/abi/classification.h @@ -0,0 +1,36 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef ODP_ABI_CLASSIFICATION_H_ +#define ODP_ABI_CLASSIFICATION_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> + +/** @ingroup odp_classification + * @{ + */ + +typedef uintptr_t odp_cos_t; +typedef uintptr_t odp_pmr_t; + +#define ODP_COS_INVALID ((odp_cos_t)~0) +#define ODP_PMR_INVAL ((odp_pmr_t)~0) + +#define ODP_COS_NAME_LEN 32 + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/odp/arch/mips64-linux/odp/api/abi/classification.h b/include/odp/arch/mips64-linux/odp/api/abi/classification.h new file mode 100644 index 0000000..d48a473 --- /dev/null +++ b/include/odp/arch/mips64-linux/odp/api/abi/classification.h @@ -0,0 +1,7 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <odp/arch/default/api/abi/classification.h> diff --git a/include/odp/arch/power64-linux/odp/api/abi/classification.h b/include/odp/arch/power64-linux/odp/api/abi/classification.h new file mode 100644 index 0000000..d48a473 --- /dev/null +++ b/include/odp/arch/power64-linux/odp/api/abi/classification.h @@ -0,0 +1,7 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <odp/arch/default/api/abi/classification.h> diff --git a/include/odp/arch/x86_32-linux/odp/api/abi/classification.h b/include/odp/arch/x86_32-linux/odp/api/abi/classification.h new file mode 100644 index 0000000..d48a473 --- /dev/null +++ b/include/odp/arch/x86_32-linux/odp/api/abi/classification.h @@ -0,0 +1,7 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <odp/arch/default/api/abi/classification.h> diff --git a/include/odp/arch/x86_64-linux/odp/api/abi/classification.h b/include/odp/arch/x86_64-linux/odp/api/abi/classification.h new file mode 100644 index 0000000..d48a473 --- /dev/null +++ b/include/odp/arch/x86_64-linux/odp/api/abi/classification.h @@ -0,0 +1,7 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <odp/arch/default/api/abi/classification.h> diff --git a/platform/Makefile.inc b/platform/Makefile.inc index b078df8..bb40692 100644 --- a/platform/Makefile.inc +++ b/platform/Makefile.inc @@ -63,11 +63,13 @@ odpapispecinclude_HEADERS = \ odpapiabidefaultincludedir= $(includedir)/odp/arch/default/api/abi odpapiabidefaultinclude_HEADERS = \ $(top_srcdir)/include/odp/arch/default/api/abi/buffer.h \ + $(top_srcdir)/include/odp/arch/default/api/abi/classification.h \ $(top_srcdir)/include/odp/arch/default/api/abi/event.h odpapiabiarchincludedir= $(includedir)/odp/arch/@ARCH_ABI@/odp/api/abi odpapiabiarchinclude_HEADERS = \ $(top_srcdir)/include/odp/arch/@ARCH_ABI@/odp/api/abi/buffer.h \ + $(top_srcdir)/include/odp/arch/@ARCH_ABI@/odp/api/abi/classification.h \ $(top_srcdir)/include/odp/arch/@ARCH_ABI@/odp/api/abi/event.h EXTRA_DIST = \ diff --git a/platform/linux-generic/include/odp/api/classification.h b/platform/linux-generic/include/odp/api/classification.h index 0bec38b..2ba6eb0 100644 --- a/platform/linux-generic/include/odp/api/classification.h +++ b/platform/linux-generic/include/odp/api/classification.h @@ -10,8 +10,8 @@ * ODP classification descriptor */ -#ifndef ODP_PLAT_CLASSIFY_H_ -#define ODP_PLAT_CLASSIFY_H_ +#ifndef ODP_PLAT_CLASSIFICATION_H_ +#define ODP_PLAT_CLASSIFICATION_H_ #ifdef __cplusplus extern "C" { @@ -28,6 +28,11 @@ extern "C" { * @{ */ +/* REMOVE THESE FROM API SPEC. Typedefs needed only for suppressing Doxygen + * warning. */ +typedef void odp_flowsig_t; +typedef void odp_cos_flow_set_t; + /** * @} */ diff --git a/platform/linux-generic/include/odp/api/plat/classification_types.h b/platform/linux-generic/include/odp/api/plat/classification_types.h index 2093f54..d210feb 100644 --- a/platform/linux-generic/include/odp/api/plat/classification_types.h +++ b/platform/linux-generic/include/odp/api/plat/classification_types.h @@ -10,46 +10,38 @@ * ODP classification descriptor */ -#ifndef ODP_CLASSIFY_TYPES_H_ -#define ODP_CLASSIFY_TYPES_H_ +#ifndef ODP_CLASSIFICATION_TYPES_H_ +#define ODP_CLASSIFICATION_TYPES_H_ #ifdef __cplusplus extern "C" { #endif +#include <odp/api/plat/static_inline.h> +#if ODP_ABI_COMPAT == 1 +#include <odp/api/abi/classification.h> +#else + #include <odp/api/plat/strong_types.h> -/** @addtogroup odp_classification +/** @ingroup odp_classification * @{ */ typedef ODP_HANDLE_T(odp_cos_t); -typedef ODP_HANDLE_T(odp_flowsig_t); - -#define ODP_COS_INVALID _odp_cast_scalar(odp_cos_t, ~0) -#define ODP_COS_NAME_LEN 32 - -typedef uint16_t odp_cos_flow_set_t; +#define ODP_COS_INVALID _odp_cast_scalar(odp_cos_t, ~0) typedef ODP_HANDLE_T(odp_pmr_t); -#define ODP_PMR_INVAL _odp_cast_scalar(odp_pmr_t, ~0) - -/** Get printable format of odp_cos_t */ -static inline uint64_t odp_cos_to_u64(odp_cos_t hdl) -{ - return _odp_pri(hdl); -} +#define ODP_PMR_INVAL _odp_cast_scalar(odp_pmr_t, ~0) -/** Get printable format of odp_pmr_t */ -static inline uint64_t odp_pmr_to_u64(odp_pmr_t hdl) -{ - return _odp_pri(hdl); -} +#define ODP_COS_NAME_LEN 32 /** * @} */ +#endif + #ifdef __cplusplus } #endif diff --git a/platform/linux-generic/include/odp_classification_datamodel.h b/platform/linux-generic/include/odp_classification_datamodel.h index 8505c67..99c1710 100644 --- a/platform/linux-generic/include/odp_classification_datamodel.h +++ b/platform/linux-generic/include/odp_classification_datamodel.h @@ -83,7 +83,6 @@ struct cos_s { uint32_t valid; /* validity Flag */ odp_cls_drop_t drop_policy; /* Associated Drop Policy */ odp_queue_group_t queue_group; /* Associated Queue Group */ - odp_cos_flow_set_t flow_set; /* Assigned Flow Set */ size_t headroom; /* Headroom for this CoS */ odp_spinlock_t lock; /* cos lock */ odp_atomic_u32_t num_rule; /* num of PMRs attached with this CoS */ @@ -149,8 +148,6 @@ typedef struct classifier { uint32_t l3_precedence; /* L3 QoS precedence */ pmr_l2_cos_t l2_cos_table; /* L2 QoS-CoS table map */ pmr_l3_cos_t l3_cos_table; /* L3 Qos-CoS table map */ - odp_cos_flow_set_t flow_set; /* Flow Set to be calculated - for this pktio */ size_t headroom; /* Pktio Headroom */ size_t skip; /* Pktio Skip Offset */ } classifier_t; diff --git a/platform/linux-generic/odp_classification.c b/platform/linux-generic/odp_classification.c index 50a7e54..e3e3574 100644 --- a/platform/linux-generic/odp_classification.c +++ b/platform/linux-generic/odp_classification.c @@ -185,7 +185,6 @@ odp_cos_t odp_cls_cos_create(const char *name, odp_cls_cos_param_t *param) } cos_tbl->cos_entry[i].s.queue = queue; cos_tbl->cos_entry[i].s.pool = param->pool; - cos_tbl->cos_entry[i].s.flow_set = 0; cos_tbl->cos_entry[i].s.headroom = 0; cos_tbl->cos_entry[i].s.valid = 1; cos_tbl->cos_entry[i].s.drop_policy = drop_policy; @@ -732,7 +731,6 @@ int pktio_classifier_init(pktio_entry_t *entry) if (entry == NULL) return -1; cls = &entry->s.cls; - cls->flow_set = 0; cls->error_cos = NULL; cls->default_cos = NULL; cls->headroom = 0; @@ -897,3 +895,13 @@ cos_t *match_qos_cos(pktio_entry_t *entry, const uint8_t *pkt_addr, } return NULL; } + +uint64_t odp_cos_to_u64(odp_cos_t hdl) +{ + return _odp_pri(hdl); +} + +uint64_t odp_pmr_to_u64(odp_pmr_t hdl) +{ + return _odp_pri(hdl); +} -- 2.8.1