OSDN Git Service

hv_netvsc: fix race that may miss tx queue wakeup
authorHaiyang Zhang <haiyangz@microsoft.com>
Tue, 30 Apr 2019 19:29:07 +0000 (19:29 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 4 May 2019 03:50:25 +0000 (23:50 -0400)
commit93aa4792c3908eac87ddd368ee0fe0564148232b
treef020f133b06ca0eaa129110bacbb41279f3bd7e5
parentea9866793d1e925b4d320eaea409263b2a568f38
hv_netvsc: fix race that may miss tx queue wakeup

When the ring buffer is almost full due to RX completion messages, a
TX packet may reach the "low watermark" and cause the queue stopped.
If the TX completion arrives earlier than queue stopping, the wakeup
may be missed.

This patch moves the check for the last pending packet to cover both
EAGAIN and success cases, so the queue will be reliably waked up when
necessary.

Reported-and-tested-by: Stephan Klein <stephan.klein@wegfinder.at>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/hyperv/netvsc.c