> -----Original Message----- > From: EXT Balasubramanian Manoharan [mailto:[email protected]] > Sent: Monday, February 01, 2016 2:56 PM > To: [email protected] > Cc: Savolainen, Petri (Nokia - FI/Espoo); Balasubramanian Manoharan > Subject: [API-NEXT PATCHv2 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]> > --- > v2: removes pmr match set > > include/odp/api/classification.h | 142 ++++++++++------------------------ > ----- > 1 file changed, 35 insertions(+), 107 deletions(-) > > diff --git a/include/odp/api/classification.h > b/include/odp/api/classification.h > index f46912e..263ea7c 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,54 @@ 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] num_terms Number of terms in the match rule. > + * @param[in] terms Array of odp_pmr_match_t entries, one > entry > per > + * term desired. > + * @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 > + * @retval Hanlde to the Packet Match Rule.
Typo ^^^^^^ Use @return instead of @retval, when the value is not predefined (a valid handle). > + * @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(int num_terms, const odp_pmr_match_t *terms, > + odp_cos_t src_cos, odp_cos_t dst_cos); To match similar function prototypes in other APIs (e.g. xxx_multi()): - first the table as an array - then number of elements in the array 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); For example, it's easier to understand what "1" (or num) stands for when defined like this ... odp_cls_pmr_create(terms, 1, src_cos, dst_cos); ... instead of this. odp_cls_pmr_create(1, terms, src_cos, 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); > +int odp_cls_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 > +/* Return the maximum number of packet matching terms supported for > + * a Packet match rule. > * > - * @retval 0 on success > - * @retval <0 on failure > + * @param[out] Maximum number of packet matching terms per > + * PMR rule. > */ > -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_num_terms(void); I think we could leave this out from this patch set, and introduce odp_cls_capability_t and related function in another series. The capability struct should include: - this maximum num terms in pmr - may be also maximum total number of odp_cos_t and odp_pmr_t - Supported number of terms and actual terms as a bit field structure. Which would make odp_pmr_terms_avail() and odp_pmr_terms_cap() redundant. - max (root) pmrs per pktio -Petri > > /** > * Inquire about matching terms supported by the classifier > @@ -346,64 +345,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 +397,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
