Index: uspace/drv/usbhid/usbhid.c
===================================================================
--- uspace/drv/usbhid/usbhid.c	(revision ff41576de934bb9ec51775f550046c5b0b914a4d)
+++ uspace/drv/usbhid/usbhid.c	(revision 8fb45e08375115c08132940a6f486ceaa3e3f374)
@@ -63,5 +63,6 @@
 static const int USB_HID_MAX_SUBDRIVERS = 10;
 
-static fibril_local bool report_received;
+/** @todo What happens if this is not fibril local? */
+//static fibril_local bool report_number;
 
 /*----------------------------------------------------------------------------*/
@@ -361,13 +362,14 @@
 	
 	uint8_t report_id = 0;
-	size_t size = usb_hid_report_byte_size(hid_dev->report, report_id, 
-	    USB_HID_REPORT_TYPE_INPUT);
+	size_t size;/* = usb_hid_report_byte_size(hid_dev->report, report_id, 
+	    USB_HID_REPORT_TYPE_INPUT);*/
 	
 	size_t max_size = 0;
 	
 	do {
-		max_size = (size > max_size) ? size : max_size;
 		size = usb_hid_report_byte_size(hid_dev->report, report_id, 
 		    USB_HID_REPORT_TYPE_INPUT);
+		usb_log_debug("Report ID: %u, size: %zu\n", report_id, size);
+		max_size = (size > max_size) ? size : max_size;
 		report_id = usb_hid_get_next_report_id(hid_dev->report, 
 		    report_id, USB_HID_REPORT_TYPE_INPUT);
@@ -578,5 +580,5 @@
 	memcpy(hid_dev->input_report, buffer, buffer_size);
 	hid_dev->input_report_size = buffer_size;
-	usb_hid_new_report();
+	usb_hid_new_report(hid_dev);
 	
 	bool cont = false;
@@ -654,22 +656,29 @@
 /*----------------------------------------------------------------------------*/
 
-void usb_hid_new_report(void)
-{
-	report_received = false;
-}
-
-/*----------------------------------------------------------------------------*/
-
-void usb_hid_report_received(void)
-{
-	report_received = true;
-}
-
-/*----------------------------------------------------------------------------*/
-
-bool usb_hid_report_ready(void)
-{
-	return !report_received;
-}
+void usb_hid_new_report(usb_hid_dev_t *hid_dev)
+{
+	++hid_dev->report_nr;
+}
+
+/*----------------------------------------------------------------------------*/
+
+int usb_hid_report_number(usb_hid_dev_t *hid_dev)
+{
+	return hid_dev->report_nr;
+}
+
+/*----------------------------------------------------------------------------*/
+
+//void usb_hid_report_received(void)
+//{
+//	++report_number;
+//}
+
+/*----------------------------------------------------------------------------*/
+
+//bool usb_hid_report_ready(void)
+//{
+//	return !report_received;
+//}
 
 /*----------------------------------------------------------------------------*/
Index: uspace/drv/usbhid/usbhid.h
===================================================================
--- uspace/drv/usbhid/usbhid.h	(revision ff41576de934bb9ec51775f550046c5b0b914a4d)
+++ uspace/drv/usbhid/usbhid.h	(revision 8fb45e08375115c08132940a6f486ceaa3e3f374)
@@ -99,4 +99,6 @@
 	size_t input_report_size;
 	size_t max_input_report_size;
+	
+	int report_nr;
 } usb_hid_dev_t;
 
@@ -128,9 +130,11 @@
 //const char *usb_hid_get_class_name(const usb_hid_dev_t *hid_dev);
 
-void usb_hid_new_report(void);
+void usb_hid_new_report(usb_hid_dev_t *hid_dev);
 
-void usb_hid_report_received(void);
+int usb_hid_report_number(usb_hid_dev_t *hid_dev);
 
-bool usb_hid_report_ready(void);
+//void usb_hid_report_received(void);
+
+//bool usb_hid_report_ready(void);
 
 void usb_hid_free(usb_hid_dev_t **hid_dev);
