From: David Howells Date: Fri, 24 Nov 2017 10:18:41 +0000 (+0000) Subject: rxrpc: Don't transmit DELAY ACKs immediately on proposal X-Git-Tag: v4.19~2071^2~37^2~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8637abaa72fe8200a4a37579e6ec5273db85d2c1;p=platform%2Fkernel%2Flinux-rpi3.git rxrpc: Don't transmit DELAY ACKs immediately on proposal Don't transmit a DELAY ACK immediately on proposal when the Rx window is rotated, but rather defer it to the work function. This means that we have a chance to queue/consume more received packets before we actually send the DELAY ACK, or even cancel it entirely, thereby reducing the number of packets transmitted. We do, however, want to continue sending other types of packet immediately, particularly REQUESTED ACKs, as they may be used for RTT calculation by the other side. Signed-off-by: David Howells --- diff --git a/net/rxrpc/recvmsg.c b/net/rxrpc/recvmsg.c index 0b6609d..fad5f42 100644 --- a/net/rxrpc/recvmsg.c +++ b/net/rxrpc/recvmsg.c @@ -219,9 +219,9 @@ static void rxrpc_rotate_rx_window(struct rxrpc_call *call) after_eq(top, call->ackr_seen + 2) || (hard_ack == top && after(hard_ack, call->ackr_consumed))) rxrpc_propose_ACK(call, RXRPC_ACK_DELAY, 0, serial, - true, false, + true, true, rxrpc_propose_ack_rotate_rx); - if (call->ackr_reason) + if (call->ackr_reason && call->ackr_reason != RXRPC_ACK_DELAY) rxrpc_send_ack_packet(call, false); } }