<feed xmlns='http://www.w3.org/2005/Atom'>
<title>user/sven/linux.git/net/ipv4, branch v3.4.40</title>
<subtitle>Linux Kernel
</subtitle>
<id>https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v3.4.40</id>
<link rel='self' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v3.4.40'/>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/'/>
<updated>2013-04-05T17:04:38Z</updated>
<entry>
<title>tcp: undo spurious timeout after SACK reneging</title>
<updated>2013-04-05T17:04:38Z</updated>
<author>
<name>Yuchung Cheng</name>
<email>ycheng@google.com</email>
</author>
<published>2013-03-24T10:42:25Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=d1f60c6d91df21978218af4f5442993749ecbf7e'/>
<id>urn:sha1:d1f60c6d91df21978218af4f5442993749ecbf7e</id>
<content type='text'>
[ Upstream commit 7ebe183c6d444ef5587d803b64a1f4734b18c564 ]

On SACK reneging the sender immediately retransmits and forces a
timeout but disables Eifel (undo). If the (buggy) receiver does not
drop any packet this can trigger a false slow-start retransmit storm
driven by the ACKs of the original packets. This can be detected with
undo and TCP timestamps.

Signed-off-by: Yuchung Cheng &lt;ycheng@google.com&gt;
Acked-by: Neal Cardwell &lt;ncardwell@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>tcp: preserve ACK clocking in TSO</title>
<updated>2013-04-05T17:04:38Z</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2013-03-21T17:36:09Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=21b56e0f081f321334ef90d0d4ebe95e79d70a46'/>
<id>urn:sha1:21b56e0f081f321334ef90d0d4ebe95e79d70a46</id>
<content type='text'>
[ Upstream commit f4541d60a449afd40448b06496dcd510f505928e ]

A long standing problem with TSO is the fact that tcp_tso_should_defer()
rearms the deferred timer, while it should not.

Current code leads to following bad bursty behavior :

20:11:24.484333 IP A &gt; B: . 297161:316921(19760) ack 1 win 119
20:11:24.484337 IP B &gt; A: . ack 263721 win 1117
20:11:24.485086 IP B &gt; A: . ack 265241 win 1117
20:11:24.485925 IP B &gt; A: . ack 266761 win 1117
20:11:24.486759 IP B &gt; A: . ack 268281 win 1117
20:11:24.487594 IP B &gt; A: . ack 269801 win 1117
20:11:24.488430 IP B &gt; A: . ack 271321 win 1117
20:11:24.489267 IP B &gt; A: . ack 272841 win 1117
20:11:24.490104 IP B &gt; A: . ack 274361 win 1117
20:11:24.490939 IP B &gt; A: . ack 275881 win 1117
20:11:24.491775 IP B &gt; A: . ack 277401 win 1117
20:11:24.491784 IP A &gt; B: . 316921:332881(15960) ack 1 win 119
20:11:24.492620 IP B &gt; A: . ack 278921 win 1117
20:11:24.493448 IP B &gt; A: . ack 280441 win 1117
20:11:24.494286 IP B &gt; A: . ack 281961 win 1117
20:11:24.495122 IP B &gt; A: . ack 283481 win 1117
20:11:24.495958 IP B &gt; A: . ack 285001 win 1117
20:11:24.496791 IP B &gt; A: . ack 286521 win 1117
20:11:24.497628 IP B &gt; A: . ack 288041 win 1117
20:11:24.498459 IP B &gt; A: . ack 289561 win 1117
20:11:24.499296 IP B &gt; A: . ack 291081 win 1117
20:11:24.500133 IP B &gt; A: . ack 292601 win 1117
20:11:24.500970 IP B &gt; A: . ack 294121 win 1117
20:11:24.501388 IP B &gt; A: . ack 295641 win 1117
20:11:24.501398 IP A &gt; B: . 332881:351881(19000) ack 1 win 119

While the expected behavior is more like :

20:19:49.259620 IP A &gt; B: . 197601:202161(4560) ack 1 win 119
20:19:49.260446 IP B &gt; A: . ack 154281 win 1212
20:19:49.261282 IP B &gt; A: . ack 155801 win 1212
20:19:49.262125 IP B &gt; A: . ack 157321 win 1212
20:19:49.262136 IP A &gt; B: . 202161:206721(4560) ack 1 win 119
20:19:49.262958 IP B &gt; A: . ack 158841 win 1212
20:19:49.263795 IP B &gt; A: . ack 160361 win 1212
20:19:49.264628 IP B &gt; A: . ack 161881 win 1212
20:19:49.264637 IP A &gt; B: . 206721:211281(4560) ack 1 win 119
20:19:49.265465 IP B &gt; A: . ack 163401 win 1212
20:19:49.265886 IP B &gt; A: . ack 164921 win 1212
20:19:49.266722 IP B &gt; A: . ack 166441 win 1212
20:19:49.266732 IP A &gt; B: . 211281:215841(4560) ack 1 win 119
20:19:49.267559 IP B &gt; A: . ack 167961 win 1212
20:19:49.268394 IP B &gt; A: . ack 169481 win 1212
20:19:49.269232 IP B &gt; A: . ack 171001 win 1212
20:19:49.269241 IP A &gt; B: . 215841:221161(5320) ack 1 win 119

Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Cc: Yuchung Cheng &lt;ycheng@google.com&gt;
Cc: Van Jacobson &lt;vanj@google.com&gt;
Cc: Neal Cardwell &lt;ncardwell@google.com&gt;
Cc: Nandita Dukkipati &lt;nanditad@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>inet: limit length of fragment queue hash table bucket lists</title>
<updated>2013-03-28T19:11:54Z</updated>
<author>
<name>Hannes Frederic Sowa</name>
<email>hannes@stressinduktion.org</email>
</author>
<published>2013-03-15T11:32:30Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=1280938465132080915aef414a1f40f62831bab9'/>
<id>urn:sha1:1280938465132080915aef414a1f40f62831bab9</id>
<content type='text'>
[ Upstream commit 5a3da1fe9561828d0ca7eca664b16ec2b9bf0055 ]

This patch introduces a constant limit of the fragment queue hash
table bucket list lengths. Currently the limit 128 is choosen somewhat
arbitrary and just ensures that we can fill up the fragment cache with
empty packets up to the default ip_frag_high_thresh limits. It should
just protect from list iteration eating considerable amounts of cpu.

If we reach the maximum length in one hash bucket a warning is printed.
This is implemented on the caller side of inet_frag_find to distinguish
between the different users of inet_fragment.c.

I dropped the out of memory warning in the ipv4 fragment lookup path,
because we already get a warning by the slab allocator.

Cc: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Cc: Jesper Dangaard Brouer &lt;jbrouer@redhat.com&gt;
Signed-off-by: Hannes Frederic Sowa &lt;hannes@stressinduktion.org&gt;
Acked-by: Eric Dumazet &lt;edumazet@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>tcp: fix skb_availroom()</title>
<updated>2013-03-28T19:11:53Z</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2013-03-14T05:40:32Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=b6da578e2a610a64e89f2a983f7675eb301c5d35'/>
<id>urn:sha1:b6da578e2a610a64e89f2a983f7675eb301c5d35</id>
<content type='text'>
[ Upstream commit 16fad69cfe4adbbfa813de516757b87bcae36d93 ]

Chrome OS team reported a crash on a Pixel ChromeBook in TCP stack :

https://code.google.com/p/chromium/issues/detail?id=182056

commit a21d45726acac (tcp: avoid order-1 allocations on wifi and tx
path) did a poor choice adding an 'avail_size' field to skb, while
what we really needed was a 'reserved_tailroom' one.

It would have avoided commit 22b4a4f22da (tcp: fix retransmit of
partially acked frames) and this commit.

Crash occurs because skb_split() is not aware of the 'avail_size'
management (and should not be aware)

Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Reported-by: Mukesh Agrawal &lt;quiche@chromium.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>net/ipv4: Ensure that location of timestamp option is stored</title>
<updated>2013-03-28T19:11:52Z</updated>
<author>
<name>David Ward</name>
<email>david.ward@ll.mit.edu</email>
</author>
<published>2013-03-11T10:43:39Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=7436bcf6158d70346928b9b26568f5bb3213a36f'/>
<id>urn:sha1:7436bcf6158d70346928b9b26568f5bb3213a36f</id>
<content type='text'>
[ Upstream commit 4660c7f498c07c43173142ea95145e9dac5a6d14 ]

This is needed in order to detect if the timestamp option appears
more than once in a packet, to remove the option if the packet is
fragmented, etc. My previous change neglected to store the option
location when the router addresses were prespecified and Pointer &gt;
Length. But now the option location is also stored when Flag is an
unrecognized value, to ensure these option handling behaviors are
still performed.

Signed-off-by: David Ward &lt;david.ward@ll.mit.edu&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>tcp: fix double-counted receiver RTT when leaving receiver fast path</title>
<updated>2013-03-20T20:05:01Z</updated>
<author>
<name>Neal Cardwell</name>
<email>ncardwell@google.com</email>
</author>
<published>2013-03-04T06:23:05Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=8bd2b8faec4d80e2c77645dcfd838d5f79e9e15b'/>
<id>urn:sha1:8bd2b8faec4d80e2c77645dcfd838d5f79e9e15b</id>
<content type='text'>
[ Upstream commit aab2b4bf224ef8358d262f95b568b8ad0cecf0a0 ]

We should not update ts_recent and call tcp_rcv_rtt_measure_ts() both
before and after going to step5. That wastes CPU and double-counts the
receiver-side RTT sample.

Signed-off-by: Neal Cardwell &lt;ncardwell@google.com&gt;
Acked-by: Eric Dumazet &lt;edumazet@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>ipv6: use a stronger hash for tcp</title>
<updated>2013-02-28T14:59:06Z</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2013-02-21T12:18:52Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=e5a096aa0aeb1fc8ad8b3d6bd70d322a0d65edc4'/>
<id>urn:sha1:e5a096aa0aeb1fc8ad8b3d6bd70d322a0d65edc4</id>
<content type='text'>
[ Upstream commit 08dcdbf6a7b9d14c2302c5bd0c5390ddf122f664 ]

It looks like its possible to open thousands of TCP IPv6
sessions on a server, all landing in a single slot of TCP hash
table. Incoming packets have to lookup sockets in a very
long list.

We should hash all bits from foreign IPv6 addresses, using
a salt and hash mix, not a simple XOR.

inet6_ehashfn() can also separately use the ports, instead
of xoring them.

Reported-by: Neal Cardwell &lt;ncardwell@google.com&gt;
Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Cc: Yuchung Cheng &lt;ycheng@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>ipv4: fix a bug in ping_err().</title>
<updated>2013-02-28T14:59:06Z</updated>
<author>
<name>Li Wei</name>
<email>lw@cn.fujitsu.com</email>
</author>
<published>2013-02-21T00:09:54Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=785e5dce256ea5bdf4871af13f9908b74264b515'/>
<id>urn:sha1:785e5dce256ea5bdf4871af13f9908b74264b515</id>
<content type='text'>
[ Upstream commit b531ed61a2a2a77eeb2f7c88b49aa5ec7d9880d8 ]

We should get 'type' and 'code' from the outer ICMP header.

Signed-off-by: Li Wei &lt;lw@cn.fujitsu.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>tcp: fix for zero packets_in_flight was too broad</title>
<updated>2013-02-14T18:49:06Z</updated>
<author>
<name>Ilpo Järvinen</name>
<email>ilpo.jarvinen@helsinki.fi</email>
</author>
<published>2013-02-04T02:14:25Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=f641de91169472dc398fbd971cef380ad8d0f787'/>
<id>urn:sha1:f641de91169472dc398fbd971cef380ad8d0f787</id>
<content type='text'>
[ Upstream commit 6731d2095bd4aef18027c72ef845ab1087c3ba63 ]

There are transients during normal FRTO procedure during which
the packets_in_flight can go to zero between write_queue state
updates and firing the resulting segments out. As FRTO processing
occurs during that window the check must be more precise to
not match "spuriously" :-). More specificly, e.g., when
packets_in_flight is zero but FLAG_DATA_ACKED is true the problematic
branch that set cwnd into zero would not be taken and new segments
might be sent out later.

Signed-off-by: Ilpo Järvinen &lt;ilpo.jarvinen@helsinki.fi&gt;
Tested-by: Eric Dumazet &lt;edumazet@google.com&gt;
Acked-by: Neal Cardwell &lt;ncardwell@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>tcp: frto should not set snd_cwnd to 0</title>
<updated>2013-02-14T18:49:06Z</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2013-02-03T09:13:05Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=2813296332187d222b96363fe29f10929f7a5228'/>
<id>urn:sha1:2813296332187d222b96363fe29f10929f7a5228</id>
<content type='text'>
[ Upstream commit 2e5f421211ff76c17130b4597bc06df4eeead24f ]

Commit 9dc274151a548 (tcp: fix ABC in tcp_slow_start())
uncovered a bug in FRTO code :
tcp_process_frto() is setting snd_cwnd to 0 if the number
of in flight packets is 0.

As Neal pointed out, if no packet is in flight we lost our
chance to disambiguate whether a loss timeout was spurious.

We should assume it was a proper loss.

Reported-by: Pasi Kärkkäinen &lt;pasik@iki.fi&gt;
Signed-off-by: Neal Cardwell &lt;ncardwell@google.com&gt;
Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Cc: Ilpo Järvinen &lt;ilpo.jarvinen@helsinki.fi&gt;
Cc: Yuchung Cheng &lt;ycheng@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
</feed>
