# This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2004/08/07 20:32:26+02:00 kaber@coreworks.de # [PKT_SCHED]: convert us values to psched_us in sch_netem # # Signed-off-by: Patrick McHardy # # net/sched/sch_netem.c # 2004/08/07 20:32:06+02:00 kaber@coreworks.de +23 -4 # [PKT_SCHED]: convert us values to psched_us in sch_netem # diff -Nru a/net/sched/sch_netem.c b/net/sched/sch_netem.c --- a/net/sched/sch_netem.c 2004-08-07 20:40:30 +02:00 +++ b/net/sched/sch_netem.c 2004-08-07 20:40:30 +02:00 @@ -752,6 +752,25 @@ return ret; } +static inline u_int32_t us2psched_us(u_int32_t us) +{ + u64 t; + + t = ((u64)us * PSCHED_JIFFIE2US(HZ)); + t += 1000000 - 1; + do_div(t, 1000000); + return t; +} + +static inline u_int32_t psched_us2us(u_int32_t psched_us) +{ + u64 t; + + t = ((u64)psched_us * 1000000); + do_div(t, PSCHED_JIFFIE2US(HZ)); + return t; +} + static int netem_change(struct Qdisc *sch, struct rtattr *opt) { struct netem_sched_data *q = (struct netem_sched_data *)sch->data; @@ -778,8 +797,8 @@ if (child != &noop_qdisc) qdisc_destroy(child); - q->latency = qopt->latency; - q->jitter = qopt->jitter; + q->latency = us2psched_us(qopt->latency); + q->jitter = us2psched_us(qopt->jitter); q->limit = qopt->limit; q->gap = qopt->gap; q->loss = qopt->loss; @@ -821,8 +840,8 @@ unsigned char *b = skb->tail; struct tc_netem_qopt qopt; - qopt.latency = q->latency; - qopt.jitter = q->jitter; + qopt.latency = psched_us2us(q->latency); + qopt.jitter = psched_us2us(q->jitter); qopt.limit = sch->dev->tx_queue_len; qopt.loss = q->loss; qopt.gap = q->gap;