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

Commit b92edbe0 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller
Browse files

[TCP] Avoid two divides in tcp_output.c



Because 'free_space' variable in __tcp_select_window() is signed,
expression (free_space / 2) forces compiler to emit an integer divide.

This can be changed to a plain right shift, less expensive.

Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 68277acc
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -1627,7 +1627,7 @@ u32 __tcp_select_window(struct sock *sk)
	if (mss > full_space)
	if (mss > full_space)
		mss = full_space;
		mss = full_space;


	if (free_space < full_space/2) {
	if (free_space < (full_space >> 1)) {
		icsk->icsk_ack.quick = 0;
		icsk->icsk_ack.quick = 0;


		if (tcp_memory_pressure)
		if (tcp_memory_pressure)
@@ -1666,7 +1666,7 @@ u32 __tcp_select_window(struct sock *sk)
		if (window <= free_space - mss || window > free_space)
		if (window <= free_space - mss || window > free_space)
			window = (free_space/mss)*mss;
			window = (free_space/mss)*mss;
		else if (mss == full_space &&
		else if (mss == full_space &&
			 free_space > window + full_space/2)
			 free_space > window + (full_space >> 1))
			window = free_space;
			window = free_space;
	}
	}