Reviewed-by: Petri Savolainen <[email protected]> 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: [email protected] [mailto:lng-odp- > [email protected]] On Behalf Of ext Balasubramanian Manoharan > Sent: Wednesday, January 14, 2015 8:05 AM > To: [email protected] > 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 <[email protected]> > --- > .../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, > 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 > [email protected] > http://lists.linaro.org/mailman/listinfo/lng-odp _______________________________________________ lng-odp mailing list [email protected] http://lists.linaro.org/mailman/listinfo/lng-odp
