Message ID | 1421215503-29105-1-git-send-email-bala.manoharan@linaro.org |
---|---|
State | Accepted |
Commit | a6b64c2dbdd9ca680cbeb3ac1c0496727fb77c07 |
Headers | show |
On Wed, Jan 14, 2015 at 5:19 AM, Savolainen, Petri (NSN - FI/Espoo) < petri.savolainen@nsn.com> wrote: > Reviewed-by: Petri Savolainen <petri.savolainen@linaro.org> > > A patch set (one type of modification per patch) would have been better > approach, but I'm OK with this since changes were trivial. > > > -Petri > > > > > -----Original Message----- > > From: lng-odp-bounces@lists.linaro.org [mailto:lng-odp- > > bounces@lists.linaro.org] On Behalf Of ext Balasubramanian Manoharan > > Sent: Wednesday, January 14, 2015 8:05 AM > > To: lng-odp@lists.linaro.org > > Subject: [lng-odp] [PATCH v1] api: Move Pktio related APIs to pktio > Header > > file > > > > The following APIs are setting parameters to pktio handle and are hence > > moved from classification header to pktio header file. > > odp_pktio_default_cos_set() > > odp_pktio_error_cos_set() > > odp_pktio_skip_set() > > odp_pktio_headroom_set() > > > > This patch also modifies the error return values in API description > > from -1 to non-zero value > > > > Signed-off-by: Balasubramanian Manoharan <bala.manoharan@linaro.org> > > --- > > .../linux-generic/include/api/odp_classification.h | 92 > ++++------------- > > ----- > > platform/linux-generic/include/api/odp_packet_io.h | 55 +++++++++++++ > > .../linux-generic/include/api/odp_platform_types.h | 3 + > > platform/linux-generic/odp_classification.c | 22 +++--- > > platform/linux-generic/odp_init.c | 2 +- > > 5 files changed, 86 insertions(+), 88 deletions(-) > > > > diff --git a/platform/linux-generic/include/api/odp_classification.h > > b/platform/linux-generic/include/api/odp_classification.h > > index 4c9674b..46189bc 100644 > > --- a/platform/linux-generic/include/api/odp_classification.h > > +++ b/platform/linux-generic/include/api/odp_classification.h > > @@ -22,7 +22,6 @@ extern "C" { > > #include <odp_std_types.h> > > #include <odp_buffer_pool.h> > > #include <odp_packet.h> > > -#include <odp_packet_io.h> > > #include <odp_queue.h> > > > > /** @defgroup odp_classification ODP CLASSIFICATION > > @@ -30,11 +29,6 @@ extern "C" { > > * @{ > > */ > > > > -/** > > - * Class of service instance type > > - */ > > -typedef uint32_t odp_cos_t; > > - > > > > /** > > * flow signature type, only used for packet metadata field. > > @@ -95,7 +89,7 @@ odp_cos_t odp_cos_create(const char *name); > > * > > * @param[in] cos_id class-of-service instance. > > * > > - * @return 0 on success, -1 on error. > > + * @return 0 on success, non-zero on error. > > */ > > int odp_cos_destroy(odp_cos_t cos_id); > > > > @@ -108,7 +102,7 @@ int odp_cos_destroy(odp_cos_t cos_id); > > * of this specific class of service > > * will be enqueued. > > * > > - * @return 0 on success, -1 on error. > > + * @return 0 on success, non-zero on error. > > */ > > int odp_cos_set_queue(odp_cos_t cos_id, odp_queue_t queue_id); > > > > @@ -118,67 +112,13 @@ int odp_cos_set_queue(odp_cos_t cos_id, odp_queue_t > > queue_id); > > * @param[in] cos_id class-of-service instance. > > * @param[in] drop_policy Desired packet drop policy for > this class. > > * > > - * @return 0 on success, -1 on error. > > + * @return 0 on success, non-zero on error. > > * > > * @note Optional. > > */ > > int odp_cos_set_drop(odp_cos_t cos_id, odp_drop_e drop_policy); > > > > /** > > - * Setup per-port default class-of-service. > > - * > > - * @param[in] pktio_in Ingress port identifier. > > - * @param[in] default_cos Class-of-service set to all > packets arriving > > - * at the pktio_in ingress port, > > - * unless overridden by subsequent > > - * header-based filters. > > - * > > - * @return 0 on success, -1 on error. > > - */ > > -int odp_pktio_set_default_cos(odp_pktio_t pktio_in, odp_cos_t > > default_cos); > > - > > -/** > > - * Setup per-port error class-of-service > > - * > > - * @param[in] pktio_in Ingress port identifier. > > - * @param[in] error_cos class-of-service set to all > packets arriving > > - * at the pktio_in ingress port > > - * that contain an error. > > - * > > - * @return 0 on success, -1 on error. > > - * > > - * @note Optional. > > - */ > > -int odp_pktio_set_error_cos(odp_pktio_t pktio_in, odp_cos_t error_cos); > > - > > -/** > > - * Setup per-port header offset > > - * > > - * @param[in] pktio_in Ingress port identifier. > > - * @param[in] offset Number of bytes the classifier must > > skip. > > - * > > - * @return 0 on success, -1 on error. > > - * @note Optional. > > - * > > - */ > > -int odp_pktio_set_skip(odp_pktio_t pktio_in, size_t offset); > > - > > -/** > > - * Specify per-port buffer headroom > > - * > > - * @param[in] pktio_in Ingress port identifier. > > - * @param[in] headroom Number of bytes of space preceding > > - * packet data to reserve for use as headroom. > > - * Must not exceed the implementation > > - * defined ODP_PACKET_MAX_HEADROOM. > > - * > > - * @return 0 on success, -1 on error. > > - * > > - * @note Optional. > > - */ > > -int odp_pktio_set_headroom(odp_pktio_t pktio_in, size_t headroom); > > - > > -/** > > * Request to override per-port class of service > > * based on Layer-2 priority field if present. > > * > > @@ -187,10 +127,10 @@ int odp_pktio_set_headroom(odp_pktio_t pktio_in, > > size_t headroom); > > * @param[in] qos_table Values of the Layer-2 QoS header > field. > > * @param[in] cos_table Class-of-service assigned to each > of the > > * allowed Layer-2 QOS levels. > > - * @return 0 on success, -1 on error. > > + * @return 0 on success, non-zero on error. > > */ > > int odp_cos_with_l2_priority(odp_pktio_t pktio_in, > > - size_t num_qos, > > + uint8_t num_qos, > Is the intent here that we're limiting the potential numbers of QoS entries to 256 or that we're limiting the number that can be set with a single call? The latter might be reasonable, but it seems the former is an unnecessary architectural restriction. > > uint8_t qos_table[], > > odp_cos_t cos_table[]); > > > > @@ -206,15 +146,15 @@ int odp_cos_with_l2_priority(odp_pktio_t pktio_in, > > * @param[in] l3_preference when true, Layer-3 QoS overrides > > * L2 QoS when present. > > * > > - * @return 0 on success, -1 on error. > > + * @return 0 on success, non-zero on error. > > * > > * @note Optional. > > */ > > int odp_cos_with_l3_qos(odp_pktio_t pktio_in, > > - size_t num_qos, > > + uint32_t num_qos, > > uint8_t qos_table[], > > odp_cos_t cos_table[], > > - bool l3_preference); > > + odp_bool_t l3_preference); > > > > > > /** > > @@ -284,7 +224,7 @@ typedef enum odp_pmr_term { > > odp_pmr_t odp_pmr_create_match(odp_pmr_term_e term, > > const void *val, > > const void *mask, > > - size_t val_sz); > > + uint32_t val_sz); > > > > /** > > * Create a packet match rule with value range > > @@ -302,13 +242,13 @@ odp_pmr_t odp_pmr_create_match(odp_pmr_term_e term, > > odp_pmr_t odp_pmr_create_range(odp_pmr_term_e term, > > const void *val1, > > const void *val2, > > - size_t val_sz); > > + uint32_t val_sz); > > /** > > * Invalidate a packet match rule and vacate its resources > > * > > * @param[in] pmr_id Identifier of the PMR to be destroyed > > * > > - * @return 0 on success, -1 or error. > > + * @return 0 on success, non-zero or error. > > */ > > int odp_pmr_destroy(odp_pmr_t pmr_id); > > > > @@ -319,7 +259,7 @@ int odp_pmr_destroy(odp_pmr_t pmr_id); > > * @param[in] src_pktio pktio to which this PMR is to be > applied > > * @param[in] dst_cos CoS to be assigned by this PMR > > * > > - * @return 0 on success, -1 or error. > > + * @return 0 on success, non-zero or error. > > */ > > int odp_pktio_pmr_cos(odp_pmr_t pmr_id, > > odp_pktio_t src_pktio, odp_cos_t dst_cos); > > @@ -332,7 +272,7 @@ int odp_pktio_pmr_cos(odp_pmr_t pmr_id, > > * @param[in] dst_cos CoS to be assigned to packets > filtered > > * from src_cos that match pmr_id. > > * > > - * @return 0 on success, -1 on error. > > + * @return 0 on success, non-zero on error. > > */ > > int odp_cos_pmr_cos(odp_pmr_t pmr_id, odp_cos_t src_cos, odp_cos_t > > dst_cos); > > > > @@ -411,7 +351,7 @@ typedef uint32_t odp_pmr_set_t; > > * that have been successfully mapped to the > > * underlying platform classification engine > and > > * may be in the range from 1 to num_terms, > > - * or -1 for error. > > + * or non-zero for error. > > */ > > int odp_pmr_match_set_create(int num_terms, odp_pmr_match_t *terms, > > odp_pmr_set_t *pmr_set_id); > > @@ -429,7 +369,7 @@ int odp_pmr_match_set_create(int num_terms, > > odp_pmr_match_t *terms, > > * @param[in] pmr_set_id A composite rule-set handle > > * returned when created. > > * > > - * @return 0 on success, -1 on error. > > + * @return 0 on success, non-zero on error. > > */ > > int odp_pmr_match_set_destroy(odp_pmr_set_t pmr_set_id); > > > > @@ -441,7 +381,7 @@ int odp_pmr_match_set_destroy(odp_pmr_set_t > > pmr_set_id); > > * set is to be applied > > * @param[in] dst_cos CoS to be assigned by this PMR > match > > set > > * > > - * @return 0 on success, -1 or error. > > + * @return 0 on success, non-zero or error. > > */ > > int odp_pktio_pmr_match_set_cos(odp_pmr_set_t pmr_set_id, odp_pktio_t > > src_pktio, > > odp_cos_t dst_cos); > > diff --git a/platform/linux-generic/include/api/odp_packet_io.h > > b/platform/linux-generic/include/api/odp_packet_io.h > > index 0c34f29..4835f4d 100644 > > --- a/platform/linux-generic/include/api/odp_packet_io.h > > +++ b/platform/linux-generic/include/api/odp_packet_io.h > > @@ -169,6 +169,61 @@ size_t odp_pktio_mac_addr(odp_pktio_t id, void > > *mac_addr, > > size_t addr_size); > > > > /** > > + * Setup per-port default class-of-service. > > + * > > + * @param[in] pktio_in Ingress port identifier. > > + * @param[in] default_cos Class-of-service set to all > packets arriving > > + * at the pktio_in ingress port, > > + * unless overridden by subsequent > > + * header-based filters. > > + * > > + * @return 0 on success, non-zero on error. > > + */ > > +int odp_pktio_default_cos_set(odp_pktio_t pktio_in, odp_cos_t > > default_cos); > > + > > +/** > > + * Setup per-port error class-of-service > > + * > > + * @param[in] pktio_in Ingress port identifier. > > + * @param[in] error_cos class-of-service set to all > packets arriving > > + * at the pktio_in ingress port > > + * that contain an error. > > + * > > + * @return 0 on success, non-zero on error. > > + * > > + * @note Optional. > > + */ > > +int odp_pktio_error_cos_set(odp_pktio_t pktio_in, odp_cos_t error_cos); > > + > > +/** > > + * Setup per-port header offset > > + * > > + * @param[in] pktio_in Ingress port identifier. > > + * @param[in] offset Number of bytes the classifier must > > skip. > > + * > > + * @return 0 on success, non-zero on error. > > + * @note Optional. > > + * > > + */ > > +int odp_pktio_skip_set(odp_pktio_t pktio_in, uint32_t offset); > > + > > +/** > > + * Specify per-port buffer headroom > > + * > > + * @param[in] pktio_in Ingress port identifier. > > + * @param[in] headroom Number of bytes of space preceding > > + * packet data to reserve for use as headroom. > > + * Must not exceed the implementation > > + * defined ODP_PACKET_MAX_HEADROOM. > > + * > > + * @return 0 on success, non-zero on error. > > + * > > + * @note Optional. > > + */ > > +int odp_pktio_headroom_set(odp_pktio_t pktio_in, uint32_t headroom); > > + > > + > > +/** > > * @} > > */ > > > > diff --git a/platform/linux-generic/include/api/odp_platform_types.h > > b/platform/linux-generic/include/api/odp_platform_types.h > > index 0a00219..6ed9e78 100644 > > --- a/platform/linux-generic/include/api/odp_platform_types.h > > +++ b/platform/linux-generic/include/api/odp_platform_types.h > > @@ -74,6 +74,9 @@ typedef uint32_t odp_shm_t; > > #define ODP_SHM_INVALID 0 > > #define ODP_SHM_NULL ODP_SHM_INVALID /**< Synonym for buffer pool use */ > > > > +/** ODP Class of service handle */ > > +typedef uint32_t odp_cos_t; > > + > > /** > > * @} > > */ > > diff --git a/platform/linux-generic/odp_classification.c > b/platform/linux- > > generic/odp_classification.c > > index eeb049a..7d09cce 100644 > > --- a/platform/linux-generic/odp_classification.c > > +++ b/platform/linux-generic/odp_classification.c > > @@ -256,7 +256,7 @@ int odp_cos_set_drop(odp_cos_t cos_id, odp_drop_e > > drop_policy) > > return 0; > > } > > > > -int odp_pktio_set_default_cos(odp_pktio_t pktio_in, odp_cos_t > > default_cos) > > +int odp_pktio_default_cos_set(odp_pktio_t pktio_in, odp_cos_t > > default_cos) > > { > > pktio_entry_t *entry; > > cos_t *cos; > > @@ -275,7 +275,7 @@ int odp_pktio_set_default_cos(odp_pktio_t pktio_in, > > odp_cos_t default_cos) > > return 0; > > } > > > > -int odp_pktio_set_error_cos(odp_pktio_t pktio_in, odp_cos_t error_cos) > > +int odp_pktio_error_cos_set(odp_pktio_t pktio_in, odp_cos_t error_cos) > > { > > pktio_entry_t *entry; > > cos_t *cos; > > @@ -296,7 +296,7 @@ int odp_pktio_set_error_cos(odp_pktio_t pktio_in, > > odp_cos_t error_cos) > > return 0; > > } > > > > -int odp_pktio_set_skip(odp_pktio_t pktio_in, size_t offset) > > +int odp_pktio_skip_set(odp_pktio_t pktio_in, uint32_t offset) > > { > > pktio_entry_t *entry = get_pktio_entry(pktio_in); > > if (entry == NULL) { > > @@ -308,7 +308,7 @@ int odp_pktio_set_skip(odp_pktio_t pktio_in, size_t > > offset) > > return 0; > > } > > > > -int odp_pktio_set_headroom(odp_pktio_t pktio_in, size_t headroom) > > +int odp_pktio_headroom_set(odp_pktio_t pktio_in, uint32_t headroom) > > { > > pktio_entry_t *entry = get_pktio_entry(pktio_in); > > if (entry == NULL) { > > @@ -320,12 +320,12 @@ int odp_pktio_set_headroom(odp_pktio_t pktio_in, > > size_t headroom) > > } > > > > int odp_cos_with_l2_priority(odp_pktio_t pktio_in, > > - size_t num_qos, > > + uint8_t num_qos, > > uint8_t qos_table[], > > odp_cos_t cos_table[]) > > { > > pmr_l2_cos_t *l2_cos; > > - size_t i; > > + uint32_t i; > > cos_t *cos; > > pktio_entry_t *entry = get_pktio_entry(pktio_in); > > if (entry == NULL) { > > @@ -348,13 +348,13 @@ int odp_cos_with_l2_priority(odp_pktio_t pktio_in, > > } > > > > int odp_cos_with_l3_qos(odp_pktio_t pktio_in, > > - size_t num_qos, > > + uint32_t num_qos, > > uint8_t qos_table[], > > odp_cos_t cos_table[], > > - bool l3_preference) > > + odp_bool_t l3_preference) > > { > > pmr_l3_cos_t *l3_cos; > > - size_t i; > > + uint32_t i; > > pktio_entry_t *entry = get_pktio_entry(pktio_in); > > cos_t *cos; > > > > @@ -382,7 +382,7 @@ int odp_cos_with_l3_qos(odp_pktio_t pktio_in, > > odp_pmr_t odp_pmr_create_match(odp_pmr_term_e term, > > const void *val, > > const void *mask, > > - size_t val_sz) > > + uint32_t val_sz) > > { > > pmr_t *pmr; > > odp_pmr_t id; > > @@ -410,7 +410,7 @@ odp_pmr_t odp_pmr_create_match(odp_pmr_term_e term, > > odp_pmr_t odp_pmr_create_range(odp_pmr_term_e term, > > const void *val1, > > const void *val2, > > - size_t val_sz) > > + uint32_t val_sz) > > { > > pmr_t *pmr; > > odp_pmr_t id; > > diff --git a/platform/linux-generic/odp_init.c b/platform/linux- > > generic/odp_init.c > > index 4d0aa07..77bfd09 100644 > > --- a/platform/linux-generic/odp_init.c > > +++ b/platform/linux-generic/odp_init.c > > @@ -55,7 +55,7 @@ int odp_init_global(odp_init_t *params ODP_UNUSED, > > return -1; > > } > > if (odp_classification_init_global()) { > > - ODP_ERR("ODP crypto init failed.\n"); > > + ODP_ERR("ODP classification init failed.\n"); > > return -1; > > } > > > > -- > > 2.0.1.472.g6f92e5f > > > > > > _______________________________________________ > > lng-odp mailing list > > lng-odp@lists.linaro.org > > http://lists.linaro.org/mailman/listinfo/lng-odp > > _______________________________________________ > lng-odp mailing list > lng-odp@lists.linaro.org > http://lists.linaro.org/mailman/listinfo/lng-odp >
On 14/01/15 5:28 pm, Bill Fischofer wrote: > > > On Wed, Jan 14, 2015 at 5:19 AM, Savolainen, Petri (NSN - FI/Espoo) > <petri.savolainen@nsn.com <mailto:petri.savolainen@nsn.com>> wrote: > > Reviewed-by: Petri Savolainen <petri.savolainen@linaro.org > <mailto:petri.savolainen@linaro.org>> > > A patch set (one type of modification per patch) would have been > better approach, but I'm OK with this since changes were trivial. > > > -Petri > > > > > -----Original Message----- > > From: lng-odp-bounces@lists.linaro.org > <mailto:lng-odp-bounces@lists.linaro.org> [mailto:lng-odp- > <mailto:lng-odp-> > > bounces@lists.linaro.org <mailto:bounces@lists.linaro.org>] On > Behalf Of ext Balasubramanian Manoharan > > Sent: Wednesday, January 14, 2015 8:05 AM > > To: lng-odp@lists.linaro.org <mailto:lng-odp@lists.linaro.org> > > Subject: [lng-odp] [PATCH v1] api: Move Pktio related APIs to > pktio Header > > file > > > > The following APIs are setting parameters to pktio handle and > are hence > > moved from classification header to pktio header file. > > odp_pktio_default_cos_set() > > odp_pktio_error_cos_set() > > odp_pktio_skip_set() > > odp_pktio_headroom_set() > > > > This patch also modifies the error return values in API description > > from -1 to non-zero value > > > > Signed-off-by: Balasubramanian Manoharan > <bala.manoharan@linaro.org <mailto:bala.manoharan@linaro.org>> > > --- > > .../linux-generic/include/api/odp_classification.h | 92 > ++++------------- > > ----- > > platform/linux-generic/include/api/odp_packet_io.h | 55 > +++++++++++++ > > .../linux-generic/include/api/odp_platform_types.h | 3 + > > platform/linux-generic/odp_classification.c | 22 +++--- > > platform/linux-generic/odp_init.c | 2 +- > > 5 files changed, 86 insertions(+), 88 deletions(-) > > > > diff --git a/platform/linux-generic/include/api/odp_classification.h > > b/platform/linux-generic/include/api/odp_classification.h > > index 4c9674b..46189bc 100644 > > --- a/platform/linux-generic/include/api/odp_classification.h > > +++ b/platform/linux-generic/include/api/odp_classification.h > > @@ -22,7 +22,6 @@ extern "C" { > > #include <odp_std_types.h> > > #include <odp_buffer_pool.h> > > #include <odp_packet.h> > > -#include <odp_packet_io.h> > > #include <odp_queue.h> > > > > /** @defgroup odp_classification ODP CLASSIFICATION > > @@ -30,11 +29,6 @@ extern "C" { > > * @{ > > */ > > > > -/** > > - * Class of service instance type > > - */ > > -typedef uint32_t odp_cos_t; > > - > > > > /** > > * flow signature type, only used for packet metadata field. > > @@ -95,7 +89,7 @@ odp_cos_t odp_cos_create(const char *name); > > * > > * @param[in] cos_id class-of-service instance. > > * > > - * @return 0 on success, -1 on error. > > + * @return 0 on success, non-zero on error. > > */ > > int odp_cos_destroy(odp_cos_t cos_id); > > > > @@ -108,7 +102,7 @@ int odp_cos_destroy(odp_cos_t cos_id); > > * of this specific class of service > > * will be enqueued. > > * > > - * @return 0 on success, -1 on error. > > + * @return 0 on success, non-zero on error. > > */ > > int odp_cos_set_queue(odp_cos_t cos_id, odp_queue_t queue_id); > > > > @@ -118,67 +112,13 @@ int odp_cos_set_queue(odp_cos_t cos_id, > odp_queue_t > > queue_id); > > * @param[in] cos_id class-of-service instance. > > * @param[in] drop_policy Desired packet drop policy > for this class. > > * > > - * @return 0 on success, -1 on error. > > + * @return 0 on success, non-zero on error. > > * > > * @note Optional. > > */ > > int odp_cos_set_drop(odp_cos_t cos_id, odp_drop_e drop_policy); > > > > /** > > - * Setup per-port default class-of-service. > > - * > > - * @param[in] pktio_in Ingress port identifier. > > - * @param[in] default_cos Class-of-service set to all > packets arriving > > - * at the pktio_in ingress port, > > - * unless overridden by subsequent > > - * header-based filters. > > - * > > - * @return 0 on success, -1 on error. > > - */ > > -int odp_pktio_set_default_cos(odp_pktio_t pktio_in, odp_cos_t > > default_cos); > > - > > -/** > > - * Setup per-port error class-of-service > > - * > > - * @param[in] pktio_in Ingress port identifier. > > - * @param[in] error_cos class-of-service set to all > packets arriving > > - * at the pktio_in ingress port > > - * that contain an error. > > - * > > - * @return 0 on success, -1 on error. > > - * > > - * @note Optional. > > - */ > > -int odp_pktio_set_error_cos(odp_pktio_t pktio_in, odp_cos_t > error_cos); > > - > > -/** > > - * Setup per-port header offset > > - * > > - * @param[in] pktio_in Ingress port identifier. > > - * @param[in] offset Number of bytes the > classifier must > > skip. > > - * > > - * @return 0 on success, -1 on error. > > - * @note Optional. > > - * > > - */ > > -int odp_pktio_set_skip(odp_pktio_t pktio_in, size_t offset); > > - > > -/** > > - * Specify per-port buffer headroom > > - * > > - * @param[in] pktio_in Ingress port identifier. > > - * @param[in] headroom Number of bytes of space > preceding > > - * packet data to reserve for use as > headroom. > > - * Must not exceed the implementation > > - * defined ODP_PACKET_MAX_HEADROOM. > > - * > > - * @return 0 on success, -1 on error. > > - * > > - * @note Optional. > > - */ > > -int odp_pktio_set_headroom(odp_pktio_t pktio_in, size_t headroom); > > - > > -/** > > * Request to override per-port class of service > > * based on Layer-2 priority field if present. > > * > > @@ -187,10 +127,10 @@ int odp_pktio_set_headroom(odp_pktio_t > pktio_in, > > size_t headroom); > > * @param[in] qos_table Values of the Layer-2 QoS > header field. > > * @param[in] cos_table Class-of-service assigned to > each of the > > * allowed Layer-2 QOS levels. > > - * @return 0 on success, -1 on error. > > + * @return 0 on success, non-zero on error. > > */ > > int odp_cos_with_l2_priority(odp_pktio_t pktio_in, > > - size_t num_qos, > > + uint8_t num_qos, > > > Is the intent here that we're limiting the potential numbers of QoS > entries to 256 or that we're limiting the number that can be set with > a single call? The latter might be reasonable, but it seems the > former is an unnecessary architectural restriction. There can only be one CoS associated with each L2 priority value per pktio interface. Hence 256 seemed a reasonable MAX limit for number of L2 priority which can be set in a single call. If more than 256 priority value needs to be set for any proprietary L2 protocol the same can be done in multiple calls. > > > uint8_t qos_table[], > > odp_cos_t cos_table[]); > > > > @@ -206,15 +146,15 @@ int odp_cos_with_l2_priority(odp_pktio_t > pktio_in, > > * @param[in] l3_preference when true, Layer-3 QoS > overrides > > * L2 QoS when present. > > * > > - * @return 0 on success, -1 on error. > > + * @return 0 on success, non-zero on error. > > * > > * @note Optional. > > */ > > int odp_cos_with_l3_qos(odp_pktio_t pktio_in, > > - size_t num_qos, > > + uint32_t num_qos, > > uint8_t qos_table[], > > odp_cos_t cos_table[], > > - bool l3_preference); > > + odp_bool_t l3_preference); > > > > > > /** > > @@ -284,7 +224,7 @@ typedef enum odp_pmr_term { > > odp_pmr_t odp_pmr_create_match(odp_pmr_term_e term, > > const void *val, > > const void *mask, > > - size_t val_sz); > > + uint32_t val_sz); > > > > /** > > * Create a packet match rule with value range > > @@ -302,13 +242,13 @@ odp_pmr_t > odp_pmr_create_match(odp_pmr_term_e term, > > odp_pmr_t odp_pmr_create_range(odp_pmr_term_e term, > > const void *val1, > > const void *val2, > > - size_t val_sz); > > + uint32_t val_sz); > > /** > > * Invalidate a packet match rule and vacate its resources > > * > > * @param[in] pmr_id Identifier of the PMR to be destroyed > > * > > - * @return 0 on success, -1 or error. > > + * @return 0 on success, non-zero or error. > > */ > > int odp_pmr_destroy(odp_pmr_t pmr_id); > > > > @@ -319,7 +259,7 @@ int odp_pmr_destroy(odp_pmr_t pmr_id); > > * @param[in] src_pktio pktio to which this PMR is > to be applied > > * @param[in] dst_cos CoS to be assigned by this PMR > > * > > - * @return 0 on success, -1 or error. > > + * @return 0 on success, non-zero or error. > > */ > > int odp_pktio_pmr_cos(odp_pmr_t pmr_id, > > odp_pktio_t src_pktio, odp_cos_t dst_cos); > > @@ -332,7 +272,7 @@ int odp_pktio_pmr_cos(odp_pmr_t pmr_id, > > * @param[in] dst_cos CoS to be assigned to > packets filtered > > * from src_cos that match pmr_id. > > * > > - * @return 0 on success, -1 on error. > > + * @return 0 on success, non-zero on error. > > */ > > int odp_cos_pmr_cos(odp_pmr_t pmr_id, odp_cos_t src_cos, odp_cos_t > > dst_cos); > > > > @@ -411,7 +351,7 @@ typedef uint32_t odp_pmr_set_t; > > * that have been successfully mapped > to the > > * underlying platform classification > engine and > > * may be in the range from 1 to > num_terms, > > - * or -1 for error. > > + * or non-zero for error. > > */ > > int odp_pmr_match_set_create(int num_terms, odp_pmr_match_t *terms, > > odp_pmr_set_t *pmr_set_id); > > @@ -429,7 +369,7 @@ int odp_pmr_match_set_create(int num_terms, > > odp_pmr_match_t *terms, > > * @param[in] pmr_set_id A composite rule-set handle > > * returned when created. > > * > > - * @return 0 on success, -1 on error. > > + * @return 0 on success, non-zero on error. > > */ > > int odp_pmr_match_set_destroy(odp_pmr_set_t pmr_set_id); > > > > @@ -441,7 +381,7 @@ int odp_pmr_match_set_destroy(odp_pmr_set_t > > pmr_set_id); > > * set is to be applied > > * @param[in] dst_cos CoS to be assigned by this > PMR match > > set > > * > > - * @return 0 on success, -1 or error. > > + * @return 0 on success, non-zero or error. > > */ > > int odp_pktio_pmr_match_set_cos(odp_pmr_set_t pmr_set_id, > odp_pktio_t > > src_pktio, > > odp_cos_t dst_cos); > > diff --git a/platform/linux-generic/include/api/odp_packet_io.h > > b/platform/linux-generic/include/api/odp_packet_io.h > > index 0c34f29..4835f4d 100644 > > --- a/platform/linux-generic/include/api/odp_packet_io.h > > +++ b/platform/linux-generic/include/api/odp_packet_io.h > > @@ -169,6 +169,61 @@ size_t odp_pktio_mac_addr(odp_pktio_t id, void > > *mac_addr, > > size_t addr_size); > > > > /** > > + * Setup per-port default class-of-service. > > + * > > + * @param[in] pktio_in Ingress port identifier. > > + * @param[in] default_cos Class-of-service set to all > packets arriving > > + * at the pktio_in ingress port, > > + * unless overridden by subsequent > > + * header-based filters. > > + * > > + * @return 0 on success, non-zero on error. > > + */ > > +int odp_pktio_default_cos_set(odp_pktio_t pktio_in, odp_cos_t > > default_cos); > > + > > +/** > > + * Setup per-port error class-of-service > > + * > > + * @param[in] pktio_in Ingress port identifier. > > + * @param[in] error_cos class-of-service set to all > packets arriving > > + * at the pktio_in ingress port > > + * that contain an error. > > + * > > + * @return 0 on success, non-zero on error. > > + * > > + * @note Optional. > > + */ > > +int odp_pktio_error_cos_set(odp_pktio_t pktio_in, odp_cos_t > error_cos); > > + > > +/** > > + * Setup per-port header offset > > + * > > + * @param[in] pktio_in Ingress port identifier. > > + * @param[in] offset Number of bytes the > classifier must > > skip. > > + * > > + * @return 0 on success, non-zero on error. > > + * @note Optional. > > + * > > + */ > > +int odp_pktio_skip_set(odp_pktio_t pktio_in, uint32_t offset); > > + > > +/** > > + * Specify per-port buffer headroom > > + * > > + * @param[in] pktio_in Ingress port identifier. > > + * @param[in] headroom Number of bytes of space > preceding > > + * packet data to reserve for use as > headroom. > > + * Must not exceed the implementation > > + * defined ODP_PACKET_MAX_HEADROOM. > > + * > > + * @return 0 on success, non-zero on error. > > + * > > + * @note Optional. > > + */ > > +int odp_pktio_headroom_set(odp_pktio_t pktio_in, uint32_t > headroom); > > + > > + > > +/** > > * @} > > */ > > > > diff --git a/platform/linux-generic/include/api/odp_platform_types.h > > b/platform/linux-generic/include/api/odp_platform_types.h > > index 0a00219..6ed9e78 100644 > > --- a/platform/linux-generic/include/api/odp_platform_types.h > > +++ b/platform/linux-generic/include/api/odp_platform_types.h > > @@ -74,6 +74,9 @@ typedef uint32_t odp_shm_t; > > #define ODP_SHM_INVALID 0 > > #define ODP_SHM_NULL ODP_SHM_INVALID /**< Synonym for buffer > pool use */ > > > > +/** ODP Class of service handle */ > > +typedef uint32_t odp_cos_t; > > + > > /** > > * @} > > */ > > diff --git a/platform/linux-generic/odp_classification.c > b/platform/linux- > > generic/odp_classification.c > > index eeb049a..7d09cce 100644 > > --- a/platform/linux-generic/odp_classification.c > > +++ b/platform/linux-generic/odp_classification.c > > @@ -256,7 +256,7 @@ int odp_cos_set_drop(odp_cos_t cos_id, > odp_drop_e > > drop_policy) > > return 0; > > } > > > > -int odp_pktio_set_default_cos(odp_pktio_t pktio_in, odp_cos_t > > default_cos) > > +int odp_pktio_default_cos_set(odp_pktio_t pktio_in, odp_cos_t > > default_cos) > > { > > pktio_entry_t *entry; > > cos_t *cos; > > @@ -275,7 +275,7 @@ int odp_pktio_set_default_cos(odp_pktio_t > pktio_in, > > odp_cos_t default_cos) > > return 0; > > } > > > > -int odp_pktio_set_error_cos(odp_pktio_t pktio_in, odp_cos_t > error_cos) > > +int odp_pktio_error_cos_set(odp_pktio_t pktio_in, odp_cos_t > error_cos) > > { > > pktio_entry_t *entry; > > cos_t *cos; > > @@ -296,7 +296,7 @@ int odp_pktio_set_error_cos(odp_pktio_t > pktio_in, > > odp_cos_t error_cos) > > return 0; > > } > > > > -int odp_pktio_set_skip(odp_pktio_t pktio_in, size_t offset) > > +int odp_pktio_skip_set(odp_pktio_t pktio_in, uint32_t offset) > > { > > pktio_entry_t *entry = get_pktio_entry(pktio_in); > > if (entry == NULL) { > > @@ -308,7 +308,7 @@ int odp_pktio_set_skip(odp_pktio_t pktio_in, > size_t > > offset) > > return 0; > > } > > > > -int odp_pktio_set_headroom(odp_pktio_t pktio_in, size_t headroom) > > +int odp_pktio_headroom_set(odp_pktio_t pktio_in, uint32_t headroom) > > { > > pktio_entry_t *entry = get_pktio_entry(pktio_in); > > if (entry == NULL) { > > @@ -320,12 +320,12 @@ int odp_pktio_set_headroom(odp_pktio_t > pktio_in, > > size_t headroom) > > } > > > > int odp_cos_with_l2_priority(odp_pktio_t pktio_in, > > - size_t num_qos, > > + uint8_t num_qos, > > uint8_t qos_table[], > > odp_cos_t cos_table[]) > > { > > pmr_l2_cos_t *l2_cos; > > - size_t i; > > + uint32_t i; > > cos_t *cos; > > pktio_entry_t *entry = get_pktio_entry(pktio_in); > > if (entry == NULL) { > > @@ -348,13 +348,13 @@ int odp_cos_with_l2_priority(odp_pktio_t > pktio_in, > > } > > > > int odp_cos_with_l3_qos(odp_pktio_t pktio_in, > > - size_t num_qos, > > + uint32_t num_qos, > > uint8_t qos_table[], > > odp_cos_t cos_table[], > > - bool l3_preference) > > + odp_bool_t l3_preference) > > { > > pmr_l3_cos_t *l3_cos; > > - size_t i; > > + uint32_t i; > > pktio_entry_t *entry = get_pktio_entry(pktio_in); > > cos_t *cos; > > > > @@ -382,7 +382,7 @@ int odp_cos_with_l3_qos(odp_pktio_t pktio_in, > > odp_pmr_t odp_pmr_create_match(odp_pmr_term_e term, > > const void *val, > > const void *mask, > > - size_t val_sz) > > + uint32_t val_sz) > > { > > pmr_t *pmr; > > odp_pmr_t id; > > @@ -410,7 +410,7 @@ odp_pmr_t > odp_pmr_create_match(odp_pmr_term_e term, > > odp_pmr_t odp_pmr_create_range(odp_pmr_term_e term, > > const void *val1, > > const void *val2, > > - size_t val_sz) > > + uint32_t val_sz) > > { > > pmr_t *pmr; > > odp_pmr_t id; > > diff --git a/platform/linux-generic/odp_init.c b/platform/linux- > > generic/odp_init.c > > index 4d0aa07..77bfd09 100644 > > --- a/platform/linux-generic/odp_init.c > > +++ b/platform/linux-generic/odp_init.c > > @@ -55,7 +55,7 @@ int odp_init_global(odp_init_t *params > ODP_UNUSED, > > return -1; > > } > > if (odp_classification_init_global()) { > > - ODP_ERR("ODP crypto init failed.\n"); > > + ODP_ERR("ODP classification init failed.\n"); > > return -1; > > } > > > > -- > > 2.0.1.472.g6f92e5f > > > > > > _______________________________________________ > > lng-odp mailing list > > lng-odp@lists.linaro.org <mailto:lng-odp@lists.linaro.org> > > http://lists.linaro.org/mailman/listinfo/lng-odp > > _______________________________________________ > lng-odp mailing list > lng-odp@lists.linaro.org <mailto:lng-odp@lists.linaro.org> > http://lists.linaro.org/mailman/listinfo/lng-odp > >
That seems reasonable. Just wanted to make sure we weren't limiting the potential number of classes of service since they can well exceed 256. On Wed, Jan 14, 2015 at 6:45 AM, Balasubramanian Manoharan < bala.manoharan@linaro.org> wrote: > > On 14/01/15 5:28 pm, Bill Fischofer wrote: > > > > On Wed, Jan 14, 2015 at 5:19 AM, Savolainen, Petri (NSN - FI/Espoo) < > petri.savolainen@nsn.com> wrote: > >> Reviewed-by: Petri Savolainen <petri.savolainen@linaro.org> >> >> A patch set (one type of modification per patch) would have been better >> approach, but I'm OK with this since changes were trivial. >> >> >> -Petri >> >> >> >> > -----Original Message----- >> > From: lng-odp-bounces@lists.linaro.org [mailto:lng-odp- >> > bounces@lists.linaro.org] On Behalf Of ext Balasubramanian Manoharan >> > Sent: Wednesday, January 14, 2015 8:05 AM >> > To: lng-odp@lists.linaro.org >> > Subject: [lng-odp] [PATCH v1] api: Move Pktio related APIs to pktio >> Header >> > file >> > >> > The following APIs are setting parameters to pktio handle and are hence >> > moved from classification header to pktio header file. >> > odp_pktio_default_cos_set() >> > odp_pktio_error_cos_set() >> > odp_pktio_skip_set() >> > odp_pktio_headroom_set() >> > >> > This patch also modifies the error return values in API description >> > from -1 to non-zero value >> > >> > Signed-off-by: Balasubramanian Manoharan <bala.manoharan@linaro.org> >> > --- >> > .../linux-generic/include/api/odp_classification.h | 92 >> ++++------------- >> > ----- >> > platform/linux-generic/include/api/odp_packet_io.h | 55 +++++++++++++ >> > .../linux-generic/include/api/odp_platform_types.h | 3 + >> > platform/linux-generic/odp_classification.c | 22 +++--- >> > platform/linux-generic/odp_init.c | 2 +- >> > 5 files changed, 86 insertions(+), 88 deletions(-) >> > >> > diff --git a/platform/linux-generic/include/api/odp_classification.h >> > b/platform/linux-generic/include/api/odp_classification.h >> > index 4c9674b..46189bc 100644 >> > --- a/platform/linux-generic/include/api/odp_classification.h >> > +++ b/platform/linux-generic/include/api/odp_classification.h >> > @@ -22,7 +22,6 @@ extern "C" { >> > #include <odp_std_types.h> >> > #include <odp_buffer_pool.h> >> > #include <odp_packet.h> >> > -#include <odp_packet_io.h> >> > #include <odp_queue.h> >> > >> > /** @defgroup odp_classification ODP CLASSIFICATION >> > @@ -30,11 +29,6 @@ extern "C" { >> > * @{ >> > */ >> > >> > -/** >> > - * Class of service instance type >> > - */ >> > -typedef uint32_t odp_cos_t; >> > - >> > >> > /** >> > * flow signature type, only used for packet metadata field. >> > @@ -95,7 +89,7 @@ odp_cos_t odp_cos_create(const char *name); >> > * >> > * @param[in] cos_id class-of-service instance. >> > * >> > - * @return 0 on success, -1 on error. >> > + * @return 0 on success, non-zero on error. >> > */ >> > int odp_cos_destroy(odp_cos_t cos_id); >> > >> > @@ -108,7 +102,7 @@ int odp_cos_destroy(odp_cos_t cos_id); >> > * of this specific class of service >> > * will be enqueued. >> > * >> > - * @return 0 on success, -1 on error. >> > + * @return 0 on success, non-zero on error. >> > */ >> > int odp_cos_set_queue(odp_cos_t cos_id, odp_queue_t queue_id); >> > >> > @@ -118,67 +112,13 @@ int odp_cos_set_queue(odp_cos_t cos_id, >> odp_queue_t >> > queue_id); >> > * @param[in] cos_id class-of-service instance. >> > * @param[in] drop_policy Desired packet drop policy for >> this class. >> > * >> > - * @return 0 on success, -1 on error. >> > + * @return 0 on success, non-zero on error. >> > * >> > * @note Optional. >> > */ >> > int odp_cos_set_drop(odp_cos_t cos_id, odp_drop_e drop_policy); >> > >> > /** >> > - * Setup per-port default class-of-service. >> > - * >> > - * @param[in] pktio_in Ingress port identifier. >> > - * @param[in] default_cos Class-of-service set to all >> packets arriving >> > - * at the pktio_in ingress port, >> > - * unless overridden by subsequent >> > - * header-based filters. >> > - * >> > - * @return 0 on success, -1 on error. >> > - */ >> > -int odp_pktio_set_default_cos(odp_pktio_t pktio_in, odp_cos_t >> > default_cos); >> > - >> > -/** >> > - * Setup per-port error class-of-service >> > - * >> > - * @param[in] pktio_in Ingress port identifier. >> > - * @param[in] error_cos class-of-service set to all >> packets arriving >> > - * at the pktio_in ingress port >> > - * that contain an error. >> > - * >> > - * @return 0 on success, -1 on error. >> > - * >> > - * @note Optional. >> > - */ >> > -int odp_pktio_set_error_cos(odp_pktio_t pktio_in, odp_cos_t error_cos); >> > - >> > -/** >> > - * Setup per-port header offset >> > - * >> > - * @param[in] pktio_in Ingress port identifier. >> > - * @param[in] offset Number of bytes the classifier >> must >> > skip. >> > - * >> > - * @return 0 on success, -1 on error. >> > - * @note Optional. >> > - * >> > - */ >> > -int odp_pktio_set_skip(odp_pktio_t pktio_in, size_t offset); >> > - >> > -/** >> > - * Specify per-port buffer headroom >> > - * >> > - * @param[in] pktio_in Ingress port identifier. >> > - * @param[in] headroom Number of bytes of space preceding >> > - * packet data to reserve for use as >> headroom. >> > - * Must not exceed the implementation >> > - * defined ODP_PACKET_MAX_HEADROOM. >> > - * >> > - * @return 0 on success, -1 on error. >> > - * >> > - * @note Optional. >> > - */ >> > -int odp_pktio_set_headroom(odp_pktio_t pktio_in, size_t headroom); >> > - >> > -/** >> > * Request to override per-port class of service >> > * based on Layer-2 priority field if present. >> > * >> > @@ -187,10 +127,10 @@ int odp_pktio_set_headroom(odp_pktio_t pktio_in, >> > size_t headroom); >> > * @param[in] qos_table Values of the Layer-2 QoS header >> field. >> > * @param[in] cos_table Class-of-service assigned to each >> of the >> > * allowed Layer-2 QOS levels. >> > - * @return 0 on success, -1 on error. >> > + * @return 0 on success, non-zero on error. >> > */ >> > int odp_cos_with_l2_priority(odp_pktio_t pktio_in, >> > - size_t num_qos, >> > + uint8_t num_qos, >> > > Is the intent here that we're limiting the potential numbers of QoS > entries to 256 or that we're limiting the number that can be set with a > single call? The latter might be reasonable, but it seems the former is an > unnecessary architectural restriction. > > There can only be one CoS associated with each L2 priority value per pktio > interface. > Hence 256 seemed a reasonable MAX limit for number of L2 priority which > can be set in a single call. > If more than 256 priority value needs to be set for any proprietary L2 > protocol the same can be done in multiple calls. > > > >> > uint8_t qos_table[], >> > odp_cos_t cos_table[]); >> > >> > @@ -206,15 +146,15 @@ int odp_cos_with_l2_priority(odp_pktio_t pktio_in, >> > * @param[in] l3_preference when true, Layer-3 QoS overrides >> > * L2 QoS when present. >> > * >> > - * @return 0 on success, -1 on error. >> > + * @return 0 on success, non-zero on error. >> > * >> > * @note Optional. >> > */ >> > int odp_cos_with_l3_qos(odp_pktio_t pktio_in, >> > - size_t num_qos, >> > + uint32_t num_qos, >> > uint8_t qos_table[], >> > odp_cos_t cos_table[], >> > - bool l3_preference); >> > + odp_bool_t l3_preference); >> > >> > >> > /** >> > @@ -284,7 +224,7 @@ typedef enum odp_pmr_term { >> > odp_pmr_t odp_pmr_create_match(odp_pmr_term_e term, >> > const void *val, >> > const void *mask, >> > - size_t val_sz); >> > + uint32_t val_sz); >> > >> > /** >> > * Create a packet match rule with value range >> > @@ -302,13 +242,13 @@ odp_pmr_t odp_pmr_create_match(odp_pmr_term_e >> term, >> > odp_pmr_t odp_pmr_create_range(odp_pmr_term_e term, >> > const void *val1, >> > const void *val2, >> > - size_t val_sz); >> > + uint32_t val_sz); >> > /** >> > * Invalidate a packet match rule and vacate its resources >> > * >> > * @param[in] pmr_id Identifier of the PMR to be destroyed >> > * >> > - * @return 0 on success, -1 or error. >> > + * @return 0 on success, non-zero or error. >> > */ >> > int odp_pmr_destroy(odp_pmr_t pmr_id); >> > >> > @@ -319,7 +259,7 @@ int odp_pmr_destroy(odp_pmr_t pmr_id); >> > * @param[in] src_pktio pktio to which this PMR is to be >> applied >> > * @param[in] dst_cos CoS to be assigned by this PMR >> > * >> > - * @return 0 on success, -1 or error. >> > + * @return 0 on success, non-zero or error. >> > */ >> > int odp_pktio_pmr_cos(odp_pmr_t pmr_id, >> > odp_pktio_t src_pktio, odp_cos_t dst_cos); >> > @@ -332,7 +272,7 @@ int odp_pktio_pmr_cos(odp_pmr_t pmr_id, >> > * @param[in] dst_cos CoS to be assigned to packets >> filtered >> > * from src_cos that match pmr_id. >> > * >> > - * @return 0 on success, -1 on error. >> > + * @return 0 on success, non-zero on error. >> > */ >> > int odp_cos_pmr_cos(odp_pmr_t pmr_id, odp_cos_t src_cos, odp_cos_t >> > dst_cos); >> > >> > @@ -411,7 +351,7 @@ typedef uint32_t odp_pmr_set_t; >> > * that have been successfully mapped to the >> > * underlying platform classification engine >> and >> > * may be in the range from 1 to num_terms, >> > - * or -1 for error. >> > + * or non-zero for error. >> > */ >> > int odp_pmr_match_set_create(int num_terms, odp_pmr_match_t *terms, >> > odp_pmr_set_t *pmr_set_id); >> > @@ -429,7 +369,7 @@ int odp_pmr_match_set_create(int num_terms, >> > odp_pmr_match_t *terms, >> > * @param[in] pmr_set_id A composite rule-set handle >> > * returned when created. >> > * >> > - * @return 0 on success, -1 on error. >> > + * @return 0 on success, non-zero on error. >> > */ >> > int odp_pmr_match_set_destroy(odp_pmr_set_t pmr_set_id); >> > >> > @@ -441,7 +381,7 @@ int odp_pmr_match_set_destroy(odp_pmr_set_t >> > pmr_set_id); >> > * set is to be applied >> > * @param[in] dst_cos CoS to be assigned by this PMR >> match >> > set >> > * >> > - * @return 0 on success, -1 or error. >> > + * @return 0 on success, non-zero or error. >> > */ >> > int odp_pktio_pmr_match_set_cos(odp_pmr_set_t pmr_set_id, odp_pktio_t >> > src_pktio, >> > odp_cos_t dst_cos); >> > diff --git a/platform/linux-generic/include/api/odp_packet_io.h >> > b/platform/linux-generic/include/api/odp_packet_io.h >> > index 0c34f29..4835f4d 100644 >> > --- a/platform/linux-generic/include/api/odp_packet_io.h >> > +++ b/platform/linux-generic/include/api/odp_packet_io.h >> > @@ -169,6 +169,61 @@ size_t odp_pktio_mac_addr(odp_pktio_t id, void >> > *mac_addr, >> > size_t addr_size); >> > >> > /** >> > + * Setup per-port default class-of-service. >> > + * >> > + * @param[in] pktio_in Ingress port identifier. >> > + * @param[in] default_cos Class-of-service set to all >> packets arriving >> > + * at the pktio_in ingress port, >> > + * unless overridden by subsequent >> > + * header-based filters. >> > + * >> > + * @return 0 on success, non-zero on error. >> > + */ >> > +int odp_pktio_default_cos_set(odp_pktio_t pktio_in, odp_cos_t >> > default_cos); >> > + >> > +/** >> > + * Setup per-port error class-of-service >> > + * >> > + * @param[in] pktio_in Ingress port identifier. >> > + * @param[in] error_cos class-of-service set to all >> packets arriving >> > + * at the pktio_in ingress port >> > + * that contain an error. >> > + * >> > + * @return 0 on success, non-zero on error. >> > + * >> > + * @note Optional. >> > + */ >> > +int odp_pktio_error_cos_set(odp_pktio_t pktio_in, odp_cos_t error_cos); >> > + >> > +/** >> > + * Setup per-port header offset >> > + * >> > + * @param[in] pktio_in Ingress port identifier. >> > + * @param[in] offset Number of bytes the classifier >> must >> > skip. >> > + * >> > + * @return 0 on success, non-zero on error. >> > + * @note Optional. >> > + * >> > + */ >> > +int odp_pktio_skip_set(odp_pktio_t pktio_in, uint32_t offset); >> > + >> > +/** >> > + * Specify per-port buffer headroom >> > + * >> > + * @param[in] pktio_in Ingress port identifier. >> > + * @param[in] headroom Number of bytes of space preceding >> > + * packet data to reserve for use as >> headroom. >> > + * Must not exceed the implementation >> > + * defined ODP_PACKET_MAX_HEADROOM. >> > + * >> > + * @return 0 on success, non-zero on error. >> > + * >> > + * @note Optional. >> > + */ >> > +int odp_pktio_headroom_set(odp_pktio_t pktio_in, uint32_t headroom); >> > + >> > + >> > +/** >> > * @} >> > */ >> > >> > diff --git a/platform/linux-generic/include/api/odp_platform_types.h >> > b/platform/linux-generic/include/api/odp_platform_types.h >> > index 0a00219..6ed9e78 100644 >> > --- a/platform/linux-generic/include/api/odp_platform_types.h >> > +++ b/platform/linux-generic/include/api/odp_platform_types.h >> > @@ -74,6 +74,9 @@ typedef uint32_t odp_shm_t; >> > #define ODP_SHM_INVALID 0 >> > #define ODP_SHM_NULL ODP_SHM_INVALID /**< Synonym for buffer pool use >> */ >> > >> > +/** ODP Class of service handle */ >> > +typedef uint32_t odp_cos_t; >> > + >> > /** >> > * @} >> > */ >> > diff --git a/platform/linux-generic/odp_classification.c >> b/platform/linux- >> > generic/odp_classification.c >> > index eeb049a..7d09cce 100644 >> > --- a/platform/linux-generic/odp_classification.c >> > +++ b/platform/linux-generic/odp_classification.c >> > @@ -256,7 +256,7 @@ int odp_cos_set_drop(odp_cos_t cos_id, odp_drop_e >> > drop_policy) >> > return 0; >> > } >> > >> > -int odp_pktio_set_default_cos(odp_pktio_t pktio_in, odp_cos_t >> > default_cos) >> > +int odp_pktio_default_cos_set(odp_pktio_t pktio_in, odp_cos_t >> > default_cos) >> > { >> > pktio_entry_t *entry; >> > cos_t *cos; >> > @@ -275,7 +275,7 @@ int odp_pktio_set_default_cos(odp_pktio_t pktio_in, >> > odp_cos_t default_cos) >> > return 0; >> > } >> > >> > -int odp_pktio_set_error_cos(odp_pktio_t pktio_in, odp_cos_t error_cos) >> > +int odp_pktio_error_cos_set(odp_pktio_t pktio_in, odp_cos_t error_cos) >> > { >> > pktio_entry_t *entry; >> > cos_t *cos; >> > @@ -296,7 +296,7 @@ int odp_pktio_set_error_cos(odp_pktio_t pktio_in, >> > odp_cos_t error_cos) >> > return 0; >> > } >> > >> > -int odp_pktio_set_skip(odp_pktio_t pktio_in, size_t offset) >> > +int odp_pktio_skip_set(odp_pktio_t pktio_in, uint32_t offset) >> > { >> > pktio_entry_t *entry = get_pktio_entry(pktio_in); >> > if (entry == NULL) { >> > @@ -308,7 +308,7 @@ int odp_pktio_set_skip(odp_pktio_t pktio_in, size_t >> > offset) >> > return 0; >> > } >> > >> > -int odp_pktio_set_headroom(odp_pktio_t pktio_in, size_t headroom) >> > +int odp_pktio_headroom_set(odp_pktio_t pktio_in, uint32_t headroom) >> > { >> > pktio_entry_t *entry = get_pktio_entry(pktio_in); >> > if (entry == NULL) { >> > @@ -320,12 +320,12 @@ int odp_pktio_set_headroom(odp_pktio_t pktio_in, >> > size_t headroom) >> > } >> > >> > int odp_cos_with_l2_priority(odp_pktio_t pktio_in, >> > - size_t num_qos, >> > + uint8_t num_qos, >> > uint8_t qos_table[], >> > odp_cos_t cos_table[]) >> > { >> > pmr_l2_cos_t *l2_cos; >> > - size_t i; >> > + uint32_t i; >> > cos_t *cos; >> > pktio_entry_t *entry = get_pktio_entry(pktio_in); >> > if (entry == NULL) { >> > @@ -348,13 +348,13 @@ int odp_cos_with_l2_priority(odp_pktio_t pktio_in, >> > } >> > >> > int odp_cos_with_l3_qos(odp_pktio_t pktio_in, >> > - size_t num_qos, >> > + uint32_t num_qos, >> > uint8_t qos_table[], >> > odp_cos_t cos_table[], >> > - bool l3_preference) >> > + odp_bool_t l3_preference) >> > { >> > pmr_l3_cos_t *l3_cos; >> > - size_t i; >> > + uint32_t i; >> > pktio_entry_t *entry = get_pktio_entry(pktio_in); >> > cos_t *cos; >> > >> > @@ -382,7 +382,7 @@ int odp_cos_with_l3_qos(odp_pktio_t pktio_in, >> > odp_pmr_t odp_pmr_create_match(odp_pmr_term_e term, >> > const void *val, >> > const void *mask, >> > - size_t val_sz) >> > + uint32_t val_sz) >> > { >> > pmr_t *pmr; >> > odp_pmr_t id; >> > @@ -410,7 +410,7 @@ odp_pmr_t odp_pmr_create_match(odp_pmr_term_e term, >> > odp_pmr_t odp_pmr_create_range(odp_pmr_term_e term, >> > const void *val1, >> > const void *val2, >> > - size_t val_sz) >> > + uint32_t val_sz) >> > { >> > pmr_t *pmr; >> > odp_pmr_t id; >> > diff --git a/platform/linux-generic/odp_init.c b/platform/linux- >> > generic/odp_init.c >> > index 4d0aa07..77bfd09 100644 >> > --- a/platform/linux-generic/odp_init.c >> > +++ b/platform/linux-generic/odp_init.c >> > @@ -55,7 +55,7 @@ int odp_init_global(odp_init_t *params ODP_UNUSED, >> > return -1; >> > } >> > if (odp_classification_init_global()) { >> > - ODP_ERR("ODP crypto init failed.\n"); >> > + ODP_ERR("ODP classification init failed.\n"); >> > return -1; >> > } >> > >> > -- >> > 2.0.1.472.g6f92e5f >> > >> > >> > _______________________________________________ >> > lng-odp mailing list >> > lng-odp@lists.linaro.org >> > http://lists.linaro.org/mailman/listinfo/lng-odp >> >> _______________________________________________ >> lng-odp mailing list >> lng-odp@lists.linaro.org >> http://lists.linaro.org/mailman/listinfo/lng-odp >> > > >
diff --git a/platform/linux-generic/include/api/odp_classification.h b/platform/linux-generic/include/api/odp_classification.h index 4c9674b..46189bc 100644 --- a/platform/linux-generic/include/api/odp_classification.h +++ b/platform/linux-generic/include/api/odp_classification.h @@ -22,7 +22,6 @@ extern "C" { #include <odp_std_types.h> #include <odp_buffer_pool.h> #include <odp_packet.h> -#include <odp_packet_io.h> #include <odp_queue.h> /** @defgroup odp_classification ODP CLASSIFICATION @@ -30,11 +29,6 @@ extern "C" { * @{ */ -/** - * Class of service instance type - */ -typedef uint32_t odp_cos_t; - /** * flow signature type, only used for packet metadata field. @@ -95,7 +89,7 @@ odp_cos_t odp_cos_create(const char *name); * * @param[in] cos_id class-of-service instance. * - * @return 0 on success, -1 on error. + * @return 0 on success, non-zero on error. */ int odp_cos_destroy(odp_cos_t cos_id); @@ -108,7 +102,7 @@ int odp_cos_destroy(odp_cos_t cos_id); * of this specific class of service * will be enqueued. * - * @return 0 on success, -1 on error. + * @return 0 on success, non-zero on error. */ int odp_cos_set_queue(odp_cos_t cos_id, odp_queue_t queue_id); @@ -118,67 +112,13 @@ int odp_cos_set_queue(odp_cos_t cos_id, odp_queue_t queue_id); * @param[in] cos_id class-of-service instance. * @param[in] drop_policy Desired packet drop policy for this class. * - * @return 0 on success, -1 on error. + * @return 0 on success, non-zero on error. * * @note Optional. */ int odp_cos_set_drop(odp_cos_t cos_id, odp_drop_e drop_policy); /** - * Setup per-port default class-of-service. - * - * @param[in] pktio_in Ingress port identifier. - * @param[in] default_cos Class-of-service set to all packets arriving - * at the pktio_in ingress port, - * unless overridden by subsequent - * header-based filters. - * - * @return 0 on success, -1 on error. - */ -int odp_pktio_set_default_cos(odp_pktio_t pktio_in, odp_cos_t default_cos); - -/** - * Setup per-port error class-of-service - * - * @param[in] pktio_in Ingress port identifier. - * @param[in] error_cos class-of-service set to all packets arriving - * at the pktio_in ingress port - * that contain an error. - * - * @return 0 on success, -1 on error. - * - * @note Optional. - */ -int odp_pktio_set_error_cos(odp_pktio_t pktio_in, odp_cos_t error_cos); - -/** - * Setup per-port header offset - * - * @param[in] pktio_in Ingress port identifier. - * @param[in] offset Number of bytes the classifier must skip. - * - * @return 0 on success, -1 on error. - * @note Optional. - * - */ -int odp_pktio_set_skip(odp_pktio_t pktio_in, size_t offset); - -/** - * Specify per-port buffer headroom - * - * @param[in] pktio_in Ingress port identifier. - * @param[in] headroom Number of bytes of space preceding - * packet data to reserve for use as headroom. - * Must not exceed the implementation - * defined ODP_PACKET_MAX_HEADROOM. - * - * @return 0 on success, -1 on error. - * - * @note Optional. - */ -int odp_pktio_set_headroom(odp_pktio_t pktio_in, size_t headroom); - -/** * Request to override per-port class of service * based on Layer-2 priority field if present. * @@ -187,10 +127,10 @@ int odp_pktio_set_headroom(odp_pktio_t pktio_in, size_t headroom); * @param[in] qos_table Values of the Layer-2 QoS header field. * @param[in] cos_table Class-of-service assigned to each of the * allowed Layer-2 QOS levels. - * @return 0 on success, -1 on error. + * @return 0 on success, non-zero on error. */ int odp_cos_with_l2_priority(odp_pktio_t pktio_in, - size_t num_qos, + uint8_t num_qos, uint8_t qos_table[], odp_cos_t cos_table[]); @@ -206,15 +146,15 @@ int odp_cos_with_l2_priority(odp_pktio_t pktio_in, * @param[in] l3_preference when true, Layer-3 QoS overrides * L2 QoS when present. * - * @return 0 on success, -1 on error. + * @return 0 on success, non-zero on error. * * @note Optional. */ int odp_cos_with_l3_qos(odp_pktio_t pktio_in, - size_t num_qos, + uint32_t num_qos, uint8_t qos_table[], odp_cos_t cos_table[], - bool l3_preference); + odp_bool_t l3_preference); /** @@ -284,7 +224,7 @@ typedef enum odp_pmr_term { odp_pmr_t odp_pmr_create_match(odp_pmr_term_e term, const void *val, const void *mask, - size_t val_sz); + uint32_t val_sz); /** * Create a packet match rule with value range @@ -302,13 +242,13 @@ odp_pmr_t odp_pmr_create_match(odp_pmr_term_e term, odp_pmr_t odp_pmr_create_range(odp_pmr_term_e term, const void *val1, const void *val2, - size_t val_sz); + uint32_t val_sz); /** * Invalidate a packet match rule and vacate its resources * * @param[in] pmr_id Identifier of the PMR to be destroyed * - * @return 0 on success, -1 or error. + * @return 0 on success, non-zero or error. */ int odp_pmr_destroy(odp_pmr_t pmr_id); @@ -319,7 +259,7 @@ int odp_pmr_destroy(odp_pmr_t pmr_id); * @param[in] src_pktio pktio to which this PMR is to be applied * @param[in] dst_cos CoS to be assigned by this PMR * - * @return 0 on success, -1 or error. + * @return 0 on success, non-zero or error. */ int odp_pktio_pmr_cos(odp_pmr_t pmr_id, odp_pktio_t src_pktio, odp_cos_t dst_cos); @@ -332,7 +272,7 @@ int odp_pktio_pmr_cos(odp_pmr_t pmr_id, * @param[in] dst_cos CoS to be assigned to packets filtered * from src_cos that match pmr_id. * - * @return 0 on success, -1 on error. + * @return 0 on success, non-zero on error. */ int odp_cos_pmr_cos(odp_pmr_t pmr_id, odp_cos_t src_cos, odp_cos_t dst_cos); @@ -411,7 +351,7 @@ typedef uint32_t odp_pmr_set_t; * that have been successfully mapped to the * underlying platform classification engine and * may be in the range from 1 to num_terms, - * or -1 for error. + * or non-zero for error. */ int odp_pmr_match_set_create(int num_terms, odp_pmr_match_t *terms, odp_pmr_set_t *pmr_set_id); @@ -429,7 +369,7 @@ int odp_pmr_match_set_create(int num_terms, odp_pmr_match_t *terms, * @param[in] pmr_set_id A composite rule-set handle * returned when created. * - * @return 0 on success, -1 on error. + * @return 0 on success, non-zero on error. */ int odp_pmr_match_set_destroy(odp_pmr_set_t pmr_set_id); @@ -441,7 +381,7 @@ int odp_pmr_match_set_destroy(odp_pmr_set_t pmr_set_id); * set is to be applied * @param[in] dst_cos CoS to be assigned by this PMR match set * - * @return 0 on success, -1 or error. + * @return 0 on success, non-zero or error. */ int odp_pktio_pmr_match_set_cos(odp_pmr_set_t pmr_set_id, odp_pktio_t src_pktio, odp_cos_t dst_cos); diff --git a/platform/linux-generic/include/api/odp_packet_io.h b/platform/linux-generic/include/api/odp_packet_io.h index 0c34f29..4835f4d 100644 --- a/platform/linux-generic/include/api/odp_packet_io.h +++ b/platform/linux-generic/include/api/odp_packet_io.h @@ -169,6 +169,61 @@ size_t odp_pktio_mac_addr(odp_pktio_t id, void *mac_addr, size_t addr_size); /** + * Setup per-port default class-of-service. + * + * @param[in] pktio_in Ingress port identifier. + * @param[in] default_cos Class-of-service set to all packets arriving + * at the pktio_in ingress port, + * unless overridden by subsequent + * header-based filters. + * + * @return 0 on success, non-zero on error. + */ +int odp_pktio_default_cos_set(odp_pktio_t pktio_in, odp_cos_t default_cos); + +/** + * Setup per-port error class-of-service + * + * @param[in] pktio_in Ingress port identifier. + * @param[in] error_cos class-of-service set to all packets arriving + * at the pktio_in ingress port + * that contain an error. + * + * @return 0 on success, non-zero on error. + * + * @note Optional. + */ +int odp_pktio_error_cos_set(odp_pktio_t pktio_in, odp_cos_t error_cos); + +/** + * Setup per-port header offset + * + * @param[in] pktio_in Ingress port identifier. + * @param[in] offset Number of bytes the classifier must skip. + * + * @return 0 on success, non-zero on error. + * @note Optional. + * + */ +int odp_pktio_skip_set(odp_pktio_t pktio_in, uint32_t offset); + +/** + * Specify per-port buffer headroom + * + * @param[in] pktio_in Ingress port identifier. + * @param[in] headroom Number of bytes of space preceding + * packet data to reserve for use as headroom. + * Must not exceed the implementation + * defined ODP_PACKET_MAX_HEADROOM. + * + * @return 0 on success, non-zero on error. + * + * @note Optional. + */ +int odp_pktio_headroom_set(odp_pktio_t pktio_in, uint32_t headroom); + + +/** * @} */ diff --git a/platform/linux-generic/include/api/odp_platform_types.h b/platform/linux-generic/include/api/odp_platform_types.h index 0a00219..6ed9e78 100644 --- a/platform/linux-generic/include/api/odp_platform_types.h +++ b/platform/linux-generic/include/api/odp_platform_types.h @@ -74,6 +74,9 @@ typedef uint32_t odp_shm_t; #define ODP_SHM_INVALID 0 #define ODP_SHM_NULL ODP_SHM_INVALID /**< Synonym for buffer pool use */ +/** ODP Class of service handle */ +typedef uint32_t odp_cos_t; + /** * @} */ diff --git a/platform/linux-generic/odp_classification.c b/platform/linux-generic/odp_classification.c index eeb049a..7d09cce 100644 --- a/platform/linux-generic/odp_classification.c +++ b/platform/linux-generic/odp_classification.c @@ -256,7 +256,7 @@ int odp_cos_set_drop(odp_cos_t cos_id, odp_drop_e drop_policy) return 0; } -int odp_pktio_set_default_cos(odp_pktio_t pktio_in, odp_cos_t default_cos) +int odp_pktio_default_cos_set(odp_pktio_t pktio_in, odp_cos_t default_cos) { pktio_entry_t *entry; cos_t *cos; @@ -275,7 +275,7 @@ int odp_pktio_set_default_cos(odp_pktio_t pktio_in, odp_cos_t default_cos) return 0; } -int odp_pktio_set_error_cos(odp_pktio_t pktio_in, odp_cos_t error_cos) +int odp_pktio_error_cos_set(odp_pktio_t pktio_in, odp_cos_t error_cos) { pktio_entry_t *entry; cos_t *cos; @@ -296,7 +296,7 @@ int odp_pktio_set_error_cos(odp_pktio_t pktio_in, odp_cos_t error_cos) return 0; } -int odp_pktio_set_skip(odp_pktio_t pktio_in, size_t offset) +int odp_pktio_skip_set(odp_pktio_t pktio_in, uint32_t offset) { pktio_entry_t *entry = get_pktio_entry(pktio_in); if (entry == NULL) { @@ -308,7 +308,7 @@ int odp_pktio_set_skip(odp_pktio_t pktio_in, size_t offset) return 0; } -int odp_pktio_set_headroom(odp_pktio_t pktio_in, size_t headroom) +int odp_pktio_headroom_set(odp_pktio_t pktio_in, uint32_t headroom) { pktio_entry_t *entry = get_pktio_entry(pktio_in); if (entry == NULL) { @@ -320,12 +320,12 @@ int odp_pktio_set_headroom(odp_pktio_t pktio_in, size_t headroom) } int odp_cos_with_l2_priority(odp_pktio_t pktio_in, - size_t num_qos, + uint8_t num_qos, uint8_t qos_table[], odp_cos_t cos_table[]) { pmr_l2_cos_t *l2_cos; - size_t i; + uint32_t i; cos_t *cos; pktio_entry_t *entry = get_pktio_entry(pktio_in); if (entry == NULL) { @@ -348,13 +348,13 @@ int odp_cos_with_l2_priority(odp_pktio_t pktio_in, } int odp_cos_with_l3_qos(odp_pktio_t pktio_in, - size_t num_qos, + uint32_t num_qos, uint8_t qos_table[], odp_cos_t cos_table[], - bool l3_preference) + odp_bool_t l3_preference) { pmr_l3_cos_t *l3_cos; - size_t i; + uint32_t i; pktio_entry_t *entry = get_pktio_entry(pktio_in); cos_t *cos; @@ -382,7 +382,7 @@ int odp_cos_with_l3_qos(odp_pktio_t pktio_in, odp_pmr_t odp_pmr_create_match(odp_pmr_term_e term, const void *val, const void *mask, - size_t val_sz) + uint32_t val_sz) { pmr_t *pmr; odp_pmr_t id; @@ -410,7 +410,7 @@ odp_pmr_t odp_pmr_create_match(odp_pmr_term_e term, odp_pmr_t odp_pmr_create_range(odp_pmr_term_e term, const void *val1, const void *val2, - size_t val_sz) + uint32_t val_sz) { pmr_t *pmr; odp_pmr_t id; diff --git a/platform/linux-generic/odp_init.c b/platform/linux-generic/odp_init.c index 4d0aa07..77bfd09 100644 --- a/platform/linux-generic/odp_init.c +++ b/platform/linux-generic/odp_init.c @@ -55,7 +55,7 @@ int odp_init_global(odp_init_t *params ODP_UNUSED, return -1; } if (odp_classification_init_global()) { - ODP_ERR("ODP crypto init failed.\n"); + ODP_ERR("ODP classification init failed.\n"); return -1; }
The following APIs are setting parameters to pktio handle and are hence moved from classification header to pktio header file. odp_pktio_default_cos_set() odp_pktio_error_cos_set() odp_pktio_skip_set() odp_pktio_headroom_set() This patch also modifies the error return values in API description from -1 to non-zero value Signed-off-by: Balasubramanian Manoharan <bala.manoharan@linaro.org> --- .../linux-generic/include/api/odp_classification.h | 92 ++++------------------ platform/linux-generic/include/api/odp_packet_io.h | 55 +++++++++++++ .../linux-generic/include/api/odp_platform_types.h | 3 + platform/linux-generic/odp_classification.c | 22 +++--- platform/linux-generic/odp_init.c | 2 +- 5 files changed, 86 insertions(+), 88 deletions(-)