[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250505094837.7192-6-chia-yu.chang@nokia-bell-labs.com>
Date: Mon, 5 May 2025 11:48:37 +0200
From: chia-yu.chang@...ia-bell-labs.com
To: donald.hunter@...il.com, xandfury@...il.com, netdev@...r.kernel.org,
dave.taht@...il.com, pabeni@...hat.com, jhs@...atatu.com,
kuba@...nel.org, stephen@...workplumber.org, xiyou.wangcong@...il.com,
jiri@...nulli.us, davem@...emloft.net, edumazet@...gle.com,
horms@...nel.org, andrew+netdev@...n.ch, ast@...erby.net,
liuhangbin@...il.com, shuah@...nel.org,
linux-kselftest@...r.kernel.org, ij@...nel.org, ncardwell@...gle.com,
koen.de_schepper@...ia-bell-labs.com, g.white@...lelabs.com,
ingemar.s.johansson@...csson.com, mirja.kuehlewind@...csson.com,
cheshire@...le.com, rs.ietf@....at, Jason_Livingood@...cast.com,
vidhi_goel@...le.com
Cc: Chia-Yu Chang <chia-yu.chang@...ia-bell-labs.com>
Subject: [PATCH v14 net-next 5/5] Documentation: netlink: specs: tc: Add DualPI2 specification
From: Chia-Yu Chang <chia-yu.chang@...ia-bell-labs.com>
Introduce the specification of tc qdisc DualPI2 stats and attributes,
which is the reference implementation of IETF RFC9332 DualQ Coupled AQM
(https://datatracker.ietf.org/doc/html/rfc9332) providing two different
queues: low latency queue (L-queue) and classic queue (C-queue).
Signed-off-by: Chia-Yu Chang <chia-yu.chang@...ia-bell-labs.com>
---
Documentation/netlink/specs/tc.yaml | 153 ++++++++++++++++++++++++++++
1 file changed, 153 insertions(+)
diff --git a/Documentation/netlink/specs/tc.yaml b/Documentation/netlink/specs/tc.yaml
index aacccea5dfe4..1490dc2b6adc 100644
--- a/Documentation/netlink/specs/tc.yaml
+++ b/Documentation/netlink/specs/tc.yaml
@@ -51,6 +51,34 @@ definitions:
- tundf
- tunoam
- tuncrit
+ -
+ name: tc-dualpi2-drop-overload-enum
+ type: enum
+ entries:
+ - overflow
+ - drop
+ -
+ name: tc-dualpi2-drop-early-enum
+ type: enum
+ entries:
+ - drop-dequeue
+ - drop-enqueue
+ -
+ name: tc-dualpi2-ecn-mask-enum
+ type: enum
+ entries:
+ -
+ name: l4s-ect
+ value: 1
+ -
+ name: any-ect
+ value: 3
+ -
+ name: tc-dualpi2-split-gso-enum
+ type: enum
+ entries:
+ - no-split-gso
+ - split-gso
-
name: tc-stats
type: struct
@@ -816,6 +844,58 @@ definitions:
-
name: drop-overmemory
type: u32
+ -
+ name: tc-dualpi2-xstats
+ type: struct
+ members:
+ -
+ name: prob
+ type: u32
+ doc: Current probability
+ -
+ name: delay-c
+ type: u32
+ doc: Current C-queue delay in microseconds
+ -
+ name: delay-l
+ type: u32
+ doc: Current L-queue delay in microseconds
+ -
+ name: pkts-in-c
+ type: u32
+ doc: Number of packets enqueued in the C-queue
+ -
+ name: pkts-in-l
+ type: u32
+ doc: Number of packets enqueued in the L-queue
+ -
+ name: maxq
+ type: u32
+ doc: Maximum number of packets seen by the DualPI2
+ -
+ name: ecn-mark
+ type: u32
+ doc: All packets marked with ecn
+ -
+ name: step-mark
+ type: u32
+ doc: Only packets marked with ecn due to L-queue step AQM
+ -
+ name: credit
+ type: s32
+ doc: Current credit value for WRR
+ -
+ name: memory-used
+ type: u32
+ doc: Memory used in bytes by the DualPI2
+ -
+ name: max-memory-used
+ type: u32
+ doc: Maximum memory used in bytes by the DualPI2
+ -
+ name: memory-limit
+ type: u32
+ doc: Memory limit in bytes
-
name: tc-fq-pie-xstats
type: struct
@@ -2299,6 +2379,73 @@ attribute-sets:
-
name: quantum
type: u32
+ -
+ name: tc-dualpi2-attrs
+ attributes:
+ -
+ name: limit
+ type: u32
+ doc: Limit of total number of packets in queue
+ -
+ name: memory-limit
+ type: u32
+ doc: Memory limit of total number of packets in queue
+ -
+ name: target
+ type: u32
+ doc: Classic target delay in microseconds
+ -
+ name: tupdate
+ type: u32
+ doc: Drop probability update interval time in microseconds
+ -
+ name: alpha
+ type: u32
+ doc: Integral gain factor in Hz for PI controller
+ -
+ name: beta
+ type: u32
+ doc: Proportional gain factor in Hz for PI controller
+ -
+ name: step-thresh
+ type: u32
+ doc: L4S step marking threshold (see also step-packets)
+ -
+ name: step-packets
+ type: flag
+ doc: L4S Step marking threshold unit in packets (otherwise is in microseconds)
+ -
+ name: min-qlen-step
+ type: u32
+ doc: Packets enqueued to the L-queue can apply the step threshold when the queue length of L-queue is larger than this value. (0 is recommended)
+ -
+ name: coupling
+ type: u8
+ doc: Probability coupling factor between Classic and L4S (2 is recommended)
+ -
+ name: drop-overload
+ type: u8
+ doc: Control the overload strategy (drop to preserve latency or let the queue overflow)
+ enum: tc-dualpi2-drop-overload-enum
+ -
+ name: drop-early
+ type: u8
+ doc: Decide where the Classic packets are PI-based dropped or marked
+ enum: tc-dualpi2-drop-early-enum
+ -
+ name: c-protection
+ type: u8
+ doc: Classic WRR weight in percentage (from 0 to 100)
+ -
+ name: ecn-mask
+ type: u8
+ doc: Configure the L-queue ECN classifier
+ enum: tc-dualpi2-ecn-mask-enum
+ -
+ name: split-gso
+ type: u8
+ doc: Split aggregated skb or not
+ enum: tc-dualpi2-split-gso-enum
-
name: tc-ematch-attrs
attributes:
@@ -3679,6 +3826,9 @@ sub-messages:
-
value: drr
attribute-set: tc-drr-attrs
+ -
+ value: dualpi2
+ attribute-set: tc-dualpi2-attrs
-
value: etf
attribute-set: tc-etf-attrs
@@ -3846,6 +3996,9 @@ sub-messages:
-
value: codel
fixed-header: tc-codel-xstats
+ -
+ value: dualpi2
+ fixed-header: tc-dualpi2-xstats
-
value: fq
fixed-header: tc-fq-qd-stats
--
2.34.1
Powered by blists - more mailing lists