trafgen: fix -n1 bug for packet scheduling
commit721fb0de29e78a1cfd5d759758c69830333d7699
authorDaniel Borkmann <dborkman@redhat.com>
Sat, 15 Jun 2013 11:14:26 +0000 (15 13:14 +0200)
committerDaniel Borkmann <dborkman@redhat.com>
Sat, 15 Jun 2013 11:14:26 +0000 (15 13:14 +0200)
tree05d9435f51ef9746b91e514a7dfd73615422167e
parent98ed56c545ab58aa747c408ffa7d5a2ff9678618
trafgen: fix -n1 bug for packet scheduling

In the current situation, it can happen when we set -n1, that no packet
at all will be scheduled. This is due to the case that nearbyint() will
for e.g. 2 cpus round to 0 each, and since in __correct_global_delta()
we only correct a total delta when a particular CPU is allowed to tx
packets (means already has a num > 0), then we correct the delta on the
first such CPU. Switch to using round(), so that on 0.5 it will be round
to the next higher int, and fix the check to >= 0 in __correct_global_delta()
so that a CPU could also get a 0 share of packets. I did a couple of tests
with different -n params and cpu(..) configs and this seems to fix that.

Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
trafgen.c