Re: [PATCH 4.4 37/46] r8152: re-schedule napi for tx

From: Ben Hutchings
Date: Thu Jun 29 2017 - 10:24:03 EST


On Thu, 2017-06-15 at 19:52 +0200, Greg Kroah-Hartman wrote:
> 4.4-stable review patch. If anyone has any objections, please let me know.
>
> ------------------
>
> From: hayeswang <hayeswang@xxxxxxxxxxx>
>
>
> [ Upstream commit 248b213ad908b88db15941202ef7cb7eb137c1a0 ]
>
> Re-schedule napi after napi_complete() for tx, if it is necessay.
>
> In r8152_poll(), if the tx is completed after tx_bottom() and before
> napi_complete(), the scheduling of napi would be lost. Then, no
> one handles the next tx until the next napi_schedule() is called.
[...]

This (and other) tests of list_empty() aren't going to be reliable
unless you take the same spinlock used when enqueueing packets.
Alternately you could count packets added and removed from the driver
internal queues and then you should only need memory barriers for
synchronisation when comparing counters.

Ben.

--
Ben Hutchings
Software Developer, Codethink Ltd.