Okay. I will incorporate these changes in the next version. Regards, Bala
On 28 January 2016 at 20:31, Savolainen, Petri (Nokia - FI/Espoo) <petri.savolai...@nokia.com> wrote: > > This is otherwise OK (and exactly the feature I was missing in the call > yesterday), but I'm wondering the benefit of having both odp_pmr_set_t and > odp_pmr_t types. API would be simpler with only one type. > > To me odp_pmr_t is a odp_pmr_set_t with only one matching rule in it, right? > We could get rid of odp_pmr_set_t (use only odp_pmr_t since it's a shorter > name) and define that a odp_pmr_t can be build from N cascaded match rules. > > > odp_pmr_t odp_cls_pmr_create(const odp_pmr_match_t match[], unsigned num, > odp_cos_t src_cos, odp_cos_t dst_cos); > > Maximum 'num' value could be defined in a capability struct (a conservative > system could define 1), with potential other constrains on the tree > dimensions (max num pmr's per cos, etc). > > > -Petri > > > >> -----Original Message----- >> From: EXT Balasubramanian Manoharan [mailto:bala.manoha...@linaro.org] >> Sent: Friday, January 22, 2016 1:54 PM >> To: lng-odp@lists.linaro.org >> Cc: Savolainen, Petri (Nokia - FI/Espoo); Balasubramanian Manoharan >> Subject: [API-NEXT PATCHv1 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. >> >> Signed-off-by: Balasubramanian Manoharan <bala.manoha...@linaro.org> >> --- >> include/odp/api/classification.h | 74 +++++++++++++---------------------- >> ----- >> 1 file changed, 24 insertions(+), 50 deletions(-) >> >> diff --git a/include/odp/api/classification.h >> b/include/odp/api/classification.h >> index f46912e..59bd01d 100644 >> --- a/include/odp/api/classification.h >> +++ b/include/odp/api/classification.h >> @@ -50,7 +50,7 @@ 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. >> */ >> >> @@ -286,50 +286,33 @@ 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. >> * >> * @param[in] match packet matching rule definition >> + * @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 >> */ >> -odp_pmr_t odp_pmr_create(const odp_pmr_match_t *match); >> - >> +odp_pmr_t odp_cls_pmr_create(const odp_pmr_match_t *match, 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. >> * >> * @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 >> @@ -357,19 +340,24 @@ unsigned odp_pmr_terms_avail(void); >> * of value match rules, and the application should take care >> * of inspecting the return value when installing such rules, and perform >> * appropriate fallback action. >> + * This is same as odp_cls_pmr_create() except that it creates the link >> + * using pmr match set instead of a single PMR. >> * >> * @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. >> + * @param[in] src_cos source CoS handle >> + * @param[in] dst_cos destination CoS handle >> * >> * @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); >> +int odp_cls_pmr_match_set_create(int num_terms, const odp_pmr_match_t >> *terms, >> + odp_pmr_set_t *pmr_set_id, odp_cos_t src_cos, >> + odp_cos_t dst_cos); >> >> /** >> * Function to delete a composite packet match rule set >> @@ -378,7 +366,7 @@ int odp_pmr_match_set_create(int num_terms, const >> odp_pmr_match_t *terms, >> * 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 >> + * class of service will be released, but the class of service will >> * remain intact. >> * >> * @param[in] pmr_set_id A composite rule-set handle >> @@ -387,21 +375,7 @@ int odp_pmr_match_set_create(int num_terms, const >> odp_pmr_match_t *terms, >> * @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); >> +int odp_cls_pmr_match_set_destroy(odp_pmr_set_t pmr_set_id); >> >> /** >> * Assigns a packet pool for a specific class of service. >> -- >> 1.9.1 > _______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp