From nobody Mon Oct 12 15:26:14 2026 X-Original-To: dev-commits-src-all@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 4j3LsS2KFGz6vxCl for ; Mon, 12 Oct 2026 15:26:20 +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 4j3LsR6zwXz3Nlx for ; Mon, 12 Oct 2026 15:26:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791818780; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ytvNAGcCuI027XzHHU484T/X8bi3d9SBM1/zD11t1As=; b=U8AyIc+iEEKyyRrSLqOc4ZCgTaZgW+o2HaV9T3rKOIICg/fjYzLnfvuuUADv+smp+4z+VZ kWAiZ44XrEnH3Mdhqj9ANiUTIffiLbMJrwpLh6cPR2V8Ddy+OKfOgQiHtybnoQ7D/azS/u UJ6e1R/agedeswAIKhqTc3yrh4pnnjRqjv5BapWe8kxhF3U86Y/qahjPxXU+O41Kr8t6Fb bhI6DNZwJaJJHnIBiO502WPCUpEOkmnbJIjck6X1UviwX+QQurTgIeOdosQGcKclQxDXSC eph2uj0KK/8NNROYIElfyn0PCou/DIeADtAXznV5rsLj8ErOv8Y1CU0QYqoQMA== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791818780; b=LLiJKmg0Fqsk+rLVyGRBb2OnnC7+bKg8DxQdiuFf959nArLOZwxLlWt6BANaKWtcRfP78v Mm7oqNqcMxy7ZalewsEJjS11Ql+clNwXVmxpQ0AdPId1o3fIj6AjlFzCUP8IWdYCEYSSxy HE6KjE+PABlWYYPxrGxgN0JBbeGDfNiMDROk32zHLfbjOB3Hrn2m4LMPpd2AYvxfOATkKc cta7KuAIAFa5r8zWSCAZCNBNDeoWOypzCrTfaspWW3OwM6l/g76rBru/PV3G8RK346/bhX eDuXcBsqh3tiiE0TnRIKOG6uVMytU7Sj75K5TADTTMgnIVeuGjJ0/MjM2azopw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791818780; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ytvNAGcCuI027XzHHU484T/X8bi3d9SBM1/zD11t1As=; b=r5wfsiRENPGHxAafHCmmeghnWwDZZ74KM4IjeqqleDDASjaQwpoFIu23Hu4r4yW5n+d9a4 RrPOONCkoCG1I0oEkeNSDsn/WDG7CzDEeSsDppbjnRF9459zMyVcK00eZJ6KxP271UhHLS 19aoqLDUwM/npswaP9J+qcSsBSZ4FRnF8wKjGTsorjzKQKWjutpmgQXk5mruISZd9TpUfV 5P2VxrYh0WM6P/nmuzSPcekw2IUdo4BGsAixzvt5wLTkbp83zp3eMtDiSWuFA5l0AhfQrl ENAc8iCNh8LFw2BLc+gsQC8gysNQMHDpdPmzkIivFKlszeRZfFw897HHdKnLPg== 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 4j3LsR5ym1zbNm for ; Mon, 12 Oct 2026 15:26:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1a17a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 12 Oct 2026 15:26:14 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Kevin Bowling From: Ed Maste Subject: git: e8000d04fae4 - stable/15 - mgb: Propagate DMA setup errors and use the requested channel List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: Commit messages for all branches 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: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: e8000d04fae4c3de368a814cad1e0765f7684bb5 Auto-Submitted: auto-generated Date: Mon, 12 Oct 2026 15:26:14 +0000 Message-Id: <6accfc16.1a17a.982c56@gitrepo.freebsd.org> The branch stable/15 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=e8000d04fae4c3de368a814cad1e0765f7684bb5 commit e8000d04fae4c3de368a814cad1e0765f7684bb5 Author: Kevin Bowling AuthorDate: 2026-09-17 03:07:54 +0000 Commit: Ed Maste CommitDate: 2026-10-12 15:25:53 +0000 mgb: Propagate DMA setup errors and use the requested channel Check the receive DMA and frame transfer setup results that were previously discarded. Return EINVAL for invalid ring/writeback addresses rather than reporting success, and stop initialization through iflib_init_failed() when a ring could not be configured. Use the transmit queue count for transmit initialization and the supplied channel index for DMA operations. The driver currently allocates one queue in each direction, so those index/count corrections are latent. MFC after: 2 weeks Sponsored by: BBOX.io (cherry picked from commit 3f6c1e731376ffaf8612e7e196119acabbf357e4) --- sys/dev/mgb/if_mgb.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/sys/dev/mgb/if_mgb.c b/sys/dev/mgb/if_mgb.c index 409f34167df0..53a69f480784 100644 --- a/sys/dev/mgb/if_mgb.c +++ b/sys/dev/mgb/if_mgb.c @@ -601,7 +601,12 @@ mgb_init(if_ctx_t ctx) miid = device_get_softc(sc->miibus); device_printf(sc->dev, "running init ...\n"); - mgb_dma_init(sc); + error = mgb_dma_init(sc); + if (error != 0) { + device_printf(sc->dev, "DMA initialization failed: %d\n", error); + iflib_init_failed(ctx); + return; + } /* XXX: Turn off perfect filtering, turn on (broad|multi|uni)cast rx */ CSR_CLEAR_REG(sc, MGB_RFE_CTL, MGB_RFE_ALLOW_PERFECT_FILTER); @@ -1235,7 +1240,7 @@ mgb_dma_init(struct mgb_softc *sc) if ((error = mgb_dma_rx_ring_init(sc, ch))) goto fail; - for (ch = 0; ch < scctx->isc_nrxqsets; ch++) + for (ch = 0; ch < scctx->isc_ntxqsets; ch++) if ((error = mgb_dma_tx_ring_init(sc, ch))) goto fail; @@ -1250,13 +1255,18 @@ mgb_dma_rx_ring_init(struct mgb_softc *sc, int channel) int ring_config, error = 0; rdata = &sc->rx_ring_data; - mgb_dmac_control(sc, MGB_DMAC_RX_START, 0, DMAC_RESET); + error = mgb_dmac_control(sc, MGB_DMAC_RX_START, channel, DMAC_RESET); + if (error != 0) { + device_printf(sc->dev, "Failed to reset RX DMAC.\n"); + goto fail; + } KASSERT(MGB_DMAC_STATE_IS_INITIAL(sc, MGB_DMAC_RX_START, channel), ("Trying to init channels when not in init state\n")); /* write ring address */ if (rdata->ring_bus_addr == 0) { device_printf(sc->dev, "Invalid ring bus addr.\n"); + error = EINVAL; goto fail; } @@ -1268,6 +1278,7 @@ mgb_dma_rx_ring_init(struct mgb_softc *sc, int channel) /* write head pointer writeback address */ if (rdata->head_wb_bus_addr == 0) { device_printf(sc->dev, "Invalid head wb bus addr.\n"); + error = EINVAL; goto fail; } CSR_WRITE_REG(sc, MGB_DMA_RX_HEAD_WB_H(channel), @@ -1290,17 +1301,17 @@ mgb_dma_rx_ring_init(struct mgb_softc *sc, int channel) rdata->last_head = CSR_READ_REG(sc, MGB_DMA_RX_HEAD(channel)); - mgb_fct_control(sc, MGB_FCT_RX_CTL, channel, FCT_RESET); + error = mgb_fct_control(sc, MGB_FCT_RX_CTL, channel, FCT_RESET); if (error != 0) { device_printf(sc->dev, "Failed to reset RX FCT.\n"); goto fail; } - mgb_fct_control(sc, MGB_FCT_RX_CTL, channel, FCT_ENABLE); + error = mgb_fct_control(sc, MGB_FCT_RX_CTL, channel, FCT_ENABLE); if (error != 0) { device_printf(sc->dev, "Failed to enable RX FCT.\n"); goto fail; } - mgb_dmac_control(sc, MGB_DMAC_RX_START, channel, DMAC_START); + error = mgb_dmac_control(sc, MGB_DMAC_RX_START, channel, DMAC_START); if (error != 0) device_printf(sc->dev, "Failed to start RX DMAC.\n"); fail: @@ -1334,6 +1345,7 @@ mgb_dma_tx_ring_init(struct mgb_softc *sc, int channel) /* write ring address */ if (rdata->ring_bus_addr == 0) { device_printf(sc->dev, "Invalid ring bus addr.\n"); + error = EINVAL; goto fail; } CSR_WRITE_REG(sc, MGB_DMA_TX_BASE_H(channel), @@ -1354,6 +1366,7 @@ mgb_dma_tx_ring_init(struct mgb_softc *sc, int channel) /* write head pointer writeback address */ if (rdata->head_wb_bus_addr == 0) { device_printf(sc->dev, "Invalid head wb bus addr.\n"); + error = EINVAL; goto fail; } CSR_WRITE_REG(sc, MGB_DMA_TX_HEAD_WB_H(channel),