|
@@ -206,8 +206,8 @@ static u32 cubic_root(u64 a)
|
|
|
*/
|
|
|
static inline void bictcp_update(struct bictcp *ca, u32 cwnd)
|
|
|
{
|
|
|
- u64 offs;
|
|
|
- u32 delta, t, bic_target, max_cnt;
|
|
|
+ u32 delta, bic_target, max_cnt;
|
|
|
+ u64 offs, t;
|
|
|
|
|
|
ca->ack_cnt++; /* count the number of ACKs */
|
|
|
|
|
@@ -250,9 +250,11 @@ static inline void bictcp_update(struct bictcp *ca, u32 cwnd)
|
|
|
* if the cwnd < 1 million packets !!!
|
|
|
*/
|
|
|
|
|
|
+ t = (s32)(tcp_time_stamp - ca->epoch_start);
|
|
|
+ t += msecs_to_jiffies(ca->delay_min >> 3);
|
|
|
/* change the unit from HZ to bictcp_HZ */
|
|
|
- t = ((tcp_time_stamp + msecs_to_jiffies(ca->delay_min>>3)
|
|
|
- - ca->epoch_start) << BICTCP_HZ) / HZ;
|
|
|
+ t <<= BICTCP_HZ;
|
|
|
+ do_div(t, HZ);
|
|
|
|
|
|
if (t < ca->bic_K) /* t - K */
|
|
|
offs = ca->bic_K - t;
|