Index: uspace/drv/bus/usb/xhci/commands.c
===================================================================
--- uspace/drv/bus/usb/xhci/commands.c	(revision 665bf3c6f94b9a1f2be0981e1035fd94335a6d2b)
+++ uspace/drv/bus/usb/xhci/commands.c	(revision c9ce62aee33f2e53a5bd30d46d2d5297928d6883)
@@ -142,4 +142,26 @@
 }
 
+int xhci_send_evaluate_context_command(xhci_hc_t *hc, uint32_t slot_id,
+				       xhci_input_ctx_t *ictx)
+{
+	/**
+	 * Note: All Drop Context flags of the input context shall be 0,
+	 *       all Add Context flags shall be initialize to indicate IDs
+	 *       of the contexts affected by the command.
+	 *       Refer to sections 6.2.2.3 and 6.3.3.3 for further info.
+	 */
+	xhci_trb_t trb;
+	memset(&trb, 0, sizeof(trb));
+
+	uint64_t phys_addr = (uint64_t) addr_to_phys(ictx);
+	trb.parameter = host2xhci(32, phys_addr & 0xFFFFFFFFFFFFFFF0);
+
+	trb.control = host2xhci(32, XHCI_TRB_TYPE_EVALUATE_CONTEXT_CMD << 10);
+	trb.control |= host2xhci(32, hc->command_ring.pcs);
+	trb.control |= host2xhci(32, slot_id << 24);
+
+	return enqueue_trb(hc, &trb, 0, 0);
+}
+
 static int report_error(int code)
 {
@@ -209,4 +231,6 @@
 	case XHCI_TRB_TYPE_CONFIGURE_ENDPOINT_CMD:
 		return EOK;
+	case XHCI_TRB_TYPE_EVALUATE_CONTEXT_CMD:
+		return EOK;
 	default:
 		usb_log_debug2("Unsupported command trb.");
