STRUCT IPA_ENDPOINT_RX(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct ipa_endpoint_rx(9) πŸ’–

okay bestie, sit down, we're reading the Kernel API Manual together and honestly? this one's a cutie. it's giving Endpoint configuration for RX endpoints ✨ β€” like, this is literally the struct that tells the IPA hardware how to behave on the receive side. no cap.


✨ SYNOPSIS ✨

struct ipa_endpoint_rx {
    u32 buffer_size;
    u32 pad_align;
    u32 aggr_time_limit;
    bool aggr_hard_limit;
    bool aggr_close_eof;
    bool holb_drop;
 };

(she's little but she's got range πŸŽ€)


🌸 Members 🌸

  • buffer_size β€” the receive buffer size you're requesting, in bytes 🫢
  • pad_align β€” a power-of-2 boundary, and the packet payload gets aligned to it
  • aggr_time_limit β€” how long (in microseconds) before aggregation closes ⏰
  • aggr_hard_limit β€” tells us whether aggregation closes before or after the boundary, iykyk
  • aggr_close_eof β€” whether aggregation closes on end-of-frame πŸ¦‹
  • holb_drop β€” whether to drop packets to avoid head-of-line blocking πŸ’…

πŸ”₯ Description πŸ”₯

okay so first thing, main character energy: the actual size of the receive buffer is rounded up if necessary so it's a power-of-2 number of pages. not optional, that's just how she is. 🌈

With each packet it transfers, the IPA hardware can perform certain transformations of its packet data. one of these is adding pad bytes to the end of the packet data so the result ends on a power-of-2 boundary. cute, right? πŸŽ€

It's also able to aggregate multiple packets into a single receive buffer. Aggregation is "open" while a buffer is being filled, and "closes" when certain criteria are met. think of it like the group chat being active vs. everyone going to sleep 😭

A time limit can be specified to close aggregation. Aggregation will be closed if this period passes after data is first written into a receive buffer. and if it's not specified? no time limit is imposed. she'll wait forever, iconic πŸ’œ

Insufficient space available in the receive buffer can close aggregation too. the aggregation byte limit defines the point (in units of 1024 bytes) in the buffer where aggregation closes. so:

  • with a "soft" aggregation limit, aggregation closes when a packet written to the buffer crosses that aggregation limit ⭐
  • with a "hard" aggregation limit, aggregation will close before writing a packet that would cross that boundary πŸ”₯
bestie pls note the difference β€” soft = crosses, hard = before. that's the whole vibe check right there, don't mix them up πŸ™ˆ

πŸ¦‹ SEE ALSO πŸ¦‹

  • Kernel file ./drivers/net/ipa/ipa_endpoint.h
  • struct ipa_endpoint_tx(9)
  • struct ipa_endpoint_config(9)
  • enum ipa_replenish_flag(9)
  • struct ipa_endpoint(9)

go read the whole friend group, they're all slaying in their own way πŸ‘‘


and that's the page fr fr πŸ’– this little icon comes to you from ./drivers/net/ipa, dated October 2026, and it's literally titled struct ipa_endpoint_rx(9) β€” periodt. πŸŽ€βœ¨

πŸ“¦ where this page comes from