Index: uspace/lib/drv/generic/remote_usbdiag.c
===================================================================
--- uspace/lib/drv/generic/remote_usbdiag.c	(revision fd312d505127e9d7f9046c8ee961d3cb5c51249c)
+++ uspace/lib/drv/generic/remote_usbdiag.c	(revision 0fbe27d1d60c8b0ddc8c6b3bcb01514adf2a9e1b)
@@ -43,6 +43,8 @@
 
 typedef enum {
-	IPC_M_USBDIAG_STRESS_BULK_OUT,
-	IPC_M_USBDIAG_STRESS_BULK_IN
+	IPC_M_USBDIAG_STRESS_INTR_IN,
+	IPC_M_USBDIAG_STRESS_INTR_OUT,
+	IPC_M_USBDIAG_STRESS_BULK_IN,
+	IPC_M_USBDIAG_STRESS_BULK_OUT
 } usb_iface_funcs_t;
 
@@ -58,10 +60,18 @@
 }
 
-int usbdiag_stress_bulk_out(async_exch_t *exch, int cycles, size_t size)
+int usbdiag_stress_intr_in(async_exch_t *exch, int cycles, size_t size)
 {
 	if (!exch)
 		return EBADMEM;
 
-	return async_req_3_0(exch, DEV_IFACE_ID(USBDIAG_DEV_IFACE), IPC_M_USBDIAG_STRESS_BULK_OUT, cycles, size);
+	return async_req_3_0(exch, DEV_IFACE_ID(USBDIAG_DEV_IFACE), IPC_M_USBDIAG_STRESS_INTR_IN, cycles, size);
+}
+
+int usbdiag_stress_intr_out(async_exch_t *exch, int cycles, size_t size)
+{
+	if (!exch)
+		return EBADMEM;
+
+	return async_req_3_0(exch, DEV_IFACE_ID(USBDIAG_DEV_IFACE), IPC_M_USBDIAG_STRESS_INTR_OUT, cycles, size);
 }
 
@@ -74,11 +84,23 @@
 }
 
+int usbdiag_stress_bulk_out(async_exch_t *exch, int cycles, size_t size)
+{
+	if (!exch)
+		return EBADMEM;
+
+	return async_req_3_0(exch, DEV_IFACE_ID(USBDIAG_DEV_IFACE), IPC_M_USBDIAG_STRESS_BULK_OUT, cycles, size);
+}
+
+static void remote_usbdiag_stress_intr_in(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
+static void remote_usbdiag_stress_intr_out(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
+static void remote_usbdiag_stress_bulk_in(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
 static void remote_usbdiag_stress_bulk_out(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
-static void remote_usbdiag_stress_bulk_in(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
 
 /** Remote USB diagnostic interface operations. */
 static const remote_iface_func_ptr_t remote_usbdiag_iface_ops [] = {
-	[IPC_M_USBDIAG_STRESS_BULK_OUT] = remote_usbdiag_stress_bulk_out,
-	[IPC_M_USBDIAG_STRESS_BULK_IN] = remote_usbdiag_stress_bulk_in,
+[	IPC_M_USBDIAG_STRESS_INTR_IN] = remote_usbdiag_stress_intr_in,
+	[IPC_M_USBDIAG_STRESS_INTR_OUT] = remote_usbdiag_stress_intr_out,
+[	IPC_M_USBDIAG_STRESS_BULK_IN] = remote_usbdiag_stress_bulk_in,
+	[IPC_M_USBDIAG_STRESS_BULK_OUT] = remote_usbdiag_stress_bulk_out
 };
 
@@ -89,5 +111,20 @@
 };
 
-void remote_usbdiag_stress_bulk_out(ddf_fun_t *fun, void *iface, ipc_callid_t callid, ipc_call_t *call)
+void remote_usbdiag_stress_intr_in(ddf_fun_t *fun, void *iface, ipc_callid_t callid, ipc_call_t *call)
+{
+	const usbdiag_iface_t *diag_iface = (usbdiag_iface_t *) iface;
+
+	if (diag_iface->stress_bulk_in == NULL) {
+		async_answer_0(callid, ENOTSUP);
+		return;
+	}
+
+	int cycles = DEV_IPC_GET_ARG1(*call);
+	size_t size = DEV_IPC_GET_ARG2(*call);
+	const int ret = diag_iface->stress_intr_in(fun, cycles, size);
+	async_answer_0(callid, ret);
+}
+
+void remote_usbdiag_stress_intr_out(ddf_fun_t *fun, void *iface, ipc_callid_t callid, ipc_call_t *call)
 {
 	const usbdiag_iface_t *diag_iface = (usbdiag_iface_t *) iface;
@@ -100,5 +137,5 @@
 	int cycles = DEV_IPC_GET_ARG1(*call);
 	size_t size = DEV_IPC_GET_ARG2(*call);
-	const int ret = diag_iface->stress_bulk_out(fun, cycles, size);
+	const int ret = diag_iface->stress_intr_out(fun, cycles, size);
 	async_answer_0(callid, ret);
 }
@@ -119,4 +156,19 @@
 }
 
+void remote_usbdiag_stress_bulk_out(ddf_fun_t *fun, void *iface, ipc_callid_t callid, ipc_call_t *call)
+{
+	const usbdiag_iface_t *diag_iface = (usbdiag_iface_t *) iface;
+
+	if (diag_iface->stress_bulk_out == NULL) {
+		async_answer_0(callid, ENOTSUP);
+		return;
+	}
+
+	int cycles = DEV_IPC_GET_ARG1(*call);
+	size_t size = DEV_IPC_GET_ARG2(*call);
+	const int ret = diag_iface->stress_bulk_out(fun, cycles, size);
+	async_answer_0(callid, ret);
+}
+
 /**
  * @}
Index: uspace/lib/drv/include/usbdiag_iface.h
===================================================================
--- uspace/lib/drv/include/usbdiag_iface.h	(revision fd312d505127e9d7f9046c8ee961d3cb5c51249c)
+++ uspace/lib/drv/include/usbdiag_iface.h	(revision 0fbe27d1d60c8b0ddc8c6b3bcb01514adf2a9e1b)
@@ -45,4 +45,6 @@
 async_sess_t *usbdiag_connect(devman_handle_t);
 void usbdiag_disconnect(async_sess_t*);
+int usbdiag_stress_intr_in(async_exch_t*, int, size_t);
+int usbdiag_stress_intr_out(async_exch_t*, int, size_t);
 int usbdiag_stress_bulk_in(async_exch_t*, int, size_t);
 int usbdiag_stress_bulk_out(async_exch_t*, int, size_t);
@@ -50,4 +52,6 @@
 /** USB diagnostic device communication interface. */
 typedef struct {
+	int (*stress_intr_in)(ddf_fun_t*, int, size_t);
+	int (*stress_intr_out)(ddf_fun_t*, int, size_t);
 	int (*stress_bulk_in)(ddf_fun_t*, int, size_t);
 	int (*stress_bulk_out)(ddf_fun_t*, int, size_t);
