tipc: reverse call order for link_reset()->node_link_down()
In many cases the call order when a link is reset goes as follows: tipc_node_xx()->tipc_link_reset()->tipc_node_link_down() This is not the right order if we want the node to be in control, so in this commit we change the order to: tipc_node_xx()->tipc_node_link_down()->tipc_link_reset() The fact that tipc_link_reset() now is called from only one location with a well-defined state will also facilitate later simplifications of tipc_link_reset() and the link FSM. Tested-by: Ying Xue <ying.xue@windriver.com> Signed-off-by: Jon Maloy <jon.maloy@ericsson.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
6144a996a6
commit
655fb243b8
@@ -566,7 +566,6 @@ void tipc_link_purge_queues(struct tipc_link *l_ptr)
|
||||
void tipc_link_reset(struct tipc_link *l_ptr)
|
||||
{
|
||||
u32 prev_state = l_ptr->state;
|
||||
int was_active_link = tipc_link_is_active(l_ptr);
|
||||
struct tipc_node *owner = l_ptr->owner;
|
||||
struct tipc_link *pl = tipc_parallel_link(l_ptr);
|
||||
|
||||
@@ -584,10 +583,7 @@ void tipc_link_reset(struct tipc_link *l_ptr)
|
||||
(prev_state == TIPC_LINK_ESTABLISHING))
|
||||
return;
|
||||
|
||||
tipc_node_link_down(l_ptr->owner, l_ptr->bearer_id);
|
||||
tipc_bearer_remove_dest(owner->net, l_ptr->bearer_id, l_ptr->addr);
|
||||
|
||||
if (was_active_link && tipc_node_is_up(l_ptr->owner) && (pl != l_ptr)) {
|
||||
if (tipc_node_is_up(l_ptr->owner) && (pl != l_ptr)) {
|
||||
l_ptr->exec_mode = TIPC_LINK_BLOCKED;
|
||||
l_ptr->failover_checkpt = l_ptr->rcv_nxt;
|
||||
pl->failover_pkts = FIRST_FAILOVER;
|
||||
|
Reference in New Issue
Block a user