Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 90027
b: refs/heads/master
c: 6b3d626
h: refs/heads/master
i:
  90025: 6a77f1d
  90023: 6ba852c
v: v3
  • Loading branch information
Sangtae Ha authored and David S. Miller committed Mar 4, 2008
1 parent 112cdac commit 5ad7e35
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 28 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 7019b78e1483fa724dcba56e8465376b8fd03ea8
refs/heads/master: 6b3d626321c1d4ce9138a86b047dfafc6a403016
35 changes: 8 additions & 27 deletions trunk/net/ipv4/tcp_cubic.c
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
/*
* TCP CUBIC: Binary Increase Congestion control for TCP v2.1
*
* TCP CUBIC: Binary Increase Congestion control for TCP v2.2
* Home page:
* http://netsrv.csc.ncsu.edu/twiki/bin/view/Main/BIC
* This is from the implementation of CUBIC TCP in
* Injong Rhee, Lisong Xu.
* "CUBIC: A New TCP-Friendly High-Speed TCP Variant
* in PFLDnet 2005
* Available from:
* http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/cubic-paper.pdf
* http://netsrv.csc.ncsu.edu/export/cubic-paper.pdf
*
* Unless CUBIC is enabled and congestion window is large
* this behaves the same as the original Reno.
Expand All @@ -20,15 +21,10 @@
#define BICTCP_BETA_SCALE 1024 /* Scale factor beta calculation
* max_cwnd = snd_cwnd * beta
*/
#define BICTCP_B 4 /*
* In binary search,
* go to point (max+min)/N
*/
#define BICTCP_HZ 10 /* BIC HZ 2^10 = 1024 */

static int fast_convergence __read_mostly = 1;
static int max_increment __read_mostly = 16;
static int beta __read_mostly = 819; /* = 819/1024 (BICTCP_BETA_SCALE) */
static int beta __read_mostly = 717; /* = 717/1024 (BICTCP_BETA_SCALE) */
static int initial_ssthresh __read_mostly;
static int bic_scale __read_mostly = 41;
static int tcp_friendliness __read_mostly = 1;
Expand All @@ -40,9 +36,7 @@ static u64 cube_factor __read_mostly;
/* Note parameters that are used for precomputing scale factors are read-only */
module_param(fast_convergence, int, 0644);
MODULE_PARM_DESC(fast_convergence, "turn on/off fast convergence");
module_param(max_increment, int, 0644);
MODULE_PARM_DESC(max_increment, "Limit on increment allowed during binary search");
module_param(beta, int, 0444);
module_param(beta, int, 0644);
MODULE_PARM_DESC(beta, "beta for multiplicative increase");
module_param(initial_ssthresh, int, 0644);
MODULE_PARM_DESC(initial_ssthresh, "initial value of slow start threshold");
Expand Down Expand Up @@ -145,7 +139,7 @@ static u32 cubic_root(u64 a)
static inline void bictcp_update(struct bictcp *ca, u32 cwnd)
{
u64 offs;
u32 delta, t, bic_target, min_cnt, max_cnt;
u32 delta, t, bic_target, max_cnt;

ca->ack_cnt++; /* count the number of ACKs */

Expand Down Expand Up @@ -211,19 +205,6 @@ static inline void bictcp_update(struct bictcp *ca, u32 cwnd)
ca->cnt = 100 * cwnd; /* very small increment*/
}

if (ca->delay_min > 0) {
/* max increment = Smax * rtt / 0.1 */
min_cnt = (cwnd * HZ * 8)/(10 * max_increment * ca->delay_min);

/* use concave growth when the target is above the origin */
if (ca->cnt < min_cnt && t >= ca->bic_K)
ca->cnt = min_cnt;
}

/* slow start and low utilization */
if (ca->loss_cwnd == 0) /* could be aggressive in slow start */
ca->cnt = 50;

/* TCP Friendly */
if (tcp_friendliness) {
u32 scale = beta_scale;
Expand Down Expand Up @@ -391,4 +372,4 @@ module_exit(cubictcp_unregister);
MODULE_AUTHOR("Sangtae Ha, Stephen Hemminger");
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("CUBIC TCP");
MODULE_VERSION("2.1");
MODULE_VERSION("2.2");

0 comments on commit 5ad7e35

Please sign in to comment.