=== Поддержка 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 + Контакт: Bjoern A. Zeeb + Контакт: Dmitry Salychev ==== Что такое 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 //