Jerrin, Can you propose such a set of APIs for further discussion? This would be good to discuss at the Tuesday call.
Thanks. Bill On Fri, May 8, 2015 at 12:07 AM, Jacob, Jerin < jerin.ja...@caviumnetworks.com> wrote: > > I agree with Ola here on preserving the ingress order. > However, I have experienced same performance issue as Nikhil pointed out > (atomic queues have too much overhead for short critical section) > > I am not sure about any other HW but Cavium has support for > introducing the critical section while maintain the ingress order as a HW > scheduler feature. > > IMO, if such support is available in other HW then > odp_schedule_ordered_lock()/unlock() > kind of API will solve the performance issue for the need for short > critical section in ordered flow. > > /Jerin. > > > From: lng-odp <lng-odp-boun...@lists.linaro.org> on behalf of Ola > Liljedahl <ola.liljed...@linaro.org> > Sent: Thursday, May 7, 2015 9:06 PM > To: nikhil.agar...@freescale.com > Cc: lng-odp@lists.linaro.org > Subject: Re: [lng-odp] Query regarding sequence number update in IPSEC > application > > > Using atomic queues will preserve the ingress order when allocating and > assigning the sequence number. Also you don't need to use an expensive > atomic operation for updating the sequence number as the atomic queue and > scheduling will provide mutual exclusion. > > > If the packets that require a sequence number came from parallel or > ordered queues, there would be no guarantee that the sequence numbers would > be allocated in packet (ingress) order. Just using an atomic operation > (e.g. fetch_and_add or similar) only guarantees proper update of the > sequence number variable, not any specific ordering. > > > If you are ready to trade absolute "correctness" for performance, you > could use ordered or may even parallel (questionable for other reasons) > queues and then allocate the sequence number using an atomic fetch_and_add. > Sometimes packets egress order will then not match the sequence number > order (for a flow/SA). For IPSec, this might affect the replay window check > & update at the receiving end but as the replay protection uses a sliding > window of sequence numbers (to handle misordered packets), there might not > be any adverse effects in practice. The most important aspect is probably > to preserve original packet order. > > > -- Ola > > > On 6 May 2015 at 11:29, nikhil.agar...@freescale.com < > nikhil.agar...@freescale.com> wrote: > > > Hi, > > In IPSEC example application, queues are used to update the sequence > number. I was wondering why we have used queues to update sequence number > which will add to scheduling delays and adversely hit the performance > throughput. Is there any specific advantage of using queues over atomic > variables. > > Thanks in advance > Nikhil > > > _______________________________________________ > lng-odp mailing list > lng-odp@lists.linaro.org > https://lists.linaro.org/mailman/listinfo/lng-odp > > > > _______________________________________________ > lng-odp mailing list > lng-odp@lists.linaro.org > https://lists.linaro.org/mailman/listinfo/lng-odp >
_______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp