> On 23 May 2017, at 15:04, Peltonen, Janne (Nokia - FI/Espoo) > <[email protected]> wrote: > > >> -----Original Message----- >> From: lng-odp [mailto:[email protected]] On Behalf Of Matias >> Elo >> Sent: Monday, May 22, 2017 12:39 PM >> To: [email protected] >> Subject: [lng-odp] [PATCH] linux-gen: sched: fix ordered enqueue to pktout >> queue >> >> Make sure packet order is maintained if enqueueing packets from an ordered >> queue. >> >> Fixes https://bugs.linaro.org/show_bug.cgi?id=3002 >> >> Signed-off-by: Matias Elo <[email protected]> >> --- >> platform/linux-generic/odp_packet_io.c | 8 ++++++++ >> platform/linux-generic/odp_queue.c | 1 + >> platform/linux-generic/odp_schedule.c | 5 ++++- >> platform/linux-generic/odp_schedule_iquery.c | 5 ++++- >> 4 files changed, 17 insertions(+), 2 deletions(-) >> >> diff --git a/platform/linux-generic/odp_packet_io.c b/platform/linux- >> generic/odp_packet_io.c >> index 98460a5..7e45c63 100644 >> --- a/platform/linux-generic/odp_packet_io.c >> +++ b/platform/linux-generic/odp_packet_io.c >> @@ -586,6 +586,10 @@ int pktout_enqueue(queue_entry_t *qentry, >> odp_buffer_hdr_t *buf_hdr) >> int len = 1; >> int nbr; >> >> + if (sched_fn->ord_enq_multi(qentry->s.index, (void **)buf_hdr, len, >> + &nbr)) >> + return nbr; >> + > > The return value is not right here. If the ord_enq_multi() returns 1, > the packet was successfully enqueued and odp_queue_enq() should return 0, > not 1. > > After this patch the default scheduler always returns 0 in this case so > the branch is never taken and the bug is not exposed. > >> nbr = odp_pktout_send(qentry->s.pktout, &pkt, len); >> return (nbr == len ? 0 : -1); >> }
Good catch, will fix. -Matias
