git: 0eb8cd1de268 - main - igc: sync srrctl buffer sizing with e1000
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 10 Aug 2023 14:43:29 UTC
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.