On Thu, Mar 23, 2017 at 06:51:07PM +0000, Eads, Gage wrote:
> Hi Jerin,

Hi Gage,

> 
> <snip>
> 
> >  +force_inline uint16_t __hot
> >  +ssows_deq_timeout(void *port, struct rte_event *ev, uint64_t
> >  +timeout_ticks) {
> >  +  struct ssows *ws = port;
> >  +  uint64_t iter;
> >  +  uint16_t ret = 1;
> >  +
> >  +  ssows_swtag_wait(ws);
> >  +  if (ws->swtag_req) {
> >  +          ws->swtag_req = 0;
> >  +  } else {
> >  +          ret = ssows_get_work(ws, ev);
> >  +          for (iter = 1; iter < timeout_ticks && (ret == 0); iter++)
> >  +                  ret = ssows_get_work(ws, ev);
> >  +  }
> >  +  return ret;
> >  +}
> 
> If I understand this correctly, each ssows_get_work() call will wait up to N 
> ns, where N is the dequeue_timeout_ns value supplied to 
> ssovf_mbox_getwork_tmo_set() in ssovf_configure().
> 
> So in ssows_deq_timeout, the wait time is (worst case) timeout_ticks * (N * 
> (ns to tick conversion factor)) ticks, which depends on the user-supplied N 
> at eventdev configuration time.
> 
> Perhaps in ssovf_configure, if the RTE_EVENT_DEV_CFG_PER_DEQUEUE_TIMEOUT flag 
> is used, the getwork timeout should be set to 1 tick?

I agree. That will improve the timeout accuracy.I will change to
ssovf_mbox_getwork_tmo_set(conf->min_dequeue_timeout_ns) in
ssovf_configure if RTE_EVENT_DEV_CFG_PER_DEQUEUE_TIMEOUT flag is set.

Thanks

> Thanks,
> Gage

Reply via email to