Outbound TCP Throughput drops to zero for several drivers
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Utopic |
Fix Released
|
High
|
Chris J Arges | ||
Vivid |
Fix Released
|
High
|
Unassigned |
Bug Description
There is a bug with TCP in kernel 3.16+ described as:
"Some drivers are unable to perform TX completions in a bound time.
They instead call skb_orphan()
Problem is skb_fclone_busy() has to detect this case, otherwise
we block TCP retransmits and can freeze unlucky tcp sessions on
mostly idle hosts."
A patch for this has been submitted upstream:
https:/
The Google engineer that submitted that patch also adds the following:
Backported patch for 3.16 or 3.17 kernel is much simpler :
diff --git a/net/ipv4/
index 4e4932b5079b.
--- a/net/ipv4/
+++ b/net/ipv4/
@@ -2082,7 +2082,8 @@ static bool skb_still_
const struct sk_buff *fclone = skb + 1;
if (unlikely(
- fclone->fclone == SKB_FCLONE_CLONE)) {
+ fclone->fclone == SKB_FCLONE_CLONE &&
+ fclone->sk == sk)) {
I do not believe that this problem affects any release prior to 14.10, and I don't know which version of the patch you may need, but have included both.
tags: | added: kernel-da-key |
Changed in linux (Ubuntu Utopic): | |
status: | In Progress → Fix Committed |
Changed in linux (Ubuntu Utopic): | |
importance: | Undecided → High |
Changed in linux (Ubuntu Utopic): | |
status: | Fix Committed → Fix Released |
This bug is missing log files that will aid in diagnosing the problem. From a terminal window please run:
apport-collect 1390604
and then change the status of the bug to 'Confirmed'.
If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.
This change has been made by an automated script, maintained by the Ubuntu Kernel Team.