[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20190521.131111.2280404979625075472.davem@davemloft.net>
Date: Tue, 21 May 2019 13:11:11 -0700 (PDT)
From: David Miller <davem@...emloft.net>
To: 3erndeckstein@...il.com
Cc: linux@...ck-us.net, linux-usb@...r.kernel.org,
netdev@...r.kernel.org, linux-kernel@...r.kernel.org,
corsac@...sac.net, Oliver.Zweigle@...o.com,
3ernd.Eckstein@...il.com
Subject: Re: [PATCH] usbnet: ipheth: fix racing condition
From: Bernd Eckstein <3erndeckstein@...il.com>
Date: Mon, 20 May 2019 17:31:09 +0200
> Fix a racing condition in ipheth.c that can lead to slow performance.
>
> Bug: In ipheth_tx(), netif_wake_queue() may be called on the callback
> ipheth_sndbulk_callback(), _before_ netif_stop_queue() is called.
> When this happens, the queue is stopped longer than it needs to be,
> thus reducing network performance.
>
> Fix: Move netif_stop_queue() in front of usb_submit_urb(). Now the order
> is always correct. In case, usb_submit_urb() fails, the queue is woken up
> again as callback will not fire.
>
> Testing: This racing condition is usually not noticeable, as it has to
> occur very frequently to slowdown the network. The callback from the USB
> is usually triggered slow enough, so the situation does not appear.
> However, on a Ubuntu Linux on VMWare Workstation, running on Windows 10,
> the we loose the race quite often and the following speedup can be noticed:
>
> Without this patch: Download: 4.10 Mbit/s, Upload: 4.01 Mbit/s
> With this patch: Download: 36.23 Mbit/s, Upload: 17.61 Mbit/s
>
> Signed-off-by: Oliver Zweigle <Oliver.Zweigle@...o.com>
> Signed-off-by: Bernd Eckstein <3ernd.Eckstein@...il.com>
Applied.
Powered by blists - more mailing lists