The question of contexts for stateful classification was discussed last
July. <https://lists.linaro.org/pipermail/lng-odp/2015-July/012769.html>
We can discuss this further during tomorrow's public call to see if we want
to pursue this for Monarch or if it should be considered a post-Monarch
item.

On Fri, Jan 22, 2016 at 9:47 AM, Ivan Khoronzhuk <[email protected]
> wrote:

> + list
>
> On 22.01.16 17:46, Ivan Khoronzhuk wrote:
>
>> It discussed several times when started to look at it and Bill proposed
>> to add some cls environment.
>> Finally, it's sent. After this change PMR is created while connection to
>> CoSes,
>> and it's eliminates ability to connect the same PMR to several CoSes
>> (which may arise questions...),
>> and maps PMR handle directly to physical rule. It greatly simplifies life
>> for implementors.
>>
>>
>>
>> On 22.01.16 13:54, Balasubramanian Manoharan wrote:
>>
>>> 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 <[email protected]>
>>> ---
>>>   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.
>>>
>>>
>>
> --
> Regards,
> Ivan Khoronzhuk
>
> _______________________________________________
> lng-odp mailing list
> [email protected]
> https://lists.linaro.org/mailman/listinfo/lng-odp
>
_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to