STRUCT XGENE_DMA_CHAN(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 struct xgene_dma_chan β€” NAME 🌸

okay so bestie, gather round: struct xgene_dma_chan is the internal representation of an X-Gene DMA channel πŸ’… that's it, that's the whole vibe. it's the little homegirl that keeps track of everything a single DMA channel is doing. icon behavior only ✨


πŸ¦‹ SYNOPSIS

struct xgene_dma_chan {
    struct dma_chan dma_chan;
    struct xgene_dma *pdma;
    struct device *dev;
    int id;
    int rx_irq;
    char name[10];
    spinlock_t lock;
    int pending;
    int max_outstanding;
    struct list_head ld_pending;
    struct list_head ld_running;
    struct list_head ld_completed;
    struct dma_pool *desc_pool;
    struct tasklet_struct tasklet;
    struct xgene_dma_ring tx_ring;
    struct xgene_dma_ring rx_ring;
 };

like, copy it exactly pls, no edits, no "improvements", we don't do that here πŸ™ˆ


πŸŽ€ Members πŸŽ€

  • dma_chan β€” the dmaengine channel object member. this is the whole reason she's here honestly πŸ‘‘
  • pdma β€” a reference to the X-Gene DMA device structure. her upstream bestie 🫢
  • dev β€” the struct device reference used for the dma mapping api.
  • id β€” the raw id of this channel. her literal government name, no filter πŸ’€
  • rx_irq β€” the channel IRQ. that's how she gets pinged, iykyk πŸ””
  • name β€” the name of the X-Gene DMA channel.
  • lock β€” serializes enqueue/dequeue operations to the descriptor pool. one at a time, bestie, no cutting in line 🚦
  • pending β€” the number of transaction requests pushed to the DMA controller for execution, but still waiting for completion. so like… they're out there, they're just not back yet 😭
  • max_outstanding β€” the max number of outstanding requests we can push to the channel. the hard limit, the ceiling, the no more after this βœ‹
  • ld_pending β€” descriptors which are queued to run, but have not yet been submitted to the hardware for execution. they're in the group chat but haven't sent a message yet πŸ’¬
  • ld_running β€” descriptors which are currently being executed by the hardware. main character energy, they're literally on stage rn πŸ”₯
  • ld_completed β€” descriptors which have finished execution by the hardware. these descriptors have already had their cleanup actions run. they are waiting for the ACK bit to be set by the async tx API. so like… done with their shift, just waiting for someone to clock them out ⏰
  • desc_pool β€” the descriptor pool for DMA operations. the closet she pulls fits from πŸŽ€
  • tasklet β€” the bottom half where all completed descriptors get cleaned. the little cleanup crew that shows up after the party 🧹
  • tx_ring β€” the transmit ring descriptor that we use to prepare actual descriptors for further executions. the outbox, basically πŸ’Œ
  • rx_ring β€” the receive ring descriptor that we use to get completed DMA descriptors during cleanup time. the inbox where finished stuff comes back πŸ“

✨ SEE ALSO ✨


ngl if you got here you're probably deep in driver land β€” go read those, they're all part of the same friend group 🫢

and that's the whole page bestie, no cap πŸ’– this one lives under ./drivers/dma in the Kernel API Manual and it's dated October 2026 β€” love that for us, periodt πŸŒˆπŸ‘‘

πŸ“¦ where this page comes from