Re: [PATCH net-next 16/37] rxrpc: Implement progressive transmission queue struct
From: Jakub Kicinski
Date: Mon Dec 02 2024 - 22:44:41 EST
On Mon, 2 Dec 2024 14:30:34 +0000 David Howells wrote:
> We need to scan the buffers in the transmission queue occasionally when
> processing ACKs, but the transmission queue is currently a linked list of
> transmission buffers which, when we eventually expand the Tx window to 8192
> packets will be very slow to walk.
>
> Instead, pull the fields we need to examine a lot (last sent time,
> retransmitted flag) into a new struct rxrpc_txqueue and make each one hold
> an array of 32 or 64 packets.
>
> The transmission queue is then a list of these structs, each pointing to a
> contiguous set of packets. Scanning is then a lot faster as the flags and
> timestamps are concentrated in the CPU dcache.
>
> The transmission timestamps are stored as a number of microseconds from a
> base ktime to reduce memory requirements. This should be fine provided we
> manage to transmit an entire buffer within an hour.
>
> This will make implementing RACK-TLP [RFC8985] easier as it will be less
> costly to scan the transmission buffers.
also possibly transient but clang says:
net/rxrpc/output.c:815:20: warning: unused function 'rxrpc_instant_resend' [-Wunused-function]
815 | static inline void rxrpc_instant_resend(struct rxrpc_call *call)
| ^~~~~~~~~~~~~~~~~~~~