Index: uspace/drv/bus/usb/xhci/device.c
===================================================================
--- uspace/drv/bus/usb/xhci/device.c	(revision 6271a349ac2cca2530102d30f2c9decf64972d81)
+++ uspace/drv/bus/usb/xhci/device.c	(revision 2aaba7ebd5f555b49a2560fb118593c6920c99e2)
@@ -178,10 +178,9 @@
 	/* Calculate route string */
 	xhci_device_t *xhci_hub = xhci_device_get(dev->hub);
-	xhci_dev->tier = xhci_hub->tier + 1;
 	xhci_dev->route_str = xhci_hub->route_str;
 
 	/* Roothub port is not part of the route string */
-	if (xhci_dev->tier >= 2) {
-		const unsigned offset = 4 * (xhci_dev->tier - 2);
+	if (dev->tier >= 2) {
+		const unsigned offset = 4 * (dev->tier - 2);
 		xhci_dev->route_str |= (dev->port & 0xf) << offset;
 		xhci_dev->rh_port = xhci_hub->rh_port;
Index: uspace/drv/bus/usb/xhci/device.h
===================================================================
--- uspace/drv/bus/usb/xhci/device.h	(revision 6271a349ac2cca2530102d30f2c9decf64972d81)
+++ uspace/drv/bus/usb/xhci/device.h	(revision 2aaba7ebd5f555b49a2560fb118593c6920c99e2)
@@ -49,7 +49,4 @@
 	uint8_t rh_port;
 
-	/** USB Tier of the device */
-	uint8_t tier;
-
 	/** Route string */
 	uint32_t route_str;
Index: uspace/drv/bus/usb/xhci/rh.c
===================================================================
--- uspace/drv/bus/usb/xhci/rh.c	(revision 6271a349ac2cca2530102d30f2c9decf64972d81)
+++ uspace/drv/bus/usb/xhci/rh.c	(revision 2aaba7ebd5f555b49a2560fb118593c6920c99e2)
@@ -98,5 +98,4 @@
 	/* Initialize route string */
 	rh->device.route_str = 0;
-	rh->device.tier = 0;
 
 	return EOK;
@@ -157,4 +156,5 @@
 
 	dev->hub = &port->rh->device.base;
+	dev->tier = 1;
 	dev->port = port - port->rh->ports + 1;
 
Index: uspace/lib/drv/generic/remote_usb.c
===================================================================
--- uspace/lib/drv/generic/remote_usb.c	(revision 6271a349ac2cca2530102d30f2c9decf64972d81)
+++ uspace/lib/drv/generic/remote_usb.c	(revision 2aaba7ebd5f555b49a2560fb118593c6920c99e2)
@@ -77,7 +77,8 @@
 	usb_device_desc_t tmp_desc;
 
-	const int ret = async_req_1_4(exch, DEV_IFACE_ID(USB_DEV_IFACE),
+	const int ret = async_req_1_5(exch, DEV_IFACE_ID(USB_DEV_IFACE),
 	    IPC_M_USB_GET_MY_DESCRIPTION,
 	    (sysarg_t *) &tmp_desc.address,
+	    (sysarg_t *) &tmp_desc.depth,
 	    (sysarg_t *) &tmp_desc.speed,
 	    &tmp_desc.handle,
@@ -117,6 +118,7 @@
 		async_answer_0(callid, ret);
 	} else {
-		async_answer_4(callid, EOK,
+		async_answer_5(callid, EOK,
 		    (sysarg_t) desc.address,
+		    (sysarg_t) desc.depth,
 		    (sysarg_t) desc.speed,
 		    desc.handle,
Index: uspace/lib/drv/include/usb_iface.h
===================================================================
--- uspace/lib/drv/include/usb_iface.h	(revision 6271a349ac2cca2530102d30f2c9decf64972d81)
+++ uspace/lib/drv/include/usb_iface.h	(revision 2aaba7ebd5f555b49a2560fb118593c6920c99e2)
@@ -45,8 +45,9 @@
 
 typedef struct {
-	usb_address_t address;
-	usb_speed_t speed;
-	devman_handle_t handle;
-	int iface;
+	usb_address_t address;		/** Current USB address */
+	uint8_t depth;			/** Depth in the hub hiearchy */
+	usb_speed_t speed;		/** Speed of the device */
+	devman_handle_t handle;		/** Handle to DDF function of the HC driver */
+	int iface;			/** Interface set by multi interface driver, -1 if none */
 } usb_device_desc_t;
 
Index: uspace/lib/usbhost/include/usb/host/bus.h
===================================================================
--- uspace/lib/usbhost/include/usb/host/bus.h	(revision 6271a349ac2cca2530102d30f2c9decf64972d81)
+++ uspace/lib/usbhost/include/usb/host/bus.h	(revision 2aaba7ebd5f555b49a2560fb118593c6920c99e2)
@@ -68,5 +68,10 @@
 	/* Invalid for the roothub device */
 	unsigned port;
+
+	/** Hub under which this device is connected */
 	struct device *hub;
+
+	/** USB Tier of the device */
+	uint8_t tier;
 
 	/* Transaction translator */
Index: uspace/lib/usbhost/src/ddf_helpers.c
===================================================================
--- uspace/lib/usbhost/src/ddf_helpers.c	(revision 6271a349ac2cca2530102d30f2c9decf64972d81)
+++ uspace/lib/usbhost/src/ddf_helpers.c	(revision 2aaba7ebd5f555b49a2560fb118593c6920c99e2)
@@ -164,4 +164,5 @@
 
 	dev->hub = hub;
+	dev->tier = hub->tier + 1;
 	dev->port = port;
 	dev->speed = speed;
@@ -242,4 +243,5 @@
 	*desc = (usb_device_desc_t) {
 		.address = dev->address,
+		.depth = dev->tier,
 		.speed = dev->speed,
 		.handle = ddf_fun_get_handle(fun),
