Avi Kivity wrote: > Gregory Haskins wrote: > > > >>> Why does a kernel solution not need to know when a packet is >>> transmitted? >>> >>> >> >> You do not need to know when the packet is copied (which I currently >> do). You only need it for zero-copy (of which I would like to support, >> but as I understand it there are problems with the reliability of proper >> callback (i.e. skb->destructor). >> >> Its "fire and forget" :) >> > > It's more of a "schedule and forget" which I think brings you the > win. The host disables notifications and schedules the actual tx work > (rx from the host's perspective). So now the guest and host continue > producing and consuming packets in parallel. So long as the guest is > faster (due to the host being throttled?), notifications continue to > be disabled. Yep, when the "producer::consumer" ratio is > 1, we mitigate signaling. When its < 1, we signal roughly once per packet. > > If you changed your rx_isr() to process the packets immediately > instead of scheduling, I think throughput would drop dramatically. Right, that is the point. :) This is that "soft asic" thing I was talking about yesterday. -Greg