@@ -236,6 +236,8 @@ u32 tipc_port_init(struct tipc_port *p_ptr,
236
236
void tipc_port_destroy (struct tipc_port * p_ptr )
237
237
{
238
238
struct sk_buff * buf = NULL ;
239
+ struct tipc_msg * msg = NULL ;
240
+ u32 peer ;
239
241
240
242
tipc_withdraw (p_ptr , 0 , NULL );
241
243
@@ -247,14 +249,15 @@ void tipc_port_destroy(struct tipc_port *p_ptr)
247
249
if (p_ptr -> connected ) {
248
250
buf = port_build_peer_abort_msg (p_ptr , TIPC_ERR_NO_PORT );
249
251
tipc_nodesub_unsubscribe (& p_ptr -> subscription );
252
+ msg = buf_msg (buf );
253
+ peer = msg_destnode (msg );
254
+ tipc_link_xmit2 (buf , peer , msg_link_selector (msg ));
250
255
}
251
-
252
256
spin_lock_bh (& tipc_port_list_lock );
253
257
list_del (& p_ptr -> port_list );
254
258
list_del (& p_ptr -> wait_list );
255
259
spin_unlock_bh (& tipc_port_list_lock );
256
260
k_term_timer (& p_ptr -> timer );
257
- tipc_net_route_msg (buf );
258
261
}
259
262
260
263
/*
@@ -276,6 +279,7 @@ static struct sk_buff *port_build_proto_msg(struct tipc_port *p_ptr,
276
279
msg_set_destport (msg , tipc_port_peerport (p_ptr ));
277
280
msg_set_origport (msg , p_ptr -> ref );
278
281
msg_set_msgcnt (msg , ack );
282
+ buf -> next = NULL ;
279
283
}
280
284
return buf ;
281
285
}
@@ -284,6 +288,7 @@ static void port_timeout(unsigned long ref)
284
288
{
285
289
struct tipc_port * p_ptr = tipc_port_lock (ref );
286
290
struct sk_buff * buf = NULL ;
291
+ struct tipc_msg * msg = NULL ;
287
292
288
293
if (!p_ptr )
289
294
return ;
@@ -302,20 +307,23 @@ static void port_timeout(unsigned long ref)
302
307
k_start_timer (& p_ptr -> timer , p_ptr -> probing_interval );
303
308
}
304
309
tipc_port_unlock (p_ptr );
305
- tipc_net_route_msg (buf );
310
+ msg = buf_msg (buf );
311
+ tipc_link_xmit2 (buf , msg_destnode (msg ), msg_link_selector (msg ));
306
312
}
307
313
308
314
309
315
static void port_handle_node_down (unsigned long ref )
310
316
{
311
317
struct tipc_port * p_ptr = tipc_port_lock (ref );
312
318
struct sk_buff * buf = NULL ;
319
+ struct tipc_msg * msg = NULL ;
313
320
314
321
if (!p_ptr )
315
322
return ;
316
323
buf = port_build_self_abort_msg (p_ptr , TIPC_ERR_NO_NODE );
317
324
tipc_port_unlock (p_ptr );
318
- tipc_net_route_msg (buf );
325
+ msg = buf_msg (buf );
326
+ tipc_link_xmit2 (buf , msg_destnode (msg ), msg_link_selector (msg ));
319
327
}
320
328
321
329
@@ -327,6 +335,7 @@ static struct sk_buff *port_build_self_abort_msg(struct tipc_port *p_ptr, u32 er
327
335
struct tipc_msg * msg = buf_msg (buf );
328
336
msg_swap_words (msg , 4 , 5 );
329
337
msg_swap_words (msg , 6 , 7 );
338
+ buf -> next = NULL ;
330
339
}
331
340
return buf ;
332
341
}
@@ -351,6 +360,7 @@ static struct sk_buff *port_build_peer_abort_msg(struct tipc_port *p_ptr, u32 er
351
360
if (imp < TIPC_CRITICAL_IMPORTANCE )
352
361
msg_set_importance (msg , ++ imp );
353
362
msg_set_errcode (msg , err );
363
+ buf -> next = NULL ;
354
364
}
355
365
return buf ;
356
366
}
@@ -401,7 +411,7 @@ void tipc_port_proto_rcv(struct sk_buff *buf)
401
411
p_ptr -> probing_state = CONFIRMED ;
402
412
tipc_port_unlock (p_ptr );
403
413
exit :
404
- tipc_net_route_msg (r_buf );
414
+ tipc_link_xmit2 (r_buf , msg_destnode ( msg ), msg_link_selector ( msg ) );
405
415
kfree_skb (buf );
406
416
}
407
417
@@ -496,6 +506,7 @@ void tipc_acknowledge(u32 ref, u32 ack)
496
506
{
497
507
struct tipc_port * p_ptr ;
498
508
struct sk_buff * buf = NULL ;
509
+ struct tipc_msg * msg ;
499
510
500
511
p_ptr = tipc_port_lock (ref );
501
512
if (!p_ptr )
@@ -505,7 +516,10 @@ void tipc_acknowledge(u32 ref, u32 ack)
505
516
buf = port_build_proto_msg (p_ptr , CONN_ACK , ack );
506
517
}
507
518
tipc_port_unlock (p_ptr );
508
- tipc_net_route_msg (buf );
519
+ if (!buf )
520
+ return ;
521
+ msg = buf_msg (buf );
522
+ tipc_link_xmit2 (buf , msg_destnode (msg ), msg_link_selector (msg ));
509
523
}
510
524
511
525
int tipc_publish (struct tipc_port * p_ptr , unsigned int scope ,
@@ -656,6 +670,7 @@ int tipc_port_disconnect(u32 ref)
656
670
*/
657
671
int tipc_port_shutdown (u32 ref )
658
672
{
673
+ struct tipc_msg * msg ;
659
674
struct tipc_port * p_ptr ;
660
675
struct sk_buff * buf = NULL ;
661
676
@@ -665,6 +680,7 @@ int tipc_port_shutdown(u32 ref)
665
680
666
681
buf = port_build_peer_abort_msg (p_ptr , TIPC_CONN_SHUTDOWN );
667
682
tipc_port_unlock (p_ptr );
668
- tipc_net_route_msg (buf );
683
+ msg = buf_msg (buf );
684
+ tipc_link_xmit2 (buf , msg_destnode (msg ), msg_link_selector (msg ));
669
685
return tipc_port_disconnect (ref );
670
686
}
0 commit comments