[IPROUTE]: Use tc_calc_xmittime() where appropriate Replace expressions of the form "tc_core_usec2tick(1000000 * size/rate)" by tc_calc_xmittime().
The CBQ case deserves an extra comment: when called with bnwd=rate, tc_cbq_calc_maxidle() behaves identical to tc_calc_xmittime(): unsigned tc_cbq_calc_maxidle(...) { double g = 1.0 - 1.0/(1<<ewma_log); double xmt = (double)avpkt/bndw; maxidle = xmt*(1-g); if (bndw != rate && maxburst) { ... } return tc_core_usec2tick(maxidle*(1<<ewma_log)*1000000); } which comes down to: maxidle = xmt * (1 - g) = xmt * (1 - (1.0 - 1.0/(1 << ewma_log)) = xmt * (1.0/(1 << ewma_log)) so: maxidle * (1 << ewma_log) * 1000000 = xmt * (1.0/(1 << ewma_log)) * (1 << ewma_log) * 1000000 = xmt * 1000000 = avpkt/bndw * 1000000 Which means tc_core_usec2tick(maxidle*(1<<ewma_log)*1000000) is identical to tc_calc_xmittime(bndw, avpkt). Use it directly since its a lot easier to understand its limits. Signed-off-by: Patrick McHardy <[EMAIL PROTECTED]> --- commit a367af8046d31e986740aac45677c8fe8910c293 tree 056436a16da372e602f43259609e54bb3e7dce16 parent b17ff630348093476b7679b421aba1797f3d6466 author Patrick McHardy <[EMAIL PROTECTED]> Sat, 03 Mar 2007 20:30:47 +0100 committer Patrick McHardy <[EMAIL PROTECTED]> Sat, 03 Mar 2007 20:30:47 +0100 tc/q_cbq.c | 2 +- tc/tc_core.c | 2 +- tc/tc_red.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tc/q_cbq.c b/tc/q_cbq.c index bc7e8ba..0000a56 100644 --- a/tc/q_cbq.c +++ b/tc/q_cbq.c @@ -147,7 +147,7 @@ static int cbq_parse_opt(struct qdisc_ut if (ewma_log < 0) ewma_log = TC_CBQ_DEF_EWMA; lss.ewma_log = ewma_log; - lss.maxidle = tc_cbq_calc_maxidle(r.rate, r.rate, avpkt, lss.ewma_log, 0); + lss.maxidle = tc_calc_xmittime(r.rate, avpkt); lss.change = TCF_CBQ_LSS_MAXIDLE|TCF_CBQ_LSS_EWMA|TCF_CBQ_LSS_AVPKT; lss.avpkt = avpkt; diff --git a/tc/tc_core.c b/tc/tc_core.c index 10c375e..90a097d 100644 --- a/tc/tc_core.c +++ b/tc/tc_core.c @@ -76,7 +76,7 @@ int tc_calc_rtable(unsigned bps, __u32 * sz += overhead; if (sz < mpu) sz = mpu; - rtab[i] = tc_core_usec2tick(1000000*((double)sz/bps)); + rtab[i] = tc_calc_xmittime(bps, sz); } return cell_log; } diff --git a/tc/tc_red.c b/tc/tc_red.c index 385e7af..8f9bde0 100644 --- a/tc/tc_red.c +++ b/tc/tc_red.c @@ -71,7 +71,7 @@ int tc_red_eval_ewma(unsigned qmin, unsi int tc_red_eval_idle_damping(int Wlog, unsigned avpkt, unsigned bps, __u8 *sbuf) { - double xmit_time = tc_core_usec2tick(1000000*(double)avpkt/bps); + double xmit_time = tc_calc_xmittime(bps, avpkt); double lW = -log(1.0 - 1.0/(1<<Wlog))/xmit_time; double maxtime = 31/lW; int clog; - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html