aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc
diff options
context:
space:
mode:
authorAllan Stephens <allan.stephens@windriver.com>2011-10-26 10:55:16 -0400
committerPaul Gortmaker <paul.gortmaker@windriver.com>2012-02-06 16:59:16 -0500
commit47361c87c504d89f1ba50b4230d56ef67792c258 (patch)
treed3897f3b791c74d8a17c612243a04ee309b04eee /net/tipc
parent934993137199ffb56fef50664f87e71cdb3471b0 (diff)
tipc: Fix problem with broadcast link synchronization between nodes
Corrects a problem in which a link endpoint that activates as the result of receiving a RESET/STATE sequence of link protocol messages fails to properly record the broadcast link status information about the node to which it is now communicating with. (The problem does not occur with the more common RESET/ACTIVATE sequence of messages.) The fix ensures that the broadcast link status info is updated after the RESET message resets the link endpoint, rather than before, thereby preventing new information from being overwritten by the reset operation. Signed-off-by: Allan Stephens <allan.stephens@windriver.com> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Diffstat (limited to 'net/tipc')
-rw-r--r--net/tipc/link.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/net/tipc/link.c b/net/tipc/link.c
index 3405f560a84d..1150ba5a648b 100644
--- a/net/tipc/link.c
+++ b/net/tipc/link.c
@@ -2105,6 +2105,8 @@ static void link_recv_proto_msg(struct tipc_link *l_ptr, struct sk_buff *buf)
2105 l_ptr->owner->block_setup = WAIT_NODE_DOWN; 2105 l_ptr->owner->block_setup = WAIT_NODE_DOWN;
2106 } 2106 }
2107 2107
2108 link_state_event(l_ptr, RESET_MSG);
2109
2108 /* fall thru' */ 2110 /* fall thru' */
2109 case ACTIVATE_MSG: 2111 case ACTIVATE_MSG:
2110 /* Update link settings according other endpoint's values */ 2112 /* Update link settings according other endpoint's values */
@@ -2134,10 +2136,11 @@ static void link_recv_proto_msg(struct tipc_link *l_ptr, struct sk_buff *buf)
2134 if (!tipc_node_is_up(l_ptr->owner)) 2136 if (!tipc_node_is_up(l_ptr->owner))
2135 l_ptr->owner->bclink.last_in = msg_last_bcast(msg); 2137 l_ptr->owner->bclink.last_in = msg_last_bcast(msg);
2136 2138
2137 link_state_event(l_ptr, msg_type(msg));
2138
2139 l_ptr->peer_session = msg_session(msg); 2139 l_ptr->peer_session = msg_session(msg);
2140 l_ptr->peer_bearer_id = msg_bearer_id(msg); 2140 l_ptr->peer_bearer_id = msg_bearer_id(msg);
2141
2142 if (msg_type(msg) == ACTIVATE_MSG)
2143 link_state_event(l_ptr, ACTIVATE_MSG);
2141 break; 2144 break;
2142 case STATE_MSG: 2145 case STATE_MSG:
2143 2146