@@ -3362,8 +3362,14 @@ iperf_stats_callback(struct iperf_test *test)
3362
3362
struct iperf_interval_results * irp , temp ;
3363
3363
struct iperf_time temp_time ;
3364
3364
iperf_size_t total_interval_bytes_transferred = 0 ;
3365
+ #if defined(HAVE_SCTP_H )
3366
+ struct iperf_sctp_info sctp_info ;
3367
+ #endif /* HAVE_SCTP_H */
3365
3368
3366
3369
temp .omitted = test -> omitting ;
3370
+ temp .rtt = 0 ;
3371
+ temp .rttvar = 0 ;
3372
+ temp .pmtu = 0 ;
3367
3373
SLIST_FOREACH (sp , & test -> streams , streams ) {
3368
3374
rp = sp -> result ;
3369
3375
temp .bytes_transferred = sp -> sender ? rp -> bytes_sent_this_interval : rp -> bytes_received_this_interval ;
@@ -3431,6 +3437,36 @@ iperf_stats_callback(struct iperf_test *test)
3431
3437
temp .outoforder_packets = sp -> outoforder_packets ;
3432
3438
temp .cnt_error = sp -> cnt_error ;
3433
3439
}
3440
+
3441
+ #if defined(HAVE_SCTP_H )
3442
+ if (test -> protocol -> id == Psctp ) {
3443
+ if (iperf_sctp_get_info (sp , & sctp_info ) >= 0 ) {;
3444
+ temp .pmtu = sctp_info .pmtu ;
3445
+ temp .rtt = sctp_info .rtt ;
3446
+ temp .snd_cwnd = sctp_info .cwnd ;
3447
+ temp .snd_wnd = sctp_info .wnd ;
3448
+ if (temp .snd_cwnd > rp -> stream_max_snd_cwnd ) {
3449
+ rp -> stream_max_snd_cwnd = temp .snd_cwnd ;
3450
+ }
3451
+ if (temp .snd_wnd > rp -> stream_max_snd_wnd ) {
3452
+ rp -> stream_max_snd_wnd = temp .snd_wnd ;
3453
+ }
3454
+ if (temp .rtt >= 0 ) {
3455
+ temp .rtt = sctp_info .rtt ;
3456
+ if (temp .rtt > rp -> stream_max_rtt ) {
3457
+ rp -> stream_max_rtt = temp .rtt ;
3458
+ }
3459
+ if (rp -> stream_min_rtt == 0 ||
3460
+ temp .rtt < rp -> stream_min_rtt ) {
3461
+ rp -> stream_min_rtt = temp .rtt ;
3462
+ }
3463
+ rp -> stream_sum_rtt += temp .rtt ;
3464
+ rp -> stream_count_rtt ++ ;
3465
+ }
3466
+ }
3467
+ }
3468
+ #endif /* HAVE_SCTP_H */
3469
+
3434
3470
add_to_interval_list (rp , & temp );
3435
3471
rp -> bytes_sent_this_interval = rp -> bytes_received_this_interval = 0 ;
3436
3472
}
@@ -3871,7 +3907,7 @@ iperf_print_results(struct iperf_test *test)
3871
3907
}
3872
3908
unit_snprintf (nbuf , UNIT_LEN , bandwidth , test -> settings -> unit_format );
3873
3909
if (test -> protocol -> id == Ptcp || test -> protocol -> id == Psctp ) {
3874
- if (test -> sender_has_retransmits ) {
3910
+ if (test -> sender_has_retransmits || test -> protocol -> id == Psctp ) {
3875
3911
/* Sender summary, TCP and SCTP with retransmits. */
3876
3912
if (test -> json_output )
3877
3913
cJSON_AddItemToObject (json_summary_stream , report_sender , iperf_json_printf ("socket: %d start: %f end: %f seconds: %f bytes: %d bits_per_second: %f retransmits: %d max_snd_cwnd: %d max_snd_wnd: %d max_rtt: %d min_rtt: %d mean_rtt: %d sender: %b" , (int64_t ) sp -> socket , (double ) start_time , (double ) sender_time , (double ) sender_time , (int64_t ) bytes_sent , bandwidth * 8 , (int64_t ) sp -> result -> stream_retrans , (int64_t ) sp -> result -> stream_max_snd_cwnd , (int64_t ) sp -> result -> stream_max_snd_wnd , (int64_t ) sp -> result -> stream_max_rtt , (int64_t ) sp -> result -> stream_min_rtt , (int64_t ) ((sp -> result -> stream_count_rtt == 0 ) ? 0 : sp -> result -> stream_sum_rtt / sp -> result -> stream_count_rtt ), stream_must_be_sender ));
@@ -4322,7 +4358,7 @@ print_interval_results(struct iperf_test *test, struct iperf_stream *sp, cJSON *
4322
4358
et = iperf_time_in_secs (& temp_time );
4323
4359
4324
4360
if (test -> protocol -> id == Ptcp || test -> protocol -> id == Psctp ) {
4325
- if (test -> sender_has_retransmits == 1 && sp -> sender ) {
4361
+ if (( test -> sender_has_retransmits == 1 || test -> protocol -> id == Psctp ) && sp -> sender ) {
4326
4362
/* Interval, TCP with retransmits. */
4327
4363
if (test -> json_output )
4328
4364
cJSON_AddItemToArray (json_interval_streams , iperf_json_printf ("socket: %d start: %f end: %f seconds: %f bytes: %d bits_per_second: %f retransmits: %d snd_cwnd: %d snd_wnd: %d rtt: %d rttvar: %d pmtu: %d omitted: %b sender: %b" , (int64_t ) sp -> socket , (double ) st , (double ) et , (double ) irp -> interval_duration , (int64_t ) irp -> bytes_transferred , bandwidth * 8 , (int64_t ) irp -> interval_retrans , (int64_t ) irp -> snd_cwnd , (int64_t ) irp -> snd_wnd , (int64_t ) irp -> rtt , (int64_t ) irp -> rttvar , (int64_t ) irp -> pmtu , irp -> omitted , sp -> sender ));
0 commit comments