STRUCT DPNI_QUEUE(9)
πΈ struct dpni_queue(9) β the kernel API glow-up π
okay so bestie, buckle up: this is struct dpni_queue(9) from the Kernel API Manual, and it's literally the blueprint for a queue. That's the whole NAME section. Short, sweet, iconic. π
β¨ SYNOPSIS β¨
here's the shape of it, verbatim, no cap:
struct dpni_queue {
struct {
u16 id;
enum dpni_dest type;
char hold_active;
u8 priority;
} destination;
u64 user_context;
struct {
u64 value;
char stash_control;
} flc;
};
like. look at her. nested structs, nested vibes. π¦
π Members π
destination
the destination structure π (yes that's the entire description, she's mysterious)
destination.id
the ID of the destination. only relevant if DEST_TYPE is > 0, okay?? it identifies either a DPIO or a DPCON object. and ngl β not relevant for Tx queues. periodt.
destination.type
lowkey the main character of this struct. may be one of the following:
- 0 β no destination. the queue can be manually queried, but it will not push traffic or notifications to a DPIO.
- 1 β the destination is a DPIO. when traffic becomes available in the queue, a FQDAN (FQ data available notification) gets generated to the selected DPIO. π«
- 2 β the destination is a DPCON. the queue is associated with a DPCON object for the purpose of scheduling between multiple queues. the DPCON may be independently configured to generate notifications.
and again, bestie: not relevant for Tx queues. π
destination.hold_active
"hold active" β it maintains a queue scheduled for longer in a DPIO during dequeue, which reduces the spread of traffic. π§ only relevant if the queues are not affined to a single DPIO, so keep that in mind.
user_context
user data π«Ά β it gets presented to the user along with any frames from this queue. and yeah: not relevant for Tx queues. we been knew.
flc
the FD FLow Context structure β¨ (yes, "FLow" with a capital L, that's how the manpage spells it, don't come for me)
flc.value
the default FLC value for traffic dequeued from this queue. bestie please check the description of the FD structure for more info, fr fr. also β heads up β FLC values set using dpni_add_fs_entry, if any, take precedence over values per queue. so those win. π
flc.stash_control
a boolean, indicating whether the 6 lowest significant bits are used for stash control. π₯ if it's set, the 6 least significant bits in value are interpreted like this:
- bits 0-1 β indicates the number of 64 byte units of context that are stashed. in this case the FLC value is interpreted as a memory address, excluding the 6 LS bits.
- bits 2-3 β indicates the number of 64 byte units of frame annotation to be stashed. the annotation is placed at
FD[ADDR]. - bits 4-5 β indicates the number of 64 byte units of frame data to be stashed. the frame data is placed at
FD[ADDR] + FD[OFFSET]. for more details check the Frame Descriptor section in the hardware documentation. π
lowkey a warning but also just a heads up: that's the hardware doc's job to explain, not mine. go read it. π«‘
π SEE ALSO π
the kernel file itself lives at ./drivers/net/ethernet/freescale/dpaa2/dpni.h β go say hi to her π
and now the iconique extended universe, every single one, no skips:
DPNI_MAX_TC(9)DPNI_MAX_DPBP(9)DPNI_ALL_TCS(9)DPNI_ALL_TC_FLOWS(9)DPNI_NEW_FLOW_ID(9)DPNI_OPT_TX_FRM_RELEASE(9)DPNI_OPT_NO_MAC_FILTER(9)DPNI_OPT_HAS_POLICING(9)DPNI_OPT_SHARED_CONGESTION(9)DPNI_OPT_HAS_KEY_MASKING(9)DPNI_OPT_NO_FS(9)DPNI_OPT_SHARED_FS(9)struct dpni_pools_cfg(9)struct dpni_attr(9)DPNI_ERROR_EOFHE(9)DPNI_ERROR_FLE(9)DPNI_ERROR_FPE(9)DPNI_ERROR_PHE(9)DPNI_ERROR_L3CE(9)DPNI_ERROR_L4CE(9)enum dpni_error_action(9)struct dpni_error_cfg(9)DPNI_BUF_LAYOUT_OPT_TIMESTAMP(9)DPNI_BUF_LAYOUT_OPT_PARSER_RESULT(9)DPNI_BUF_LAYOUT_OPT_FRAME_STATUS(9)DPNI_BUF_LAYOUT_OPT_PRIVATE_DATA_SIZE(9)DPNI_BUF_LAYOUT_OPT_DATA_ALIGN(9)DPNI_BUF_LAYOUT_OPT_DATA_HEAD_ROOM(9)DPNI_BUF_LAYOUT_OPT_DATA_TAIL_ROOM(9)struct dpni_buffer_layout(9)enum dpni_queue_type(9)enum dpni_offload(9)union dpni_statistics(9)struct dpni_link_cfg(9)struct dpni_link_state(9)enum dpni_dist_mode(9)enum dpni_fs_miss_action(9)struct dpni_fs_tbl_cfg(9)struct dpni_rx_tc_dist_cfg(9)DPNI_FS_MISS_DROP(9)struct dpni_rx_dist_cfg(9)struct dpni_qos_tbl_cfg(9)enum dpni_dest(9)struct dpni_queue_id(9)enum dpni_congestion_unit(9)enum dpni_congestion_point(9)struct dpni_dest_cfg(9)DPNI_CONG_OPT_FLOW_CONTROL(9)struct dpni_congestion_notification_cfg(9)struct dpni_taildrop(9)struct dpni_rule_cfg(9)DPNI_FS_OPT_DISCARD(9)DPNI_FS_OPT_SET_FLC(9)DPNI_FS_OPT_SET_STASH_CONTROL(9)struct dpni_fs_action_cfg(9)struct dpni_tx_shaping_cfg(9)struct dpni_single_step_cfg(9)
and that's the whole page, bestie. π she comes from ./drivers/net/ethernet/freescaβ¦ (yes the path is literally truncated in the footer, we don't gatekeep, we just vibe) and she's dated October 2026 β future queen behavior honestly πβ¨ mwah, go write some queues π
π¦ 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