STRUCT PSIL_ENDPOINT_CONFIG(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ NAME ✨

struct psil_endpoint_config β€” the PSI-L Endpoint configuration, bestie πŸ’…

Ok so real talk, this is a page out of the Kernel API Manual, and it's all about that one lil struct that tells the kernel how a PSI-L endpoint should behave. No cap, it's giving "control panel for one endpoint" energy πŸŽ€


🌸 SYNOPSIS 🌸

Here's the whole thing, laid out exactly how it lives in the source:

struct psil_endpoint_config {
    enum psil_endpoint_type ep_type;
    enum udma_tp_level channel_tpl;
    unsigned pkt_mode:1;
    unsigned notdpkt:1;
    unsigned needs_epib:1;
    unsigned pdma_acc32:1;
    unsigned pdma_burst:1;
    u32 psd_size;
    s16 mapped_channel_id;
    u16 flow_start;
    u16 flow_num;
    s16 default_flow_id;
 };

Notice the bitfields? pkt_mode, notdpkt, needs_epib, pdma_acc32 and pdma_burst are all :1 β€” one bit each, living their tiny icon era 🧚


πŸ‘‘ Members πŸ‘‘

The members, one by one, fr fr

  • ep_type β€” the PSI-L endpoint type. It's literally the whole personality of the endpoint ✨
  • channel_tpl β€” the desired throughput level for the channel. Think of it as the endpoint's ambition πŸ’–
  • pkt_mode β€” if this one's set, the channel must be in Packet mode; if it's not set, the channel is in TR mode instead. No in-between, babe.
  • notdpkt β€” TDCM must be suppressed on the TX channel. Yep. That's the whole vibe.
  • needs_epib β€” the endpoint needs EPIB. Simple as that 🫢
  • pdma_acc32 β€” ACC32 must be enabled on the PDMA side. Not optional, that's the rule.
  • pdma_burst β€” BURST must be enabled on the PDMA side. Same energy, different bit ⭐
  • psd_size β€” if it's set, PSdata is used by the endpoint 🌸
  • mapped_channel_id β€” the PKTDMA thread-to-channel mapping for mapped channels. The lowkey important part: the thread must be serviced by the specified channel if mapped_channel_id is >= 0, in the case of PKTDMA πŸ”₯
  • flow_start β€” the PKDMA flow range start of the mapped channel. Heads up: unmapped channels use flow_id == chan_id πŸ’€
  • flow_num β€” the PKDMA flow count of the mapped channel. And again, for the people in the back: unmapped channels use flow_id == chan_id
  • default_flow_id β€” the PKDMA default (r)flow index of the mapped channel. It must be within the flow range of the mapped channel β€” that's a hard requirement, not a suggestion, ok? πŸ™ˆ
Also just so you're not confused later: yes, the original really does spell it PKTDMA in one spot and PKDMA in the others. That's not me being sloppy, that's just how it's written πŸ’œ

πŸ¦‹ SEE ALSO πŸ¦‹

Go check these out, they're the friends of this page:

  • The kernel file ./include/linux/dma/k3-psil.h
  • enum udma_tp_level(9)
  • enum psil_endpoint_type(9)

And that's the whole page, bestie β€” you ate that πŸ’…βœ¨

Cute lil sign-off: this one lives under ./include/linux/dma, and it's stamped October 2026. Periodt πŸŽ€πŸŒˆ

πŸ“¦ where this page comes from