Index: uspace/drv/usbhub/usbhub.c
===================================================================
--- uspace/drv/usbhub/usbhub.c	(revision a7528a1617503826a7ae41c74d78925741e1d7b2)
+++ uspace/drv/usbhub/usbhub.c	(revision e93e3195d166b575313289de729c76e84528e0d2)
@@ -405,7 +405,11 @@
 	//if this hub already uses default address, it cannot request it once more
 	if(hub->is_default_address_used) return;
+	int opResult = usb_hub_clear_port_feature(&hub->endpoints.control,
+				port, USB_HUB_FEATURE_C_PORT_CONNECTION);
+	if(opResult != EOK){
+		usb_log_warning("could not clear port-change-connection flag");
+	}
 
 	usb_device_request_setup_packet_t request;
-	int opResult;
 	usb_log_info("some connection changed");
 	assert(hub->endpoints.control.hc_phone);
@@ -431,4 +435,5 @@
 		usb_hub_release_default_address(hub);
 	}
+	return;
 }
 
@@ -531,5 +536,10 @@
 static void usb_hub_removed_device(
     usb_hub_info_t * hub,uint16_t port) {
-		
+
+	int opResult = usb_hub_clear_port_feature(&hub->endpoints.control,
+				port, USB_HUB_FEATURE_C_PORT_CONNECTION);
+	if(opResult != EOK){
+		usb_log_warning("could not clear port-change-connection flag");
+	}
 	/** \TODO remove device from device manager - not yet implemented in
 	 * devide manager
@@ -611,7 +621,4 @@
 	//something connected/disconnected
 	if (usb_port_connect_change(&status)) {
-		opResult = usb_hub_clear_port_feature(pipe,
-		    port, USB_HUB_FEATURE_C_PORT_CONNECTION);
-		// TODO: check opResult
 		if (usb_port_dev_connected(&status)) {
 			usb_log_info("some connection changed");
