Index: uspace/drv/bus/usb/usbdiag/tests.c
===================================================================
--- uspace/drv/bus/usb/usbdiag/tests.c	(revision 96c416a842d1ac574b669328720d7ceb0bbcaa7c)
+++ uspace/drv/bus/usb/usbdiag/tests.c	(revision e23b87b7a7b9b5afd87ae972c23406fc8914f9e1)
@@ -37,4 +37,5 @@
 #include <str_error.h>
 #include <usb/debug.h>
+#include <usbdiag_iface.h>
 #include <time.h>
 #include "device.h"
@@ -43,5 +44,5 @@
 #define NAME "usbdiag"
 
-static int burst_in_test(usb_pipe_t *pipe, int cycles, size_t size, unsigned long *duration)
+static int burst_in_test(usb_pipe_t *pipe, int cycles, size_t size, usbdiag_dur_t *duration)
 {
 	if (!pipe)
@@ -86,5 +87,5 @@
 	struct timeval final_time;
 	gettimeofday(&final_time, NULL);
-	unsigned long in_duration = ((final_time.tv_usec - start_time.tv_usec) / 1000) +
+	usbdiag_dur_t in_duration = ((final_time.tv_usec - start_time.tv_usec) / 1000) +
 	    ((final_time.tv_sec - start_time.tv_sec) * 1000);
 
@@ -98,5 +99,5 @@
 }
 
-static int burst_out_test(usb_pipe_t *pipe, int cycles, size_t size, unsigned long *duration)
+static int burst_out_test(usb_pipe_t *pipe, int cycles, size_t size, usbdiag_dur_t *duration)
 {
 	if (!pipe)
@@ -127,5 +128,5 @@
 	struct timeval final_time;
 	gettimeofday(&final_time, NULL);
-	unsigned long in_duration = ((final_time.tv_usec - start_time.tv_usec) / 1000) +
+	usbdiag_dur_t in_duration = ((final_time.tv_usec - start_time.tv_usec) / 1000) +
 	    ((final_time.tv_sec - start_time.tv_sec) * 1000);
 
@@ -139,5 +140,5 @@
 }
 
-int usbdiag_burst_test_intr_in(ddf_fun_t *fun, int cycles, size_t size)
+int usbdiag_burst_test_intr_in(ddf_fun_t *fun, int cycles, size_t size, usbdiag_dur_t *duration)
 {
 	usbdiag_dev_t *dev = ddf_fun_to_usbdiag_dev(fun);
@@ -145,9 +146,8 @@
 		return EBADMEM;
 
-	// FIXME: report duration
-	return burst_in_test(dev->intr_in, cycles, size, NULL);
+	return burst_in_test(dev->intr_in, cycles, size, duration);
 }
 
-int usbdiag_burst_test_intr_out(ddf_fun_t *fun, int cycles, size_t size)
+int usbdiag_burst_test_intr_out(ddf_fun_t *fun, int cycles, size_t size, usbdiag_dur_t *duration)
 {
 	usbdiag_dev_t *dev = ddf_fun_to_usbdiag_dev(fun);
@@ -155,9 +155,8 @@
 		return EBADMEM;
 
-	// FIXME: report duration
-	return burst_out_test(dev->intr_out, cycles, size, NULL);
+	return burst_out_test(dev->intr_out, cycles, size, duration);
 }
 
-int usbdiag_burst_test_bulk_in(ddf_fun_t *fun, int cycles, size_t size)
+int usbdiag_burst_test_bulk_in(ddf_fun_t *fun, int cycles, size_t size, usbdiag_dur_t *duration)
 {
 	usbdiag_dev_t *dev = ddf_fun_to_usbdiag_dev(fun);
@@ -165,9 +164,8 @@
 		return EBADMEM;
 
-	// FIXME: report duration
-	return burst_in_test(dev->bulk_in, cycles, size, NULL);
+	return burst_in_test(dev->bulk_in, cycles, size, duration);
 }
 
-int usbdiag_burst_test_bulk_out(ddf_fun_t *fun, int cycles, size_t size)
+int usbdiag_burst_test_bulk_out(ddf_fun_t *fun, int cycles, size_t size, usbdiag_dur_t *duration)
 {
 	usbdiag_dev_t *dev = ddf_fun_to_usbdiag_dev(fun);
@@ -175,9 +173,8 @@
 		return EBADMEM;
 
-	// FIXME: report duration
-	return burst_out_test(dev->bulk_out, cycles, size, NULL);
+	return burst_out_test(dev->bulk_out, cycles, size, duration);
 }
 
-int usbdiag_burst_test_isoch_in(ddf_fun_t *fun, int cycles, size_t size)
+int usbdiag_burst_test_isoch_in(ddf_fun_t *fun, int cycles, size_t size, usbdiag_dur_t *duration)
 {
 	usbdiag_dev_t *dev = ddf_fun_to_usbdiag_dev(fun);
@@ -185,9 +182,8 @@
 		return EBADMEM;
 
-	// FIXME: report duration
-	return burst_in_test(dev->isoch_in, cycles, size, NULL);
+	return burst_in_test(dev->isoch_in, cycles, size, duration);
 }
 
-int usbdiag_burst_test_isoch_out(ddf_fun_t *fun, int cycles, size_t size)
+int usbdiag_burst_test_isoch_out(ddf_fun_t *fun, int cycles, size_t size, usbdiag_dur_t *duration)
 {
 	usbdiag_dev_t *dev = ddf_fun_to_usbdiag_dev(fun);
@@ -195,6 +191,5 @@
 		return EBADMEM;
 
-	// FIXME: report duration
-	return burst_out_test(dev->isoch_out, cycles, size, NULL);
+	return burst_out_test(dev->isoch_out, cycles, size, duration);
 }
 
Index: uspace/drv/bus/usb/usbdiag/tests.h
===================================================================
--- uspace/drv/bus/usb/usbdiag/tests.h	(revision 96c416a842d1ac574b669328720d7ceb0bbcaa7c)
+++ uspace/drv/bus/usb/usbdiag/tests.h	(revision e23b87b7a7b9b5afd87ae972c23406fc8914f9e1)
@@ -39,10 +39,10 @@
 #include <ddf/driver.h>
 
-int usbdiag_burst_test_intr_in(ddf_fun_t *, int, size_t);
-int usbdiag_burst_test_intr_out(ddf_fun_t *, int, size_t);
-int usbdiag_burst_test_bulk_in(ddf_fun_t *, int, size_t);
-int usbdiag_burst_test_bulk_out(ddf_fun_t *, int, size_t);
-int usbdiag_burst_test_isoch_in(ddf_fun_t *, int, size_t);
-int usbdiag_burst_test_isoch_out(ddf_fun_t *, int, size_t);
+int usbdiag_burst_test_intr_in(ddf_fun_t *, int, size_t, usbdiag_dur_t *);
+int usbdiag_burst_test_intr_out(ddf_fun_t *, int, size_t, usbdiag_dur_t *);
+int usbdiag_burst_test_bulk_in(ddf_fun_t *, int, size_t, usbdiag_dur_t *);
+int usbdiag_burst_test_bulk_out(ddf_fun_t *, int, size_t, usbdiag_dur_t *);
+int usbdiag_burst_test_isoch_in(ddf_fun_t *, int, size_t, usbdiag_dur_t *);
+int usbdiag_burst_test_isoch_out(ddf_fun_t *, int, size_t, usbdiag_dur_t *);
 
 #endif /* USBDIAG_TESTS_H_ */
