ENUM QDISC_DROP_REASON(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ 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 is 0, and it serves as the analog to SKB_NOT_DROPPED_YET for enum skb_drop_reason. it's basically there to catch zero-initialized drop_reason fields πŸ‘€ (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