Index: sys/netinet/cc/cc_cubic.h =================================================================== --- sys/netinet/cc/cc_cubic.h +++ sys/netinet/cc/cc_cubic.h @@ -49,17 +49,17 @@ /* 0.5 << CUBIC_SHIFT. */ #define RENO_BETA 128 -/* ~0.8 << CUBIC_SHIFT. */ -#define CUBIC_BETA 204 +/* ~0.7 << CUBIC_SHIFT. */ +#define CUBIC_BETA 179 -/* ~0.2 << CUBIC_SHIFT. */ -#define ONE_SUB_CUBIC_BETA 51 +/* ~0.3 << CUBIC_SHIFT. */ +#define ONE_SUB_CUBIC_BETA 77 /* 3 * ONE_SUB_CUBIC_BETA. */ -#define THREE_X_PT2 153 +#define THREE_X_PT3 231 /* (2 << CUBIC_SHIFT) - ONE_SUB_CUBIC_BETA. */ -#define TWO_SUB_PT2 461 +#define TWO_SUB_PT3 281 /* ~0.4 << CUBIC_SHIFT. */ #define CUBIC_C_FACTOR 102 @@ -77,9 +77,7 @@ /* * Implementation based on the formulae found in the CUBIC Internet Draft - * "draft-rhee-tcpm-cubic-02". - * - * Note BETA used in cc_cubic is equal to (1-beta) in the I-D + * "draft-ietf-tcpm-cubic-02". */ static __inline float @@ -89,7 +87,7 @@ C = 0.4; - return (pow((wmax_pkts * 0.2) / C, (1.0 / 3.0)) * pow(2, CUBIC_SHIFT)); + return (pow((wmax_pkts * 0.3) / C, (1.0 / 3.0)) * pow(2, CUBIC_SHIFT)); } static __inline unsigned long @@ -118,7 +116,7 @@ uint32_t smss) { - return ((wmax * 0.8) + ((3 * 0.2) / (2 - 0.2) * + return ((wmax * 0.7) + ((3 * 0.2) / (2 - 0.2) * (ticks_since_cong / (float)rtt_ticks) * smss)); } @@ -224,8 +222,8 @@ { /* Equation 4 of I-D. */ - return (((wmax * CUBIC_BETA) + (((THREE_X_PT2 * ticks_since_cong * - smss) << CUBIC_SHIFT) / (TWO_SUB_PT2 * rtt_ticks))) >> CUBIC_SHIFT); + return (((wmax * CUBIC_BETA) + (((THREE_X_PT3 * ticks_since_cong * + smss) << CUBIC_SHIFT) / (TWO_SUB_PT3 * rtt_ticks))) >> CUBIC_SHIFT); } #endif /* _NETINET_CC_CUBIC_H_ */