Patch "usb: gadget: function: u_ether: don't starve tx request queue" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
usb: gadget: function: u_ether: don't starve tx request queue
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
usb-gadget-function-u_ether-don-t-starve-tx-request-queue.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
6c83f77278f17a7679001027e9231291c20f0d8aMon Sep 17 00:00:00 2001
From: Felipe Balbi <[email protected]>
Date: Tue, 4 Oct 2016 15:14:43 +0300
Subject: usb: gadget: function: u_ether: don't starve tx request queue
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
From: Felipe Balbi <[email protected]>
commit 6c83f77278f17a7679001027e9231291c20f0d8a upstream.
If we don't guarantee that we will always get an interrupt at least when we're queueing our very last request, we could fall into situation where we queue every request with 'no_interrupt' set. This will cause the link to get stuck.
The behavior above has been triggered with g_ether and dwc3.
--- drivers/usb/gadget/function/u_ether.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/usb/gadget/function/u_ether.c +3 -2
@@ -596,8 +596,9 @@ static netdev_tx_t eth_start_xmit(struct/* throttle high/super speed IRQ rate back slightly */ if (gadget_is_dualspeed (dev->gadget)) - req->no_interrupt = (dev->gadget->speed ==USB_SPEED_HIGH || - dev->gadget->speed ==USB_SPEED_SUPER ) + req->no_interrupt = (((dev->gadget->speed ==USB_SPEED_HIGH || + dev->gadget->speed ==USB_SPEED_SUPER )) && + !list_empty (&dev->tx_reqs)) ? ((atomic_read (&dev->tx_qlen) % dev->qmult) !=0 ) :0 ;
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/usb-gadget-function-u_ether-don-t-starve-tx-request-queue.patch