STRUCT IPC_PIPE(9)
π NAME π
okay so bestie, welcome to the struct ipc_pipe(9) page from the Kernel API Manual β this is literally the Structure for Pipe, and that's the whole vibe. π
no cap.
β¨ SYNOPSIS β¨
here's the struct in all its glory β copy-paste exact, no edits, please and thank you π«Ά:
struct ipc_pipe {
struct ipc_protocol_td *tdr_start;
struct ipc_mem_channel *channel;
struct sk_buff **skbr_start;
dma_addr_t phy_tdr_start;
u32 old_head;
u32 old_tail;
u32 nr_of_entries;
u32 max_nr_of_queued_entries;
u32 accumulation_backoff;
u32 irq_moderation;
u32 pipe_nr;
u32 irq;
enum ipc_mem_pipe_dir dir;
u32 buf_size;
u16 nr_of_queued_entries;
u8 is_open:1;
};
π«Ά Members π«Ά
okay bestie, here's the member-by-member tea β β every field, every detail, all iconic:
tdr_startβ Ipc private protocol Transfer Descriptor Ring. yes, capital-letter TDR energy.channelβ Id of the sio device, set byimem_sio_open, needed to pass DL char to the user terminal.skbr_startβ Circular buffer forskbufand the buffer reference in atdr_startentry.phy_tdr_startβ Transfer descriptor start address.old_headβ last head pointer reported to CP.old_tailβ AP read position before CP moves the read position to write/head. If CP has consumed the buffers, AP has to freed theskbufstarting attdr_start[old_tail].nr_of_entriesβ Number of elements ofskb_startandtdr_start.max_nr_of_queued_entriesβ Maximum number of queued entries in TDR.accumulation_backoffβ Accumulation in usec for accumulation backoff (0 = no acc backoff).irq_moderationβ timer in usec forirq_moderation(0=no irq moderation).pipe_nrβ Pipe identification number.irqβ Interrupt vector.dirβ Direction of data stream in pipe.buf_sizeβ Buffer size (in bytes) for preallocated buffers (for DL pipes).nr_of_queued_entriesβ βAueued number of entriesβ β yes, that's the spelling in the source, we're not fixing it, it's part of the lore π.is_openβ Check for open pipe status.
π SEE ALSO π
Kernel file: ./drivers/net/wwan/iosm/iosm_ipc_imem.h β and now the whole bestie reference list, zero skips, fr fr:
enum ipc_ctype(9)struct ipc_mem_channel(9)enum ipc_phase(9)struct iosm_imem(9)ipc_imem_init(9)ipc_imem_pm_s2idle_sleep(9)ipc_imem_pm_suspend(9)ipc_imem_pm_resume(9)ipc_imem_cleanup(9)ipc_imem_irq_process(9)imem_get_device_sleep_state(9)ipc_imem_td_update_timer_suspend(9)ipc_imem_channel_close(9)ipc_imem_channel_alloc(9)ipc_imem_channel_open(9)ipc_imem_td_update_timer_start(9)ipc_imem_ul_write_td(9)ipc_imem_ul_send(9)ipc_imem_channel_update(9)ipc_imem_channel_free(9)ipc_imem_hrtimer_stop(9)ipc_imem_pipe_cleanup(9)ipc_imem_pipe_close(9)ipc_imem_phase_update(9)ipc_imem_phase_get_string(9)ipc_imem_msg_send_feature_set(9)ipc_imem_ipc_init_check(9)ipc_imem_channel_init(9)ipc_imem_devlink_trigger_chip_info(9)
okay that's the whole page bestie π this little masterpiece lives under ./drivers/net/wwan/iosm, dated October 2026, and it's literally struct ipc_pipe(9) core πβ¨
π¦ 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