diff --git a/net/tipc/link.c b/net/tipc/link.c
index 467c53a1fb5cf2a5d98513853024d3c6a61ab4a9..d4675e922a8f717682f465fd2c5664ba6bc1e878 100644
--- a/net/tipc/link.c
+++ b/net/tipc/link.c
@@ -1065,7 +1065,7 @@ static void tipc_link_update_cwin(struct tipc_link *l, int released,
 	/* Enter fast recovery */
 	if (unlikely(retransmitted)) {
 		l->ssthresh = max_t(u16, l->window / 2, 300);
-		l->window = l->ssthresh;
+		l->window = min_t(u16, l->ssthresh, l->window);
 		return;
 	}
 	/* Enter slow start */