For 8125A, set the max size to (16K - 1). For other non-1G cards, set the max size to 16K.
Signed-off-by: Howard Wang <[email protected]> --- drivers/net/r8169/r8169_compat.h | 1 + drivers/net/r8169/r8169_ethdev.c | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/net/r8169/r8169_compat.h b/drivers/net/r8169/r8169_compat.h index d2d928cdd7..673a1ca274 100644 --- a/drivers/net/r8169/r8169_compat.h +++ b/drivers/net/r8169/r8169_compat.h @@ -617,6 +617,7 @@ enum RTL_chipset_name { */ #define RTL_ETH_OVERHEAD (RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN + VLAN_TAG_SIZE) #define JUMBO_FRAME_9K (9 * 1024 - RTE_ETHER_HDR_LEN - RTE_VLAN_HLEN - RTE_ETHER_CRC_LEN) +#define JUMBO_FRAME_16K (16 * 1024 - RTE_ETHER_HDR_LEN - RTE_VLAN_HLEN - RTE_ETHER_CRC_LEN) #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL << (n)) - 1)) diff --git a/drivers/net/r8169/r8169_ethdev.c b/drivers/net/r8169/r8169_ethdev.c index f620154bf0..8e46ce09a1 100644 --- a/drivers/net/r8169/r8169_ethdev.c +++ b/drivers/net/r8169/r8169_ethdev.c @@ -412,9 +412,30 @@ rtl_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) struct rtl_hw *hw = &adapter->hw; dev_info->min_rx_bufsize = 1024; - dev_info->max_rx_pktlen = JUMBO_FRAME_9K; dev_info->max_mac_addrs = 1; + switch (hw->mcfg) { + case CFG_METHOD_48: + case CFG_METHOD_49: + dev_info->max_rx_pktlen = JUMBO_FRAME_16K - 1; + break; + case CFG_METHOD_50: + case CFG_METHOD_51: + case CFG_METHOD_54: + case CFG_METHOD_55: + case CFG_METHOD_56: + case CFG_METHOD_57: + case CFG_METHOD_58: + case CFG_METHOD_70: + case CFG_METHOD_71: + case CFG_METHOD_91: + dev_info->max_rx_pktlen = JUMBO_FRAME_16K; + break; + default: + dev_info->max_rx_pktlen = JUMBO_FRAME_9K; + break; + } + if (hw->mcfg >= CFG_METHOD_69) { dev_info->max_rx_queues = 4; dev_info->max_tx_queues = 2; -- 2.34.1

