Reviewed-by: Petri Savolainen <[email protected]>
> -----Original Message----- > From: EXT Balasubramanian Manoharan [mailto:[email protected]] > Sent: Tuesday, February 02, 2016 4:08 PM > To: [email protected] > Cc: Savolainen, Petri (Nokia - FI/Espoo); Balasubramanian Manoharan > Subject: [API-NEXT PATCHv3 1/4] api: classification: add pmr create api > > Packet match rule creation is modified to include source and destination > class of service. Removes the ability to add any class of service directly > with pktio. If a PMR needs to be applied at the pktio level the same > should be applied to default class of service. > > Packet match rule destroy function is updated to removes the link between > the source and destination class of service. > > odp_pmr_match_set_t handle is removed and pmr create function is modified > to take number of terms and composite rule is created by providing more > than one term. > > Signed-off-by: Balasubramanian Manoharan <[email protected]> > --- > v3: Incorporate review comments from Petri > v2: remove pmr match set api > > include/odp/api/classification.h | 140 +++++++++------------------------- > ----- > 1 file changed, 30 insertions(+), 110 deletions(-) > > diff --git a/include/odp/api/classification.h > b/include/odp/api/classification.h > index f46912e..076b3de 100644 > --- a/include/odp/api/classification.h > +++ b/include/odp/api/classification.h > @@ -50,16 +50,11 @@ extern "C" { > /** > * @def ODP_PMR_INVAL > * Invalid odp_pmr_t value. > - * This value is returned from odp_pmr_create() > + * This value is returned from odp_cls_pmr_create() > * function on failure. > */ > > /** > - * @def ODP_PMR_SET_INVAL > - * Invalid odp_pmr_set_t value. > - */ > - > -/** > * class of service packet drop policies > */ > typedef enum { > @@ -286,50 +281,46 @@ typedef struct odp_pmr_match_t { > } odp_pmr_match_t; > > /** > - * Create a packet match rule with mask and value > + * Create a packet match rule between source and destination class of > service. > + * This packet matching rule is applied on all packets arriving at the > source > + * class of service and packets satisfying this PMR are sent to the > destination > + * class of service. > + * A composite PMR rule is created when the number of terms in the match > rule > + * is more than one. The composite rule is considered as matching only if > + * the packet satisfies all the terms in Packet Match Rule. > + * The underlying platform may not support all or any specific > combination > + * of value match rules, and the application should take care > + * of inspecting the return value when installing such rules, and perform > + * appropriate fallback action. > * > - * @param[in] match packet matching rule definition > + * @param[in] terms Array of odp_pmr_match_t entries, one > entry > per > + * term desired. > + * @param[in] num_terms Number of terms in the match rule. > + * @param[in] src_cos source CoS handle > + * @param[in] dst_cos destination CoS handle > * > - * @return Handle of the matching rule > - * @retval ODP_PMR_INVAL on failure > + * @return Handle to the Packet Match Rule. > + * @retval ODP_PMR_INVAL on failure > */ > -odp_pmr_t odp_pmr_create(const odp_pmr_match_t *match); > +odp_pmr_t odp_cls_pmr_create(const odp_pmr_match_t *terms, int num_terms, > + odp_cos_t src_cos, odp_cos_t dst_cos); > > /** > - * Invalidate a packet match rule and vacate its resources > + * Function to destroy a packet match rule > + * Destroying a PMR removes the link between the source and destination > + * class of service and this PMR will no longer be applied for packets > arriving > + * at the source class of service. All the resource associated with the > PMR > + * be release but the class of service will remain intact. > + * Depending on the implementation details, destroying a composite rule > + * may not guarantee the availability of hardware resources to create the > + * same or essentially similar rule. > * > * @param[in] pmr_id Identifier of the PMR to be destroyed > * > * @retval 0 on success > * @retval <0 on failure > */ > -int odp_pmr_destroy(odp_pmr_t pmr_id); > - > -/** > - * Apply a PMR to a pktio to assign a CoS. > - * > - * @param[in] pmr_id PMR to be activated > - * @param[in] src_pktio pktio to which this PMR is to be applied > - * @param[in] dst_cos CoS to be assigned by this PMR > - * > - * @retval 0 on success > - * @retval <0 on failure > - */ > -int odp_pktio_pmr_cos(odp_pmr_t pmr_id, > - odp_pktio_t src_pktio, odp_cos_t dst_cos); > - > -/** > - * Cascade a PMR to refine packets from one CoS to another. > - * > - * @param[in] pmr_id PMR to be activated > - * @param[in] src_cos CoS to be filtered > - * @param[in] dst_cos CoS to be assigned to packets filtered > - * from src_cos that match pmr_id. > - * > - * @retval 0 on success > - * @retval <0 on failure > - */ > -int odp_cos_pmr_cos(odp_pmr_t pmr_id, odp_cos_t src_cos, odp_cos_t > dst_cos); > +int odp_cls_pmr_destroy(odp_pmr_t pmr_id); > > /** > * Inquire about matching terms supported by the classifier > @@ -346,64 +337,6 @@ unsigned long long odp_pmr_terms_cap(void); > unsigned odp_pmr_terms_avail(void); > > /** > - * @typedef odp_pmr_set_t > - * An opaque handle to a composite packet match rule-set > - */ > - > -/** > - * Create a composite packet match rule in the form of an array of > individual > - * match rules. > - * The underlying platform may not support all or any specific > combination > - * of value match rules, and the application should take care > - * of inspecting the return value when installing such rules, and perform > - * appropriate fallback action. > - * > - * @param[in] num_terms Number of terms in the match rule. > - * @param[in] terms Array of num_terms entries, one entry > per > - * term desired. > - * @param[out] pmr_set_id Returned handle to the composite rule > set. > - * > - * @return the number of terms elements > - * that have been successfully mapped to the > - * underlying platform classification engine > - * @retval <0 on failure > - */ > -int odp_pmr_match_set_create(int num_terms, const odp_pmr_match_t *terms, > - odp_pmr_set_t *pmr_set_id); > - > -/** > - * Function to delete a composite packet match rule set > - * Depending on the implementation details, destroying a rule-set > - * may not guarantee the availability of hardware resources to create the > - * same or essentially similar rule-set. > - * > - * All of the resources pertaining to the match set associated with the > - * class-of-service will be released, but the class-of-service will > - * remain intact. > - * > - * @param[in] pmr_set_id A composite rule-set handle > - * returned when created. > - * > - * @retval 0 on success > - * @retval <0 on failure > - */ > -int odp_pmr_match_set_destroy(odp_pmr_set_t pmr_set_id); > - > -/** > - * Apply a PMR Match Set to a pktio to assign a CoS. > - * > - * @param[in] pmr_set_id PMR match set to be activated > - * @param[in] src_pktio pktio to which this PMR match > - * set is to be applied > - * @param[in] dst_cos CoS to be assigned by this PMR match > set > - * > - * @retval 0 on success > - * @retval <0 on failure > - */ > -int odp_pktio_pmr_match_set_cos(odp_pmr_set_t pmr_set_id, odp_pktio_t > src_pktio, > - odp_cos_t dst_cos); > - > -/** > * Assigns a packet pool for a specific class of service. > * All the packets belonging to the given class of service will > * be allocated from the assigned packet pool. > @@ -456,19 +389,6 @@ uint64_t odp_cos_to_u64(odp_cos_t hdl); > uint64_t odp_pmr_to_u64(odp_pmr_t hdl); > > /** > - * Get printable value for an odp_pmr_set_t > - * > - * @param hdl odp_pmr_set_t handle to be printed > - * @return uint64_t value that can be used to print/display this > - * handle > - * > - * @note This routine is intended to be used for diagnostic purposes > - * to enable applications to generate a printable value that represents > - * an odp_pmr_set_t handle. > - */ > -uint64_t odp_pmr_set_to_u64(odp_pmr_set_t hdl); > - > -/** > * @} > */ > > -- > 1.9.1 _______________________________________________ lng-odp mailing list [email protected] https://lists.linaro.org/mailman/listinfo/lng-odp
