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: > > > > > +/** > > + * 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. -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html