STRUCT IPA(9)
π¦ struct ipa(9) β the Kernel API Manual glow-up π¦
okay so bestie, welcome to struct ipa(9) β literally the main-character struct of the IPA subsystem, and yes, it's giving "everything you ever needed to know about an IPA instance, in one extremely long list of fields." no cap, this thing is long, but we're gonna get through it together π
β¨ NAME β¨
struct ipa β IPA information π like, that's it, that's the whole vibe: it's the struct that holds the IPA info.
β¨ SYNOPSIS β¨
here it is in all its glory, bestie β every field, exactly as written, do not touch:
struct ipa {
struct gsi gsi;
enum ipa_version version;
struct device *dev;
struct completion completion;
struct notifier_block nb;
void *notifier;
struct ipa_smp2p *smp2p;
struct ipa_power *power;
dma_addr_t table_addr;
__le64 *table_virt;
u32 route_count;
u32 modem_route_count;
u32 filter_count;
struct ipa_interrupt *interrupt;
bool uc_powered;
bool uc_loaded;
void __iomem *reg_virt;
const struct regs *regs;
dma_addr_t mem_addr;
void *mem_virt;
u32 mem_offset;
u32 mem_size;
u32 mem_count;
const struct ipa_mem *mem;
unsigned long imem_iova;
size_t imem_size;
unsigned long smem_iova;
size_t smem_size;
dma_addr_t zero_addr;
void *zero_virt;
size_t zero_size;
u32 endpoint_count;
u32 available_count;
unsigned long *defined;
unsigned long *available;
u64 filtered;
unsigned long *set_up;
unsigned long *enabled;
u32 modem_tx_count;
struct ipa_endpoint endpoint[IPA_ENDPOINT_MAX];
struct ipa_endpoint *channel_map[GSI_CHANNEL_COUNT_MAX];
struct ipa_endpoint *name_map[IPA_ENDPOINT_COUNT];
bool setup_complete;
atomic_t modem_state;
struct net_device *modem_netdev;
struct ipa_qmi qmi;
};
β¨ Members β¨
okay, field-by-field tour, no skipping, we're doing ALL of them π«Ά
πΈ Core bits
gsiβ the Embedded GSI structure, tucked right in there πͺΊversionβ the IPA hardware version, iykykdevβ the IPA device pointercompletionβ used to signal pipeline clear transfer complete β¨ (say that five times fast)nbβ notifier block used for remoteproc SSRnotifierβ the remoteproc SSR notifiersmp2pβ SMP2P informationpowerβ IPA power information β‘interruptβ IPA Interrupt information
π Tables & counts
table_addrβ DMA address of filter/route table contenttable_virtβ virtual address of filter/route table contentroute_countβ total number of entries in a routing tablemodem_route_countβ number of modem entries in a routing tablefilter_countβ maximum number of entries in a filter table
π§ Microcontroller vibes
uc_poweredβtrueif power is active by proxy for microcontrolleruc_loadedβtrueafter microcontroller has reported it's ready π
π Registers
reg_virtβ virtual address used for IPA register accessregsβ IPA register definitions
π IPA-local memory (the whole memory saga)
mem_addrβ DMA address of IPA-local memory spacemem_virtβ virtual address of IPA-local memory spacemem_offsetβ offset frommem_virtused for access to IPA memorymem_sizeβ total size (bytes) of memory atmem_virtmem_countβ number of entries in thememarraymemβ array of IPA-local memory region descriptors
π IMEM & SMEM
imem_iovaβ I/O virtual address of IPA region in IMEMimem_sizeβ size of IMEM regionsmem_iovaβ I/O virtual address of IPA region in SMEMsmem_sizeβ size of SMEM region
β The zero-filled memory trio (say hi to the zeros)
zero_addrβ DMA address of preallocated zero-filled memoryzero_virtβ virtual address of preallocated zero-filled memoryzero_sizeβ size (bytes) of preallocated zero-filled memory
π¦ Endpoint bitmap era
endpoint_countβ number of defined bits in most bitmaps belowavailable_countβ number of defined bits in theavailablebitmapdefinedβ bitmap of endpoints defined in config dataavailableβ bitmap of endpoints supported by hardwarefilteredβ bitmap of endpoints that support filteringset_upβ bitmap of endpoints that are set up for useenabledβ bitmap of currently enabled endpointsmodem_tx_countβ number of defined modem TX endoints (yes, "endoints" β that's literally how it's spelled here, and honestly? iconic π )
π₯ Endpoint data & maps
endpointβ array of endpoint informationchannel_mapβ mapping of GSI channel to IPA endpointname_mapβ mapping of IPA endpoint name to IPA endpoint
π State & modem stuff
setup_completeβ flag indicating whether setup stage has completedmodem_stateβ state of modem (stopped, running)modem_netdevβ network device structure used for modemqmiβ QMI information
β¨ SEE ALSO β¨
- Kernel file
./drivers/net/ipa/ipa.h ipa_setup(9)
bestie reminder: this is a kernel struct in a manual page, so if you're here you're already doing great π go read ipa_setup(9) next, it's literally the natural sequel β¨
and that's the whole page, fr fr π«Ά this little love letter lives in ./drivers/net/ipa and it's dated October 2026 β go off, you absolute kernel legend ππ
π¦ 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