Date: Sun, 29 Mar 2026 18:24:21 +0000 From: Dmitry Salychev <dsl@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 968164eb650f - main - dpaa2: Perform bus_dma pre-write sync before enqueue operation Message-ID: <69c96e55.46cc4.256839da@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by dsl: URL: https://cgit.FreeBSD.org/src/commit/?id=968164eb650fd986f293512a3faac5c1c9e4d51f commit 968164eb650fd986f293512a3faac5c1c9e4d51f Author: Dmitry Salychev <dsl@FreeBSD.org> AuthorDate: 2026-03-28 18:57:45 +0000 Commit: Dmitry Salychev <dsl@FreeBSD.org> CommitDate: 2026-03-29 18:23:51 +0000 dpaa2: Perform bus_dma pre-write sync before enqueue operation Without a proper synchronization payload of the egress TCP segments can be corrupted as tuexen@ described in https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=292006#c31. This patch is indirectly related to 292006 because a properly enabled and announced support for the TX checksum offloading hides potentially corrupted frame payload. PR: 292006 Reported by: tuexen@ Reviewed by: ... Tested by: dsl@ Differential Revision: <https://reviews.freebsd.org/D###> MFC after: 3 days --- sys/dev/dpaa2/dpaa2_ni.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/dev/dpaa2/dpaa2_ni.c b/sys/dev/dpaa2/dpaa2_ni.c index c72e68b8a62f..49e72c8ee14f 100644 --- a/sys/dev/dpaa2/dpaa2_ni.c +++ b/sys/dev/dpaa2/dpaa2_ni.c @@ -3004,6 +3004,9 @@ dpaa2_ni_tx(struct dpaa2_ni_softc *sc, struct dpaa2_channel *ch, goto err_unload; } + bus_dmamap_sync(buf->dmat, buf->dmap, BUS_DMASYNC_PREWRITE); + bus_dmamap_sync(sgt->dmat, sgt->dmap, BUS_DMASYNC_PREWRITE); + /* TODO: Enqueue several frames in a single command */ for (int i = 0; i < DPAA2_NI_ENQUEUE_RETRIES; i++) { /* TODO: Return error codes instead of # of frames */ @@ -3013,9 +3016,6 @@ dpaa2_ni_tx(struct dpaa2_ni_softc *sc, struct dpaa2_channel *ch, } } - bus_dmamap_sync(buf->dmat, buf->dmap, BUS_DMASYNC_PREWRITE); - bus_dmamap_sync(sgt->dmat, sgt->dmap, BUS_DMASYNC_PREWRITE); - if (rc != 1) { fq->chan->tx_dropped++; if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1);home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69c96e55.46cc4.256839da>
