mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-28 22:54:05 +08:00
rxrpc: Fix delayed ACKs to not set the reference serial number
Fix the construction of delayed ACKs to not set the reference serial number
as they can't be used as an RTT reference.
Fixes: 17926a7932
("[AF_RXRPC]: Provide secure RxRPC sockets for use by userspace and kernel both")
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: "David S. Miller" <davem@davemloft.net>
cc: Eric Dumazet <edumazet@google.com>
cc: Jakub Kicinski <kuba@kernel.org>
cc: Paolo Abeni <pabeni@redhat.com>
cc: linux-afs@lists.infradead.org
cc: netdev@vger.kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
f31041417b
commit
e7870cf13d
@ -696,7 +696,6 @@ struct rxrpc_call {
|
||||
/* Receive-phase ACK management (ACKs we send). */
|
||||
u8 ackr_reason; /* reason to ACK */
|
||||
u16 ackr_sack_base; /* Starting slot in SACK table ring */
|
||||
rxrpc_serial_t ackr_serial; /* serial of packet being ACK'd */
|
||||
rxrpc_seq_t ackr_window; /* Base of SACK window */
|
||||
rxrpc_seq_t ackr_wtop; /* Base of SACK window */
|
||||
unsigned int ackr_nr_unacked; /* Number of unacked packets */
|
||||
|
@ -43,8 +43,6 @@ void rxrpc_propose_delay_ACK(struct rxrpc_call *call, rxrpc_serial_t serial,
|
||||
unsigned long expiry = rxrpc_soft_ack_delay;
|
||||
unsigned long now = jiffies, ack_at;
|
||||
|
||||
call->ackr_serial = serial;
|
||||
|
||||
if (rxrpc_soft_ack_delay < expiry)
|
||||
expiry = rxrpc_soft_ack_delay;
|
||||
if (call->peer->srtt_us != 0)
|
||||
@ -373,7 +371,6 @@ static void rxrpc_send_initial_ping(struct rxrpc_call *call)
|
||||
bool rxrpc_input_call_event(struct rxrpc_call *call, struct sk_buff *skb)
|
||||
{
|
||||
unsigned long now, next, t;
|
||||
rxrpc_serial_t ackr_serial;
|
||||
bool resend = false, expired = false;
|
||||
s32 abort_code;
|
||||
|
||||
@ -423,8 +420,7 @@ bool rxrpc_input_call_event(struct rxrpc_call *call, struct sk_buff *skb)
|
||||
if (time_after_eq(now, t)) {
|
||||
trace_rxrpc_timer(call, rxrpc_timer_exp_ack, now);
|
||||
cmpxchg(&call->delay_ack_at, t, now + MAX_JIFFY_OFFSET);
|
||||
ackr_serial = xchg(&call->ackr_serial, 0);
|
||||
rxrpc_send_ACK(call, RXRPC_ACK_DELAY, ackr_serial,
|
||||
rxrpc_send_ACK(call, RXRPC_ACK_DELAY, 0,
|
||||
rxrpc_propose_ack_ping_for_lost_ack);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user