]> git.ipfire.org Git - people/ms/linux.git/blobdiff - net/rxrpc/recvmsg.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
[people/ms/linux.git] / net / rxrpc / recvmsg.c
index eca6dda26c77eba836b53ee1983d3636340cc918..250f23bc1c076d363fa8d9c3f3e3142f3ef9f7f6 100644 (file)
@@ -260,11 +260,9 @@ static void rxrpc_rotate_rx_window(struct rxrpc_call *call)
                rxrpc_end_rx_phase(call, serial);
        } else {
                /* Check to see if there's an ACK that needs sending. */
-               if (after_eq(hard_ack, call->ackr_consumed + 2) ||
-                   after_eq(top, call->ackr_seen + 2) ||
-                   (hard_ack == top && after(hard_ack, call->ackr_consumed)))
-                       rxrpc_propose_ACK(call, RXRPC_ACK_DELAY, serial,
-                                         true, true,
+               if (atomic_inc_return(&call->ackr_nr_consumed) > 2)
+                       rxrpc_propose_ACK(call, RXRPC_ACK_IDLE, serial,
+                                         true, false,
                                          rxrpc_propose_ack_rotate_rx);
                if (call->ackr_reason && call->ackr_reason != RXRPC_ACK_DELAY)
                        rxrpc_send_ack_packet(call, false, NULL);