From nobody Mon Aug 24 00:58:39 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 4hSswv40sKz6q2cX for ; Mon, 24 Aug 2026 00:58:39 +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 4hSswv1gFjz45vM for ; Mon, 24 Aug 2026 00:58:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1787533119; 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=2KEVi9oJW0zlaAZ6KCKOXLqBN9BwJCZDlaCfM31DcDw=; b=OSjzsW/wX6rR/zLWITIeWTYZi+Ws+l9+oT7f/j6ayh69a8M8+BBiC5djVLi/JUb2bqndGu pjVcwp8qP9Enwwa5VEi+4K0TVgFSrHvFrehRjsmAAAxWUeW/2oyaaI/rY/wJUIFb4SBolw 2ja2HV0GqjpRxOFz/EG/+HenybapiCg10IW4G4OO+4ugacQ3QNMXCkgvEwKRHGn+g647jY ESBXVIMxRBRtiXYtl6mAnCubGkz98CpxKzRoh+Zr5YWQ/10Md3clHbgaFjncxDiF0cxNkZ xASJUoXJY0gb5F8w9Dn2ea+bZFWIXJqOX4AMDyGsbt4UzmPvybPCCrDRmGqnow== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1787533119; a=rsa-sha256; cv=none; b=CnteFFg5S+PfhpHZPUQ4ebBoHLqWUERgqb9kdh2cxP5lA7n3o5kGtM/xTWE+ra1KBXEHWf JSdjPxWORkBeBcxHO2xU7SXTvzWjMN2afGQm9cJs0/MFNGTurX/n6mcc4nraz+vAop99d1 ym4qrnAhgHYtYKCxr4l5tOtVoDj/SUQkRam2nz3buIuGhqIVTo+L5fAx3WDjxFtXs5dgLa TyyVnKPlwUo4o5IWC6t4EDAFEvjxVbiCxiEuzCtcSraBBe1VnkdaBluModJ1Cpk+/uX4bK EKawf2h4eW2NuYGdxtEjW8E6xqqaXEbwnCdvRPYfU/YvtdCTIv5nxQ7DuRJ9Yg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1787533119; 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=2KEVi9oJW0zlaAZ6KCKOXLqBN9BwJCZDlaCfM31DcDw=; b=rZ1zSF+Hqk8VV+rWDGLvdJk2+03qVycqeaGSPfNTnp9smSiJP6iY8FfK9aNfDHGHHW1wln GoPb0ePqtusdmEi0QzE62M3gyhsByxXOb0v2m2aQ0l2iIXINoOu7vdeN6lSprBorzFB+xA SWewdUcwP9vLjyaqxkaFvKsQkL9k8E5VDUZTTyxB4DqVZss/xIaG0ikQTCerLl6WNGqVAW Bu0Fx9BvZRd0vAJBTfgpRQ7iFlIrk7hAsV66ilUfSeCSqUuO7Tjwgm/HdM7noTV86T4e90 3qJGrxErDaRsGzc6bFsAyWZs10AR+7P85tdeBbnSRkc7BVSMHpAdCGxssepZZg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hSswv0CxRzjLh for ; Mon, 24 Aug 2026 00:58:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3337b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 24 Aug 2026 00:58:39 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kevin Bowling Subject: git: 84e092e9db39 - stable/14 - e1000: Correct 82542 flow-control mode handling 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/stable/14 X-Git-Reftype: branch X-Git-Commit: 84e092e9db3973eef96e3cc06368cb6057c251cd Auto-Submitted: auto-generated Date: Mon, 24 Aug 2026 00:58:39 +0000 Message-Id: <6a8b973f.3337b.789ed5b2@gitrepo.freebsd.org> The branch stable/14 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=84e092e9db3973eef96e3cc06368cb6057c251cd commit 84e092e9db3973eef96e3cc06368cb6057c251cd Author: Kevin Bowling AuthorDate: 2026-08-10 00:40:16 +0000 Commit: Kevin Bowling CommitDate: 2026-08-24 00:56:04 +0000 e1000: Correct 82542 flow-control mode handling The 82542-specific setup routine unconditionally reads the NVM default, overwriting a flow-control mode selected by software. It also removes transmit PAUSE support from all 82542 revisions even though the hardware restriction applies only to rev 2.0. Resolve the NVM default only when requested, scope the transmit restriction to rev 2.0, and replace integer bit masking of the enum with explicit valid mode transitions. This restores the behavior from before the Intel shared-code split and resolves -Wassign-enum. Reported by: glebius (cherry picked from commit 2f1d9ab96214db2ec6ce30c44b55a89a7eaa8f6a) --- sys/dev/e1000/e1000_82542.c | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/sys/dev/e1000/e1000_82542.c b/sys/dev/e1000/e1000_82542.c index e8de9086d05d..0656c6408b30 100644 --- a/sys/dev/e1000/e1000_82542.c +++ b/sys/dev/e1000/e1000_82542.c @@ -317,18 +317,43 @@ static s32 e1000_init_hw_82542(struct e1000_hw *hw) static s32 e1000_setup_link_82542(struct e1000_hw *hw) { struct e1000_mac_info *mac = &hw->mac; - s32 ret_val; + s32 ret_val = E1000_SUCCESS; DEBUGFUNC("e1000_setup_link_82542"); - ret_val = e1000_set_default_fc_generic(hw); - if (ret_val) - goto out; + if (hw->fc.requested_mode == e1000_fc_default) { + ret_val = e1000_set_default_fc_generic(hw); + if (ret_val) + goto out; + } - hw->fc.requested_mode &= ~e1000_fc_tx_pause; + /* 82542 rev 2.0 cannot transmit PAUSE frames. */ + if (hw->revision_id == E1000_REVISION_2) { + switch (hw->fc.requested_mode) { + case e1000_fc_tx_pause: + hw->fc.requested_mode = e1000_fc_none; + break; + case e1000_fc_full: + hw->fc.requested_mode = e1000_fc_rx_pause; + break; + default: + break; + } + } - if (mac->report_tx_early) - hw->fc.requested_mode &= ~e1000_fc_rx_pause; + /* Early transmit reporting is incompatible with receiving PAUSE. */ + if (mac->report_tx_early) { + switch (hw->fc.requested_mode) { + case e1000_fc_rx_pause: + hw->fc.requested_mode = e1000_fc_none; + break; + case e1000_fc_full: + hw->fc.requested_mode = e1000_fc_tx_pause; + break; + default: + break; + } + } /* * Save off the requested flow control mode for use later. Depending