There is now a trivial check on entry of if_start for pending packets, so we can drop the additional tracking via if_queued.
Signed-off-by: Jan Kiszka <jan.kis...@siemens.com> --- slirp/if.c | 8 -------- slirp/slirp.c | 7 +------ slirp/slirp.h | 1 - 3 files changed, 1 insertions(+), 15 deletions(-) diff --git a/slirp/if.c b/slirp/if.c index 78a9b78..90bf398 100644 --- a/slirp/if.c +++ b/slirp/if.c @@ -110,8 +110,6 @@ if_output(struct socket *so, struct mbuf *ifm) insque(ifm, ifq); diddit: - slirp->if_queued++; - if (so) { /* Update *_queued */ so->so_queued++; @@ -157,7 +155,6 @@ diddit: void if_start(Slirp *slirp) { uint64_t now = qemu_get_clock_ns(rt_clock); - int requeued = 0; bool from_batchq, from_batchq_next; struct mbuf *ifm, *ifm_next, *ifqt; @@ -195,12 +192,9 @@ void if_start(Slirp *slirp) ifm_next = NULL; } - slirp->if_queued--; - /* Try to send packet unless it already expired */ if (ifm->expiration_date >= now && !if_encap(slirp, ifm)) { /* Packet is delayed due to pending ARP resolution */ - requeued++; continue; } @@ -231,6 +225,4 @@ void if_start(Slirp *slirp) m_free(ifm); } - - slirp->if_queued = requeued; } diff --git a/slirp/slirp.c b/slirp/slirp.c index 19d69eb..bcffc34 100644 --- a/slirp/slirp.c +++ b/slirp/slirp.c @@ -581,12 +581,7 @@ void slirp_select_poll(fd_set *readfds, fd_set *writefds, fd_set *xfds, } } - /* - * See if we can start outputting - */ - if (slirp->if_queued) { - if_start(slirp); - } + if_start(slirp); } /* clear global file descriptor sets. diff --git a/slirp/slirp.h b/slirp/slirp.h index 28a5c03..950eccd 100644 --- a/slirp/slirp.h +++ b/slirp/slirp.h @@ -235,7 +235,6 @@ struct Slirp { int mbuf_alloced; /* if states */ - int if_queued; /* number of packets queued so far */ struct mbuf if_fastq; /* fast queue (for interactive data) */ struct mbuf if_batchq; /* queue for non-interactive data */ struct mbuf *next_m; /* pointer to next mbuf to output */ -- 1.7.3.4