projects
/
GitHub
/
moto-9609
/
android_kernel_motorola_exynos9610.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
a0fccd4
)
r8152: adjust rtl_start_rx
author
hayeswang
<hayeswang@realtek.com>
Thu, 20 Nov 2014 02:29:06 +0000
(10:29 +0800)
committer
David S. Miller
<davem@davemloft.net>
Fri, 21 Nov 2014 19:52:57 +0000
(14:52 -0500)
If there is a error for r8152_submit_rx(), add the remaining rx
buffers to the list. Then the remaining rx buffers could be
submitted later.
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/r8152.c
patch
|
blob
|
blame
|
history
diff --git
a/drivers/net/usb/r8152.c
b/drivers/net/usb/r8152.c
index 3b89229f0737c2761f73a515c1951f8fb8b223c3..4a9ece01def6fb17c9ea3fe7e656d9d4c36e9651 100644
(file)
--- a/
drivers/net/usb/r8152.c
+++ b/
drivers/net/usb/r8152.c
@@
-2001,6
+2001,25
@@
static int rtl_start_rx(struct r8152 *tp)
break;
}
+ if (ret && ++i < RTL8152_MAX_RX) {
+ struct list_head rx_queue;
+ unsigned long flags;
+
+ INIT_LIST_HEAD(&rx_queue);
+
+ do {
+ struct rx_agg *agg = &tp->rx_info[i++];
+ struct urb *urb = agg->urb;
+
+ urb->actual_length = 0;
+ list_add_tail(&agg->list, &rx_queue);
+ } while (i < RTL8152_MAX_RX);
+
+ spin_lock_irqsave(&tp->rx_lock, flags);
+ list_splice_tail(&rx_queue, &tp->rx_done);
+ spin_unlock_irqrestore(&tp->rx_lock, flags);
+ }
+
return ret;
}