Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Aug 2023 14:43:29 GMT
From:      Kevin Bowling <kbowling@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 0eb8cd1de268 - main - igc: sync srrctl buffer sizing with e1000
Message-ID:  <202308101443.37AEhTeF059158@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by kbowling:

URL: https://cgit.FreeBSD.org/src/commit/?id=0eb8cd1de26849cbaefaf3bc59aa9612fa0dfa52

commit 0eb8cd1de26849cbaefaf3bc59aa9612fa0dfa52
Author:     Kevin Bowling <kbowling@FreeBSD.org>
AuthorDate: 2023-08-10 14:41:21 +0000
Commit:     Kevin Bowling <kbowling@FreeBSD.org>
CommitDate: 2023-08-10 14:43:16 +0000

    igc: sync srrctl buffer sizing with e1000
    
    Approved by:    grehan
    MFC after:      1 week
    Differential Revision:  https://reviews.freebsd.org/D31493
---
 sys/dev/igc/if_igc.c | 18 +++++++-----------
 1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/sys/dev/igc/if_igc.c b/sys/dev/igc/if_igc.c
index 1ede99eee4ae..70f1aa2d2239 100644
--- a/sys/dev/igc/if_igc.c
+++ b/sys/dev/igc/if_igc.c
@@ -1985,6 +1985,7 @@ igc_initialize_transmit_unit(if_ctx_t ctx)
  *  Enable receive unit.
  *
  **********************************************************************/
+#define BSIZEPKT_ROUNDUP	((1<<IGC_SRRCTL_BSIZEPKT_SHIFT)-1)
 
 static void
 igc_initialize_receive_unit(if_ctx_t ctx)
@@ -2050,24 +2051,19 @@ igc_initialize_receive_unit(if_ctx_t ctx)
 		igc_initialize_rss_mapping(adapter);
 
 	if (if_getmtu(ifp) > ETHERMTU) {
-		/* Set maximum packet len */
-		if (adapter->rx_mbuf_sz <= 4096) {
-			srrctl |= 4096 >> IGC_SRRCTL_BSIZEPKT_SHIFT;
-			rctl |= IGC_RCTL_SZ_4096 | IGC_RCTL_BSEX;
-		} else if (adapter->rx_mbuf_sz > 4096) {
-			srrctl |= 8192 >> IGC_SRRCTL_BSIZEPKT_SHIFT;
-			rctl |= IGC_RCTL_SZ_8192 | IGC_RCTL_BSEX;
-		}
 		psize = scctx->isc_max_frame_size;
 		/* are we on a vlan? */
 		if (if_vlantrunkinuse(ifp))
 			psize += VLAN_TAG_SIZE;
 		IGC_WRITE_REG(&adapter->hw, IGC_RLPML, psize);
-	} else {
-		srrctl |= 2048 >> IGC_SRRCTL_BSIZEPKT_SHIFT;
-		rctl |= IGC_RCTL_SZ_2048;
 	}
 
+	/* Set maximum packet buffer len */
+	srrctl |= (adapter->rx_mbuf_sz + BSIZEPKT_ROUNDUP) >>
+	    IGC_SRRCTL_BSIZEPKT_SHIFT;
+	/* srrctl above overrides this but set the register to a sane value */
+	rctl |= IGC_RCTL_SZ_2048;
+
 	/*
 	 * If TX flow control is disabled and there's >1 queue defined,
 	 * enable DROP.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202308101443.37AEhTeF059158>