<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/net/tipc/link.h, branch linux-3.18.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.18.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.18.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2014-08-23T18:18:33Z</updated>
<entry>
<title>tipc: use pseudo message to wake up sockets after link congestion</title>
<updated>2014-08-23T18:18:33Z</updated>
<author>
<name>Jon Paul Maloy</name>
</author>
<published>2014-08-22T22:09:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=50100a5e39461b2a61d6040e73c384766c29975d'/>
<id>urn:sha1:50100a5e39461b2a61d6040e73c384766c29975d</id>
<content type='text'>
The current link implementation keeps a linked list of blocked ports/
sockets that is populated when there is link congestion. The purpose
of this is to let the link know which users to wake up when the
congestion abates.

This adds unnecessary complexity to the data structure and the code,
since it forces us to involve the link each time we want to delete
a socket. It also forces us to grab the spinlock port_lock within
the scope of node_lock. We want to get rid of this direct dependence,
as well as the deadlock hazard resulting from the usage of port_lock.

In this commit, we instead let the link keep list of a "wakeup" pseudo
messages for use in such situations. Those messages are sent to the
pending sockets via the ordinary message reception path, and wake up
the socket's owner when they are received.

This enables us to get rid of the 'waiting_ports' linked lists in struct
tipc_port that manifest this direct reference. As a consequence, we can
eliminate another BH entry into the socket, and hence the need to grab
port_lock. This is a further step in our effort to remove port_lock
altogether.

Signed-off-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Reviewed-by: Erik Hugne &lt;erik.hugne@ericsson.com&gt;
Reviewed-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>tipc: rename temporarily named functions</title>
<updated>2014-07-17T04:38:19Z</updated>
<author>
<name>Jon Paul Maloy</name>
</author>
<published>2014-07-17T00:41:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9fbfb8b120bd4fe89cd70d6c8841e6e1cfab2609'/>
<id>urn:sha1:9fbfb8b120bd4fe89cd70d6c8841e6e1cfab2609</id>
<content type='text'>
After the previous commit, we can now give the functions with temporary
names, such as tipc_link_xmit2(), tipc_msg_build2() etc., their proper
names.

There are no functional changes in this commit.

Signed-off-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Reviewed-by: Erik Hugne &lt;erik.hugne@ericsson.com&gt;
Reviewed-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>tipc: remove unreferenced functions</title>
<updated>2014-07-17T04:38:19Z</updated>
<author>
<name>Jon Paul Maloy</name>
</author>
<published>2014-07-17T00:41:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c4116e10579c5bbbfc3cd2ad0324ee0d8691e531'/>
<id>urn:sha1:c4116e10579c5bbbfc3cd2ad0324ee0d8691e531</id>
<content type='text'>
We can now remove a number of functions which have become obsolete
and unreferenced through this commit series. There are no functional
changes in this commit.

Signed-off-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Reviewed-by: Erik Hugne &lt;erik.hugne@ericsson.com&gt;
Reviewed-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>tipc: make name table distributor use new send function</title>
<updated>2014-07-17T04:38:18Z</updated>
<author>
<name>Jon Paul Maloy</name>
</author>
<published>2014-07-17T00:40:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=dbdf6d24ad37d63938f29a2d134a1a9f6e9e673c'/>
<id>urn:sha1:dbdf6d24ad37d63938f29a2d134a1a9f6e9e673c</id>
<content type='text'>
In a previous commit series ("tipc: new unicast transmission code")
we introduced a new message sending function, tipc_link_xmit2(),
and moved the unicast data users over to use that function. We now
let the internal name table distributor do the same.

The interaction between the name distributor and the node/link
layer also becomes significantly simpler, so we can eliminate
the function tipc_link_names_xmit().

Signed-off-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Reviewed-by: Erik Hugne &lt;erik.hugne@ericsson.com&gt;
Reviewed-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>tipc: introduce send functions for chained buffers in link</title>
<updated>2014-06-27T19:50:54Z</updated>
<author>
<name>Jon Paul Maloy</name>
</author>
<published>2014-06-26T01:41:32Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4f1688b2c63cd86f0d7bcf95a9b3040e38bd3c1a'/>
<id>urn:sha1:4f1688b2c63cd86f0d7bcf95a9b3040e38bd3c1a</id>
<content type='text'>
The current link implementation provides several different transmit
functions, depending on the characteristics of the message to be
sent: if it is an iovec or an sk_buff, if it needs fragmentation or
not, if the caller holds the node_lock or not. The permutation of
these options gives us an unwanted amount of unnecessarily complex
code.

As a first step towards simplifying the send path for all messages,
we introduce two new send functions at link level, tipc_link_xmit2()
and __tipc_link_xmit2(). The former looks up a link to the message
destination, and if one is found, it grabs the node lock and calls
the second function, which works exclusively inside the node lock
protection. If no link is found, and the destination is on the same
node, it delivers the message directly to the local destination
socket.

The new functions take a buffer chain where all packet headers are
already prepared, and the correct MTU has been used. These two
functions will later replace all other link-level transmit functions.

The functions are not backwards compatible, so we have added them
as new functions with temporary names. They are tested, but have no
users yet. Those will be added later in this series.

Signed-off-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Reviewed-by: Erik Hugne &lt;erik.hugne@ericsson.com&gt;
Reviewed-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>tipc: rename and move message reassembly function</title>
<updated>2014-05-14T19:19:48Z</updated>
<author>
<name>Jon Paul Maloy</name>
</author>
<published>2014-05-14T09:39:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=37e22164a8a3c39bdad45aa463b1e69a1fdf4110'/>
<id>urn:sha1:37e22164a8a3c39bdad45aa463b1e69a1fdf4110</id>
<content type='text'>
The function tipc_link_frag_rcv() is in reality a re-entrant generic
message reassemby function that has nothing in particular to do with
the link, where it is defined now. This becomes obvious when we see
the need to call the function from other places in the code.

In this commit rename it to tipc_buf_append() and move it to the file
msg.c. We also simplify its signature by moving the tail pointer to
the control block of the head buffer, hence making the head buffer
self-contained.

Signed-off-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Reviewed-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>tipc: avoid to asynchronously reset all links</title>
<updated>2014-05-05T21:26:45Z</updated>
<author>
<name>Ying Xue</name>
</author>
<published>2014-05-05T00:56:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3f5a12bd9f9a61d8a12f9adf778b14e4bb8ca050'/>
<id>urn:sha1:3f5a12bd9f9a61d8a12f9adf778b14e4bb8ca050</id>
<content type='text'>
Postpone the actions of resetting all links until after bclink
lock is released, avoiding to asynchronously reset all links.

Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Reviewed-by: Erik Hugne &lt;erik.hugne@ericsson.com&gt;
Reviewed-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>tipc: decouple the relationship between bearer and link</title>
<updated>2014-04-23T01:17:53Z</updated>
<author>
<name>Ying Xue</name>
</author>
<published>2014-04-21T02:55:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7a2f7d18e79b09c5c5a65fb1fa0e31ad046b3116'/>
<id>urn:sha1:7a2f7d18e79b09c5c5a65fb1fa0e31ad046b3116</id>
<content type='text'>
Currently on both paths of message transmission and reception, the
read lock of tipc_net_lock must be held before bearer is accessed,
while the write lock of tipc_net_lock has to be taken before bearer
is configured. Although it can ensure that bearer is always valid on
the two data paths, link and bearer is closely bound together.

So as the part of effort of removing tipc_net_lock, the locking
policy of bearer protection will be adjusted as below: on the two
data paths, RCU is used, and on the configuration path of bearer,
RTNL lock is applied.

Now RCU just covers the path of message reception. To make it possible
to protect the path of message transmission with RCU, link should not
use its stored bearer pointer to access bearer, but it should use the
bearer identity of its attached bearer as index to get bearer instance
from bearer_list array, which can help us decouple the relationship
between bearer and link. As a result, bearer on the path of message
transmission can be safely protected by RCU when we access bearer_list
array within RCU lock protection.

Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Reviewed-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Reviewed-by: Erik Hugne &lt;erik.hugne@ericsson.com&gt;
Tested-by: Erik Hugne &lt;erik.hugne@ericsson.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>tipc: align tipc function names with common naming practice in the network</title>
<updated>2014-02-18T22:31:59Z</updated>
<author>
<name>Ying Xue</name>
</author>
<published>2014-02-18T08:06:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=247f0f3c3176c55b46cb9a20011d3d6757634815'/>
<id>urn:sha1:247f0f3c3176c55b46cb9a20011d3d6757634815</id>
<content type='text'>
Rename the following functions, which are shorter and more in line
with common naming practice in the network subsystem.

tipc_bclink_send_msg-&gt;tipc_bclink_xmit
tipc_bclink_recv_pkt-&gt;tipc_bclink_rcv
tipc_disc_recv_msg-&gt;tipc_disc_rcv
tipc_link_send_proto_msg-&gt;tipc_link_proto_xmit
link_recv_proto_msg-&gt;tipc_link_proto_rcv
link_send_sections_long-&gt;tipc_link_iovec_long_xmit
tipc_link_send_sections_fast-&gt;tipc_link_iovec_xmit_fast
tipc_link_send_sync-&gt;tipc_link_sync_xmit
tipc_link_recv_sync-&gt;tipc_link_sync_rcv
tipc_link_send_buf-&gt;__tipc_link_xmit
tipc_link_send-&gt;tipc_link_xmit
tipc_link_send_names-&gt;tipc_link_names_xmit
tipc_named_recv-&gt;tipc_named_rcv
tipc_link_recv_bundle-&gt;tipc_link_bundle_rcv
tipc_link_dup_send_queue-&gt;tipc_link_dup_queue_xmit
link_send_long_buf-&gt;tipc_link_frag_xmit

tipc_multicast-&gt;tipc_port_mcast_xmit
tipc_port_recv_mcast-&gt;tipc_port_mcast_rcv
tipc_port_reject_sections-&gt;tipc_port_iovec_reject
tipc_port_recv_proto_msg-&gt;tipc_port_proto_rcv
tipc_connect-&gt;tipc_port_connect
__tipc_connect-&gt;__tipc_port_connect
__tipc_disconnect-&gt;__tipc_port_disconnect
tipc_disconnect-&gt;tipc_port_disconnect
tipc_shutdown-&gt;tipc_port_shutdown
tipc_port_recv_msg-&gt;tipc_port_rcv
tipc_port_recv_sections-&gt;tipc_port_iovec_rcv

release-&gt;tipc_release
accept-&gt;tipc_accept
bind-&gt;tipc_bind
get_name-&gt;tipc_getname
poll-&gt;tipc_poll
send_msg-&gt;tipc_sendmsg
send_packet-&gt;tipc_send_packet
send_stream-&gt;tipc_send_stream
recv_msg-&gt;tipc_recvmsg
recv_stream-&gt;tipc_recv_stream
connect-&gt;tipc_connect
listen-&gt;tipc_listen
shutdown-&gt;tipc_shutdown
setsockopt-&gt;tipc_setsockopt
getsockopt-&gt;tipc_getsockopt

Above changes have no impact on current users of the functions.

Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Reviewed-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>tipc: delay delete of link when failover is needed</title>
<updated>2014-02-13T22:57:07Z</updated>
<author>
<name>Jon Paul Maloy</name>
</author>
<published>2014-02-13T22:29:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7d33939f475d403e79124e3143d7951dcfe8629f'/>
<id>urn:sha1:7d33939f475d403e79124e3143d7951dcfe8629f</id>
<content type='text'>
When a bearer is disabled, all its attached links are deleted.
Ideally, we should do link failover to redundant links on other bearers,
if there are any, in such cases. This would be consistent with current
behavior when a link is reset, but not deleted. However, due to the
complexity involved, and the (wrongly) perceived low demand for this
feature, it was never implemented until now.

We mark the doomed link for deletion with a new flag, but wait until the
failover process is finished before we actually delete it. With the
improved link tunnelling/failover code introduced earlier in this commit
series, it is now easy to identify a spot in the code where the failover
is finished and it is safe to delete the marked link. Moreover, the test
for the flag and the deletion can be done synchronously, and outside the
most time critical data path.

Signed-off-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Reviewed-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
