| From fd9afd3cbe404998d732be6cc798f749597c5114 Mon Sep 17 00:00:00 2001 |
| From: Felipe Balbi <felipe.balbi@linux.intel.com> |
| Date: Tue, 1 Nov 2016 13:20:22 +0200 |
| Subject: usb: gadget: u_ether: remove interrupt throttling |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Felipe Balbi <felipe.balbi@linux.intel.com> |
| |
| commit fd9afd3cbe404998d732be6cc798f749597c5114 upstream. |
| |
| According to Dave Miller "the networking stack has a |
| hard requirement that all SKBs which are transmitted |
| must have their completion signalled in a fininte |
| amount of time. This is because, until the SKB is |
| freed by the driver, it holds onto socket, |
| netfilter, and other subsystem resources." |
| |
| In summary, this means that using TX IRQ throttling |
| for the networking gadgets is, at least, complex and |
| we should avoid it for the time being. |
| |
| Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com> |
| Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com> |
| Suggested-by: David Miller <davem@davemloft.net> |
| Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/usb/gadget/function/u_ether.c | 8 -------- |
| 1 file changed, 8 deletions(-) |
| |
| --- a/drivers/usb/gadget/function/u_ether.c |
| +++ b/drivers/usb/gadget/function/u_ether.c |
| @@ -594,14 +594,6 @@ static netdev_tx_t eth_start_xmit(struct |
| |
| req->length = length; |
| |
| - /* 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)) && |
| - !list_empty(&dev->tx_reqs)) |
| - ? ((atomic_read(&dev->tx_qlen) % dev->qmult) != 0) |
| - : 0; |
| - |
| retval = usb_ep_queue(in, req, GFP_ATOMIC); |
| switch (retval) { |
| default: |