flowchart TD
one["`**Registration**
Driver initializes usb::EndpointClient and pre-registers VMO data buffers via AddRequests() / RegisterVmos() VMOs are mapped locally once.`"]
two["`**Queueing & Submission**
Driver gets request from pool (GetRequest()), populates data (CopyTo()), flushes CPU cache (CacheFlush()), and submits via QueueRequests().`"]
three["`**Processing**
Endpoint Server (HCI or DCI driver) processes requests and transfers data over physical hardware.`"]
four["`**Completion**
Endpoint Server sends vectorized OnCompletion FIDL event. EndpointClient invalidates cache (CacheFlushInvalidate()) and returns requests back to pool via PutRequest().`"]
five["`**Teardown / Cancellation**
Driver cancels pending requests via CancelAll() and releases endpoint resources via ep_client.Close().`"]
one --> two --> three --> four --> five