summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJesper Dangaard Brouer <hawk@kernel.org>2026-02-26 16:44:19 +0300
committerJakub Kicinski <kuba@kernel.org>2026-03-01 02:31:34 +0300
commit3e28f8ad478f165260deba751858afac46cffd2f (patch)
treececb6e359e9451eb1e7460b3c2dd0f3b725b4b64 /include
parentff2998f29f390d963299103f0b247cc79106ced5 (diff)
downloadlinux-3e28f8ad478f165260deba751858afac46cffd2f.tar.xz
net: sched: sfq: convert to qdisc drop reasons
Convert SFQ to use the new qdisc-specific drop reason infrastructure. This patch demonstrates how to convert a flow-based qdisc to use the new enum qdisc_drop_reason. As part of this conversion: - Add QDISC_DROP_MAXFLOWS for flow table exhaustion - Rename FQ_FLOW_LIMIT to generic FLOW_LIMIT, now shared by FQ and SFQ - Use QDISC_DROP_OVERLIMIT for sfq_drop() when overall limit exceeded - Use QDISC_DROP_FLOW_LIMIT for per-flow depth limit exceeded The FLOW_LIMIT reason is now a common drop reason for per-flow limits, applicable to both FQ and SFQ qdiscs. Signed-off-by: Jesper Dangaard Brouer <hawk@kernel.org> Reviewed-by: Toke Høiland-Jørgensen <toke@redhat.com> Link: https://patch.msgid.link/177211345946.3011628.12770616071857185664.stgit@firesoul Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'include')
-rw-r--r--include/net/dropreason-qdisc.h18
1 files changed, 14 insertions, 4 deletions
diff --git a/include/net/dropreason-qdisc.h b/include/net/dropreason-qdisc.h
index 80a2d557e5f7..02a9f580411b 100644
--- a/include/net/dropreason-qdisc.h
+++ b/include/net/dropreason-qdisc.h
@@ -9,10 +9,11 @@
FN(GENERIC) \
FN(OVERLIMIT) \
FN(CONGESTED) \
+ FN(MAXFLOWS) \
FN(CAKE_FLOOD) \
FN(FQ_BAND_LIMIT) \
FN(FQ_HORIZON_LIMIT) \
- FN(FQ_FLOW_LIMIT) \
+ FN(FLOW_LIMIT) \
FNe(MAX)
#undef FN
@@ -60,6 +61,13 @@ enum qdisc_drop_reason {
*/
QDISC_DROP_CONGESTED,
/**
+ * @QDISC_DROP_MAXFLOWS: packet dropped because the qdisc's flow
+ * tracking table is full and no free slots are available to allocate
+ * for a new flow. This indicates flow table exhaustion in flow-based
+ * qdiscs that maintain per-flow state (e.g., SFQ).
+ */
+ QDISC_DROP_MAXFLOWS,
+ /**
* @QDISC_DROP_CAKE_FLOOD: CAKE qdisc dropped packet due to flood
* protection mechanism (BLUE algorithm). This indicates potential
* DoS/flood attack or unresponsive flow behavior.
@@ -77,10 +85,12 @@ enum qdisc_drop_reason {
*/
QDISC_DROP_FQ_HORIZON_LIMIT,
/**
- * @QDISC_DROP_FQ_FLOW_LIMIT: FQ dropped packet because an individual
- * flow exceeded its per-flow packet limit.
+ * @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.
*/
- QDISC_DROP_FQ_FLOW_LIMIT,
+ QDISC_DROP_FLOW_LIMIT,
/**
* @QDISC_DROP_MAX: the maximum of qdisc drop reasons, which
* shouldn't be used as a real 'reason' - only for tracing code gen