From nobody Thu Sep 17 06:14:29 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 4hllpF6Vx7z6sVJ8 for ; Thu, 17 Sep 2026 06:14:29 +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 4hllpF5mk7z4YZX for ; Thu, 17 Sep 2026 06:14:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1789625669; 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=UrgKLWWsFJ9txWKi4ti34vys7kFr+2ud7agyPzYKfRc=; b=NjOqPhjjXu2x+lFQMzBEeDeRbtPKykBMQ0vp6PzmU0SQI4wTT28RUhDmE6GdG3srk0VZkG mTDwtwtP/mvsrTybZOYf7DsdE5to1jTArDlSz9L7Kj0eUOqLuqbA6w/C2OKj2F1DeMFHGz lVJtDag92XysWRl65GyyLf14lTu5vOMvdU8yYXdCExaIfIn9QqPU1f/ksGwrtNaFK5yXRC nI4NsoX6plLpPCBRMcLXyipfcnieFFx54hYAgXcZXDJZmo9gfUTilMjQjjfeSAszdG8Ppi JnHrKWplKCgCPt+a2C0aEVJo8zBwKnu3FBgrFb+8LF0jhc/uldWddmCtyVZl2g== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1789625669; b=D5lrs26S/TVJ7Md6k/Hyr7ywHVk6VxIWLsRG4TZGecrbalgZzLRn3NxuDLYfRyF2SLl2/8 QmT1S9FnBJENRnp85aqqVicUQ5LtOhYKsR3DrW+5f7tUK9Utt4SXHyddNAcj2xb/fOkcHi u19+9P0md12RsMS34AjrjX3rNEXCS7+hWtmKuI0M6y18BzmhK5DJKyq3hkoyeE3yLV06L0 BRibgPS8eDtTkgvhRIUY4D8kSvEkoQLT/ViNSd4LBe9QgTsAueDd75m8rtZ7JJ3nLBdYIF HKIGMPJ5ma5vkOuaV2nYY+5JiOXLRPno56Q5dWMI6vGiyIZuX6J7LApBb99Aiw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1789625669; 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=UrgKLWWsFJ9txWKi4ti34vys7kFr+2ud7agyPzYKfRc=; b=RJ6ocPhDOOUt8RL/YnISUyypO0i92aMM3fuIWKkfMgtd03tlqSBLsuZ9eXRJqXEgYz/AGQ /+jNWokiXi5U/uxcOSQat6mry8fUUa+cS4RR2u5UKWaYwQAw+35EtD6TKGvgMcgqWbAEaC bNknK86p/bLt6hoKkckS1N4cpdP5J6GzKDqTOtZDuK1qZs8pXb/oqWxdBmLcQkVY5JFMFW PQ572QutVdGfhln56mzxkrTipfSCjOrje4Rzg9kvD24bdscc5IiEWdWZX0jp4k9qUEhMtO ofWDF021C+77diQsiCJFyGzHv3ZP0dTQMzb8N4LaqngbJis9LZTJgxgbh5MegQ== 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 4hllpF4XbwzKNP for ; Thu, 17 Sep 2026 06:14:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 25cad by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 17 Sep 2026 06:14:29 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kevin Bowling Subject: git: 3f6c1e731376 - main - mgb: Propagate DMA setup errors and use the requested channel List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: 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: kbowling X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3f6c1e731376ffaf8612e7e196119acabbf357e4 Auto-Submitted: auto-generated Date: Thu, 17 Sep 2026 06:14:29 +0000 Message-Id: <6aab8545.25cad.6060a69f@gitrepo.freebsd.org> The branch main has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=3f6c1e731376ffaf8612e7e196119acabbf357e4 commit 3f6c1e731376ffaf8612e7e196119acabbf357e4 Author: Kevin Bowling AuthorDate: 2026-09-17 03:07:54 +0000 Commit: Kevin Bowling CommitDate: 2026-09-17 06:14:18 +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 --- 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),