Added bandwidth mode (-b) support for UDP.

This commit is contained in:
sethdelliott 2010-07-15 20:05:43 +00:00
parent 86afd62bfe
commit aa89cda29f
2 changed files with 24 additions and 26 deletions

View File

@ -143,6 +143,8 @@ iperf_init_test(struct iperf_test *test)
{
char *prot;
struct iperf_stream *sp;
int64_t dtargus;
/* XXX: These variables were used in the old UDP code
int64_t delayus, adjustus, dtargus;
@ -150,8 +152,7 @@ iperf_init_test(struct iperf_test *test)
if (test->protocol == Pudp) {
prot = "UDP";
/* XXX: This code isn't currently used and will most likely be changed
/* XXX: Trying my own implementation
dtargus = (int64_t) (test->default_settings->blksize) * SEC_TO_US * 8;
dtargus /= test->default_settings->rate;
@ -165,7 +166,13 @@ iperf_init_test(struct iperf_test *test)
for (sp = test->streams; sp != NULL; sp = sp->next)
sp->send_timer = new_timer(0, dtargus);
*/
dtargus = (int64_t) test->default_settings->blksize * SEC_TO_US * 8;
dtargus /= test->default_settings->rate;
assert(dtargus != 0);
for (sp = test->streams; sp; sp = sp->next)
sp->send_timer = new_timer(dtargus / SEC_TO_US, dtargus % SEC_TO_US);
} else {
prot = "TCP";
}
@ -219,6 +226,11 @@ package_parameters(struct iperf_test *test)
strncat(pstring, optbuf, sizeof(pstring));
}
if (test->default_settings->rate) {
snprintf(optbuf, sizeof(optbuf), "-b %llu ", test->default_settings->rate);
strncat(pstring, optbuf, sizeof(pstring));
}
if (test->default_settings->mss) {
snprintf(optbuf, sizeof(optbuf), "-m %d ", test->default_settings->mss);
strncat(pstring, optbuf, sizeof(pstring));
@ -284,7 +296,7 @@ parse_parameters(struct iperf_test *test)
n++;
}
while ((ch = getopt(n, params, "pt:n:m:uP:Rw:l:")) != -1) {
while ((ch = getopt(n, params, "pt:n:m:uP:Rw:l:b:")) != -1) {
switch (ch) {
case 'p':
test->protocol = Ptcp;
@ -314,6 +326,9 @@ parse_parameters(struct iperf_test *test)
case 'l':
test->default_settings->blksize = atoi(optarg);
break;
case 'b':
test->default_settings->rate = atoll(optarg);
break;
}
}
#ifdef __APPLE__

View File

@ -59,11 +59,6 @@ iperf_udp_recv(struct iperf_stream *sp)
double transit = 0, d = 0;
struct timeval sent_time, arrival_time;
// XXX: Is this necessary? We've already checked the buffer to see if it's allocated.
if (!sp->buffer) {
fprintf(stderr, "receive buffer not allocated \n");
exit(0);
}
#ifdef USE_SEND
do {
result = recv(sp->socket, sp->buffer, size, 0);
@ -127,18 +122,13 @@ iperf_udp_send(struct iperf_stream *sp)
int size = sp->settings->blksize;
struct timeval before, after;
/*
* the || part ensures that last packet is sent to server - the
* STREAM_END MESSAGE
*/
// if (sp->send_timer->expired(sp->send_timer) || sp->settings->state == STREAM_END) {
if (timer_expired(sp->send_timer)) {
/*
dtargus = (int64_t) (sp->settings->blksize) * SEC_TO_US * 8;
dtargus /= sp->settings->rate;
assert(dtargus != 0);
*/
if (gettimeofday(&before, 0) < 0)
perror("gettimeofday");
++sp->packet_count;
@ -161,17 +151,10 @@ iperf_udp_send(struct iperf_stream *sp)
sp->result->bytes_sent += result;
sp->result->bytes_sent_this_interval += result;
/*
if (gettimeofday(&after, 0) < 0)
perror("gettimeofday");
//
// CHECK: Packet length and ID if(sp->settings->state ==
// STREAM_RUNNING) printf("State = %d Outgoing packet = %d AND SP =
// %d\n",sp->settings->state, sp->packet_count, sp->socket);
//
adjustus = dtargus;
adjustus += (before.tv_sec - after.tv_sec) * SEC_TO_US;
adjustus += (before.tv_usec - after.tv_usec);
@ -179,10 +162,10 @@ iperf_udp_send(struct iperf_stream *sp)
if (adjustus > 0) {
dtargus = adjustus;
}
// RESET THE TIMER
update_timer(sp->send_timer, 0, dtargus);
// } // timer_expired_micro
*/
}
return result;
}