Index: uspace/drv/bus/usb/xhci/commands.c
===================================================================
--- uspace/drv/bus/usb/xhci/commands.c	(revision 4fa53422ba47158d373f7091ed0b6f2d63399fd2)
+++ uspace/drv/bus/usb/xhci/commands.c	(revision 05aeee0e2df025a83c9a5ed163b0b302eec1b8e6)
@@ -215,4 +215,37 @@
 }
 
+int xhci_send_reset_endpoint_command(xhci_hc_t *hc, uint32_t slot_id, uint32_t ep_id, uint8_t tcs)
+{
+	/**
+	 * Note: TCS can have values 0 or 1. If it is set to 0, see sectuon 4.5.8 for
+	 *       information about this flag.
+	 */
+	xhci_trb_t trb;
+	memset(&trb, 0, sizeof(trb));
+
+	trb.control = host2xhci(32, XHCI_TRB_TYPE_RESET_ENDPOINT_CMD << 10);
+	trb.control |= host2xhci(32, hc->command_ring.pcs);
+	trb.control |= host2xhci(32, (tcs & 0x1) << 9);
+	trb.control |= host2xhci(32, (ep_id & 0x5) << 16);
+	trb.control |= host2xhci(32, slot_id << 24);
+
+	return enqueue_trb(hc, &trb, 0, 0);
+}
+
+int xhci_send_stop_endpoint_command(xhci_hc_t *hc, uint32_t slot_id, uint32_t ep_id, uint8_t susp)
+{
+	xhci_trb_t trb;
+	memset(&trb, 0, sizeof(trb));
+
+	trb.control = host2xhci(32, XHCI_TRB_TYPE_STOP_ENDPOINT_CMD << 10);
+	trb.control |= host2xhci(32, hc->command_ring.pcs);
+	trb.control |= host2xhci(32, (ep_id & 0x5) << 16);
+	trb.control |= host2xhci(32, (susp & 0x1) << 23);
+	trb.control |= host2xhci(32, slot_id << 24);
+
+	return enqueue_trb(hc, &trb, 0, 0);
+
+}
+
 int xhci_handle_command_completion(xhci_hc_t *hc, xhci_trb_t *trb)
 {
@@ -250,4 +283,11 @@
 	case XHCI_TRB_TYPE_EVALUATE_CONTEXT_CMD:
 		return EOK;
+	case XHCI_TRB_TYPE_RESET_ENDPOINT_CMD:
+		return EOK;
+	case XHCI_TRB_TYPE_STOP_ENDPOINT_CMD:
+		// Note: If the endpoint was in the middle of a transfer, then the xHC
+		//       will add a Transfer TRB before the Event TRB, research that and
+		//       handle it appropriately!
+		return EOK;
 	default:
 		usb_log_debug2("Unsupported command trb.");
Index: uspace/drv/bus/usb/xhci/commands.h
===================================================================
--- uspace/drv/bus/usb/xhci/commands.h	(revision 4fa53422ba47158d373f7091ed0b6f2d63399fd2)
+++ uspace/drv/bus/usb/xhci/commands.h	(revision 05aeee0e2df025a83c9a5ed163b0b302eec1b8e6)
@@ -47,4 +47,6 @@
 int xhci_send_configure_endpoint_command(xhci_hc_t *, uint32_t, xhci_input_ctx_t *);
 int xhci_send_evaluate_context_command(xhci_hc_t *, uint32_t, xhci_input_ctx_t *);
+int xhci_send_reset_endpoint_command(xhci_hc_t *, uint32_t, uint32_t, uint8_t);
+int xhci_send_stop_endpoint_command(xhci_hc_t *, uint32_t, uint32_t, uint8_t);
 
 int xhci_handle_command_completion(xhci_hc_t *, xhci_trb_t *);
