diff options
author | Florin Coras <fcoras@cisco.com> | 2018-10-12 13:09:36 -0700 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2018-10-14 10:49:03 +0000 |
commit | 795539326b2224e80940ad381a865ea103c777d1 (patch) | |
tree | edd3e03f868be914804ce21bcccd2d1f77688136 /src | |
parent | 02a60e01a71660d17a6578e8f35f468d5b6532cb (diff) |
vcl: fix empty epoll returns (VPP-1453)
Change-Id: I0b191ddb749b1aa132c2d33b8359c146b36d27af
Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/vcl/vppcom.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/vcl/vppcom.c b/src/vcl/vppcom.c index 3f12b86df42..df4ebde72eb 100644 --- a/src/vcl/vppcom.c +++ b/src/vcl/vppcom.c @@ -2508,6 +2508,7 @@ vppcom_epoll_wait_eventfd (vcl_worker_t * wrk, struct epoll_event *events, u64 buf; vec_validate (wrk->mq_events, pool_elts (wrk->mq_evt_conns)); +again: n_mq_evts = epoll_wait (wrk->mqs_epfd, wrk->mq_events, vec_len (wrk->mq_events), wait_for_time); for (i = 0; i < n_mq_evts; i++) @@ -2516,6 +2517,8 @@ vppcom_epoll_wait_eventfd (vcl_worker_t * wrk, struct epoll_event *events, n_read = read (mqc->mq_fd, &buf, sizeof (buf)); vcl_epoll_wait_handle_mq (wrk, mqc->mq, events, maxevents, 0, &n_evts); } + if (!n_evts && n_mq_evts > 0) + goto again; return (int) n_evts; } |