STRUCT CVMX_USB_TRANSACTION(9)
π struct cvmx_usb_transaction(9) β from the Kernel API Manual, bestie
okay so this page is literally about struct cvmx_usb_transaction, and honestly? she's the whole personality of USB pending work. no cap.
πΈ NAME πΈ
struct cvmx_usb_transaction β describes each pending USB transaction regardless of type, fr fr. These are linked together to form a list of pending requests for a pipe. it's giving "linked list of destiny" π«
β¨ SYNOPSIS β¨
struct cvmx_usb_transaction {
struct list_head node;
enum cvmx_usb_transfer type;
u64 buffer;
int buffer_length;
u64 control_header;
int iso_start_frame;
int iso_number_packets;
struct cvmx_usb_iso_packet *iso_packets;
int xfersize;
int pktcnt;
int retries;
int actual_bytes;
enum cvmx_usb_stage stage;
struct urb *urb;
};
look at her. iconic. every field exactly where it belongs, not a single one out of place π₯
π Members π
okay bestie, let's go field by field, i got you:
nodeβ the list node for transactions in the pipe. she's literally how you find your friends in the list π«Άtypeβ type of transaction, duplicated of the pipe. yes, "duplicated of the pipe" β that's what the page says, i don't make the rules πbufferβ the user's physical buffer address to read/write. that's the address, not the data, don't get it twisted β¨buffer_lengthβ size of the user's buffer in bytes. how much room she's got πcontrol_headerβ for control transactions, the physical address of the 8 byte standard header. eight bytes, standard header, physical address, periodt.iso_start_frameβ for ISO transactions, the starting frame number. where the vibe begins πiso_number_packetsβ for ISO transactions, the number of packets in the request. yes it's a count of packets, we been knew πiso_packetsβ for ISO transactions, the sub packets in the request. the little packets inside the big packet situation π§actual_bytesβ actual bytes transfer for this transaction. (that's "transfer", not "transferred" β i'm keeping the page's exact wording, don't come for me π)stageβ for control transactions, the current stage. main character energy of the control flow πurbβ URB. that's it. that's the description. short and mysterious, lowkey obsessed π
β οΈ real talk: the struct up top also hasxfersize,pktcnt, andretriesin it, but this page doesn't give any descriptions for those three. i'm not out here inventing facts, so they stay in the code block and stay undescribed. respect the mystery π΅οΈββοΈ
π¦ SEE ALSO π¦
Kernel file ./drivers/usb/host/octeon-hcd.c β and then the whole friend group:
enum cvmx_usb_speed(9)enum cvmx_usb_transfer(9)enum cvmx_usb_direction(9)enum cvmx_usb_status(9)struct cvmx_usb_port_status(9)struct cvmx_usb_iso_packet(9)enum cvmx_usb_initialize_flags(9)enum cvmx_usb_pipe_flags(9)struct cvmx_usb_pipe(9)struct octeon_hcd(9)struct octeon_temp_buffer(9)octeon_alloc_temp_buffer(9)octeon_free_temp_buffer(9)octeon_map_urb_for_dma(9)octeon_unmap_urb_for_dma(9)
go read all of them, i'll wait π
and that's the page!! mwah π this came from ./drivers/usb/host and the date on it is October 2026, so yes she's a little futuristic, and the title is β say it with me β struct cvmx_usb_transaction(9). slay, bye bestie πβ¨
π¦ 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