@ -49,7 +49,8 @@ static void rxrpc_send_ping(struct rxrpc_call *call, struct sk_buff *skb,
if ( call - > peer - > rtt_usage < 3 | |
ktime_before ( ktime_add_ms ( call - > peer - > rtt_last_req , 1000 ) , now ) )
rxrpc_propose_ACK ( call , RXRPC_ACK_PING , skew , sp - > hdr . serial ,
true , true ) ;
true , true ,
rxrpc_propose_ack_ping_for_params ) ;
}
/*
@ -382,7 +383,8 @@ skip:
ack :
if ( ack )
rxrpc_propose_ACK ( call , ack , skew , ack_serial ,
immediate_ack , true ) ;
immediate_ack , true ,
rxrpc_propose_ack_input_data ) ;
if ( sp - > hdr . seq = = READ_ONCE ( call - > rx_hard_ack ) + 1 )
rxrpc_notify_socket ( call ) ;
@ -539,6 +541,7 @@ static void rxrpc_input_soft_acks(struct rxrpc_call *call, u8 *acks,
static void rxrpc_input_ack ( struct rxrpc_call * call , struct sk_buff * skb ,
u16 skew )
{
u8 ack_reason ;
struct rxrpc_skb_priv * sp = rxrpc_skb ( skb ) ;
union {
struct rxrpc_ackpacket ack ;
@ -561,8 +564,10 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb,
first_soft_ack = ntohl ( buf . ack . firstPacket ) ;
hard_ack = first_soft_ack - 1 ;
nr_acks = buf . ack . nAcks ;
ack_reason = ( buf . ack . reason < RXRPC_ACK__INVALID ?
buf . ack . reason : RXRPC_ACK__INVALID ) ;
trace_rxrpc_rx_ack ( call , first_soft_ack , buf . ack . reason , nr_acks ) ;
trace_rxrpc_rx_ack ( call , first_soft_ack , ack_ reason, nr_acks ) ;
_proto ( " Rx ACK %%%u { m=%hu f=#%u p=#%u s=%%%u r=%s n=%u } " ,
sp - > hdr . serial ,
@ -570,7 +575,7 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb,
first_soft_ack ,
ntohl ( buf . ack . previousPacket ) ,
acked_serial ,
rxrpc_acks ( buf . ack . reason ) ,
rxrpc_ack_names [ ack_reason ] ,
buf . ack . nAcks ) ;
if ( buf . ack . reason = = RXRPC_ACK_PING_RESPONSE )
@ -583,10 +588,12 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb,
if ( buf . ack . reason = = RXRPC_ACK_PING ) {
_proto ( " Rx ACK %%%u PING Request " , sp - > hdr . serial ) ;
rxrpc_propose_ACK ( call , RXRPC_ACK_PING_RESPONSE ,
skew , sp - > hdr . serial , true , true ) ;
skew , sp - > hdr . serial , true , true ,
rxrpc_propose_ack_respond_to_ping ) ;
} else if ( sp - > hdr . flags & RXRPC_REQUEST_ACK ) {
rxrpc_propose_ACK ( call , RXRPC_ACK_REQUESTED ,
skew , sp - > hdr . serial , true , true ) ;
skew , sp - > hdr . serial , true , true ,
rxrpc_propose_ack_respond_to_ack ) ;
}
offset = sp - > offset + nr_acks + 3 ;