<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/net/ipv4, branch v2.6.28.9</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/net/ipv4?h=v2.6.28.9</id>
<link rel='self' href='https://git.amat.us/linux/atom/net/ipv4?h=v2.6.28.9'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2009-02-17T17:29:00Z</updated>
<entry>
<title>tcp: Fix length tcp_splice_data_recv passes to skb_splice_bits.</title>
<updated>2009-02-17T17:29:00Z</updated>
<author>
<name>Dimitris Michailidis</name>
<email>dm@chelsio.com</email>
</author>
<published>2009-01-27T06:15:31Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c9d7113773e1a37eea07a34a792fb224980eba11'/>
<id>urn:sha1:c9d7113773e1a37eea07a34a792fb224980eba11</id>
<content type='text'>
[ Upstream commit 9fa5fdf291c9b58b1cb8b4bb2a0ee57efa21d635 ]

tcp_splice_data_recv has two lengths to consider: the len parameter it
gets from tcp_read_sock, which specifies the amount of data in the skb,
and rd_desc-&gt;count, which is the amount of data the splice caller still
wants.  Currently it passes just the latter to skb_splice_bits, which then
splices min(rd_desc-&gt;count, skb-&gt;len - offset) bytes.

Most of the time this is fine, except when the skb contains urgent data.
In that case len goes only up to the urgent byte and is less than
skb-&gt;len - offset.  By ignoring len tcp_splice_data_recv may a) splice
data tcp_read_sock told it not to, b) return to tcp_read_sock a value &gt; len.

Now, tcp_read_sock doesn't handle used &gt; len and leaves the socket in a
bad state (both sk_receive_queue and copied_seq are bad at that point)
resulting in duplicated data and corruption.

Fix by passing min(rd_desc-&gt;count, len) to skb_splice_bits.

Signed-off-by: Dimitris Michailidis &lt;dm@chelsio.com&gt;
Acked-by: Eric Dumazet &lt;dada1@cosmosbay.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>tcp: splice as many packets as possible at once</title>
<updated>2009-02-17T17:29:00Z</updated>
<author>
<name>Willy Tarreau</name>
<email>w@1wt.eu</email>
</author>
<published>2009-01-14T00:04:36Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b1b038456a0dc218a7a45bc39d316c55ad71e09a'/>
<id>urn:sha1:b1b038456a0dc218a7a45bc39d316c55ad71e09a</id>
<content type='text'>
[ Upstream commit 33966dd0e2f68f26943cd9ee93ec6abbc6547a8e ]

As spotted by Willy Tarreau, current splice() from tcp socket to pipe is not
optimal. It processes at most one segment per call.
This results in low performance and very high overhead due to syscall rate
when splicing from interfaces which do not support LRO.

Willy provided a patch inside tcp_splice_read(), but a better fix
is to let tcp_read_sock() process as many segments as possible, so
that tcp_rcv_space_adjust() and tcp_cleanup_rbuf() are called less
often.

With this change, splice() behaves like tcp_recvmsg(), being able
to consume many skbs in one system call. With typical 1460 bytes
of payload per frame, that means splice(SPLICE_F_NONBLOCK) can return
16*1460 = 23360 bytes.

Signed-off-by: Willy Tarreau &lt;w@1wt.eu&gt;
Signed-off-by: Eric Dumazet &lt;dada1@cosmosbay.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>udp: increments sk_drops in __udp_queue_rcv_skb()</title>
<updated>2009-02-17T17:28:57Z</updated>
<author>
<name>Eric Dumazet</name>
<email>dada1@cosmosbay.com</email>
</author>
<published>2009-02-02T21:41:57Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f3c21d60f14e68ef5e3b792e6e1c00a12c94c110'/>
<id>urn:sha1:f3c21d60f14e68ef5e3b792e6e1c00a12c94c110</id>
<content type='text'>
[ Upstream commit e408b8dcb5ce42243a902205005208e590f28454 ]

Commit 93821778def10ec1e69aa3ac10adee975dad4ff3 (udp: Fix rcv socket
locking) accidentally removed sk_drops increments for UDP IPV4
sockets.

This field can be used to detect incorrect sizing of socket receive
buffers.

Signed-off-by: Eric Dumazet &lt;dada1@cosmosbay.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>udp: Fix UDP short packet false positive</title>
<updated>2009-02-17T17:28:56Z</updated>
<author>
<name>Jesper Dangaard Brouer</name>
<email>hawk@comx.dk</email>
</author>
<published>2009-02-05T23:05:45Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=1888776132257cf5e0d806dd5c0665f436738644'/>
<id>urn:sha1:1888776132257cf5e0d806dd5c0665f436738644</id>
<content type='text'>
[ Upstream commit 7b5e56f9d635643ad54f2f42e69ad16b80a2cff1 ]

The UDP header pointer assignment must happen after calling
pskb_may_pull().  As pskb_may_pull() can potentially alter the SKB
buffer.

This was exposted by running multicast traffic through the NIU driver,
as it won't prepull the protocol headers into the linear area on
receive.

Signed-off-by: Jesper Dangaard Brouer &lt;hawk@comx.dk&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>ipv4: fix infinite retry loop in IP-Config</title>
<updated>2009-02-17T17:28:54Z</updated>
<author>
<name>Benjamin Zores</name>
<email>benjamin.zores@alcatel-lucent.fr</email>
</author>
<published>2009-01-30T00:19:13Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=a027928cd7b8a16bdbfb3fc42f3eecf469d3249b'/>
<id>urn:sha1:a027928cd7b8a16bdbfb3fc42f3eecf469d3249b</id>
<content type='text'>
[ Upstream commit 9d8dba6c979fa99c96938c869611b9a23b73efa9 ]

Signed-off-by: Benjamin Zores &lt;benjamin.zores@alcatel-lucent.fr&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>netfilter: nf_conntrack: fix ICMP/ICMPv6 timeout sysctls on big-endian</title>
<updated>2009-01-25T00:41:45Z</updated>
<author>
<name>Patrick McHardy</name>
<email>kaber@trash.net</email>
</author>
<published>2009-01-19T14:19:39Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c2ef76b4adfbb9439e0d9abad8903404f1e884c3'/>
<id>urn:sha1:c2ef76b4adfbb9439e0d9abad8903404f1e884c3</id>
<content type='text'>
Upstream commit 71320af:

An old bug crept back into the ICMP/ICMPv6 conntrack protocols: the timeout
values are defined as unsigned longs, the sysctl's maxsize is set to
sizeof(unsigned int). Use unsigned int for the timeout values as in the
other conntrack protocols.

Reported-by: Jean-Mickael Guerin &lt;jean-mickael.guerin@6wind.com&gt;
Signed-off-by: Patrick McHardy &lt;kaber@trash.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>tcp: don't mask EOF and socket errors on nonblocking splice receive</title>
<updated>2009-01-25T00:41:43Z</updated>
<author>
<name>Lennert Buytenhek</name>
<email>buytenh@marvell.com</email>
</author>
<published>2009-01-20T23:25:21Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6a2b80089ea067018ab287e2e9df5387ee811013'/>
<id>urn:sha1:6a2b80089ea067018ab287e2e9df5387ee811013</id>
<content type='text'>
[ Upstream commit: 4f7d54f59bc470f0aaa932f747a95232d7ebf8b1 ]

Currently, setting SPLICE_F_NONBLOCK on splice from a TCP socket
results in masking of EOF (RDHUP) and error conditions on the socket
by an -EAGAIN return.  Move the NONBLOCK check in tcp_splice_read()
to be after the EOF and error checks to fix this.

Signed-off-by: Lennert Buytenhek &lt;buytenh@marvell.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>netfilter: update rwlock initialization for nat_table</title>
<updated>2008-12-15T08:19:14Z</updated>
<author>
<name>Steven Rostedt</name>
<email>srostedt@redhat.com</email>
</author>
<published>2008-12-15T08:19:14Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=be70ed189bc0d16e1609a1c6c04ec9418b4dd11a'/>
<id>urn:sha1:be70ed189bc0d16e1609a1c6c04ec9418b4dd11a</id>
<content type='text'>
    
The commit e099a173573ce1ba171092aee7bb3c72ea686e59
(netfilter: netns nat: per-netns NAT table) renamed the
nat_table from __nat_table to nat_table without updating the
__RW_LOCK_UNLOCKED(__nat_table.lock).

Signed-off-by: Steven Rostedt &lt;srostedt@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;

</content>
</entry>
<entry>
<title>tcp: tcp_vegas cong avoid fix </title>
<updated>2008-12-09T08:13:04Z</updated>
<author>
<name>Doug Leith</name>
<email>doug.leith@nuim.ie</email>
</author>
<published>2008-12-09T08:13:04Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=8d3a564da34e5844aca4f991b73f8ca512246b23'/>
<id>urn:sha1:8d3a564da34e5844aca4f991b73f8ca512246b23</id>
<content type='text'>
This patch addresses a book-keeping issue in tcp_vegas.c.  At present
tcp_vegas does separate book-keeping of cwnd based on packet sequence
numbers.  A mismatch can develop between this book-keeping and
tp-&gt;snd_cwnd due, for example, to delayed acks acking multiple
packets.  When vegas transitions to reno operation (e.g. following
loss), then this mismatch leads to incorrect behaviour (akin to a cwnd
backoff).  This seems mostly to affect operation at low cwnds where
delayed acking can lead to a significant fraction of cwnd being
covered by a single ack, leading to the book-keeping mismatch.  This
patch modifies the congestion avoidance update to avoid the need for
separate book-keeping while leaving vegas congestion avoidance
functionally unchanged.  A secondary advantage of this modification is
that the use of fixed-point (via V_PARAM_SHIFT) and 64 bit arithmetic
is no longer necessary, simplifying the code.

Some example test measurements with the patched code (confirming no functional
change in the congestion avoidance algorithm) can be seen at:

http://www.hamilton.ie/doug/vegaspatch/

Signed-off-by: Doug Leith &lt;doug.leith@nuim.ie&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>tcp: tcp_vegas ssthresh bug fix</title>
<updated>2008-12-05T01:17:18Z</updated>
<author>
<name>Doug Leith</name>
<email>doug.leith@nuim.ie</email>
</author>
<published>2008-12-05T01:17:18Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=a6af2d6ba5797c556fba0cd3a19e5f3bc9a99b76'/>
<id>urn:sha1:a6af2d6ba5797c556fba0cd3a19e5f3bc9a99b76</id>
<content type='text'>
This patch fixes a bug in tcp_vegas.c.  At the moment this code leaves
ssthresh untouched.  However, this means that the vegas congestion
control algorithm is effectively unable to reduce cwnd below the
ssthresh value (if the vegas update lowers the cwnd below ssthresh,
then slow start is activated to raise it back up).  One example where
this matters is when during slow start cwnd overshoots the link
capacity and a flow then exits slow start with ssthresh set to a value
above where congestion avoidance would like to adjust it.

Signed-off-by: Doug Leith &lt;doug.leith@nuim.ie&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
