<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/net/rds/tcp_send.c, branch v3.0.63</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>rds: make local functions/variables static</title>
<updated>2010-10-21T11:26:39+00:00</updated>
<author>
<name>stephen hemminger</name>
<email>shemminger@vyatta.com</email>
</author>
<published>2010-10-19T08:08:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ff51bf841587c75b58d25ed77263158619784dd3'/>
<id>ff51bf841587c75b58d25ed77263158619784dd3</id>
<content type='text'>
The RDS protocol has lots of functions that should be
declared static. rds_message_get/add_version_extension is
removed since it defined but never used.

Signed-off-by: Stephen Hemminger &lt;shemminger@vyatta.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The RDS protocol has lots of functions that should be
declared static. rds_message_get/add_version_extension is
removed since it defined but never used.

Signed-off-by: Stephen Hemminger &lt;shemminger@vyatta.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6</title>
<updated>2010-09-27T08:03:03+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2010-09-27T08:03:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e40051d134f7ee95c8c1f7a3471e84eafc9ab326'/>
<id>e40051d134f7ee95c8c1f7a3471e84eafc9ab326</id>
<content type='text'>
Conflicts:
	drivers/net/qlcnic/qlcnic_init.c
	net/ipv4/ip_output.c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:
	drivers/net/qlcnic/qlcnic_init.c
	net/ipv4/ip_output.c
</pre>
</div>
</content>
</entry>
<entry>
<title>net: fix a lockdep splat</title>
<updated>2010-09-25T05:26:10+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>eric.dumazet@gmail.com</email>
</author>
<published>2010-09-22T12:43:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f064af1e500a2bf4607706f0f458163bdb2a6ea5'/>
<id>f064af1e500a2bf4607706f0f458163bdb2a6ea5</id>
<content type='text'>
We have for each socket :

One spinlock (sk_slock.slock)
One rwlock (sk_callback_lock)

Possible scenarios are :

(A) (this is used in net/sunrpc/xprtsock.c)
read_lock(&amp;sk-&gt;sk_callback_lock) (without blocking BH)
&lt;BH&gt;
spin_lock(&amp;sk-&gt;sk_slock.slock);
...
read_lock(&amp;sk-&gt;sk_callback_lock);
...

(B)
write_lock_bh(&amp;sk-&gt;sk_callback_lock)
stuff
write_unlock_bh(&amp;sk-&gt;sk_callback_lock)

(C)
spin_lock_bh(&amp;sk-&gt;sk_slock)
...
write_lock_bh(&amp;sk-&gt;sk_callback_lock)
stuff
write_unlock_bh(&amp;sk-&gt;sk_callback_lock)
spin_unlock_bh(&amp;sk-&gt;sk_slock)

This (C) case conflicts with (A) :

CPU1 [A]                         CPU2 [C]
read_lock(callback_lock)
&lt;BH&gt;                             spin_lock_bh(slock)
&lt;wait to spin_lock(slock)&gt;
                                 &lt;wait to write_lock_bh(callback_lock)&gt;

We have one problematic (C) use case in inet_csk_listen_stop() :

local_bh_disable();
bh_lock_sock(child); // spin_lock_bh(&amp;sk-&gt;sk_slock)
WARN_ON(sock_owned_by_user(child));
...
sock_orphan(child); // write_lock_bh(&amp;sk-&gt;sk_callback_lock)

lockdep is not happy with this, as reported by Tetsuo Handa

It seems only way to deal with this is to use read_lock_bh(callbacklock)
everywhere.

Thanks to Jarek for pointing a bug in my first attempt and suggesting
this solution.

Reported-by: Tetsuo Handa &lt;penguin-kernel@I-love.SAKURA.ne.jp&gt;
Tested-by: Tetsuo Handa &lt;penguin-kernel@I-love.SAKURA.ne.jp&gt;
Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
CC: Jarek Poplawski &lt;jarkao2@gmail.com&gt;
Tested-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We have for each socket :

One spinlock (sk_slock.slock)
One rwlock (sk_callback_lock)

Possible scenarios are :

(A) (this is used in net/sunrpc/xprtsock.c)
read_lock(&amp;sk-&gt;sk_callback_lock) (without blocking BH)
&lt;BH&gt;
spin_lock(&amp;sk-&gt;sk_slock.slock);
...
read_lock(&amp;sk-&gt;sk_callback_lock);
...

(B)
write_lock_bh(&amp;sk-&gt;sk_callback_lock)
stuff
write_unlock_bh(&amp;sk-&gt;sk_callback_lock)

(C)
spin_lock_bh(&amp;sk-&gt;sk_slock)
...
write_lock_bh(&amp;sk-&gt;sk_callback_lock)
stuff
write_unlock_bh(&amp;sk-&gt;sk_callback_lock)
spin_unlock_bh(&amp;sk-&gt;sk_slock)

This (C) case conflicts with (A) :

CPU1 [A]                         CPU2 [C]
read_lock(callback_lock)
&lt;BH&gt;                             spin_lock_bh(slock)
&lt;wait to spin_lock(slock)&gt;
                                 &lt;wait to write_lock_bh(callback_lock)&gt;

We have one problematic (C) use case in inet_csk_listen_stop() :

local_bh_disable();
bh_lock_sock(child); // spin_lock_bh(&amp;sk-&gt;sk_slock)
WARN_ON(sock_owned_by_user(child));
...
sock_orphan(child); // write_lock_bh(&amp;sk-&gt;sk_callback_lock)

lockdep is not happy with this, as reported by Tetsuo Handa

It seems only way to deal with this is to use read_lock_bh(callbacklock)
everywhere.

Thanks to Jarek for pointing a bug in my first attempt and suggesting
this solution.

Reported-by: Tetsuo Handa &lt;penguin-kernel@I-love.SAKURA.ne.jp&gt;
Tested-by: Tetsuo Handa &lt;penguin-kernel@I-love.SAKURA.ne.jp&gt;
Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
CC: Jarek Poplawski &lt;jarkao2@gmail.com&gt;
Tested-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>RDS: Stop supporting old cong map sending method</title>
<updated>2010-09-09T01:12:10+00:00</updated>
<author>
<name>Andy Grover</name>
<email>andy.grover@oracle.com</email>
</author>
<published>2010-03-22T22:22:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=77dd550e5547846604ff6f90c4dc6bba4414e485'/>
<id>77dd550e5547846604ff6f90c4dc6bba4414e485</id>
<content type='text'>
We now ask the transport to give us a rm for the congestion
map, and then we handle it normally. Previously, the
transport defined a function that we would call to send
a congestion map.

Convert TCP and loop transports to new cong map method.

Signed-off-by: Andy Grover &lt;andy.grover@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We now ask the transport to give us a rm for the congestion
map, and then we handle it normally. Previously, the
transport defined a function that we would call to send
a congestion map.

Convert TCP and loop transports to new cong map method.

Signed-off-by: Andy Grover &lt;andy.grover@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>RDS: Rename data op members prefix from m_ to op_</title>
<updated>2010-09-09T01:11:59+00:00</updated>
<author>
<name>Andy Grover</name>
<email>andy.grover@oracle.com</email>
</author>
<published>2010-01-28T02:04:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=6c7cc6e4694dc464ae884332f2a322973497e3cf'/>
<id>6c7cc6e4694dc464ae884332f2a322973497e3cf</id>
<content type='text'>
For consistency.

Signed-off-by: Andy Grover &lt;andy.grover@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For consistency.

Signed-off-by: Andy Grover &lt;andy.grover@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>RDS: break out rdma and data ops into nested structs in rds_message</title>
<updated>2010-09-09T01:11:33+00:00</updated>
<author>
<name>Andy Grover</name>
<email>andy.grover@oracle.com</email>
</author>
<published>2010-01-12T20:15:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e779137aa76d38d5c33a98ed887092ae4e4f016f'/>
<id>e779137aa76d38d5c33a98ed887092ae4e4f016f</id>
<content type='text'>
Clearly separate rdma-related variables in rm from data-related ones.
This is in anticipation of adding atomic support.

Signed-off-by: Andy Grover &lt;andy.grover@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Clearly separate rdma-related variables in rm from data-related ones.
This is in anticipation of adding atomic support.

Signed-off-by: Andy Grover &lt;andy.grover@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>RDS: cleanup: remove "== NULL"s and "!= NULL"s in ptr comparisons</title>
<updated>2010-09-09T01:11:32+00:00</updated>
<author>
<name>Andy Grover</name>
<email>andy.grover@oracle.com</email>
</author>
<published>2010-01-12T19:56:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8690bfa17aea4c42da1bcf90a7af93d161eca624'/>
<id>8690bfa17aea4c42da1bcf90a7af93d161eca624</id>
<content type='text'>
Favor "if (foo)" style over "if (foo != NULL)".

Signed-off-by: Andy Grover &lt;andy.grover@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Favor "if (foo)" style over "if (foo != NULL)".

Signed-off-by: Andy Grover &lt;andy.grover@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>RDS/TCP: Wait to wake thread when write space available</title>
<updated>2010-03-17T04:16:55+00:00</updated>
<author>
<name>Andy Grover</name>
<email>andy.grover@oracle.com</email>
</author>
<published>2010-03-11T13:49:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8e82376e5f72bb576504c8c6117685e56c1b97db'/>
<id>8e82376e5f72bb576504c8c6117685e56c1b97db</id>
<content type='text'>
Instead of waking the send thread whenever any send space is available,
wait until it is at least half empty. This is modeled on how
sock_def_write_space() does it, and may help to minimize context
switches.

Signed-off-by: Andy Grover &lt;andy.grover@oracle.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Instead of waking the send thread whenever any send space is available,
wait until it is at least half empty. This is modeled on how
sock_def_write_space() does it, and may help to minimize context
switches.

Signed-off-by: Andy Grover &lt;andy.grover@oracle.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net/rds: remove uses of NIPQUAD, use %pI4</title>
<updated>2010-02-04T04:16:48+00:00</updated>
<author>
<name>Joe Perches</name>
<email>joe@perches.com</email>
</author>
<published>2010-02-02T12:43:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=6884b348ed759184032306c9435a727741a72298'/>
<id>6884b348ed759184032306c9435a727741a72298</id>
<content type='text'>
Signed-off-by: Joe Perches &lt;joe@perches.com&gt;
Cc: Andy Grover &lt;andy.grover@oracle.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Joe Perches &lt;joe@perches.com&gt;
Cc: Andy Grover &lt;andy.grover@oracle.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>RDS: Add TCP transport to RDS</title>
<updated>2009-08-24T02:13:02+00:00</updated>
<author>
<name>Andy Grover</name>
<email>andy.grover@oracle.com</email>
</author>
<published>2009-08-21T12:28:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=70041088e3b976627ba9a183b812f39ef8a9ba0e'/>
<id>70041088e3b976627ba9a183b812f39ef8a9ba0e</id>
<content type='text'>
This code allows RDS to be tunneled over a TCP connection.

RDMA operations are disabled when using TCP transport,
but this frees RDS from the IB/RDMA stack dependency, and allows
it to be used with standard Ethernet adapters, or in a VM.

Signed-off-by: Andy Grover &lt;andy.grover@oracle.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This code allows RDS to be tunneled over a TCP connection.

RDMA operations are disabled when using TCP transport,
but this frees RDS from the IB/RDMA stack dependency, and allows
it to be used with standard Ethernet adapters, or in a VM.

Signed-off-by: Andy Grover &lt;andy.grover@oracle.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
