diff options
| author | Vincenzo Maffione <vmaffione@FreeBSD.org> | 2018-12-22 15:15:45 +0000 |
|---|---|---|
| committer | Vincenzo Maffione <vmaffione@FreeBSD.org> | 2018-12-22 15:15:45 +0000 |
| commit | e1ed1fbdea19659120d372dcdc7c13060c823e2b (patch) | |
| tree | a3db72525bdbed3b85f44fb9b5e70d7aaaf919ad /sys/dev/netmap/netmap.c | |
| parent | 8ebaf584500b257ed5e471c5b2b1891dede5d72c (diff) | |
Notes
Diffstat (limited to 'sys/dev/netmap/netmap.c')
| -rw-r--r-- | sys/dev/netmap/netmap.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/dev/netmap/netmap.c b/sys/dev/netmap/netmap.c index a6af3d3eebdc..b51c0300493d 100644 --- a/sys/dev/netmap/netmap.c +++ b/sys/dev/netmap/netmap.c @@ -3304,16 +3304,19 @@ netmap_poll(struct netmap_priv_d *priv, int events, NM_SELRECORD_T *sr) } if (want_rx) { enum txrx t = NR_RX; - want_rx = 0; /* look for a reason to run the handlers */ + int rxsync_needed = 0; + + /* look for a reason to run the handlers */ for (i = priv->np_qfirst[t]; i < priv->np_qlast[t]; i++) { kring = NMR(na, t)[i]; if (kring->ring->cur == kring->ring->tail /* try fetch new buffers */ || kring->rhead != kring->ring->head /* release buffers */) { - want_rx = 1; + rxsync_needed = 1; + break; } } - if (!want_rx) - revents |= events & (POLLIN | POLLRDNORM); /* we have data */ + if (!rxsync_needed) + revents |= want_rx; /* we have data */ } #endif |
