sch_netem: replace magic numbers with enumerate

Replace some magic numbers which describe states of 4-state model
loss generator with enumerate.

Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Yang Yingliang 2014-01-18 18:13:31 +08:00 committed by David S. Miller
parent 6444f72b4b
commit a6e2fe17eb
1 changed files with 28 additions and 19 deletions

View File

@ -110,6 +110,13 @@ struct netem_sched_data {
CLG_GILB_ELL,
} loss_model;
enum {
TX_IN_GAP_PERIOD = 1,
TX_IN_BURST_PERIOD,
LOST_IN_GAP_PERIOD,
LOST_IN_BURST_PERIOD,
} _4_state_model;
/* Correlated Loss Generation models */
struct clgstate {
/* state of the Markov chain */
@ -205,43 +212,45 @@ static bool loss_4state(struct netem_sched_data *q)
* probabilities outgoing from the current state, then decides the
* next state and if the next packet has to be transmitted or lost.
* The four states correspond to:
* 1 => successfully transmitted packets within a gap period
* 4 => isolated losses within a gap period
* 3 => lost packets within a burst period
* 2 => successfully transmitted packets within a burst period
* TX_IN_GAP_PERIOD => successfully transmitted packets within a gap period
* LOST_IN_BURST_PERIOD => isolated losses within a gap period
* LOST_IN_GAP_PERIOD => lost packets within a burst period
* TX_IN_GAP_PERIOD => successfully transmitted packets within a burst period
*/
switch (clg->state) {
case 1:
case TX_IN_GAP_PERIOD:
if (rnd < clg->a4) {
clg->state = 4;
clg->state = LOST_IN_BURST_PERIOD;
return true;
} else if (clg->a4 < rnd && rnd < clg->a1 + clg->a4) {
clg->state = 3;
clg->state = LOST_IN_GAP_PERIOD;
return true;
} else if (clg->a1 + clg->a4 < rnd)
clg->state = 1;
} else if (clg->a1 + clg->a4 < rnd) {
clg->state = TX_IN_GAP_PERIOD;
}
break;
case 2:
case TX_IN_BURST_PERIOD:
if (rnd < clg->a5) {
clg->state = 3;
clg->state = LOST_IN_GAP_PERIOD;
return true;
} else
clg->state = 2;
} else {
clg->state = TX_IN_BURST_PERIOD;
}
break;
case 3:
case LOST_IN_GAP_PERIOD:
if (rnd < clg->a3)
clg->state = 2;
clg->state = TX_IN_BURST_PERIOD;
else if (clg->a3 < rnd && rnd < clg->a2 + clg->a3) {
clg->state = 1;
clg->state = TX_IN_GAP_PERIOD;
} else if (clg->a2 + clg->a3 < rnd) {
clg->state = 3;
clg->state = LOST_IN_GAP_PERIOD;
return true;
}
break;
case 4:
clg->state = 1;
case LOST_IN_BURST_PERIOD:
clg->state = TX_IN_GAP_PERIOD;
break;
}