STRUCT USB_HOST_ENDPOINT(9)
β¨ 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:wMaxPacketSizeis 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β theep_devicefor 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:
struct usb_interface(9)usb_set_intfdata(9)struct usb_interface_cache(9)struct usb_host_config(9)struct usb_device(9)usb_hub_for_each_child(9)usb_interface_claimed(9)usb_make_path(9)USB_DEVICE(9)USB_DEVICE_VER(9)USB_DEVICE_INTERFACE_CLASS(9)USB_DEVICE_INTERFACE_PROTOCOL(9)USB_DEVICE_INTERFACE_NUMBER(9)USB_DEVICE_INFO(9)USB_INTERFACE_INFO(9)USB_DEVICE_AND_INTERFACE_INFO(9)USB_VENDOR_AND_INTERFACE_INFO(9)struct usb_driver(9)struct usb_device_driver(9)struct usb_class_driver(9)module_usb_driver(9)struct urb(9)usb_fill_control_urb(9)usb_fill_bulk_urb(9)usb_fill_int_urb(9)usb_urb_dir_in(9)usb_urb_dir_out(9)struct usb_sg_request(9)
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
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms