From nobody Tue Oct 13 16:30:41 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4j40FG1tzNz6vfJh for ; Tue, 13 Oct 2026 16:30:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4j40FG02rYz4XJQ for ; Tue, 13 Oct 2026 16:30:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791909042; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rIdcTPVkTwCvSB7NvWi6SB7GHIqxX8MCoSfLHl+/sNc=; b=fwNAHQsM65NZe1fFqCNfnbs+0r0omw2Imrra9ckwn3OMtOWSQhJJKvgU9ZuqKDJtY/+CKl rOAyyt/WxT/5hVPTiw0lhqCezUuHv4wwNTcz0RK+l5J9i7nv2oaHlCgtxrLMbOoEiNBLTO KS5lPTUSYYogBGk22qWckKMSh0gny1VMDOerb97EJj3AC0RuQrMogl01m7iKxirJ1bFlad xkbLYa0jr/jdHww7lp6UJ+uSZKQHGdxh5kvydej1uwdsOFXGYL2Pmi/RWnbP0B6yud+Rf8 NMsko9REpaLcrvNCGX4uWV9SjLmU1jsvzVi8OfvoUVLG7g7O3VX/VQtjZHAI5w== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791909042; b=I/ML5Kab5ylUR7Ga+0Ts88lNziNeQKm5Xj+b8TSkktReCl1oUajhOU17x//+KyaRpSuJw7 6pPCpbYJTHjMG98fYm80RB7mxKBwV3hMQouqZCnBLzj5dSbgeflpDpi5jEnHBOyQHGFKGp 0gPZ9dyoaQL6Lmf/4OGzWVrV5RSRKIREQCoQq/pxSqlqWhOql9mS13QDraExdDAMYH1jrN kolO/gDsfm91rTDXZxYZa7+ETqEL5SyvB5rYi0P0W+mPX/JhJGofhuFh7vObwydiB5SXmX 8r2CZy4/Zspk6LxCw/CUxyaBAGIAnaRL1u4Gp2RMgrqOBA9dcKrrvb/4Z8ff7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791909042; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rIdcTPVkTwCvSB7NvWi6SB7GHIqxX8MCoSfLHl+/sNc=; b=Pg2OxLSy7Wtj9uh3Q/NZVHKi88AquUdS4YEYHqN8h6NKh8/wHXzDsK4laARscCG3XBINyG BfflHsPsOdzZKtiKuPR0hnoL5y3YM3dxKeydNbI4PvO4XWn7V4N2bOGRM9aVakj6wa+Aom z6KZ0HjVrr+4oIyeQCYeuO2D5Jd8tHMuy147NZJacSxCs/dE6X21JdS9H+MX7oVTJhtUHq BI1kMYIE2bf9SdytFoDn9A9NgBCeSq3H8O6uQ+0c6/G9NMOuoxcnvkJ7dzw0y8hkvk75x1 YvaJYnzbe7RDQkgepMObuAtwkdCbhQpSwSGIZWnQ9NNH1BFPoHqyKziIUFO2mg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4j40FF5dCVzM5v for ; Tue, 13 Oct 2026 16:30:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26e0f by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 13 Oct 2026 16:30:41 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ruslan Bukin Subject: git: ec68ff15bfa6 - main - mgb: support multi-segment packets in the DMA descriptor rings. List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: Commit messages for the main branch of the src repository List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: br X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ec68ff15bfa6aece12383ba408e9eec95f4b79cd Auto-Submitted: auto-generated Date: Tue, 13 Oct 2026 16:30:41 +0000 Message-Id: <6ace5cb1.26e0f.4040868a@gitrepo.freebsd.org> The branch main has been updated by br: URL: https://cgit.FreeBSD.org/src/commit/?id=ec68ff15bfa6aece12383ba408e9eec95f4b79cd commit ec68ff15bfa6aece12383ba408e9eec95f4b79cd Author: Ruslan Bukin AuthorDate: 2026-10-13 16:26:10 +0000 Commit: Ruslan Bukin CommitDate: 2026-10-13 16:28:10 +0000 mgb: support multi-segment packets in the DMA descriptor rings. Reviewed by: emaste Sponsored by: EPSRC ("UKRI3001: CHERI Research Centre") Differential Revision: https://reviews.freebsd.org/D60705 --- sys/dev/mgb/if_mgb.c | 22 ++++++++++------------ sys/dev/mgb/if_mgb.h | 1 + 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/sys/dev/mgb/if_mgb.c b/sys/dev/mgb/if_mgb.c index 60f93bb0615d..887d95dc457c 100644 --- a/sys/dev/mgb/if_mgb.c +++ b/sys/dev/mgb/if_mgb.c @@ -968,6 +968,7 @@ mgb_isc_txd_encap(void *xsc , if_pkt_info_t ipi) struct mgb_ring_desc *txd; bus_dma_segment_t *segs; qidx_t pidx, nsegs; + uint32_t ctl; int i; KASSERT(ipi->ipi_qsidx == 0, @@ -981,23 +982,20 @@ mgb_isc_txd_encap(void *xsc , if_pkt_info_t ipi) /* For each seg, create a descriptor */ for (i = 0; i < nsegs; ++i) { - KASSERT(nsegs == 1, ("Multisegment packet !!!!!\n")); txd = &rdata->ring[pidx]; - txd->ctl = htole32( - (segs[i].ds_len & MGB_DESC_CTL_BUFLEN_MASK ) | - /* - * XXX: This will be wrong in the multipacket case - * I suspect FS should be for the first packet and - * LS should be for the last packet - */ - MGB_TX_DESC_CTL_FS | MGB_TX_DESC_CTL_LS | - MGB_DESC_CTL_FCS); + ctl = (segs[i].ds_len & MGB_DESC_CTL_BUFLEN_MASK) | + MGB_DESC_CTL_FCS; + if (i == 0) + ctl |= MGB_TX_DESC_CTL_FS; + if (i == (nsegs - 1)) + ctl |= MGB_TX_DESC_CTL_LS | MGB_DESC_CTL_IOC; + txd->ctl = htole32(ctl); txd->addr.low = htole32(CSR_TRANSLATE_ADDR_LOW32( segs[i].ds_addr)); txd->addr.high = htole32(CSR_TRANSLATE_ADDR_HIGH32( segs[i].ds_addr)); - txd->sts = htole32( - (segs[i].ds_len << 16) & MGB_DESC_FRAME_LEN_MASK); + txd->sts = htole32((ipi->ipi_len << MGB_DESC_FRAME_LEN_SHIFT) & + MGB_DESC_FRAME_LEN_MASK); pidx = MGB_NEXT_RING_IDX(pidx); } ipi->ipi_new_pidx = pidx; diff --git a/sys/dev/mgb/if_mgb.h b/sys/dev/mgb/if_mgb.h index 19f6d4a20cc7..ebae9bb29e55 100644 --- a/sys/dev/mgb/if_mgb.h +++ b/sys/dev/mgb/if_mgb.h @@ -173,6 +173,7 @@ #define MGB_DESC_CTL_BUFLEN_MASK (0x0000FFFF) #define MGB_DESC_STS_BUFLEN_MASK (0x00003FFF) #define MGB_DESC_FRAME_LEN_MASK (0x3FFF0000) +#define MGB_DESC_FRAME_LEN_SHIFT 16 #define MGB_DESC_GET_FRAME_LEN(_desc) \ (((_desc)->ctl & MGB_DESC_FRAME_LEN_MASK) >> 16)