Re: [PATCH 3/9] kvm: qemu: Remove virtio_net tx ring-full heuristic

Mark McLoughlin
2008-07-25T17:23:23Z

On Fri, 2008-07-25 at 02:22 +0300, Dor Laor wrote:
> Mark McLoughlin wrote:
> > virtio_net tries to guess when it has received a tx
> > notification from the guest whether it indicates that the
> > guest has no more room in the tx ring and it should
> > immediately flush the queued buffers.
...
> > - if (n->tx_timer_active &&
> > - (vq->vring.avail->idx - vq->last_avail_idx) == 64) {
> > + if (n->tx_timer_active) {
> >
> Actually it was worthless anyway since if we set the timer, the flag
> below would have been cleared,
> causing the guest not to notify the host, thus the ==64 never called.

No, that's the point I'm trying to make in the commit message - the
guest ignores the NO_NOTIFY flag when the tx queue fills up and sends a
notification anyway.

The "== 64" test seems to be an attempt to catch this ring-full
condition.

Well, actually the test was worthless for a different reason, I guess.
If tx_timer_active is set and we get a notification, then given the
current guest code the number of buffers available should *always* be
64.

Cheers,
Mark.