Replace constant expressions that contain multiplications by
fractional floating point values with integer divides. This will eliminate any chance that the compiler will generate code to evaluate the expression using floating point at runtime. Suggested by: bde Submitted by: Rasool Al-Saadi <ralsaadi@swin.edu.au> MFC after: 8 days (with r300779 and r300949)
This commit is contained in:
parent
dc3be4f872
commit
d673654796
@ -244,20 +244,20 @@ calculate_drop_prob(void *x)
|
||||
p *= (PIE_MAX_PROB << 12) / AQM_TIME_1S;
|
||||
|
||||
/* auto-tune drop probability */
|
||||
if (prob < (int64_t)(PIE_MAX_PROB * 0.000001))
|
||||
p >>= 11 + PIE_FIX_POINT_BITS+12;
|
||||
else if (prob < (int64_t)(PIE_MAX_PROB * 0.00001))
|
||||
p >>= 9 + PIE_FIX_POINT_BITS+12;
|
||||
else if (prob < (int64_t)(PIE_MAX_PROB * 0.0001))
|
||||
p >>= 7 + PIE_FIX_POINT_BITS+12;
|
||||
else if (prob < (int64_t)(PIE_MAX_PROB * 0.001))
|
||||
p >>= 5 + PIE_FIX_POINT_BITS+12;
|
||||
else if (prob < (int64_t)(PIE_MAX_PROB * 0.01))
|
||||
p >>= 3 + PIE_FIX_POINT_BITS+12;
|
||||
else if (prob < (int64_t)(PIE_MAX_PROB * 0.1))
|
||||
p >>= 1 + PIE_FIX_POINT_BITS+12;
|
||||
if (prob < (PIE_MAX_PROB / 1000000)) /* 0.000001 */
|
||||
p >>= 11 + PIE_FIX_POINT_BITS + 12;
|
||||
else if (prob < (PIE_MAX_PROB / 100000)) /* 0.00001 */
|
||||
p >>= 9 + PIE_FIX_POINT_BITS + 12;
|
||||
else if (prob < (PIE_MAX_PROB / 10000)) /* 0.0001 */
|
||||
p >>= 7 + PIE_FIX_POINT_BITS + 12;
|
||||
else if (prob < (PIE_MAX_PROB / 1000)) /* 0.001 */
|
||||
p >>= 5 + PIE_FIX_POINT_BITS + 12;
|
||||
else if (prob < (PIE_MAX_PROB / 100)) /* 0.01 */
|
||||
p >>= 3 + PIE_FIX_POINT_BITS + 12;
|
||||
else if (prob < (PIE_MAX_PROB / 10)) /* 0.1 */
|
||||
p >>= 1 + PIE_FIX_POINT_BITS + 12;
|
||||
else
|
||||
p >>= PIE_FIX_POINT_BITS+12;
|
||||
p >>= PIE_FIX_POINT_BITS + 12;
|
||||
|
||||
oldprob = prob;
|
||||
|
||||
|
@ -132,11 +132,13 @@ drop_early(struct pie_status *pst, uint32_t qlen)
|
||||
* if accu_prob < 0.85 -> enqueue
|
||||
* if accu_prob>8.5 ->drop
|
||||
* between 0.85 and 8.5 || !De-randomize --> drop on prob
|
||||
*
|
||||
* (0.85 = 17/20 ,8.5 = 17/2)
|
||||
*/
|
||||
if (pprms->flags & PIE_DERAND_ENABLED) {
|
||||
if(pst->accu_prob < (uint64_t) (PIE_MAX_PROB * 0.85))
|
||||
if(pst->accu_prob < (uint64_t) (PIE_MAX_PROB * 17 / 20))
|
||||
return ENQUE;
|
||||
if( pst->accu_prob >= (uint64_t) (PIE_MAX_PROB * 8.5))
|
||||
if( pst->accu_prob >= (uint64_t) (PIE_MAX_PROB * 17 / 2))
|
||||
return DROP;
|
||||
}
|
||||
|
||||
|
@ -407,20 +407,20 @@ fq_calculate_drop_prob(void *x)
|
||||
p *= (PIE_MAX_PROB << 12) / AQM_TIME_1S;
|
||||
|
||||
/* auto-tune drop probability */
|
||||
if (prob < (int64_t)(PIE_MAX_PROB * 0.000001))
|
||||
p >>= 11 + PIE_FIX_POINT_BITS+12;
|
||||
else if (prob < (int64_t)(PIE_MAX_PROB * 0.00001))
|
||||
p >>= 9 + PIE_FIX_POINT_BITS+12;
|
||||
else if (prob < (int64_t)(PIE_MAX_PROB * 0.0001))
|
||||
p >>= 7 + PIE_FIX_POINT_BITS+12;
|
||||
else if (prob < (int64_t)(PIE_MAX_PROB * 0.001))
|
||||
p >>= 5 + PIE_FIX_POINT_BITS+12;
|
||||
else if (prob < (int64_t)(PIE_MAX_PROB * 0.01))
|
||||
p >>= 3 + PIE_FIX_POINT_BITS+12;
|
||||
else if (prob < (int64_t)(PIE_MAX_PROB * 0.1))
|
||||
p >>= 1 + PIE_FIX_POINT_BITS+12;
|
||||
if (prob < (PIE_MAX_PROB / 1000000)) /* 0.000001 */
|
||||
p >>= 11 + PIE_FIX_POINT_BITS + 12;
|
||||
else if (prob < (PIE_MAX_PROB / 100000)) /* 0.00001 */
|
||||
p >>= 9 + PIE_FIX_POINT_BITS + 12;
|
||||
else if (prob < (PIE_MAX_PROB / 10000)) /* 0.0001 */
|
||||
p >>= 7 + PIE_FIX_POINT_BITS + 12;
|
||||
else if (prob < (PIE_MAX_PROB / 1000)) /* 0.001 */
|
||||
p >>= 5 + PIE_FIX_POINT_BITS + 12;
|
||||
else if (prob < (PIE_MAX_PROB / 100)) /* 0.01 */
|
||||
p >>= 3 + PIE_FIX_POINT_BITS + 12;
|
||||
else if (prob < (PIE_MAX_PROB / 10)) /* 0.1 */
|
||||
p >>= 1 + PIE_FIX_POINT_BITS + 12;
|
||||
else
|
||||
p >>= PIE_FIX_POINT_BITS+12;
|
||||
p >>= PIE_FIX_POINT_BITS + 12;
|
||||
|
||||
oldprob = prob;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user