@@ -643,12 +643,8 @@ static void rxrpc_complete_rtt_probe(struct rxrpc_call *call,
643
643
clear_bit (i + RXRPC_CALL_RTT_PEND_SHIFT , & call -> rtt_avail );
644
644
smp_mb (); /* Read data before setting avail bit */
645
645
set_bit (i , & call -> rtt_avail );
646
- if (type != rxrpc_rtt_rx_cancel )
647
- rxrpc_peer_add_rtt (call , type , i , acked_serial , ack_serial ,
648
- sent_at , resp_time );
649
- else
650
- trace_rxrpc_rtt_rx (call , rxrpc_rtt_rx_cancel , i ,
651
- orig_serial , acked_serial , 0 , 0 );
646
+ rxrpc_peer_add_rtt (call , type , i , acked_serial , ack_serial ,
647
+ sent_at , resp_time );
652
648
matched = true;
653
649
}
654
650
@@ -801,28 +797,21 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
801
797
summary .ack_reason , nr_acks );
802
798
rxrpc_inc_stat (call -> rxnet , stat_rx_acks [ack .reason ]);
803
799
804
- switch (ack .reason ) {
805
- case RXRPC_ACK_PING_RESPONSE :
806
- rxrpc_complete_rtt_probe (call , skb -> tstamp , acked_serial , ack_serial ,
807
- rxrpc_rtt_rx_ping_response );
808
- break ;
809
- case RXRPC_ACK_REQUESTED :
810
- rxrpc_complete_rtt_probe (call , skb -> tstamp , acked_serial , ack_serial ,
811
- rxrpc_rtt_rx_requested_ack );
812
- break ;
813
- default :
814
- if (acked_serial != 0 )
800
+ if (acked_serial != 0 ) {
801
+ switch (ack .reason ) {
802
+ case RXRPC_ACK_PING_RESPONSE :
815
803
rxrpc_complete_rtt_probe (call , skb -> tstamp , acked_serial , ack_serial ,
816
- rxrpc_rtt_rx_cancel );
817
- break ;
818
- }
819
-
820
- if (ack .reason == RXRPC_ACK_PING ) {
821
- rxrpc_send_ACK (call , RXRPC_ACK_PING_RESPONSE , ack_serial ,
822
- rxrpc_propose_ack_respond_to_ping );
823
- } else if (sp -> hdr .flags & RXRPC_REQUEST_ACK ) {
824
- rxrpc_send_ACK (call , RXRPC_ACK_REQUESTED , ack_serial ,
825
- rxrpc_propose_ack_respond_to_ack );
804
+ rxrpc_rtt_rx_ping_response );
805
+ break ;
806
+ case RXRPC_ACK_REQUESTED :
807
+ rxrpc_complete_rtt_probe (call , skb -> tstamp , acked_serial , ack_serial ,
808
+ rxrpc_rtt_rx_requested_ack );
809
+ break ;
810
+ default :
811
+ rxrpc_complete_rtt_probe (call , skb -> tstamp , acked_serial , ack_serial ,
812
+ rxrpc_rtt_rx_other_ack );
813
+ break ;
814
+ }
826
815
}
827
816
828
817
/* If we get an EXCEEDS_WINDOW ACK from the server, it probably
@@ -835,7 +824,7 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
835
824
rxrpc_is_client_call (call )) {
836
825
rxrpc_set_call_completion (call , RXRPC_CALL_REMOTELY_ABORTED ,
837
826
0 , - ENETRESET );
838
- return ;
827
+ goto send_response ;
839
828
}
840
829
841
830
/* If we get an OUT_OF_SEQUENCE ACK from the server, that can also
@@ -849,15 +838,15 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
849
838
rxrpc_is_client_call (call )) {
850
839
rxrpc_set_call_completion (call , RXRPC_CALL_REMOTELY_ABORTED ,
851
840
0 , - ENETRESET );
852
- return ;
841
+ goto send_response ;
853
842
}
854
843
855
844
/* Discard any out-of-order or duplicate ACKs (outside lock). */
856
845
if (!rxrpc_is_ack_valid (call , first_soft_ack , prev_pkt )) {
857
846
trace_rxrpc_rx_discard_ack (call -> debug_id , ack_serial ,
858
847
first_soft_ack , call -> acks_first_seq ,
859
848
prev_pkt , call -> acks_prev_seq );
860
- return ;
849
+ goto send_response ;
861
850
}
862
851
863
852
info .rxMTU = 0 ;
@@ -897,7 +886,7 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
897
886
case RXRPC_CALL_SERVER_AWAIT_ACK :
898
887
break ;
899
888
default :
900
- return ;
889
+ goto send_response ;
901
890
}
902
891
903
892
if (before (hard_ack , call -> acks_hard_ack ) ||
@@ -909,7 +898,7 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
909
898
if (after (hard_ack , call -> acks_hard_ack )) {
910
899
if (rxrpc_rotate_tx_window (call , hard_ack , & summary )) {
911
900
rxrpc_end_tx_phase (call , false, rxrpc_eproto_unexpected_ack );
912
- return ;
901
+ goto send_response ;
913
902
}
914
903
}
915
904
@@ -927,6 +916,14 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
927
916
rxrpc_propose_ack_ping_for_lost_reply );
928
917
929
918
rxrpc_congestion_management (call , skb , & summary , acked_serial );
919
+
920
+ send_response :
921
+ if (ack .reason == RXRPC_ACK_PING )
922
+ rxrpc_send_ACK (call , RXRPC_ACK_PING_RESPONSE , ack_serial ,
923
+ rxrpc_propose_ack_respond_to_ping );
924
+ else if (sp -> hdr .flags & RXRPC_REQUEST_ACK )
925
+ rxrpc_send_ACK (call , RXRPC_ACK_REQUESTED , ack_serial ,
926
+ rxrpc_propose_ack_respond_to_ack );
930
927
}
931
928
932
929
/*
0 commit comments