[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCHv1 net] xen-netfront: use napi_complete() correctly to prevent Rx stalling
From: David Vrabel <david.vrabel@xxxxxxxxxx> Date: Tue, 16 Dec 2014 18:59:46 +0000 > After d75b1ade567ffab085e8adbbdacf0092d10cd09c (net: less interrupt > masking in NAPI) the napi instance is removed from the per-cpu list > prior to calling the n->poll(), and is only requeued if all of the > budget was used. This inadvertently broke netfront because netfront > does not use NAPI correctly. > > If netfront had not used all of its budget it would do a final check > for any Rx responses and avoid calling napi_complete() if there were > more responses. It would still return under budget so it would never > be rescheduled. The final check would also not re-enable the Rx > interrupt. > > Additionally, xenvif_poll() would also call napi_complete() /after/ > enabling the interrupt. This resulted in a race between the > napi_complete() and the napi_schedule() in the interrupt handler. The > use of local_irq_save/restore() avoided by race iff the handler is > running on the same CPU but not if it was running on a different CPU. > > Fix both of these by always calling napi_compete() if the budget was > not all used, and then calling napi_schedule() if the final checks > says there's more work. > > Signed-off-by: David Vrabel <david.vrabel@xxxxxxxxxx> Applied, thanks. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |