STRUCT USB_HOST_ENDPOINT(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct usb_host_endpoint(9) ✨

okay so bestie, welcome to the Kernel API Manual πŸŽ€ β€” today's main character is struct usb_host_endpoint, aka the host-side endpoint descriptor and its queue, all in one iconic little package πŸ’…


🌸 NAME 🌸

struct usb_host_endpoint β€” host-side endpoint descriptor and queue ✨


πŸ¦‹ SYNOPSIS πŸ¦‹

struct usb_host_endpoint {
    struct usb_endpoint_descriptor                  desc;
    struct usb_ss_ep_comp_descriptor                ss_ep_comp;
    struct usb_ssp_isoc_ep_comp_descriptor          ssp_isoc_ep_comp;
    struct usb_eusb2_isoc_ep_comp_descriptor        eusb2_isoc_ep_comp;
    struct list_head                urb_list;
    void *hcpriv;
    struct ep_device                *ep_dev;
    unsigned char *extra;
    int extralen;
    int enabled;
    int streams;
 };

like, look at her. she's got range πŸ’–


πŸ’œ Members πŸ’œ

  • desc β€” the descriptor for this endpoint, and heads up: wMaxPacketSize is in native byteorder 🧚 (yes, that matters, don't come for me)
  • ss_ep_comp β€” the SuperSpeed companion descriptor for this endpoint ⚑
  • ssp_isoc_ep_comp β€” the SuperSpeedPlus isoc companion descriptor for this endpoint πŸ”₯
  • eusb2_isoc_ep_comp β€” the eUSB2 isoc companion descriptor for this endpoint πŸ¦‹
  • urb_list β€” urbs queued to this endpoint; this one's maintained by usbcore, so hands off bestie πŸ™ˆ
  • hcpriv β€” for use by HCD; typically holds the hardware dma queue head (QH) with one or more transfer descriptors (TDs) per urb. It must be preserved by core while BW is allocated for the endpoint πŸ‘‘ (read that again, it's giving important)
  • ep_dev β€” the ep_device for sysfs info πŸŽ€
  • extra β€” descriptors following this endpoint in the configuration 🌈
  • extralen β€” how many bytes of "extra" are actually valid ⭐
  • enabled β€” URBs may be submitted to this endpoint βœ…
  • streams β€” number of USB-3 streams allocated on the endpoint 🌊

🫢 Description 🫢

USB requests are always queued to a given endpoint β€” and that endpoint is identified by a descriptor within an active interface in a given USB configuration. periodt. πŸ’…


🌟 SEE ALSO 🌟

Kernel file ./include/linux/usb.h β€” and honestly the whole friend group showed up:


ngl bestie, if you got this far you're lowkey a kernel girlie now πŸ’€πŸ‘‘

and that's the tea β€” this page lives in ./include/linux, stamped October 2026, and it's the struct usb_host_endpoint(9) era. mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from