Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b24d2891 authored by David Howells's avatar David Howells
Browse files

rxrpc: Preset timestamp on Tx sk_buffs



Set the timestamp on sk_buffs holding packets to be transmitted before
queueing them because the moment the packet is on the queue it can be seen
by the retransmission algorithm - which may see a completely random
timestamp.

If the retransmission algorithm sees such a timestamp, it may retransmit
the packet and, in future, tell the congestion management algorithm that
the retransmit timer expired.

Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
parent e12934d9
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -99,6 +99,11 @@ static void rxrpc_queue_packet(struct rxrpc_call *call, struct sk_buff *skb,

	ASSERTCMP(seq, ==, call->tx_top + 1);

	/* We have to set the timestamp before queueing as the retransmit
	 * algorithm can see the packet as soon as we queue it.
	 */
	skb->tstamp = ktime_get_real();

	ix = seq & RXRPC_RXTX_BUFF_MASK;
	rxrpc_get_skb(skb, rxrpc_skb_tx_got);
	call->rxtx_annotations[ix] = RXRPC_TX_ANNO_UNACK;