igc: sync srrctl buffer sizing with e1000

Approved by:	grehan
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D31493
This commit is contained in:
Kevin Bowling 2023-08-10 07:41:21 -07:00
parent 73fa89e041
commit 0eb8cd1de2

View File

@ -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.