提交 a6e2fe17 编写于 作者: Y Yang Yingliang 提交者: David S. Miller

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: NYang Yingliang <yangyingliang@huawei.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 6444f72b
......@@ -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;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册