Index: uspace/drv/bus/usb/usbhub/port_status.h
===================================================================
--- uspace/drv/bus/usb/usbhub/port_status.h	(revision 48a31bedce1136a958e3b68dca9ab2e7f71626bd)
+++ uspace/drv/bus/usb/usbhub/port_status.h	(revision aff1880223dc65a807007d2fbf259e14f2baa53d)
@@ -31,6 +31,6 @@
  */
 
-#ifndef HUB_PORT_STATUS_H
-#define	HUB_PORT_STATUS_H
+#ifndef HUB_STATUS_H
+#define	HUB_STATUS_H
 
 #include <bool.h>
@@ -89,62 +89,4 @@
     (1 << (16 + USB_HUB_FEATURE_C_HUB_LOCAL_POWER))
 
-/**
- * set the device request to be a port feature enable request
- * @param request
- * @param port
- * @param feature_selector
- */
-static inline void usb_hub_set_enable_port_feature_request(
-    usb_device_request_setup_packet_t *request, uint16_t port,
-    uint16_t feature_selector) {
-	request->index = port;
-	request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE;
-	request->request = USB_HUB_REQUEST_SET_FEATURE;
-	request->value = feature_selector;
-	request->length = 0;
-}
-
-/**
- * set the device request to be a port feature clear request
- * @param request
- * @param port
- * @param feature_selector
- */
-static inline void usb_hub_set_disable_port_feature_request(
-    usb_device_request_setup_packet_t *request, uint16_t port,
-    uint16_t feature_selector
-    ) {
-	request->index = port;
-	request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE;
-	request->request = USB_HUB_REQUEST_CLEAR_FEATURE;
-	request->value = feature_selector;
-	request->length = 0;
-}
-
-/**
- * set the device request to be a port disable request
- * @param request
- * @param port
- */
-static inline void usb_hub_set_reset_port_request(
-    usb_device_request_setup_packet_t *request, uint16_t port
-    ) {
-	request->index = port;
-	request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE;
-	request->request = USB_HUB_REQUEST_SET_FEATURE;
-	request->value = USB_HUB_FEATURE_PORT_RESET;
-	request->length = 0;
-}
-
-/**
- * get i`th bit of port status
- * 
- * @param status
- * @param idx
- * @return
- */
-static inline bool usb_port_is_status(usb_port_status_t status, int idx) {
-	return (status & (1 << idx)) != 0;
-}
 
 /**
@@ -154,5 +96,6 @@
  * @return speed of usb device (for more see usb specification)
  */
-static inline usb_speed_t usb_port_speed(usb_port_status_t status) {
+static inline usb_speed_t usb_port_speed(usb_port_status_t status)
+{
 	if ((status & USB_HUB_PORT_STATUS_LOW_SPEED) != 0)
 		return USB_SPEED_LOW;
@@ -162,7 +105,5 @@
 }
 
-
-
-#endif	/* HUB_PORT_STATUS_H */
+#endif	/* HUB_STATUS_H */
 /**
  * @}
Index: uspace/drv/bus/usb/usbhub/ports.c
===================================================================
--- uspace/drv/bus/usb/usbhub/ports.c	(revision 48a31bedce1136a958e3b68dca9ab2e7f71626bd)
+++ uspace/drv/bus/usb/usbhub/ports.c	(revision aff1880223dc65a807007d2fbf259e14f2baa53d)
@@ -55,6 +55,6 @@
 
 static void usb_hub_removed_device(usb_hub_info_t *hub, size_t port);
-static void usb_hub_port_reset_completed(usb_hub_info_t *hub,
-    uint16_t port, uint32_t status);
+static void usb_hub_port_reset_completed(const usb_hub_info_t *hub,
+    size_t port, usb_port_status_t status);
 static int get_port_status(usb_pipe_t *ctrl_pipe, size_t port,
     usb_port_status_t *status);
@@ -63,4 +63,51 @@
 static int create_add_device_fibril(usb_hub_info_t *hub, size_t port,
     usb_speed_t speed);
+
+/**
+ * Clear feature on hub port.
+ *
+ * @param hc Host controller telephone
+ * @param address Hub address
+ * @param port_index Port
+ * @param feature Feature selector
+ * @return Operation result
+ */
+int usb_hub_clear_port_feature(usb_pipe_t *pipe,
+    int port_index, usb_hub_class_feature_t feature)
+{
+	usb_device_request_setup_packet_t clear_request = {
+		.request_type = USB_HUB_REQ_TYPE_CLEAR_PORT_FEATURE,
+		.request = USB_DEVREQ_CLEAR_FEATURE,
+		.value = feature,
+		.index = port_index,
+		.length = 0,
+	};
+	return usb_pipe_control_write(pipe, &clear_request,
+	    sizeof(clear_request), NULL, 0);
+}
+/*----------------------------------------------------------------------------*/
+/**
+ * Clear feature on hub port.
+ *
+ * @param hc Host controller telephone
+ * @param address Hub address
+ * @param port_index Port
+ * @param feature Feature selector
+ * @return Operation result
+ */
+int usb_hub_set_port_feature(usb_pipe_t *pipe,
+    int port_index, usb_hub_class_feature_t feature)
+{
+
+	usb_device_request_setup_packet_t clear_request = {
+		.request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE,
+		.request = USB_DEVREQ_SET_FEATURE,
+		.index = port_index,
+		.value = feature,
+		.length = 0,
+	};
+	return usb_pipe_control_write(pipe, &clear_request,
+	    sizeof(clear_request), NULL, 0);
+}
 
 /**
@@ -160,11 +207,7 @@
 static void usb_hub_removed_device(usb_hub_info_t *hub, size_t port)
 {
-
 	/** \TODO remove device from device manager - not yet implemented in
 	 * devide manager
 	 */
-
-	//close address
-
 	usb_hub_port_t *the_port = hub->ports + port;
 
@@ -204,21 +247,22 @@
  * @param status
  */
-static void usb_hub_port_reset_completed(usb_hub_info_t *hub,
-    uint16_t port, uint32_t status)
-{
-	usb_log_debug("Port %zu reset complete.\n", (size_t) port);
-	if (usb_port_is_status(status, USB_HUB_FEATURE_PORT_ENABLE)) {
-		/* Finalize device adding. */
-		usb_hub_port_t *the_port = hub->ports + port;
-		fibril_mutex_lock(&the_port->reset_mutex);
-		the_port->reset_completed = true;
-		the_port->reset_okay = true;
-		fibril_condvar_broadcast(&the_port->reset_cv);
-		fibril_mutex_unlock(&the_port->reset_mutex);
+static void usb_hub_port_reset_completed(const usb_hub_info_t *hub,
+    size_t port, usb_port_status_t status)
+{
+	usb_hub_port_t *the_port = hub->ports + port;
+	fibril_mutex_lock(&the_port->reset_mutex);
+	/* Finalize device adding. */
+	the_port->reset_completed = true;
+	the_port->reset_okay = (status & USB_HUB_PORT_STATUS_ENABLED) != 0;
+
+	if (the_port->reset_okay) {
+		usb_log_debug("Port %zu reset complete.\n", port);
 	} else {
 		usb_log_warning(
-		    "Port %zu reset complete but port not enabled.\n",
-		    (size_t) port);
-	}
+		    "Port %zu reset complete but port not enabled.\n", port);
+	}
+	fibril_condvar_broadcast(&the_port->reset_cv);
+	fibril_mutex_unlock(&the_port->reset_mutex);
+
 	/* Clear the port reset change. */
 	int rc = usb_hub_clear_port_feature(hub->control_pipe,
@@ -229,5 +273,5 @@
 	}
 }
-
+/*----------------------------------------------------------------------------*/
 /** Retrieve port status.
  *
@@ -285,10 +329,6 @@
 	assert(hub);
 	usb_hub_port_t *my_port = hub->ports + port_no;
-
-	usb_device_request_setup_packet_t request;
-	usb_hub_set_reset_port_request(&request, port_no);
-
-	const int rc = usb_pipe_control_write(hub->control_pipe,
-	    &request, sizeof (request), NULL, 0);
+	const int rc = usb_hub_set_port_feature(hub->control_pipe,
+		port_no, USB_HUB_FEATURE_PORT_RESET);
 	if (rc != EOK) {
 		usb_log_warning("Port reset failed: %s.\n", str_error(rc));
Index: uspace/drv/bus/usb/usbhub/ports.h
===================================================================
--- uspace/drv/bus/usb/usbhub/ports.h	(revision 48a31bedce1136a958e3b68dca9ab2e7f71626bd)
+++ uspace/drv/bus/usb/usbhub/ports.h	(revision aff1880223dc65a807007d2fbf259e14f2baa53d)
@@ -38,4 +38,5 @@
 #include <usb/dev/driver.h>
 #include <usb/dev/hub.h>
+#include <usb/classes/hub.h>
 
 typedef struct usb_hub_info_t usb_hub_info_t;
@@ -73,5 +74,8 @@
 
 void usb_hub_process_port_interrupt(usb_hub_info_t *hub, size_t port);
-
+int usb_hub_clear_port_feature(usb_pipe_t *pipe,
+    int port_index, usb_hub_class_feature_t feature);
+int usb_hub_set_port_feature(usb_pipe_t *pipe,
+    int port_index, usb_hub_class_feature_t feature);
 
 
Index: uspace/drv/bus/usb/usbhub/utils.h
===================================================================
--- uspace/drv/bus/usb/usbhub/utils.h	(revision 48a31bedce1136a958e3b68dca9ab2e7f71626bd)
+++ uspace/drv/bus/usb/usbhub/utils.h	(revision aff1880223dc65a807007d2fbf259e14f2baa53d)
@@ -50,51 +50,4 @@
 #include "usbhub.h"
 
-/**
- * Clear feature on hub port.
- *
- * @param hc Host controller telephone
- * @param address Hub address
- * @param port_index Port
- * @param feature Feature selector
- * @return Operation result
- */
-static inline int usb_hub_clear_port_feature(usb_pipe_t *pipe,
-    int port_index, usb_hub_class_feature_t feature)
-{
-
-	usb_device_request_setup_packet_t clear_request = {
-		.request_type = USB_HUB_REQ_TYPE_CLEAR_PORT_FEATURE,
-		.request = USB_DEVREQ_CLEAR_FEATURE,
-		.length = 0,
-		.index = port_index
-	};
-	clear_request.value = feature;
-	return usb_pipe_control_write(pipe, &clear_request,
-	    sizeof (clear_request), NULL, 0);
-}
-
-/**
- * Clear feature on hub port.
- *
- * @param hc Host controller telephone
- * @param address Hub address
- * @param port_index Port
- * @param feature Feature selector
- * @return Operation result
- */
-static inline int usb_hub_set_port_feature(usb_pipe_t *pipe,
-    int port_index, usb_hub_class_feature_t feature)
-{
-
-	usb_device_request_setup_packet_t clear_request = {
-		.request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE,
-		.request = USB_DEVREQ_SET_FEATURE,
-		.length = 0,
-		.index = port_index
-	};
-	clear_request.value = feature;
-	return usb_pipe_control_write(pipe, &clear_request,
-	    sizeof (clear_request), NULL, 0);
-}
 
 void * usb_create_serialized_hub_descriptor(usb_hub_descriptor_t *descriptor);
