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

Reply via email to