On 23/05/2017, 16:49, "Peltonen, Janne (Nokia - FI/Espoo)" <janne.pelto...@nokia.com> wrote:
> >> +static int ord_enq_multi(uint32_t queue_index, void *p_buf_hdr[], >> + int num, int *ret) >> +{ >> + (void)queue_index; >> + (void)p_buf_hdr; >> + (void)num; >> + (void)ret; >> + return 0; >> +} > >How is packet order maintained when enqueuing packets read from an ordered >queue to a pktout queue? Matias' recent fix uses the ord_enq_multi >scheduler >function for that, but this version does not do any ordering. Or is the >ordering guaranteed by some other means? The scalable scheduler standard queue enqueue function also handles ordered queues. odp_queue_scalable.c can refer to the same thread-specific data as odp_schedule_scalable.c so we donĀ¹t need this internal interface. We could perhaps adapt the code to use this interface but I think this interface is just an artefact of the implementation of the default queues/scheduler. > >> +static void order_lock(void) >> +{ >> +} >> + >> +static void order_unlock(void) >> +{ >> +} > >Is it ok that these are no-ops? tm_enqueue() seems to use these. No these ought to be implemented. We have fixed that now. Thanks. -- Ola Ola Liljedahl, Networking System Architect, ARM Phone: +46 706 866 373 Skype: ola.liljedahl > >> + >> +const schedule_fn_t schedule_scalable_fn = { >> + .pktio_start = pktio_start, >> + .thr_add = thr_add, >> + .thr_rem = thr_rem, >> + .num_grps = num_grps, >> + .init_queue = init_queue, >> + .destroy_queue = destroy_queue, >> + .sched_queue = sched_queue, >> + .ord_enq_multi = ord_enq_multi, >> + .init_global = schedule_init_global, >> + .term_global = schedule_term_global, >> + .init_local = schedule_init_local, >> + .term_local = schedule_term_local, >> + .order_lock = order_lock, >> + .order_unlock = order_unlock, >> +}; > > Janne > >