]> git.baikalelectronics.ru Git - kernel.git/commit
tcp: GSO should be TSQ friendly
authorEric Dumazet <edumazet@google.com>
Fri, 12 Apr 2013 11:31:52 +0000 (11:31 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 12 Apr 2013 22:17:06 +0000 (18:17 -0400)
commit4506b471c706263fc7690625e567ba163372908a
tree54d1e4c0c92bc780d9e2f8a822c1c8dc271df70d
parent39ceacc0d27d2ae64a468636c3844cf409d9106c
tcp: GSO should be TSQ friendly

I noticed that TSQ (TCP Small queues) was less effective when TSO is
turned off, and GSO is on. If BQL is not enabled, TSQ has then no
effect.

It turns out the GSO engine frees the original gso_skb at the time the
fragments are generated and queued to the NIC.

We should instead call the tcp_wfree() destructor for the last fragment,
to keep the flow control as intended in TSQ. This effectively limits
the number of queued packets on qdisc + NIC layers.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Tom Herbert <therbert@google.com>
Cc: Yuchung Cheng <ycheng@google.com>
Cc: Nandita Dukkipati <nanditad@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tcp.h
net/ipv4/tcp.c
net/ipv4/tcp_output.c