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