On Wed, 2011-02-02 at 12:04 +0530, Krishna Kumar2 wrote: > > On Tue, 2011-02-01 at 22:05 -0800, Shirley Ma wrote: > > > > > > The way I am changing is only when netif queue has stopped, then > we > > > start to count num_free descriptors to send the signal to wake > netif > > > queue. > > > > I forgot to mention, the code change I am making is in guest kernel, > in > > xmit call back only wake up the queue when it's stopped && num_free > >= > > 1/2 *vq->num, I add a new API in virtio_ring. > > FYI :) > I have tried this before. There are a couple of issues: > > 1. the free count will not reduce until you run free_old_xmit_skbs, > which will not run anymore since the tx queue is stopped. > 2. You cannot call free_old_xmit_skbs directly as it races with a > queue that was just awakened (current cb was due to the delay > in disabling cb's). > > You have to call free_old_xmit_skbs() under netif_queue_stopped() > check to avoid the race. Yes, that' what I did, when the netif queue stop, don't enable the queue, just free_old_xmit_skbs(), if not enough freed, then enabling callback until half of the ring size are freed, then wake the netif queue. But somehow I didn't reach the performance compared to drop packets, need to think about it more. :) Thanks Shirley -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html