Index: uspace/drv/ohci/root_hub.c
===================================================================
--- uspace/drv/ohci/root_hub.c	(revision 040ab0220b9935686bedba04b3968406ec8879ed)
+++ uspace/drv/ohci/root_hub.c	(revision 90d05227336e602f168955e0d48c9b17f206f29b)
@@ -139,4 +139,12 @@
 //note that USB_HUB_FEATURE_PORT_POWER bit is translated into
 //USB_HUB_FEATURE_PORT_LOW_SPEED
+
+static const uint32_t port_status_change_mask =
+(1<< USB_HUB_FEATURE_C_PORT_CONNECTION) |
+(1<< USB_HUB_FEATURE_C_PORT_ENABLE) |
+(1<< USB_HUB_FEATURE_C_PORT_OVER_CURRENT) |
+(1<< USB_HUB_FEATURE_C_PORT_RESET) |
+(1<< USB_HUB_FEATURE_C_PORT_SUSPEND);
+
 
 static void usb_create_serialized_hub_descriptor(rh_t *instance,
@@ -391,7 +399,7 @@
 	usb_transfer_batch_t * request) {
 	uint32_t * uint32_buffer = (uint32_t*) request->transport_buffer;
+	request->transfered_size = 4;
 	//bits, 0,1,16,17
-	request->transfered_size = 4;
-	uint32_t mask = 1 & (1 << 1) & (1 << 16) & (1 << 17);
+	uint32_t mask = 1 | (1 << 1) | (1 << 16) | (1 << 17);
 	uint32_buffer[0] = mask & instance->registers->rh_status;
 	return EOK;
@@ -456,9 +464,5 @@
 	}
 	int port;
-	mask = 0;
-	int i;
-	for (i = 16; i <= 20; ++i) {
-		mask += 1 << i;
-	}
+	mask = port_status_change_mask;
 	for (port = 1; port <= instance->port_count; ++port) {
 		if (mask & instance->registers->rh_port_status[port - 1]) {
