Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Dec 2025 20:43:35 +0000
From:      Kevin Bowling <kbowling@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: 714051f3f804 - stable/15 - e1000: Bump 82574/82583 PBA to 32K
Message-ID:  <693b2cf7.318ed.2ab06dd2@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help

The branch stable/15 has been updated by kbowling:

URL: https://cgit.FreeBSD.org/src/commit/?id=714051f3f804f094a6d68ebd2044beadd8ba6b96

commit 714051f3f804f094a6d68ebd2044beadd8ba6b96
Author:     Kevin Bowling <kbowling@FreeBSD.org>
AuthorDate: 2025-11-21 05:02:00 +0000
Commit:     Kevin Bowling <kbowling@FreeBSD.org>
CommitDate: 2025-12-11 20:43:12 +0000

    e1000: Bump 82574/82583 PBA to 32K
    
    The reporter contacted me with packet loss and throughput fluctuations
    on a low power machine (Intel J1900) that got worse with the recent AIM
    algorithm in FreeBSD 14.2+.
    
    32K RX PBA matches Linux default.  Add a conditional path since we don't
    otherwise do a fixup for jumbo frames to retain space for two frames in
    Tx.
    
    With this change and an additional errata change, the throughput meets
    line rate for the reporter.
    
    Reported by:    Codin <codin@nagi.ftp.sh>
    Tested by:      Codin <codin@nagi.ftp.sh>
    
    (cherry picked from commit aa30bab9a92e1be230b9708bff9f33aae7d384e5)
---
 sys/dev/e1000/if_em.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c
index 465e019029d9..444b16912fee 100644
--- a/sys/dev/e1000/if_em.c
+++ b/sys/dev/e1000/if_em.c
@@ -3080,9 +3080,13 @@ em_reset(if_ctx_t ctx)
 	case e1000_82573:
 			pba = E1000_PBA_12K; /* 12K for Rx, 20K for Tx */
 		break;
+	/* 82574/82583: Total Packet Buffer is 40K */
 	case e1000_82574:
 	case e1000_82583:
-			pba = E1000_PBA_20K; /* 20K for Rx, 20K for Tx */
+		if (hw->mac.max_frame_size > 8192)
+			pba = E1000_PBA_22K; /* 22K for Rx, 18K for Tx */
+		else
+			pba = E1000_PBA_32K; /* 32K for RX, 8K for Tx */
 		break;
 	case e1000_ich8lan:
 		pba = E1000_PBA_8K;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?693b2cf7.318ed.2ab06dd2>