diff options
Diffstat (limited to 'net/tipc')
-rw-r--r-- | net/tipc/bcast.c | 2 | ||||
-rw-r--r-- | net/tipc/link.c | 16 | ||||
-rw-r--r-- | net/tipc/link.h | 2 |
3 files changed, 7 insertions, 13 deletions
diff --git a/net/tipc/bcast.c b/net/tipc/bcast.c index 4c2a80b3c01e..bf860d9e75af 100644 --- a/net/tipc/bcast.c +++ b/net/tipc/bcast.c | |||
@@ -794,7 +794,7 @@ void tipc_bclink_init(void) | |||
794 | void tipc_bclink_stop(void) | 794 | void tipc_bclink_stop(void) |
795 | { | 795 | { |
796 | spin_lock_bh(&bc_lock); | 796 | spin_lock_bh(&bc_lock); |
797 | tipc_link_stop(bcl); | 797 | tipc_link_purge_queues(bcl); |
798 | spin_unlock_bh(&bc_lock); | 798 | spin_unlock_bh(&bc_lock); |
799 | 799 | ||
800 | memset(bclink, 0, sizeof(*bclink)); | 800 | memset(bclink, 0, sizeof(*bclink)); |
diff --git a/net/tipc/link.c b/net/tipc/link.c index 9fb0f6b96b45..471973ff134f 100644 --- a/net/tipc/link.c +++ b/net/tipc/link.c | |||
@@ -87,7 +87,6 @@ static int link_send_sections_long(struct tipc_port *sender, | |||
87 | static void link_state_event(struct tipc_link *l_ptr, u32 event); | 87 | static void link_state_event(struct tipc_link *l_ptr, u32 event); |
88 | static void link_reset_statistics(struct tipc_link *l_ptr); | 88 | static void link_reset_statistics(struct tipc_link *l_ptr); |
89 | static void link_print(struct tipc_link *l_ptr, const char *str); | 89 | static void link_print(struct tipc_link *l_ptr, const char *str); |
90 | static void link_start(struct tipc_link *l_ptr); | ||
91 | static int link_send_long_buf(struct tipc_link *l_ptr, struct sk_buff *buf); | 90 | static int link_send_long_buf(struct tipc_link *l_ptr, struct sk_buff *buf); |
92 | static void tipc_link_send_sync(struct tipc_link *l); | 91 | static void tipc_link_send_sync(struct tipc_link *l); |
93 | static void tipc_link_recv_sync(struct tipc_node *n, struct sk_buff *buf); | 92 | static void tipc_link_recv_sync(struct tipc_node *n, struct sk_buff *buf); |
@@ -281,7 +280,8 @@ struct tipc_link *tipc_link_create(struct tipc_node *n_ptr, | |||
281 | k_init_timer(&l_ptr->timer, (Handler)link_timeout, | 280 | k_init_timer(&l_ptr->timer, (Handler)link_timeout, |
282 | (unsigned long)l_ptr); | 281 | (unsigned long)l_ptr); |
283 | list_add_tail(&l_ptr->link_list, &b_ptr->links); | 282 | list_add_tail(&l_ptr->link_list, &b_ptr->links); |
284 | tipc_k_signal((Handler)link_start, (unsigned long)l_ptr); | 283 | |
284 | link_state_event(l_ptr, STARTING_EVT); | ||
285 | 285 | ||
286 | return l_ptr; | 286 | return l_ptr; |
287 | } | 287 | } |
@@ -306,19 +306,13 @@ void tipc_link_delete(struct tipc_link *l_ptr) | |||
306 | tipc_node_lock(l_ptr->owner); | 306 | tipc_node_lock(l_ptr->owner); |
307 | tipc_link_reset(l_ptr); | 307 | tipc_link_reset(l_ptr); |
308 | tipc_node_detach_link(l_ptr->owner, l_ptr); | 308 | tipc_node_detach_link(l_ptr->owner, l_ptr); |
309 | tipc_link_stop(l_ptr); | 309 | tipc_link_purge_queues(l_ptr); |
310 | list_del_init(&l_ptr->link_list); | 310 | list_del_init(&l_ptr->link_list); |
311 | tipc_node_unlock(l_ptr->owner); | 311 | tipc_node_unlock(l_ptr->owner); |
312 | k_term_timer(&l_ptr->timer); | 312 | k_term_timer(&l_ptr->timer); |
313 | kfree(l_ptr); | 313 | kfree(l_ptr); |
314 | } | 314 | } |
315 | 315 | ||
316 | static void link_start(struct tipc_link *l_ptr) | ||
317 | { | ||
318 | tipc_node_lock(l_ptr->owner); | ||
319 | link_state_event(l_ptr, STARTING_EVT); | ||
320 | tipc_node_unlock(l_ptr->owner); | ||
321 | } | ||
322 | 316 | ||
323 | /** | 317 | /** |
324 | * link_schedule_port - schedule port for deferred sending | 318 | * link_schedule_port - schedule port for deferred sending |
@@ -404,10 +398,10 @@ void tipc_link_reset_fragments(struct tipc_link *l_ptr) | |||
404 | } | 398 | } |
405 | 399 | ||
406 | /** | 400 | /** |
407 | * tipc_link_stop - purge all inbound and outbound messages associated with link | 401 | * tipc_link_purge_queues - purge all pkt queues associated with link |
408 | * @l_ptr: pointer to link | 402 | * @l_ptr: pointer to link |
409 | */ | 403 | */ |
410 | void tipc_link_stop(struct tipc_link *l_ptr) | 404 | void tipc_link_purge_queues(struct tipc_link *l_ptr) |
411 | { | 405 | { |
412 | kfree_skb_list(l_ptr->oldest_deferred_in); | 406 | kfree_skb_list(l_ptr->oldest_deferred_in); |
413 | kfree_skb_list(l_ptr->first_out); | 407 | kfree_skb_list(l_ptr->first_out); |
diff --git a/net/tipc/link.h b/net/tipc/link.h index 89ab89be848d..3b6aa65b608c 100644 --- a/net/tipc/link.h +++ b/net/tipc/link.h | |||
@@ -222,7 +222,7 @@ void tipc_link_dup_send_queue(struct tipc_link *l_ptr, | |||
222 | void tipc_link_reset_fragments(struct tipc_link *l_ptr); | 222 | void tipc_link_reset_fragments(struct tipc_link *l_ptr); |
223 | int tipc_link_is_up(struct tipc_link *l_ptr); | 223 | int tipc_link_is_up(struct tipc_link *l_ptr); |
224 | int tipc_link_is_active(struct tipc_link *l_ptr); | 224 | int tipc_link_is_active(struct tipc_link *l_ptr); |
225 | void tipc_link_stop(struct tipc_link *l_ptr); | 225 | void tipc_link_purge_queues(struct tipc_link *l_ptr); |
226 | struct sk_buff *tipc_link_cmd_config(const void *req_tlv_area, | 226 | struct sk_buff *tipc_link_cmd_config(const void *req_tlv_area, |
227 | int req_tlv_space, | 227 | int req_tlv_space, |
228 | u16 cmd); | 228 | u16 cmd); |