Commit 68db0ff2 authored by Chia-Yu Chang's avatar Chia-Yu Chang Committed by Jakub Kicinski
Browse files

Documentation: netlink: specs: tc: Add DualPI2 specification

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: default avatarChia-Yu Chang <chia-yu.chang@nokia-bell-labs.com>
Link: https://patch.msgid.link/20250722095915.24485-7-chia-yu.chang@nokia-bell-labs.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 032f0e9e
Loading
Loading
Loading
Loading
+149 −2
Original line number Diff line number Diff line
@@ -56,6 +56,23 @@ definitions:
      - tundf
      - tunoam
      - tuncrit
  -
    name: dualpi2-drop-overload
    type: enum
    entries: [overflow, drop]
  -
    name: dualpi2-drop-early
    type: enum
    entries: [drop-dequeue, drop-enqueue]
  -
    name: dualpi2-ecn-mask
    type: enum
    value-start: 1
    entries: [l4s-ect, cla-ect, any-ect]
  -
    name: dualpi2-split-gso
    type: enum
    entries: [no-split-gso, split-gso]
  -
    name: tc-stats
    type: struct
@@ -825,6 +842,58 @@ definitions:
      -
        name: drop-overmemory
        type: u32
  -
    name: tc-dualpi2-xstats
    type: struct
    members:
      -
        name: prob
        type: u32
        doc: Current base PI 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
@@ -848,7 +917,7 @@ definitions:
      -
        name: ecn-mark
        type: u32
        doc: Packets marked with ecn
        doc: Packets marked with ECN
      -
        name: new-flow-count
        type: u32
@@ -991,7 +1060,7 @@ definitions:
      -
        name: ecn-mark
        type: u32
        doc: Packets marked with ecn
        doc: Packets marked with ECN
  -
    name: tc-red-xstats
    type: struct
@@ -2284,6 +2353,78 @@ attribute-sets:
      -
        name: quantum
        type: u32
  -
    name: dualpi2-attrs
    name-prefix: tca-dualpi2-
    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-pkts
        type: u32
        doc: L4S step marking threshold in packets
      -
        name: step-thresh-us
        type: u32
        doc: L4S Step marking threshold 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: dualpi2-drop-overload
      -
        name: drop-early
        type: u8
        doc: Decide where the Classic packets are PI-based dropped or marked
        enum: dualpi2-drop-early
      -
        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: dualpi2-ecn-mask
      -
        name: split-gso
        type: u8
        doc: Split aggregated skb or not
        enum: dualpi2-split-gso
  -
    name: ematch-attrs
    name-prefix: tca-ematch-
@@ -3708,6 +3849,9 @@ sub-messages:
      -
        value: drr
        attribute-set: drr-attrs
      -
        value: dualpi2
        attribute-set: dualpi2-attrs
      -
        value: etf
        attribute-set: etf-attrs
@@ -3875,6 +4019,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