Re: [PATCH RFC net-next 1/2] tcp: Add DPIFL thin stream detection mechanism
From: Bendik Rønning Opstad <hidden>
Date: 2015-10-25 05:56:35
Also in:
lkml, netdev
From: Bendik Rønning Opstad <hidden>
Date: 2015-10-25 05:56:35
Also in:
lkml, netdev
On Friday, October 23, 2015 02:44:14 PM Eric Dumazet wrote:
On Fri, 2015-10-23 at 22:50 +0200, Bendik Rønning Opstad wrote:quoted
+/** + * tcp_stream_is_thin_dpifl() - Tests if the stream is thin based on dynamic PIF + * limit + * @tp: the tcp_sock struct + * + * Return: true if current packets in flight (PIF) count is lower than + * the dynamic PIF limit, else false + */ +static inline bool tcp_stream_is_thin_dpifl(const struct tcp_sock *tp) +{ + u64 dpif_lim = tp->srtt_us >> 3; + /* Div by is_thin_min_itt_lim, the minimum allowed ITT + * (Inter-transmission time) in usecs. + */ + do_div(dpif_lim, tp->thin_dpifl_itt_lower_bound); + return tcp_packets_in_flight(tp) < dpif_lim; +} +This is very strange : You are using a do_div() while both operands are 32bits. A regular divide would be ok : u32 dpif_lim = (tp->srtt_us >> 3) / tp->thin_dpifl_itt_lower_bound; But then, you can avoid the divide by using a multiply, less expensive : return (u64)tcp_packets_in_flight(tp) * tp->thin_dpifl_itt_lower_bound < (tp->srtt_us >> 3);
You are of course correct. Will fix this and use multiply. Thanks.