Index: uspace/drv/bus/usb/usbhub/port.c
===================================================================
--- uspace/drv/bus/usb/usbhub/port.c	(revision 47e9494c5eb0d77e3f73d832708572c5ada9398e)
+++ uspace/drv/bus/usb/usbhub/port.c	(revision 4603b35bfff3d939df56b8ba944e6aba6c14b3a6)
@@ -246,5 +246,5 @@
 	 * TODO: Make the request synchronous.
 	 */
-	while ((err = usbhc_reserve_default_address(exch, port->speed)) == EAGAIN) {
+	while ((err = usbhc_reserve_default_address(exch)) == EAGAIN) {
 		fibril_condvar_wait_timeout(&port->state_cv, &port->guard, 500000);
 		if (port->state != PORT_CONNECTED) {
@@ -271,5 +271,5 @@
 	port_log(debug, port, "Port reset, enumerating device.");
 
-	if ((err = usbhc_device_enumerate(exch, port->port_number))) {
+	if ((err = usbhc_device_enumerate(exch, port->port_number, port->speed))) {
 		port_log(error, port, "Failed to enumerate device: %s", str_error(err));
 		port_change_state(port, PORT_DISABLED);
Index: uspace/drv/bus/usb/xhci/rh.c
===================================================================
--- uspace/drv/bus/usb/xhci/rh.c	(revision 47e9494c5eb0d77e3f73d832708572c5ada9398e)
+++ uspace/drv/bus/usb/xhci/rh.c	(revision 4603b35bfff3d939df56b8ba944e6aba6c14b3a6)
@@ -169,5 +169,7 @@
 	}
 
-	device_t *dev = hcd_ddf_fun_create(&rh->hc->base);
+	const xhci_port_speed_t *port_speed = xhci_rh_get_port_speed(rh, port_id);
+
+	device_t *dev = hcd_ddf_fun_create(&rh->hc->base, port_speed->usb_speed);
 	if (!dev) {
 		usb_log_error("Failed to create USB device function.");
@@ -175,12 +177,10 @@
 	}
 
-	const xhci_port_speed_t *port_speed = xhci_rh_get_port_speed(rh, port_id);
+	dev->hub = &rh->device.base;
+	dev->port = port_id;
+
 	xhci_device_t *xhci_dev = xhci_device_get(dev);
 	xhci_dev->usb3 = port_speed->major == 3;
 	xhci_dev->rh_port = port_id;
-
-	dev->hub = &rh->device.base;
-	dev->port = port_id;
-	dev->speed = port_speed->usb_speed;
 
 	if ((err = bus_device_enumerate(dev))) {
