@@ -244,7 +244,6 @@ static u32 link_own_addr(struct tipc_link *l)
244
244
* @ownnode: identity of own node
245
245
* @peer: node id of peer node
246
246
* @peer_caps: bitmap describing peer node capabilities
247
- * @maddr: media address to be used
248
247
* @bc_sndlink: the namespace global link used for broadcast sending
249
248
* @bc_rcvlink: the peer specific link used for broadcast reception
250
249
* @inputq: queue to put messages ready for delivery
@@ -257,7 +256,6 @@ bool tipc_link_create(struct net *net, char *if_name, int bearer_id,
257
256
int tolerance , char net_plane , u32 mtu , int priority ,
258
257
int window , u32 session , u32 ownnode , u32 peer ,
259
258
u16 peer_caps ,
260
- struct tipc_media_addr * maddr ,
261
259
struct tipc_link * bc_sndlink ,
262
260
struct tipc_link * bc_rcvlink ,
263
261
struct sk_buff_head * inputq ,
@@ -286,7 +284,6 @@ bool tipc_link_create(struct net *net, char *if_name, int bearer_id,
286
284
287
285
l -> addr = peer ;
288
286
l -> peer_caps = peer_caps ;
289
- l -> media_addr = maddr ;
290
287
l -> net = net ;
291
288
l -> peer_session = WILDCARD_SESSION ;
292
289
l -> bearer_id = bearer_id ;
@@ -331,7 +328,7 @@ bool tipc_link_bc_create(struct net *net, u32 ownnode, u32 peer,
331
328
struct tipc_link * l ;
332
329
333
330
if (!tipc_link_create (net , "" , MAX_BEARERS , 0 , 'Z' , mtu , 0 , window ,
334
- 0 , ownnode , peer , peer_caps , NULL , bc_sndlink ,
331
+ 0 , ownnode , peer , peer_caps , bc_sndlink ,
335
332
NULL , inputq , namedq , link ))
336
333
return false;
337
334
@@ -662,38 +659,6 @@ void link_prepare_wakeup(struct tipc_link *l)
662
659
}
663
660
}
664
661
665
- /**
666
- * tipc_link_reset_fragments - purge link's inbound message fragments queue
667
- * @l_ptr: pointer to link
668
- */
669
- void tipc_link_reset_fragments (struct tipc_link * l_ptr )
670
- {
671
- kfree_skb (l_ptr -> reasm_buf );
672
- l_ptr -> reasm_buf = NULL ;
673
- }
674
-
675
- void tipc_link_purge_backlog (struct tipc_link * l )
676
- {
677
- __skb_queue_purge (& l -> backlogq );
678
- l -> backlog [TIPC_LOW_IMPORTANCE ].len = 0 ;
679
- l -> backlog [TIPC_MEDIUM_IMPORTANCE ].len = 0 ;
680
- l -> backlog [TIPC_HIGH_IMPORTANCE ].len = 0 ;
681
- l -> backlog [TIPC_CRITICAL_IMPORTANCE ].len = 0 ;
682
- l -> backlog [TIPC_SYSTEM_IMPORTANCE ].len = 0 ;
683
- }
684
-
685
- /**
686
- * tipc_link_purge_queues - purge all pkt queues associated with link
687
- * @l_ptr: pointer to link
688
- */
689
- void tipc_link_purge_queues (struct tipc_link * l_ptr )
690
- {
691
- __skb_queue_purge (& l_ptr -> deferdq );
692
- __skb_queue_purge (& l_ptr -> transmq );
693
- tipc_link_purge_backlog (l_ptr );
694
- tipc_link_reset_fragments (l_ptr );
695
- }
696
-
697
662
void tipc_link_reset (struct tipc_link * l )
698
663
{
699
664
/* Link is down, accept any session */
@@ -705,12 +670,16 @@ void tipc_link_reset(struct tipc_link *l)
705
670
/* Prepare for renewed mtu size negotiation */
706
671
l -> mtu = l -> advertised_mtu ;
707
672
708
- /* Clean up all queues: */
673
+ /* Clean up all queues and counters : */
709
674
__skb_queue_purge (& l -> transmq );
710
675
__skb_queue_purge (& l -> deferdq );
711
676
skb_queue_splice_init (& l -> wakeupq , l -> inputq );
712
-
713
- tipc_link_purge_backlog (l );
677
+ __skb_queue_purge (& l -> backlogq );
678
+ l -> backlog [TIPC_LOW_IMPORTANCE ].len = 0 ;
679
+ l -> backlog [TIPC_MEDIUM_IMPORTANCE ].len = 0 ;
680
+ l -> backlog [TIPC_HIGH_IMPORTANCE ].len = 0 ;
681
+ l -> backlog [TIPC_CRITICAL_IMPORTANCE ].len = 0 ;
682
+ l -> backlog [TIPC_SYSTEM_IMPORTANCE ].len = 0 ;
714
683
kfree_skb (l -> reasm_buf );
715
684
kfree_skb (l -> failover_reasm_skb );
716
685
l -> reasm_buf = NULL ;
@@ -726,74 +695,6 @@ void tipc_link_reset(struct tipc_link *l)
726
695
link_reset_statistics (l );
727
696
}
728
697
729
- /**
730
- * __tipc_link_xmit(): same as tipc_link_xmit, but destlink is known & locked
731
- * @link: link to use
732
- * @list: chain of buffers containing message
733
- *
734
- * Consumes the buffer chain, except when returning an error code,
735
- * Returns 0 if success, or errno: -ELINKCONG, -EMSGSIZE or -ENOBUFS
736
- * Messages at TIPC_SYSTEM_IMPORTANCE are always accepted
737
- */
738
- int __tipc_link_xmit (struct net * net , struct tipc_link * link ,
739
- struct sk_buff_head * list )
740
- {
741
- struct tipc_msg * msg = buf_msg (skb_peek (list ));
742
- unsigned int maxwin = link -> window ;
743
- unsigned int i , imp = msg_importance (msg );
744
- uint mtu = link -> mtu ;
745
- u16 ack = mod (link -> rcv_nxt - 1 );
746
- u16 seqno = link -> snd_nxt ;
747
- u16 bc_ack = link -> bc_rcvlink -> rcv_nxt - 1 ;
748
- struct tipc_media_addr * addr = link -> media_addr ;
749
- struct sk_buff_head * transmq = & link -> transmq ;
750
- struct sk_buff_head * backlogq = & link -> backlogq ;
751
- struct sk_buff * skb , * bskb ;
752
-
753
- /* Match msg importance against this and all higher backlog limits: */
754
- for (i = imp ; i <= TIPC_SYSTEM_IMPORTANCE ; i ++ ) {
755
- if (unlikely (link -> backlog [i ].len >= link -> backlog [i ].limit ))
756
- return link_schedule_user (link , list );
757
- }
758
- if (unlikely (msg_size (msg ) > mtu ))
759
- return - EMSGSIZE ;
760
-
761
- /* Prepare each packet for sending, and add to relevant queue: */
762
- while (skb_queue_len (list )) {
763
- skb = skb_peek (list );
764
- msg = buf_msg (skb );
765
- msg_set_seqno (msg , seqno );
766
- msg_set_ack (msg , ack );
767
- msg_set_bcast_ack (msg , bc_ack );
768
-
769
- if (likely (skb_queue_len (transmq ) < maxwin )) {
770
- __skb_dequeue (list );
771
- __skb_queue_tail (transmq , skb );
772
- tipc_bearer_send (net , link -> bearer_id , skb , addr );
773
- link -> rcv_unacked = 0 ;
774
- seqno ++ ;
775
- continue ;
776
- }
777
- if (tipc_msg_bundle (skb_peek_tail (backlogq ), msg , mtu )) {
778
- kfree_skb (__skb_dequeue (list ));
779
- link -> stats .sent_bundled ++ ;
780
- continue ;
781
- }
782
- if (tipc_msg_make_bundle (& bskb , msg , mtu , link -> addr )) {
783
- kfree_skb (__skb_dequeue (list ));
784
- __skb_queue_tail (backlogq , bskb );
785
- link -> backlog [msg_importance (buf_msg (bskb ))].len ++ ;
786
- link -> stats .sent_bundled ++ ;
787
- link -> stats .sent_bundles ++ ;
788
- continue ;
789
- }
790
- link -> backlog [imp ].len += skb_queue_len (list );
791
- skb_queue_splice_tail_init (list , backlogq );
792
- }
793
- link -> snd_nxt = seqno ;
794
- return 0 ;
795
- }
796
-
797
698
/**
798
699
* tipc_link_xmit(): enqueue buffer list according to queue situation
799
700
* @link: link to use
@@ -867,40 +768,6 @@ int tipc_link_xmit(struct tipc_link *l, struct sk_buff_head *list,
867
768
return 0 ;
868
769
}
869
770
870
- /*
871
- * tipc_link_push_packets - push unsent packets to bearer
872
- *
873
- * Push out the unsent messages of a link where congestion
874
- * has abated. Node is locked.
875
- *
876
- * Called with node locked
877
- */
878
- void tipc_link_push_packets (struct tipc_link * link )
879
- {
880
- struct sk_buff * skb ;
881
- struct tipc_msg * msg ;
882
- u16 seqno = link -> snd_nxt ;
883
- u16 ack = mod (link -> rcv_nxt - 1 );
884
-
885
- while (skb_queue_len (& link -> transmq ) < link -> window ) {
886
- skb = __skb_dequeue (& link -> backlogq );
887
- if (!skb )
888
- break ;
889
- TIPC_SKB_CB (skb )-> ackers = link -> ackers ;
890
- msg = buf_msg (skb );
891
- link -> backlog [msg_importance (msg )].len -- ;
892
- msg_set_ack (msg , ack );
893
- msg_set_seqno (msg , seqno );
894
- seqno = mod (seqno + 1 );
895
- /* msg_set_bcast_ack(msg, link->owner->bclink.last_in); */
896
- link -> rcv_unacked = 0 ;
897
- __skb_queue_tail (& link -> transmq , skb );
898
- tipc_bearer_send (link -> net , link -> bearer_id ,
899
- skb , link -> media_addr );
900
- }
901
- link -> snd_nxt = seqno ;
902
- }
903
-
904
771
void tipc_link_advance_backlog (struct tipc_link * l , struct sk_buff_head * xmitq )
905
772
{
906
773
struct sk_buff * skb , * _skb ;
@@ -943,40 +810,6 @@ static void link_retransmit_failure(struct tipc_link *l, struct sk_buff *skb)
943
810
msg_seqno (hdr ), msg_prevnode (hdr ), msg_orignode (hdr ));
944
811
}
945
812
946
- void tipc_link_retransmit (struct tipc_link * l_ptr , struct sk_buff * skb ,
947
- u32 retransmits )
948
- {
949
- struct tipc_msg * msg ;
950
-
951
- if (!skb )
952
- return ;
953
-
954
- msg = buf_msg (skb );
955
-
956
- /* Detect repeated retransmit failures */
957
- if (l_ptr -> last_retransm == msg_seqno (msg )) {
958
- if (++ l_ptr -> stale_count > 100 ) {
959
- link_retransmit_failure (l_ptr , skb );
960
- return ;
961
- }
962
- } else {
963
- l_ptr -> last_retransm = msg_seqno (msg );
964
- l_ptr -> stale_count = 1 ;
965
- }
966
-
967
- skb_queue_walk_from (& l_ptr -> transmq , skb ) {
968
- if (!retransmits )
969
- break ;
970
- msg = buf_msg (skb );
971
- msg_set_ack (msg , mod (l_ptr -> rcv_nxt - 1 ));
972
- /* msg_set_bcast_ack(msg, l_ptr->owner->bclink.last_in); */
973
- tipc_bearer_send (l_ptr -> net , l_ptr -> bearer_id , skb ,
974
- l_ptr -> media_addr );
975
- retransmits -- ;
976
- l_ptr -> stats .retransmitted ++ ;
977
- }
978
- }
979
-
980
813
int tipc_link_retrans (struct tipc_link * l , u16 from , u16 to ,
981
814
struct sk_buff_head * xmitq )
982
815
{
@@ -1249,45 +1082,6 @@ int tipc_link_rcv(struct tipc_link *l, struct sk_buff *skb,
1249
1082
return rc ;
1250
1083
}
1251
1084
1252
- /**
1253
- * tipc_link_defer_pkt - Add out-of-sequence message to deferred reception queue
1254
- *
1255
- * Returns increase in queue length (i.e. 0 or 1)
1256
- */
1257
- u32 tipc_link_defer_pkt (struct sk_buff_head * list , struct sk_buff * skb )
1258
- {
1259
- struct sk_buff * skb1 ;
1260
- u16 seq_no = buf_seqno (skb );
1261
-
1262
- /* Empty queue ? */
1263
- if (skb_queue_empty (list )) {
1264
- __skb_queue_tail (list , skb );
1265
- return 1 ;
1266
- }
1267
-
1268
- /* Last ? */
1269
- if (less (buf_seqno (skb_peek_tail (list )), seq_no )) {
1270
- __skb_queue_tail (list , skb );
1271
- return 1 ;
1272
- }
1273
-
1274
- /* Locate insertion point in queue, then insert; discard if duplicate */
1275
- skb_queue_walk (list , skb1 ) {
1276
- u16 curr_seqno = buf_seqno (skb1 );
1277
-
1278
- if (seq_no == curr_seqno ) {
1279
- kfree_skb (skb );
1280
- return 0 ;
1281
- }
1282
-
1283
- if (less (seq_no , curr_seqno ))
1284
- break ;
1285
- }
1286
-
1287
- __skb_queue_before (list , skb1 , skb );
1288
- return 1 ;
1289
- }
1290
-
1291
1085
/*
1292
1086
* Send protocol message to the other endpoint.
1293
1087
*/
0 commit comments