Sasha Levin <sashal@xxxxxxxxxx> wrote: > I've also grabbed d1f129470e6c ("rxrpc: Trace discarded ACKs") to add a > tracepoint and queued both for 5.6, 5.4, and 4.19. You can just drop the tracepoint bits if that helps. <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > @@ -865,8 +889,7 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb) > } > > /* Discard any out-of-order or duplicate ACKs (outside lock). */ > - if (before(first_soft_ack, call->ackr_first_seq) || > - before(prev_pkt, call->ackr_prev_seq)) { > + if (!rxrpc_is_ack_valid(call, first_soft_ack, prev_pkt)) { > trace_rxrpc_rx_discard_ack(call->debug_id, sp->hdr.serial, > first_soft_ack, call->ackr_first_seq, > prev_pkt, call->ackr_prev_seq); This trace_rxrpc_rx_discard_ack() statement. > @@ -882,8 +905,7 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb) > spin_lock(&call->input_lock); > > /* Discard any out-of-order or duplicate ACKs (inside lock). */ > - if (before(first_soft_ack, call->ackr_first_seq) || > - before(prev_pkt, call->ackr_prev_seq)) { > + if (!rxrpc_is_ack_valid(call, first_soft_ack, prev_pkt)) { > trace_rxrpc_rx_discard_ack(call->debug_id, sp->hdr.serial, > first_soft_ack, call->ackr_first_seq, > prev_pkt, call->ackr_prev_seq); > And this one. David