Skip to content

Commit

Permalink
Revert "USB: gadget: u_ether: Fix data stall issue in RNDIS tethering…
Browse files Browse the repository at this point in the history
… mode"

* Replaced by upstream fix

This reverts commit 6e0c86d.
  • Loading branch information
mikeNG committed May 26, 2017
1 parent 25a14ed commit 14e7a8c
Showing 1 changed file with 10 additions and 15 deletions.
25 changes: 10 additions & 15 deletions drivers/usb/gadget/u_ether.c
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ struct eth_dev {

spinlock_t req_lock; /* guard {rx,tx}_reqs */
struct list_head tx_reqs, rx_reqs;
unsigned tx_qlen;
atomic_t tx_qlen;
/* Minimum number of TX USB request queued to UDC */
#define TX_REQ_THRESHOLD 5
int no_tx_req_used;
Expand Down Expand Up @@ -809,6 +809,7 @@ static void tx_complete(struct usb_ep *ep, struct usb_request *req)
dev_kfree_skb_any(skb);
}

atomic_dec(&dev->tx_qlen);
if (netif_carrier_ok(dev->net))
netif_wake_queue(dev->net);
}
Expand Down Expand Up @@ -1168,19 +1169,12 @@ static netdev_tx_t eth_start_xmit(struct sk_buff *skb,

req->length = length;

/* throttle highspeed IRQ rate back slightly */
if (gadget_is_dualspeed(dev->gadget) &&
(dev->gadget->speed == USB_SPEED_HIGH)) {
dev->tx_qlen++;
if (dev->tx_qlen == (qmult/2)) {
req->no_interrupt = 0;
dev->tx_qlen = 0;
} else {
req->no_interrupt = 1;
}
} else {
req->no_interrupt = 0;
}
/* 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)
? ((atomic_read(&dev->tx_qlen) % (qmult/2)) != 0)
: 0;

retval = usb_ep_queue(in, req, GFP_ATOMIC);
switch (retval) {
Expand All @@ -1189,6 +1183,7 @@ static netdev_tx_t eth_start_xmit(struct sk_buff *skb,
break;
case 0:
net->trans_start = jiffies;
atomic_inc(&dev->tx_qlen);
}

if (retval) {
Expand Down Expand Up @@ -1217,7 +1212,7 @@ static void eth_start(struct eth_dev *dev, gfp_t gfp_flags)
rx_fill(dev, gfp_flags);

/* and open the tx floodgates */
dev->tx_qlen = 0;
atomic_set(&dev->tx_qlen, 0);
netif_wake_queue(dev->net);
}

Expand Down

0 comments on commit 14e7a8c

Please sign in to comment.