=== Поддержка NXP DPAA2

Ссылки: +
link:https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=292006[Ошибка 292006 — dpni некорректно работает в мосте] URL: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=292006[] +
link:https://reviews.freebsd.org/D53436[dpaa2: Установка возможностей интерфейса при подключении] URL: https://reviews.freebsd.org/D53436[] +
link:https://reviews.freebsd.org/D54809[dpnaa2: объявление поддержки контрольных сумм при передаче] URL: https://reviews.freebsd.org/D54809[] +
link:https://reviews.freebsd.org/D56144[dpaa2: Выполнение bus_dma предварительной синхронизации записи перед операцией постановки в очередь] URL: https://reviews.freebsd.org/D56144[] +
link:https://reviews.freebsd.org/D55320[dpaa2: dpaa2_ni_rx() информация о включении/ошибках контрольных сумм RX для L3/4] URL: https://reviews.freebsd.org/D55320[] +
link:https://reviews.freebsd.org/D56315[dpaa2: Вынос функций, специфичных для кадров, в dpaa2_frame.[h,c]] URL: https://reviews.freebsd.org/D56315[] +
link:https://reviews.freebsd.org/D56383[dpaa2: Извлечение статусов контрольных сумм на входящем трафике] URL: https://reviews.freebsd.org/D56383[] +
link:https://reviews.freebsd.org/D55321[dpaa2: ni: добавление дополнительной статистики и информации о канале связи] URL: https://reviews.freebsd.org/D55321

Контакт: Michael Tuexen <tuexen@FreeBSD.org> +
Контакт: Bjoern A. Zeeb <bz@FreeBSD.org> +
Контакт: Dmitry Salychev <dsl@FreeBSD.org>

==== Что такое DPAA2?

DPAA2 (Data Path Acceleration Architecture Gen2) — это сетевая архитектура на аппаратном уровне, встречающаяся в некоторых SoC NXP, которая содержит аппаратные блоки, включая Management Complex (MC, интерфейс команд для управления объектами DPAA2), процессор Wire Rate I/O (WRIOP, распределение пакетов, управление очередями, решения об отбрасывании), менеджер очередей и буферов (QBMan, управление очередями Rx/Tx, пулы буферов Rx) и другие. Management Complex работает под управлением прошивки, предоставляемой NXP, которая предоставляет объекты DPAA2 как уровень абстракции над этими блоками для упрощения доступа к нижележащему оборудованию.

==== Сделанная работа

link:https://cgit.freebsd.org/src/commit/?id=39d4094173f9[39d4094173f9] («epair: добавление поддержки выгрузки контрольных сумм») выявил несколько проблем в драйверах DPAA2, инициировал исследования, проведённые tuexen@ и dsl@, и в конечном итоге привёл к изменениям, накопленным в рамках ошибки link:https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=292006[292006]:

* Выгрузка аппаратных контрольных сумм не включалась должным образом при подключении драйвера dpaa2_ni, несмотря на объявление и включение на интерфейсе dpni (исправлено в link:https://cgit.freebsd.org/src/commit/?id=a731cb93a662[a731cb93a662])
* dpni (сетевой интерфейс DPAA2) некорректно объявлял выгрузку контрольных сумм при передаче (исправлено в link:https://cgit.freebsd.org/src/commit/?id=f31336b3e314[f31336b3e314])
* Без надлежащей синхронизации полезная нагрузка исходящих TCP-сегментов может быть повреждена, как описал tuexen@ в link:https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=292006#c31[292006#c31] (исправлено в link:https://cgit.freebsd.org/src/commit/?id=5812415bee55[5812415bee55])

==== Незавершённая работа

* bz@ подготовил код для извлечения информации о вычисленных контрольных суммах из аппаратных аннотаций входящих кадров в link:https://reviews.freebsd.org/D55320[D55320], но dsl@ попросил должным образом определить структуры, необходимые для аннотаций кадров, что привело к появлению dpaa2_frame.[h,c], представленных в link:https://reviews.freebsd.org/D56315[D56315] и доработанных в link:https://reviews.freebsd.org/D56383[D56383]
* bz@ значительно расширил sysctl(9) dpni, включив новые счётчики интерфейса и информацию о состоянии канала связи в link:https://reviews.freebsd.org/D55321[D55321]

Спонсор: Traverse Technologies (предоставление аппаратного обеспечения Ten64 для тестирования)

//
// The FreeBSD Russian Documentation Project
//
// Original EN revision (18.04.2026): 4cd69387e6ecacbb829b47ce7697e34f0670405b
//
