STRUCT IRIS_HFI_QUEUE_HEADER(9)
π NAME π
struct iris_hfi_queue_header β okay bestie, this is the struct that holds the header for an Iris HFI queue, and yeah, it's lowkey the vibe check for the whole queue π
(this lives in the Kernel API Manual, in case you were wondering which manual we're living in today β¨)
πΈ SYNOPSIS πΈ
struct iris_hfi_queue_header {
u32 status;
u32 start_addr;
u16 queue_type;
u16 header_type;
u32 q_size;
u32 pkt_size;
u32 pkt_drop_cnt;
u32 rx_wm;
u32 tx_wm;
u32 rx_req;
u32 tx_req;
u32 rx_irq_status;
u32 tx_irq_status;
u32 read_idx;
u32 write_idx;
};
Like, look at her. Fifteen fields, all of them main character energy. No cap, every single one matters π
π¦ Members π¦
statusβ the queue status, and it's chillin' in bits (7:0):0x1means active,0x0means inactive. That's the whole mood board for this field πstart_addrβ where the queue starts in non cached memory. Not cached, bestie, don't forget that part πqueue_typeβ the Queue ID. It's giving name tag at a party πheader_typeβ Default queue header. The standard fit, no custom vibes β¨q_sizeβ the queue size, and it's a two-for-one situation:- if
pkt_sizeis non-zero β it's the number of queue packets - if
pkt_sizeis zero β it's the queue size in bytes
- if
literally the same field with two whole personalities π
pkt_sizeβ size of queue packet entries:0x0β variable queue packet size- non zero β size of the queue packet entry, fixed
pick a lane, honestly π
pkt_drop_cntβ number of packets dropped by the sender. Not the flex we wanted but okay π«Άrx_wmβ Receiver watermark, applicable in event driven mode. Mark that water, queen πtx_wmβ Sender watermark, also applicable in event driven mode. Event driven mode girlies rise πrx_reqβ the Receiver sets this bit if the queue is empty. Empty queue = receiver's little flag moment π©tx_reqβ the Sender sets this bit if the queue is full. Full queue, sender hits the flag too π©rx_irq_statusβ the Receiver sets this bit and triggers an interrupt to the sender after packets are dequeued. Then the Sender clears this bit. Yes bestie, setting and clearing are two different people, keep up π€tx_irq_statusβ the Sender sets this bit and triggers an interrupt to the receiver after packets are queued. Then the Receiver clears this bit. Same deal, opposite direction, iconic symmetry πread_idxβ index till where the receiver has consumed the packets from the queue. How far the receiver got, periodt πwrite_idxβ index till where the sender has written the packets into the queue. How far the sender got, and yes they're absolutely in their own lane βοΈ
β SEE ALSO β
- Kernel file
./drivers/media/platform/qcom/iris/iris_hfi_queue.h struct iris_hfi_queue_table_header(9)β the sequel, go read it next, iykyk π§
ngl the only teeny tiny detail I want you to hold onto:q_sizeandpkt_sizeare out here reading each other's vibes, andrx_irq_status/tx_irq_statusare a matched set where one side sets and the other side clears. Don't mix 'em up or it's gonna be a whole thing π
okay that's the whole page bestie!! this slayed its way out of ./drivers/media/platform/qcom/..., October 2026 edition β that's the source/version and date right there, mwah, go forth and queue responsibly πβ¨ππ¦
π¦ 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