@@ -843,7 +843,7 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
843
843
struct rxrpc_ackinfo info ;
844
844
u8 acks [RXRPC_MAXACKS ];
845
845
} buf ;
846
- rxrpc_serial_t acked_serial ;
846
+ rxrpc_serial_t ack_serial , acked_serial ;
847
847
rxrpc_seq_t first_soft_ack , hard_ack , prev_pkt ;
848
848
int nr_acks , offset , ioffset ;
849
849
@@ -856,6 +856,7 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
856
856
}
857
857
offset += sizeof (buf .ack );
858
858
859
+ ack_serial = sp -> hdr .serial ;
859
860
acked_serial = ntohl (buf .ack .serial );
860
861
first_soft_ack = ntohl (buf .ack .firstPacket );
861
862
prev_pkt = ntohl (buf .ack .previousPacket );
@@ -864,31 +865,31 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
864
865
summary .ack_reason = (buf .ack .reason < RXRPC_ACK__INVALID ?
865
866
buf .ack .reason : RXRPC_ACK__INVALID );
866
867
867
- trace_rxrpc_rx_ack (call , sp -> hdr . serial , acked_serial ,
868
+ trace_rxrpc_rx_ack (call , ack_serial , acked_serial ,
868
869
first_soft_ack , prev_pkt ,
869
870
summary .ack_reason , nr_acks );
870
871
871
872
if (buf .ack .reason == RXRPC_ACK_PING_RESPONSE )
872
873
rxrpc_input_ping_response (call , skb -> tstamp , acked_serial ,
873
- sp -> hdr . serial );
874
+ ack_serial );
874
875
if (buf .ack .reason == RXRPC_ACK_REQUESTED )
875
876
rxrpc_input_requested_ack (call , skb -> tstamp , acked_serial ,
876
- sp -> hdr . serial );
877
+ ack_serial );
877
878
878
879
if (buf .ack .reason == RXRPC_ACK_PING ) {
879
- _proto ("Rx ACK %%%u PING Request" , sp -> hdr . serial );
880
+ _proto ("Rx ACK %%%u PING Request" , ack_serial );
880
881
rxrpc_propose_ACK (call , RXRPC_ACK_PING_RESPONSE ,
881
- sp -> hdr . serial , true, true,
882
+ ack_serial , true, true,
882
883
rxrpc_propose_ack_respond_to_ping );
883
884
} else if (sp -> hdr .flags & RXRPC_REQUEST_ACK ) {
884
885
rxrpc_propose_ACK (call , RXRPC_ACK_REQUESTED ,
885
- sp -> hdr . serial , true, true,
886
+ ack_serial , true, true,
886
887
rxrpc_propose_ack_respond_to_ack );
887
888
}
888
889
889
890
/* Discard any out-of-order or duplicate ACKs (outside lock). */
890
891
if (!rxrpc_is_ack_valid (call , first_soft_ack , prev_pkt )) {
891
- trace_rxrpc_rx_discard_ack (call -> debug_id , sp -> hdr . serial ,
892
+ trace_rxrpc_rx_discard_ack (call -> debug_id , ack_serial ,
892
893
first_soft_ack , call -> ackr_first_seq ,
893
894
prev_pkt , call -> ackr_prev_seq );
894
895
return ;
@@ -904,7 +905,7 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
904
905
905
906
/* Discard any out-of-order or duplicate ACKs (inside lock). */
906
907
if (!rxrpc_is_ack_valid (call , first_soft_ack , prev_pkt )) {
907
- trace_rxrpc_rx_discard_ack (call -> debug_id , sp -> hdr . serial ,
908
+ trace_rxrpc_rx_discard_ack (call -> debug_id , ack_serial ,
908
909
first_soft_ack , call -> ackr_first_seq ,
909
910
prev_pkt , call -> ackr_prev_seq );
910
911
goto out ;
@@ -964,7 +965,7 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
964
965
RXRPC_TX_ANNO_LAST &&
965
966
summary .nr_acks == call -> tx_top - hard_ack &&
966
967
rxrpc_is_client_call (call ))
967
- rxrpc_propose_ACK (call , RXRPC_ACK_PING , sp -> hdr . serial ,
968
+ rxrpc_propose_ACK (call , RXRPC_ACK_PING , ack_serial ,
968
969
false, true,
969
970
rxrpc_propose_ack_ping_for_lost_reply );
970
971
0 commit comments