On 4/15/25 2:43 PM, chia-yu.chang@nokia-bell-labs.com wrote:
From: Chia-Yu Chang chia-yu.chang@nokia-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@nokia-bell-labs.com
Documentation/netlink/specs/tc.yaml | 144 ++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+)
diff --git a/Documentation/netlink/specs/tc.yaml b/Documentation/netlink/specs/tc.yaml index aacccea5dfe4..0fb971935285 100644 --- a/Documentation/netlink/specs/tc.yaml +++ b/Documentation/netlink/specs/tc.yaml @@ -816,6 +816,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
Here and in other numeric fields you should probably want to use 'uint' type, that will allow either 32 or 64 bits integers depending on the actual value and will make possible overflows harder.
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 +2351,92 @@ 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: memlimit
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 in microseconds or in packet (see step_packets)
-
name: step_packets
type: flags
doc: L4S Step marking threshold unit
entries:
- microseconds
- packets
-
name: min_qlen_step
type: u32
doc: Pacekts 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)
Typo above, should likely be 'Packets'
/P