/ cwnd-ca->last_max_cwnd; 
/ (cwnd - ca->last_max_cwnd); 
static inline void bictcp_update(struct bictcp *ca, u32 cwnd){	if (ca->last_cwnd == cwnd &&	    (s32)(tcp_time_stamp - ca->last_time) <= HZ / 32)		return;	ca->last_cwnd = cwnd;	ca->last_time = tcp_time_stamp;	if (ca->epoch_start == 0) /* record the beginning of an epoch */		ca->epoch_start = tcp_time_stamp;	/* start off normal */	if (cwnd <= low_window) {		ca->cnt = cwnd;		return;	}	/* binary increase */	if (cwnd < ca->last_max_cwnd) {		__u32 	dist = (ca->last_max_cwnd - cwnd)			/ BICTCP_B;		if (dist > max_increment)			/* linear increase */			ca->cnt = cwnd / max_increment;		else if (dist <= 1U)			/* binary search increase */			ca->cnt = (cwnd * smooth_part) / BICTCP_B;		else			/* binary search increase */			ca->cnt = cwnd / dist;	} else {		/* slow start AMD linear increase */		if (cwnd < ca->last_max_cwnd + BICTCP_B)			/* slow start */			ca->cnt = (cwnd * smooth_part) / BICTCP_B;		else if (cwnd < ca->last_max_cwnd + max_increment*(BICTCP_B-1))			/* slow start */			ca->cnt = (cwnd * (BICTCP_B-1))				/ cwnd-ca->last_max_cwnd;		else			/* linear increase */			ca->cnt = cwnd / max_increment;	}	/* if in slow start or link utilization is very low */	if ( ca->loss_cwnd == 0 ||	     (cwnd > ca->loss_cwnd && ca->low_utilization)) {		if (ca->cnt > 20) /* increase cwnd 5% per RTT */			ca->cnt = 20;	}	ca->cnt = (ca->cnt << ACK_RATIO_SHIFT) / ca->delayed_ack;	if (ca->cnt == 0)			/* cannot be zero */		ca->cnt = 1;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/42a39450f830c57432fd4e5644fa81f41ce7156d/tcp_bic.c/buggy/net/ipv4/tcp_bic.c