DOCA PCC ZTR RTTCC Algorithm
Where to start: This skill assumes DOCA is already
installed, the user's BlueField has a DPA processor that
the host can see through DOCA (a BlueField-3-generation
device per the README), the BlueField firmware has the
custom-PCC slot enabled, the DPACC compiler is installed at
a matched version per the DOCA Compatibility Policy, and the
user is doing hands-on deployment of the DOCA-shipped ZTR
RTTCC reference algorithm on a BlueField port that
already carries RoCE-v2 traffic — i.e. either deploying it
as the no-config-required baseline, tuning its documented
parameters, or evaluating it against a custom algorithm the
user intends to write. Open TASKS.md if the
user wants to do something (install / configure / build /
modify / run / test / debug / use); open
CAPABILITIES.md when the question is
what does the algorithm express, what are its variants and
parameters, what does it ship vs not ship. If the user has
not installed DOCA yet, route to
doca-setup first; if the user
has not stood up the host-side doca-pcc framework yet,
route to doca-pcc first (this
algorithm is a library consumed by the PCC framework, not
a standalone program); if the user only wants to inspect
PCC counters at runtime without changing the running
algorithm, route to
doca-pcc-counters;
if the user wants to write their own algorithm from
scratch, that is the doca-pcc library plus the public
PCC programming guide — this skill is for the shipped
reference algorithm specifically.
Example questions this skill answers well
The CLASSES of ZTR RTTCC questions this skill is built to
answer, each with one worked example. The agent should
treat the class as the load-bearing piece — the worked
example is a single instance.
- "Is the ZTR RTTCC reference algorithm the right
baseline for my deployment, or should I write a custom
algorithm?" — worked example: "I have a BlueField-3
carrying production RoCE-v2 traffic from a GPU cluster;
is the shipped algorithm a fine default or do I need
custom logic?". Answered by the decision rule in
CAPABILITIES.md ## Capabilities and modes
("when to use the reference vs custom") + the env
preconditions in
TASKS.md ## install.
- "How do I wire the shipped algorithm into the DOCA
PCC application that's already running on my host?" —
worked example: "
/opt/mellanox/doca/applications/pcc
is already building from sample sources; what do I
change so the user algo callback dispatches to
doca_pcc_dev_ztr_rttcc_algo under a chosen algo
slot?". Answered by the integration sequence in
CAPABILITIES.md ## Capabilities and modes
- the in-place edits in
TASKS.md ## modify.
- "Which variant of the algorithm am I getting — vanilla
RTT-CC, path-migration mode, RX-rate mode, multipath,
multipath with credits, window-probeless?" — worked
example: "the shipped library exposes one public
symbol
doca_pcc_dev_ztr_rttcc_algo but the device-
side source ships several variants; how do I know
which one I get and how do I pick another?".
Answered by the variants table in
CAPABILITIES.md ## Capabilities and modes.
- "How do I confirm the algorithm is actually
modulating my RDMA / RoCE traffic, and not just
loading?" — worked example: "I followed the
integration steps; the application starts; how do I
know the algorithm is shaping flows under load?".
Answered by the observability surface in
CAPABILITIES.md ## Observability
- "Which tunables does the algorithm expose, and how
do I change them from the host without rebuilding the
DPA-side image?" — worked example: "my workload is
more latency-sensitive than the default profile assumes
— which parameter knob do I adjust?". Answered by
the parameter surface in
CAPABILITIES.md ## Capabilities and modes
- the
doca_pcc_dev_set_ztr_rttcc_params workflow in
TASKS.md ## use.
- "What does this
DOCA_PCC_DEV_STATUS_FAIL or
DOCA_ERROR_* from a doca_pcc_dev_ztr_rttcc_* call
mean and which layer caused it?" — worked example:
"my init callback returns DOCA_PCC_DEV_STATUS_FAIL
on first launch". Answered by the algorithm overlay
on the host-side PCC taxonomy in
CAPABILITIES.md ## Error taxonomy
Audience
This skill serves external developers operating a
BlueField-3-class DPU who want to deploy NVIDIA's shipped
reference PCC algorithm on RoCE-v2 traffic, OR who are
evaluating it against a custom algorithm they intend to
write. The reference algorithm is zero-touch by design
— the no-config-required baseline — and the canonical use
case is dropping it onto a port and confirming it shapes
flows correctly under congestion. It is not for NVIDIA
developers contributing to the algorithm itself, nor for
users who want general PCC programming theory (route via
the public DOCA PCC programming guide), nor for users who
only want to inspect PCC counters (route to
doca-pcc-counters).
Language scope. The algorithm ships as a DPA-side
library (pkg-config module doca-pcc-ztr-rttcc-algo)
plus a public header doca_pcc_dev_ztr_rttcc_algo.h that
DPA-side translation units include. The shipped algorithm
binary is the static library
libdoca_pcc_ztr_rttcc_algo_dev.a per the README; the
device-side translation unit that consumes it is C and is
compiled by DPACC. The host-side that drives the PCC
context comes from doca-pcc;
this library does NOT add a host-side surface beyond the
host-side helpers (also shipped as
libdoca_pcc_ztr_rttcc_algo.{a,so} per the README) that
the doca-pcc framework links. Other-language host-side
wrappers around doca-pcc can drive this algorithm through
the same lifecycle described in doca-pcc; the DPA-side
integration always stays C-via-DPACC.
When to load this skill
Load this skill when the user is doing hands-on deployment,
tuning, or evaluation of the DOCA-shipped ZTR RTTCC
reference algorithm on a BlueField port carrying RoCE-v2
traffic, in any host language plus the DPA-side translation
unit built by dpacc. Concretely:
- Deciding whether the shipped algorithm is the right
baseline for the user's RoCE-v2 workload, or whether the
user needs a custom algorithm.
- Wiring the algorithm into the DOCA PCC sample
application by patching the user-algo / user-init /
user-set-algo-params callbacks per the steps the
shipped README documents.
- Picking which of the algorithm's documented variants
(vanilla, path-migration, RX-rate, RX-rate + PM,
multipath, multipath + credits, window-probeless)
matches the user's intent — and surfacing that the
public surface only ships one symbol
(
doca_pcc_dev_ztr_rttcc_algo); the variants live in
the DPA-side source the user compiles against.
- Tuning the host-set parameters the algorithm exposes
(per the parameter list in
doca_pcc_dev_ztr_rttcc_algo.h and the shipped
doca_pcc_dev_set_ztr_rttcc_params).
- Observing whether the running algorithm is actually
modulating RoCE-v2 flows under load (route to
doca-pcc-counters
for the read-only inspection side).
- Deciding when to replace the shipped algorithm with a
custom one because latency target, fairness policy, or
convergence behavior requirements diverge from what the
reference provides.
Do not load this skill for general DOCA orientation;
for the host-side doca-pcc lifecycle (route to
doca-pcc); for writing a custom
algorithm from scratch (route to
doca-pcc and the public PCC
programming guide via
doca-public-knowledge-map);
for read-only PCC counter inspection (route to
doca-pcc-counters);
or for the default firmware-shipped PCC algorithms that
predate Programmable Congestion Control entirely (no
host-side code, no DPACC compile — that is a firmware-only
path routed via
doca-public-knowledge-map).
What this skill provides
This is a thin loader. The body keeps only the
orientation needed to pick the right next file. The
substantive algorithm-specific material lives in two
companion files:
CAPABILITIES.md — what the shipped ZTR RTTCC
algorithm expresses on this version + this BlueField
generation + this firmware: the public DPA-side API
surface (doca_pcc_dev_ztr_rttcc_init,
doca_pcc_dev_ztr_rttcc_algo,
doca_pcc_dev_set_ztr_rttcc_params,
doca_pcc_dev_ztr_rttcc_get_param_num,
doca_pcc_dev_ztr_rttcc_get_counter_num,
doca_pcc_dev_ztr_rttcc_get_num_of_histograms), the
documented variants (vanilla / path-migration / RX-rate
/ multipath / window-probeless — pick one at
DPA-side compile time), the relationship to the
host-side doca-pcc framework (this is an algorithm
body the framework loads), the relationship to the
doca-pcc-counters tool (which is the canonical
inspection surface), the algorithm's parameter and
counter surface (RTT-based congestion signal,
per-feature parameter blocks), the error taxonomy in
DOCA_PCC_DEV_STATUS_OK / _FAIL, and the safety
policy.
TASKS.md — step-by-step workflows for the in-scope
algorithm verbs: install, configure, build,
modify, run, test, debug, use. Plus a
Deferred task verbs block that points out-of-scope
questions at the right next skill.
The skill assumes DOCA + the DPACC compiler + the
doca-pcc host-side framework are
already installed; the BlueField is a generation that
exposes the DPA processor (the algorithm runs on the DPA);
the BlueField firmware has the custom-PCC slot enabled
(inherited from
doca-pcc CAPABILITIES.md ## Safety policy);
and the BlueField port the algorithm will modulate has
RoCE-v2 traffic actually flowing on it (the algorithm
modulates existing RDMA / RoCE traffic — without traffic,
there is nothing for it to do).
What this skill deliberately does not ship
This skill is agent guidance, not a samples or templates
bundle. To keep the boundary clean, it deliberately does not
contain — and pull requests should not add:
- The algorithm body itself, in any language. The
shipped algorithm is the static library
libdoca_pcc_ztr_rttcc_algo_dev.a (plus the host-side
helpers) installed by the matching DOCA host package
per the README. The agent's job is to route the user to
the installed library and header
(doca_pcc_dev_ztr_rttcc_algo.h) and to prescribe the
in-place edits documented in the README on the
shipped DOCA PCC application source, not to author the
algorithm.
- A standalone PCC application. The DOCA PCC
application that hosts this algorithm is the shipped
C sample under
/opt/mellanox/doca/applications/pcc/ (per the
README). The agent's job is to prescribe the
minimum-diff modifications the README documents and to
walk the user through the rebuild — not to author a
parallel application.
- A description of every internal variant's
behavior. The DPA-side source ships several
variants (vanilla, path-migration, RX-rate, multipath,
multipath + credits, window-probeless). The agent
names the variant set, says which one is reachable via
the public symbol on this install, and routes
algorithm-design questions to the public PCC
programming guide via
doca-public-knowledge-map.
It does not redefine each variant's mathematical
behavior.
- A specific congestion-control algorithm tutorial.
Congestion-control theory, RoCE-v2 fairness analysis,
workload-specific tuning — out of scope. Route to the
user's own domain expertise and to the public DOCA PCC
guide.
Loading order
- Read this
SKILL.md first to confirm the user's
question is in scope (deployment / tuning / evaluation
of the shipped reference algorithm, not algorithm
design from scratch and not read-only counter
inspection).
- For the algorithm capability matrix, the public
DPA-side API surface, the variant set, the parameter
and counter surface, the host-side
doca-pcc
framework relationship, the
doca-pcc-counters inspection-side relationship, the
error taxonomy, the observability surface, and the
safety policy, see CAPABILITIES.md.
- For step-by-step workflows — install, configure,
build, modify, run, test, debug, use — see
TASKS.md.
Both companion files cross-link to each other,
doca-pcc for the host-side PCC
lifecycle that loads this algorithm,
doca-pcc-counters
for the read-only counter-inspection side of validating that
the algorithm is modulating traffic,
doca-dpa for the DPA-side
two-side-program model and the DPACC compiler discipline,
doca-version for the
canonical DOCA version-handling rules (with the DPACC
overlay inherited from
doca-dpa and
doca-pcc), and
doca-public-knowledge-map
whenever the right answer is "look it up in the public DOCA
PCC programming guide or the on-disk install layout".
Related skills
doca-pcc — the host-side PCC
control library. This algorithm is loaded INTO a
doca_pcc context that doca-pcc stands up; the
host-side lifecycle (doca_pcc create / configure /
start / stop / destroy, the algorithm image
doca_pcc_app, the attach-to-port semantics) is owned
by doca-pcc. This skill prescribes only the DPA-side
algorithm integration on top.
doca-pcc-counters —
the read-only diagnostic CLI for PCC counters at the
port. The canonical "is the algorithm actually
modulating traffic" check goes through the counter
tool; this skill names what counters the algorithm
emits (CNP / NACK / AI / HAI / decrement / RTT-band
counters per the public header) and routes the
inspection workflow to the tool skill.
doca-dpa — the host-side
DPA control library. The algorithm runs on the DPA,
compiled by DPACC; the two-side-program rule and the
DOCA-and-DPACC version-match overlay inherited from
here apply.
doca-public-knowledge-map —
the routing table for every public DOCA documentation
source (the DOCA PCC programming guide at
https://docs.nvidia.com/doca/sdk/doca-pcc/index.html;
the DOCA PCC application guide; the DOCA Compatibility
Policy) and the on-disk layout of an installed DOCA
package.
doca-setup — env
preparation, install verification, DPACC compiler
install / verification, BlueField firmware
configuration (including the custom-PCC slot enable),
and the I have no install yet path with the public
NGC DOCA container. This skill assumes its
preconditions are satisfied AND that DPACC is installed
at a version that matches DOCA AND that the firmware-
level custom-PCC slot is enabled.
doca-version —
canonical DOCA version-handling rules. This skill's
## Version compatibility cross-links the four-way
match rule plus the DOCA-and-DPACC overlay inherited
from doca-pcc.
doca-structured-tools-contract —
the bundle's structured-tools precedence rule (detect /
prefer / fall back / report). The Command appendix in
TASKS.md honors this contract.
doca-programming-guide —
general DOCA programming patterns. This skill layers
algorithm-specific overlays on top of the universal
build, modify-a-shipped-sample, and Core lifecycle
patterns.
doca-debug — cross-cutting
debug ladder. Algorithm-specific debug (the algorithm
loaded but counters do not move; the algorithm fails to
initialize; the algorithm modulates traffic too
aggressively / too gently for the workload) overlays on
top of that ladder.
doca-hardware-safety —
cross-cutting hardware-safety meta-policy. Because the
algorithm modulates production RoCE-v2 flows on a
BlueField port, the meta-policy's pre-flight inventory,
replica-first, and rollback rules apply via this
skill's ## Safety policy overlay.
1---2name: doca-pcc-ztr-rttcc-algo3description: Use this skill when the user is doing hands-on deployment, tuning, or evaluation of the DOCA-shipped Zero-Touch RoCE RTT-based Congestion Control (ZTR RTTCC) reference algorithm on a BlueField-3 DPA — wiring `doca_pcc_dev_ztr_rttcc_algo` into the shipped DOCA PCC sample, picking a variant (vanilla / PM / RX-rate / multipath / window-probeless) at DPACC build time, tuning host-set parameters, or diagnosing `DOCA_PCC_DEV_STATUS_FAIL` from the algorithm. Trigger even when the user does not say 'DOCA PCC' or 'ZTR RTTCC' — typical implicit phrasings: 'my RoCE-v2 flows aren't being throttled', 'PCC sample isn't dispatching to my algo', 'how do I pick the multipath PCC variant', 'set-params returns fail', 'algorithm loaded but counters are flat', or 'do I need a custom CC algorithm on BF3'. Refuse and route elsewhere for writing a custom PCC algorithm from scratch, read-only PCC counter inspection, the host-side `doca-pcc` lifecycle, or firmware-only pre-Programmable PCC — those belong to other skills.4license: Apache-2.05---67# DOCA PCC ZTR RTTCC Algorithm89**Where to start:** This skill assumes DOCA is already10installed, the user's BlueField has a DPA processor that11the host can see through DOCA (a BlueField-3-generation12device per the README), the BlueField firmware has the13custom-PCC slot enabled, the DPACC compiler is installed at14a matched version per the DOCA Compatibility Policy, and the15user is doing **hands-on deployment of the DOCA-shipped ZTR16RTTCC reference algorithm** on a BlueField port that17already carries RoCE-v2 traffic — i.e. either deploying it18as the no-config-required baseline, tuning its documented19parameters, or evaluating it against a custom algorithm the20user intends to write. Open [`TASKS.md`](TASKS.md) if the21user wants to *do* something (install / configure / build /22modify / run / test / debug / use); open23[`CAPABILITIES.md`](CAPABILITIES.md) when the question is24*what does the algorithm express, what are its variants and25parameters, what does it ship vs not ship*. If the user has26not installed DOCA yet, route to27[`doca-setup`](../../doca-setup/SKILL.md) first; if the user28has not stood up the host-side `doca-pcc` framework yet,29route to [`doca-pcc`](../doca-pcc/SKILL.md) first (this30algorithm is a *library consumed by* the PCC framework, not31a standalone program); if the user only wants to *inspect*32PCC counters at runtime without changing the running33algorithm, route to34[`doca-pcc-counters`](../../tools/doca-pcc-counters/SKILL.md);35if the user wants to *write their own algorithm from36scratch*, that is the `doca-pcc` library plus the public37PCC programming guide — this skill is for the shipped38reference algorithm specifically.3940## Example questions this skill answers well4142The CLASSES of ZTR RTTCC questions this skill is built to43answer, each with one worked example. The agent should44treat the *class* as the load-bearing piece — the worked45example is a single instance.4647- **"Is the ZTR RTTCC reference algorithm the right48 baseline for my deployment, or should I write a custom49 algorithm?"** — worked example: *"I have a BlueField-350 carrying production RoCE-v2 traffic from a GPU cluster;51 is the shipped algorithm a fine default or do I need52 custom logic?"*. Answered by the decision rule in53 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)54 ("when to use the reference vs custom") + the env55 preconditions in56 [`TASKS.md ## install`](TASKS.md#install).57- **"How do I wire the shipped algorithm into the DOCA58 PCC application that's already running on my host?"** —59 worked example: *"`/opt/mellanox/doca/applications/pcc`60 is already building from sample sources; what do I61 change so the user algo callback dispatches to62 `doca_pcc_dev_ztr_rttcc_algo` under a chosen algo63 slot?"*. Answered by the integration sequence in64 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)65 + the in-place edits in66 [`TASKS.md ## modify`](TASKS.md#modify).67- **"Which variant of the algorithm am I getting — vanilla68 RTT-CC, path-migration mode, RX-rate mode, multipath,69 multipath with credits, window-probeless?"** — worked70 example: *"the shipped library exposes one public71 symbol `doca_pcc_dev_ztr_rttcc_algo` but the device-72 side source ships several variants; how do I know73 which one I get and how do I pick another?"*.74 Answered by the variants table in75 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes).76- **"How do I confirm the algorithm is actually77 modulating my RDMA / RoCE traffic, and not just78 loading?"** — worked example: *"I followed the79 integration steps; the application starts; how do I80 know the algorithm is shaping flows under load?"*.81 Answered by the observability surface in82 [`CAPABILITIES.md ## Observability`](CAPABILITIES.md#observability)83 + the counter-watch loop in84 [`TASKS.md ## test`](TASKS.md#test) which routes to85 [`doca-pcc-counters`](../../tools/doca-pcc-counters/SKILL.md).86- **"Which tunables does the algorithm expose, and how87 do I change them from the host without rebuilding the88 DPA-side image?"** — worked example: *"my workload is89 more latency-sensitive than the default profile assumes90 — which parameter knob do I adjust?"*. Answered by91 the parameter surface in92 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)93 + the `doca_pcc_dev_set_ztr_rttcc_params` workflow in94 [`TASKS.md ## use`](TASKS.md#use).95- **"What does this `DOCA_PCC_DEV_STATUS_FAIL` or96 `DOCA_ERROR_*` from a `doca_pcc_dev_ztr_rttcc_*` call97 mean and which layer caused it?"** — worked example:98 *"my init callback returns `DOCA_PCC_DEV_STATUS_FAIL`99 on first launch"*. Answered by the algorithm overlay100 on the host-side PCC taxonomy in101 [`CAPABILITIES.md ## Error taxonomy`](CAPABILITIES.md#error-taxonomy)102 + the layered ladder in103 [`TASKS.md ## debug`](TASKS.md#debug) that escalates104 through105 [`doca-pcc`](../doca-pcc/SKILL.md) and106 [`doca-debug`](../../doca-debug/SKILL.md).107108## Audience109110This skill serves **external developers operating a111BlueField-3-class DPU who want to deploy NVIDIA's shipped112reference PCC algorithm on RoCE-v2 traffic, OR who are113evaluating it against a custom algorithm they intend to114write**. The reference algorithm is *zero-touch* by design115— the no-config-required baseline — and the canonical use116case is dropping it onto a port and confirming it shapes117flows correctly under congestion. It is *not* for NVIDIA118developers contributing to the algorithm itself, nor for119users who want general PCC programming theory (route via120the public DOCA PCC programming guide), nor for users who121only want to *inspect* PCC counters (route to122[`doca-pcc-counters`](../../tools/doca-pcc-counters/SKILL.md)).123124**Language scope.** The algorithm ships as a DPA-side125library (`pkg-config` module `doca-pcc-ztr-rttcc-algo`)126plus a public header `doca_pcc_dev_ztr_rttcc_algo.h` that127DPA-side translation units include. The shipped algorithm128binary is the static library129`libdoca_pcc_ztr_rttcc_algo_dev.a` per the README; the130device-side translation unit that consumes it is C and is131compiled by DPACC. The host-side that drives the PCC132context comes from [`doca-pcc`](../doca-pcc/SKILL.md);133this library does NOT add a host-side surface beyond the134host-side helpers (also shipped as135`libdoca_pcc_ztr_rttcc_algo.{a,so}` per the README) that136the `doca-pcc` framework links. Other-language host-side137wrappers around `doca-pcc` can drive this algorithm through138the same lifecycle described in `doca-pcc`; the DPA-side139integration always stays C-via-DPACC.140141## When to load this skill142143Load this skill when the user is doing hands-on deployment,144tuning, or evaluation of the DOCA-shipped ZTR RTTCC145reference algorithm on a BlueField port carrying RoCE-v2146traffic, in any host language plus the DPA-side translation147unit built by `dpacc`. Concretely:148149- Deciding whether the shipped algorithm is the right150 baseline for the user's RoCE-v2 workload, or whether the151 user needs a custom algorithm.152- Wiring the algorithm into the DOCA PCC sample153 application by patching the user-algo / user-init /154 user-set-algo-params callbacks per the steps the155 shipped README documents.156- Picking which of the algorithm's documented variants157 (vanilla, path-migration, RX-rate, RX-rate + PM,158 multipath, multipath + credits, window-probeless)159 matches the user's intent — and surfacing that the160 *public* surface only ships one symbol161 (`doca_pcc_dev_ztr_rttcc_algo`); the variants live in162 the DPA-side source the user compiles against.163- Tuning the host-set parameters the algorithm exposes164 (per the parameter list in165 `doca_pcc_dev_ztr_rttcc_algo.h` and the shipped166 `doca_pcc_dev_set_ztr_rttcc_params`).167- Observing whether the running algorithm is actually168 modulating RoCE-v2 flows under load (route to169 [`doca-pcc-counters`](../../tools/doca-pcc-counters/SKILL.md)170 for the read-only inspection side).171- Deciding when to *replace* the shipped algorithm with a172 custom one because latency target, fairness policy, or173 convergence behavior requirements diverge from what the174 reference provides.175176Do **not** load this skill for general DOCA orientation;177for the host-side `doca-pcc` lifecycle (route to178[`doca-pcc`](../doca-pcc/SKILL.md)); for writing a custom179algorithm from scratch (route to180[`doca-pcc`](../doca-pcc/SKILL.md) and the public PCC181programming guide via182[`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md));183for read-only PCC counter inspection (route to184[`doca-pcc-counters`](../../tools/doca-pcc-counters/SKILL.md));185or for the default firmware-shipped PCC algorithms that186predate Programmable Congestion Control entirely (no187host-side code, no DPACC compile — that is a firmware-only188path routed via189[`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md)).190191## What this skill provides192193This is a **thin loader**. The body keeps only the194orientation needed to pick the right next file. The195substantive algorithm-specific material lives in two196companion files:197198- `CAPABILITIES.md` — what the shipped ZTR RTTCC199 algorithm expresses on this version + this BlueField200 generation + this firmware: the public DPA-side API201 surface (`doca_pcc_dev_ztr_rttcc_init`,202 `doca_pcc_dev_ztr_rttcc_algo`,203 `doca_pcc_dev_set_ztr_rttcc_params`,204 `doca_pcc_dev_ztr_rttcc_get_param_num`,205 `doca_pcc_dev_ztr_rttcc_get_counter_num`,206 `doca_pcc_dev_ztr_rttcc_get_num_of_histograms`), the207 documented variants (vanilla / path-migration / RX-rate208 / multipath / window-probeless — pick one at209 DPA-side compile time), the relationship to the210 host-side `doca-pcc` framework (this is an algorithm211 body the framework loads), the relationship to the212 `doca-pcc-counters` tool (which is the canonical213 inspection surface), the algorithm's parameter and214 counter surface (RTT-based congestion signal,215 per-feature parameter blocks), the error taxonomy in216 `DOCA_PCC_DEV_STATUS_OK` / `_FAIL`, and the safety217 policy.218- `TASKS.md` — step-by-step workflows for the in-scope219 algorithm verbs: `install`, `configure`, `build`,220 `modify`, `run`, `test`, `debug`, `use`. Plus a221 `Deferred task verbs` block that points out-of-scope222 questions at the right next skill.223224The skill assumes DOCA + the DPACC compiler + the225[`doca-pcc`](../doca-pcc/SKILL.md) host-side framework are226already installed; the BlueField is a generation that227exposes the DPA processor (the algorithm runs on the DPA);228the BlueField firmware has the custom-PCC slot enabled229(inherited from230[`doca-pcc CAPABILITIES.md ## Safety policy`](../doca-pcc/CAPABILITIES.md#safety-policy));231and the BlueField port the algorithm will modulate has232RoCE-v2 traffic actually flowing on it (the algorithm233modulates *existing* RDMA / RoCE traffic — without traffic,234there is nothing for it to do).235236## What this skill deliberately does not ship237238This skill is **agent guidance**, not a samples or templates239bundle. To keep the boundary clean, it deliberately does not240contain — and pull requests should not add:241242- **The algorithm body itself, in any language.** The243 shipped algorithm is the static library244 `libdoca_pcc_ztr_rttcc_algo_dev.a` (plus the host-side245 helpers) installed by the matching DOCA host package246 per the README. The agent's job is to route the user to247 the installed library and header248 (`doca_pcc_dev_ztr_rttcc_algo.h`) and to prescribe the249 in-place edits documented in the README on the250 shipped DOCA PCC application source, not to author the251 algorithm.252- **A standalone PCC application.** The DOCA PCC253 application that hosts this algorithm is the shipped254 C sample under255 `/opt/mellanox/doca/applications/pcc/` (per the256 README). The agent's job is to prescribe the257 minimum-diff modifications the README documents and to258 walk the user through the rebuild — not to author a259 parallel application.260- **A description of every internal variant's261 behavior.** The DPA-side source ships several262 variants (vanilla, path-migration, RX-rate, multipath,263 multipath + credits, window-probeless). The agent264 names the variant set, says which one is reachable via265 the public symbol on this install, and routes266 algorithm-design questions to the public PCC267 programming guide via268 [`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md).269 It does not redefine each variant's mathematical270 behavior.271- **A specific congestion-control algorithm tutorial.**272 Congestion-control theory, RoCE-v2 fairness analysis,273 workload-specific tuning — out of scope. Route to the274 user's own domain expertise and to the public DOCA PCC275 guide.276277## Loading order2782791. Read this `SKILL.md` first to confirm the user's280 question is in scope (deployment / tuning / evaluation281 of the shipped reference algorithm, not algorithm282 design from scratch and not read-only counter283 inspection).2842. **For the algorithm capability matrix, the public285 DPA-side API surface, the variant set, the parameter286 and counter surface, the host-side `doca-pcc`287 framework relationship, the288 `doca-pcc-counters` inspection-side relationship, the289 error taxonomy, the observability surface, and the290 safety policy, see [CAPABILITIES.md](CAPABILITIES.md).**2913. **For step-by-step workflows — install, configure,292 build, modify, run, test, debug, use — see293 [TASKS.md](TASKS.md).**294295Both companion files cross-link to each other,296[`doca-pcc`](../doca-pcc/SKILL.md) for the host-side PCC297lifecycle that loads this algorithm,298[`doca-pcc-counters`](../../tools/doca-pcc-counters/SKILL.md)299for the read-only counter-inspection side of validating that300the algorithm is modulating traffic,301[`doca-dpa`](../doca-dpa/SKILL.md) for the DPA-side302two-side-program model and the DPACC compiler discipline,303[`doca-version`](../../doca-version/SKILL.md) for the304canonical DOCA version-handling rules (with the DPACC305overlay inherited from306[`doca-dpa`](../doca-dpa/SKILL.md) and307[`doca-pcc`](../doca-pcc/SKILL.md)), and308[`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md)309whenever the right answer is "look it up in the public DOCA310PCC programming guide or the on-disk install layout".311312## Related skills313314- [`doca-pcc`](../doca-pcc/SKILL.md) — the host-side PCC315 control library. This algorithm is loaded INTO a316 `doca_pcc` context that `doca-pcc` stands up; the317 host-side lifecycle (`doca_pcc` create / configure /318 start / stop / destroy, the algorithm image319 `doca_pcc_app`, the attach-to-port semantics) is owned320 by `doca-pcc`. This skill prescribes only the DPA-side321 algorithm integration on top.322- [`doca-pcc-counters`](../../tools/doca-pcc-counters/SKILL.md) —323 the read-only diagnostic CLI for PCC counters at the324 port. The canonical *"is the algorithm actually325 modulating traffic"* check goes through the counter326 tool; this skill names what counters the algorithm327 emits (CNP / NACK / AI / HAI / decrement / RTT-band328 counters per the public header) and routes the329 inspection workflow to the tool skill.330- [`doca-dpa`](../doca-dpa/SKILL.md) — the host-side331 DPA control library. The algorithm runs on the DPA,332 compiled by DPACC; the two-side-program rule and the333 DOCA-and-DPACC version-match overlay inherited from334 here apply.335- [`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md) —336 the routing table for every public DOCA documentation337 source (the DOCA PCC programming guide at338 <https://docs.nvidia.com/doca/sdk/doca-pcc/index.html>;339 the DOCA PCC application guide; the DOCA Compatibility340 Policy) and the on-disk layout of an installed DOCA341 package.342- [`doca-setup`](../../doca-setup/SKILL.md) — env343 preparation, install verification, DPACC compiler344 install / verification, BlueField firmware345 configuration (including the custom-PCC slot enable),346 and the *I have no install yet* path with the public347 NGC DOCA container. This skill assumes its348 preconditions are satisfied AND that DPACC is installed349 at a version that matches DOCA AND that the firmware-350 level custom-PCC slot is enabled.351- [`doca-version`](../../doca-version/SKILL.md) —352 canonical DOCA version-handling rules. This skill's353 `## Version compatibility` cross-links the four-way354 match rule plus the DOCA-and-DPACC overlay inherited355 from [`doca-pcc`](../doca-pcc/SKILL.md).356- [`doca-structured-tools-contract`](../../doca-structured-tools-contract/SKILL.md) —357 the bundle's structured-tools precedence rule (detect /358 prefer / fall back / report). The Command appendix in359 [TASKS.md](TASKS.md) honors this contract.360- [`doca-programming-guide`](../../doca-programming-guide/SKILL.md) —361 general DOCA programming patterns. This skill layers362 algorithm-specific overlays on top of the universal363 build, modify-a-shipped-sample, and Core lifecycle364 patterns.365- [`doca-debug`](../../doca-debug/SKILL.md) — cross-cutting366 debug ladder. Algorithm-specific debug (the algorithm367 loaded but counters do not move; the algorithm fails to368 initialize; the algorithm modulates traffic too369 aggressively / too gently for the workload) overlays on370 top of that ladder.371- [`doca-hardware-safety`](../../doca-hardware-safety/SKILL.md) —372 cross-cutting hardware-safety meta-policy. Because the373 algorithm modulates production RoCE-v2 flows on a374 BlueField port, the meta-policy's pre-flight inventory,375 replica-first, and rollback rules apply via this376 skill's `## Safety policy` overlay.377