On Sun, May 14, 2017 at 21:08 +0000, Carl Mascott wrote: > OK, I was indeed missing something. Thanks, Theo and Mike. > > I think I see another very minor problem, though. > Let the pf BW be 9,999,999. > Shift right 3 digits (divide by 1000) : yields 9,999K. > (If we were doing floating point arithmetic, would yield 9,999.999K.) > You (Mike) don't round this, presumably to avoid overflow to 10,000 (5 > digits). > However, since (i < 3) it could have been rounded and scaled again, to 10M. > Slightly more accurate but not a big deal. >
You're right, initially I had a "<= 9999" there but then I got sidetracked with a hypothetical problem that right now seems like my imagination. I've double checked numbers and indeed, it should be "if (rtmp <= 9999)". > > -------------------------------------------- > On Sun, 5/14/17, Theo Buehler <t...@math.ethz.ch> wrote: > > Subject: Re: pf queue definition: bandwidth resolution problem > To: tech@openbsd.org > Date: Sunday, May 14, 2017, 4:35 PM > > On Sun, May 14, 2017 at 08:29:18PM +0000, Carl > Mascott wrote: > > It looks to me like you > are rounding on each iteration of the for-loop: > > > > + for (i = 0; > rate > 9999 && i <= 3; i++) { > > + rtmp = rate / 1000; > > + if (rtmp < 9999) > > This is only true in the last > iteration. > > > + rtmp > += (rate % 1000) / 500; > > + > rate = rtmp; > > + } > > > > Am I missing > something? > > >