From nobody Thu Oct 29 06:09:00 2026 X-Original-To: dev-commits-src-branches@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 4jFYhX5Q2nz6xs3Q for ; Thu, 29 Oct 2026 06:09:00 +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) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4jFYhX3p5Qz53np for ; Thu, 29 Oct 2026 06:09:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793254140; 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=cOJW8LoLnLuFFRgnmiST2an3Dg2z89OIhkIG64S8sAg=; b=O55FBBlNHKLyCWgFlwJ2OmHDB8NFSg44B/e7SZm8UPeK4/VVAy6F6VBXC71U/nNSpGwg2w vvGt8wwUnWFKmWIqeg8WW9M2zAxjokWAIaZYofLv+JiLlGaiMiPUJTig4LsiRSg73QNN80 XlBkIsaR+H2zpVEp2jPX7e1r6Ep4L6fzrslLUGuSWKIQOaRr1AoY/wllcssZYxYMmB27EQ heGz8QPCDI37YSuRfFXnQWipGUW3RXvv92J+BfRj011vCEAnJ9jBDwou/d0DVVK8Kr0jZy e2LcTv8D/LFsYEqb3a6VcnSXjlCfFjK6IJ4MrIlhczjDmExnoiAlkVfdFgFDpw== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1793254140; b=r2d7+Ls019ohpRlQQzdNV0gsLRcJpAurSx0p6YjPWgJkI1d/KC2o6ra3socrozSucbOqkr uvIm+H70cFGE04Carn7x2eAeS8AHBrXWfdjOUF7lJPHiHIUQvQs7UIDhyNtKOnaBIELi+Q jLuwJAsCXYVgzqT1Iz1WTy3kKzCazqRxcm+z/SaRnSw7FAK7CfRRZWSCJm9ZjUMBn5UO/w Rcipi++ou7IpKsf1inJikstuFSkA3le1mn62+k5WeTY9As6xnhhPkpUqCEteBwuAvwdlGl 4NPBOBDra4hrO8l51ZsxbzDQZCdYW/fzNTL//CXlsuSE/QOcgci3c+Y8rNlx0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793254140; 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=cOJW8LoLnLuFFRgnmiST2an3Dg2z89OIhkIG64S8sAg=; b=JelnTTYR/+Rd9c/MDioRXq176WshRRqaGU5blPq6OX4KmPphBIxbLlzsfd2aBKgHlLjraM 9tHqt2AOlegksDX7TBOQ+5fep/NazCFfpnLGUm0tE1Eh/cbmIt/DkDXavfG3KH/TlAsOsl iAtGi7S7Ic4WKdk0UkgFgfUHcauRBDt5Ukddm/ilqO3XT1DaAkz1mZs/In3V9SDC6hivN1 avqwJfp8CORVypalK//18alp1XedUksEqB9vbsBqQATFmer9cXfy0l3wC74ZtUVOvk1w34 DNcuScBV3nO7MXTZaWN1I/pS4knjWsHJgMD3OA1QocyBY1++pcusMQ7EDlN3/w== 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 4jFYhX1yzmzQt3 for ; Thu, 29 Oct 2026 06:09:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3ae37 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 29 Oct 2026 06:09:00 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kevin Bowling Subject: git: e1ea3d54244c - stable/15 - e1000: Express TSO restart policy without OACTIVE List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org List-Id: Commits to the stable branches of the FreeBSD 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: kbowling X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: e1ea3d54244c524b5aa62bf066936051ec07be42 Auto-Submitted: auto-generated Date: Thu, 29 Oct 2026 06:09:00 +0000 Message-Id: <6ae2e2fc.3ae37.42fdcae0@gitrepo.freebsd.org> The branch stable/15 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=e1ea3d54244c524b5aa62bf066936051ec07be42 commit e1ea3d54244c524b5aa62bf066936051ec07be42 Author: Kevin Bowling AuthorDate: 2026-09-11 19:00:54 +0000 Commit: Kevin Bowling CommitDate: 2026-10-29 06:08:49 +0000 e1000: Express TSO restart policy without OACTIVE After a link speed change updates TSO capabilities, request a restart when iflib is running or the interface is administratively up. Leave an administratively down, stopped interface to apply the change at its next initialization. Do not infer initialization from IFF_DRV_OACTIVE, which also remains set after stop and failed initialization. Use iflib_is_running() for software admission and IFF_UP for intent; iflib retains responsibility for quiescing any partially initialized queues before restarting. This also permits a restart request for an administratively up interface before its first initialization attempt. Reviewed by: iflib (gallatin) Sponsored by: BBOX.io Differential Revision: https://reviews.freebsd.org/D59599 (cherry picked from commit ea71fa99827ad4b7099de87e41e7af39ee1c10f6) --- sys/dev/e1000/if_em.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c index 41198ff826e5..07aeea9d0476 100644 --- a/sys/dev/e1000/if_em.c +++ b/sys/dev/e1000/if_em.c @@ -5932,7 +5932,6 @@ em_automask_tso(if_ctx_t ctx) if_softc_ctx_t scctx = iflib_get_softc_ctx(ctx); if_t ifp = iflib_get_ifp(ctx); bool reset_needed; - int drvflags; if (!em_unsupported_tso && sc->link_speed && sc->link_speed != SPEED_1000 && @@ -5952,16 +5951,13 @@ em_automask_tso(if_ctx_t ctx) } /* - * Reset a running interface, or one being initialized while - * administratively up. OACTIVE remains set after iflib_stop(), so - * it alone cannot distinguish initialization from an interface that - * is down. In other states, the next initialization will apply the - * updated capabilities. + * Apply the new capabilities to a running or administratively-up + * interface, including one whose initialization has not completed. + * A stopped, administratively-down interface will apply them at the + * next initialization; driver flags do not describe that intent. */ - drvflags = if_getdrvflags(ifp); - reset_needed = (drvflags & IFF_DRV_RUNNING) != 0 || - ((drvflags & IFF_DRV_OACTIVE) != 0 && - (if_getflags(ifp) & IFF_UP) != 0); + reset_needed = iflib_is_running(ctx) || + (if_getflags(ifp) & IFF_UP) != 0; if (!reset_needed) return (false);