On 04/17/2015 03:04 PM, Radu-Andrei Bulie wrote:
"Not exactly. Each PMR has only one input and one output CoSes.
But CoS can have multiple input and output PMRs.
So (cos1, cos3) may have several PMRs which connects them."


Maybe I didn't understand; how is possible to go from a cos to multiple pmrs?
A cos is a decision point. You may have a queue , a queue group or it may 
direct the traffic to a pmr.(this is the chaining case, when the cos acts not 
as a target but as a link point)

With a current API you can do:

   pmr1 = odp_pmr_create_match(x..);
   pmr2 = odp_pmr_create_match(y..);
   odp_cos_pmr_cos(pmr1, cos1, cos2);
   odp_cos_pmr_cos(pmr2, cos1, cos2);

After a proposed change code will be slightly different, but the basic
idea is the same: there are two PMRs connected between cos1 and cos2

   pmr1 = odp_pmr_create_match(x.., cos1, cos2);
   pmr2 = odp_pmr_create_match(y.., cos1, cos2);


I think we have different understanding of a basic terminology.
It seems there is no original Classification design document on
opendataplane.org any more. Let me try to describe my view.

Result of classification process is an assignment of Class of Service
to a packet. So CoS is a destination (final or intermediate), but not a
decision point. CoS doesn't decide to which PMRs packets is 'pushed'
next. Instead PMRs 'pull' packet from source CoS to destination CoS if
packet matches a rule. That is not necessary how it works it HW, but
rather my mental model of the process.

Maybe Leo can clarify it.
_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to