ipa_endpoint_init_hdr(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… ipa_endpoint_init_hdr(9) πŸ’…

okay so bestie, welcome to the kernel API manual β€” this one's ipa_endpoint_init_hdr, and it's literally the glow-up routine for the HDR endpoint configuration register ✨ no cap.


🌸 NAME 🌸

ipa_endpoint_init_hdr β€” Initialize HDR endpoint configuration register πŸŽ€


✨ SYNOPSIS ✨

void ipa_endpoint_init_hdr (struct ipa_endpoint *endpoint );

πŸ¦‹ ARGUMENTS πŸ¦‹

  • endpoint β€” Endpoint pointer. that's it, that's the whole argument, she's lowkey simple like that 🫢

πŸ’– DESCRIPTION πŸ’–

okay so here's the vibe: we program QMAP endpoints so that every single packet received is preceded by a QMAP header structure. like, the header walks in first, main character energy, and then the packet shows up 🌈

The QMAP header contains a 1-byte mux_id and a 2-byte packet size field, and we have the IPA hardware populate both of them for each received packet. yes bestie, the hardware does the work β€” the header is configured (in the HDR_EXT register) to use big endian format πŸ”₯

The packet size gets written into the QMAP header's pkt_len field. That location is defined right here using the HDR_OFST_PKT_SIZE field. slay, positioning is everything πŸ’…

Now the mux_id β€” she comes from a 4-byte metadata value supplied with each packet by the modem. and listen: it is *not* a QMAP header, but it does contain the mux_id value that we want, chillin' in its low-order byte πŸ“

A bitmask defined in the endpoint's METADATA_MASK register defines which byte within the modem metadata actually contains the mux_id. And the OFST_METADATA field programmed here indicates where the extracted byte should be placed within the QMAP header. it's giving "find her, then put her exactly where she belongs" 🧚


πŸ‘‘ SEE ALSO πŸ‘‘

the whole friend group fr fr 🫢


ok that's the page!! source: ./drivers/net/ipa Β· version/date: October 2026 Β· catch u later bestie, go init those headers πŸ’œπŸŽ€πŸ¦‹
πŸ“¦ where this page comes from