← Back to team overview

kernel-packages team mailing list archive

[Bug 1390604] Re: Outbound TCP Throughput drops to zero for several drivers


Thank you Rick, the backport of this patch (provided by Eric Dumazet)
has been queued for the stable kernel 3.16 and should hit Utopic soon.

You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.

  Outbound TCP Throughput drops to zero for several drivers

Status in “linux” package in Ubuntu:

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:

  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/tcp_output.c b/net/ipv4/tcp_output.c
  index 4e4932b5079b..a8794367cd20 100644
  --- a/net/ipv4/tcp_output.c
  +++ b/net/ipv4/tcp_output.c
  @@ -2082,7 +2082,8 @@ static bool skb_still_in_host_queue(const struct sock *sk,
          const struct sk_buff *fclone = skb + 1;
          if (unlikely(skb->fclone == SKB_FCLONE_ORIG &&
  -                    fclone->fclone == SKB_FCLONE_CLONE)) {
  +                    fclone->fclone == SKB_FCLONE_CLONE &&
  +                    fclone->sk == sk)) {
                  return true;

  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.

To manage notifications about this bug go to: