ENUM QDISC_DROP_REASON(9)
β¨ enum qdisc_drop_reason(9) β¨
okay bestie, buckle up π
this is a Kernel API Manual page (the (9) is giving "deep kernel lore, not for the faint of heart") and it's literally all about the why behind a qdisc yeeting a packet into the void. no cap, it's useful.
π NAME π
enum qdisc_drop_reason β the reason why a qdisc dropped a packet π«Ά
π¦ SYNOPSIS π¦
enum qdisc_drop_reason {
QDISC_DROP_UNSPEC ,
__QDISC_DROP_REASON ,
QDISC_DROP_GENERIC ,
QDISC_DROP_OVERLIMIT ,
QDISC_DROP_CONGESTED ,
QDISC_DROP_MAXFLOWS ,
QDISC_DROP_FLOOD_PROTECTION ,
QDISC_DROP_BAND_LIMIT ,
QDISC_DROP_HORIZON_LIMIT ,
QDISC_DROP_FLOW_LIMIT ,
QDISC_DROP_L4S_STEP_NON_ECN ,
QDISC_DROP_MAX
};
π Constants π
like. every single one. i'm not skipping a single one because each of these is a whole personality πΈ
QDISC_DROP_UNSPECβ the unspecified/invalid qdisc drop reason. its value is0, and it serves as the analog toSKB_NOT_DROPPED_YETforenum skb_drop_reason. it's basically there to catch zero-initializeddrop_reasonfields π (yes, girl, the "did anyone actually set this?" guard).__QDISC_DROP_REASONβ the subsystem base value for qdisc drop reasons. the starting line, the foundation, the main character energy π₯QDISC_DROP_GENERICβ the generic/default qdisc drop, used when no more specific reason applies. the "it's giving β¨mysteryβ¨" of drop reasons.QDISC_DROP_OVERLIMITβ packet dropped because the qdisc queue length exceeded its configured limit (sch->limit). this is typically a sign the queue is full and literally cannot accept more packets π like a club at capacity, sorry babes.QDISC_DROP_CONGESTEDβ packet dropped because active congestion control algorithms (e.g., CoDel, PIE, RED) detected network congestion. the qdisc proactively dropped the packet to signal congestion to the sender and prevent bufferbloat. proactive queen behavior, honestly πQDISC_DROP_MAXFLOWSβ packet dropped because the qdisc's flow tracking table is full and there are no free slots available to allocate for a new flow π₯² this indicates flow table exhaustion in flow-based qdiscs that maintain per-flow state (e.g., SFQ). the table said no.QDISC_DROP_FLOOD_PROTECTIONβ packet dropped by the flood protection mechanism detecting unresponsive flows (potential DoS/flood). used by qdiscs implementing probabilistic drop algorithms like BLUE (e.g., CAKE's Cobalt AQM) π protection mode: activated.QDISC_DROP_BAND_LIMITβ packet dropped because the priority band's limit was reached. used by qdiscs with priority bands that have per-band packet limits (e.g., FQ). that band is full, bestie, no more room πQDISC_DROP_HORIZON_LIMITβ packet dropped because its timestamp is too far in the future (beyond the configured horizon) β³ used by qdiscs with time-based scheduling (e.g., FQ). too far ahead, we're not waiting for you.QDISC_DROP_FLOW_LIMITβ packet dropped because an individual flow exceeded its per-flow packet/depth limit. used by FQ and SFQ qdiscs to enforce per-flow fairness and prevent a single flow from monopolizing queue resources π ββοΈ no monopolizing in this house.QDISC_DROP_L4S_STEP_NON_ECNβ the DualPI2 qdisc dropped a non-ECN-capable packet because the L4S queue delay exceeded the step threshold. since the packet cannot be ECN-marked, it must be dropped to signal congestion. see RFC 9332 for the DualQ Coupled AQM step mechanism π (yes, there's a whole RFC, go read it, iykyk).QDISC_DROP_MAXβ the maximum of qdisc drop reasons, which shouldn't be used as a real 'reason' β it's only there for tracing code gen π« like a placeholder that got a little too comfortable.
π Description π
so these are the qdisc-specific drop reasons for packet drops that happen within the traffic control (TC) queueing discipline layer π they give you detailed diagnostics about why packets were dropped by the various qdisc algorithms, which basically unlocks fine-grained monitoring and troubleshooting of queue behavior. literally the receipts for every drop πβ¨
β SEE ALSO β
- Kernel file
./include/net/dropreason-qdisc.hβ go read it, it's the source of truth π«
and that's the tea, bestie π this page came from ./include/net, dated October 2026, and it's the enum qdisc_drop_reason(9) manual page β slay, go debug something iconic π
π
π¦ 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