git: 2ead091715de - main - e1000: Don't enable ASPM L1 without L0s

From: Kevin Bowling <kbowling_at_FreeBSD.org>
Date: Fri, 21 Nov 2025 06:44:32 UTC
The branch main has been updated by kbowling:

URL: https://cgit.FreeBSD.org/src/commit/?id=2ead091715dee327b3e00bc9840e1a95827b8e82

commit 2ead091715dee327b3e00bc9840e1a95827b8e82
Author:     Kevin Bowling <kbowling@FreeBSD.org>
AuthorDate: 2025-11-21 05:47:03 +0000
Commit:     Kevin Bowling <kbowling@FreeBSD.org>
CommitDate: 2025-11-21 06:44:25 +0000

    e1000: Don't enable ASPM L1 without L0s
    
    Reporter noted packet loss with 82583.  NVM is down level.  The
    errata docs mention disabling this, which should be the firmware
    default, so I am not sure why we were enabling this bit.  Linux and
    OpenBSD have the same issue, while NetBSD got it right.
    
    Reported by:    Codin <codin@nagi.ftp.sh>
    Tested by:      Codin <codin@nagi.ftp.sh>
    MFC after:      2 weeks
---
 sys/dev/e1000/e1000_82571.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sys/dev/e1000/e1000_82571.c b/sys/dev/e1000/e1000_82571.c
index e8970adf996f..650169663f56 100644
--- a/sys/dev/e1000/e1000_82571.c
+++ b/sys/dev/e1000/e1000_82571.c
@@ -1118,7 +1118,8 @@ static s32 e1000_init_hw_82571(struct e1000_hw *hw)
 	case e1000_82574:
 	case e1000_82583:
 		reg_data = E1000_READ_REG(hw, E1000_GCR);
-		reg_data |= E1000_GCR_L1_ACT_WITHOUT_L0S_RX;
+		/* 82574 Errata 25, 82583 Errata 12 */
+		reg_data &= ~E1000_GCR_L1_ACT_WITHOUT_L0S_RX;
 		E1000_WRITE_REG(hw, E1000_GCR, reg_data);
 		break;
 	default: