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

Commit 01fd0742 authored by David Howells's avatar David Howells
Browse files

rxrpc: Allow tx_winsize to grow in response to an ACK



Allow tx_winsize to grow when the ACK info packet shows a larger receive
window at the other end rather than only permitting it to shrink.

Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
parent 89a80ed4
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -333,14 +333,16 @@ static void rxrpc_input_ackinfo(struct rxrpc_call *call, struct sk_buff *skb,
	struct rxrpc_skb_priv *sp = rxrpc_skb(skb);
	struct rxrpc_peer *peer;
	unsigned int mtu;
	u32 rwind = ntohl(ackinfo->rwind);

	_proto("Rx ACK %%%u Info { rx=%u max=%u rwin=%u jm=%u }",
	       sp->hdr.serial,
	       ntohl(ackinfo->rxMTU), ntohl(ackinfo->maxMTU),
	       ntohl(ackinfo->rwind), ntohl(ackinfo->jumbo_max));
	       rwind, ntohl(ackinfo->jumbo_max));

	if (call->tx_winsize > ntohl(ackinfo->rwind))
		call->tx_winsize = ntohl(ackinfo->rwind);
	if (rwind > RXRPC_RXTX_BUFF_SIZE - 1)
		rwind = RXRPC_RXTX_BUFF_SIZE - 1;
	call->tx_winsize = rwind;

	mtu = min(ntohl(ackinfo->rxMTU), ntohl(ackinfo->maxMTU));