> Shirley Ma <mashirle@xxxxxxxxxx> wrote: > > > 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. :) Did you check if the number of vmexits increased with this patch? This is possible if the device was keeping up (and not going into a stop, start, xmit 1 packet, stop, start loop). Also maybe you should try for 1/4th instead of 1/2? MST's delayed signalling should avoid this issue, I haven't tried both together. Thanks, - KK -- 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