Set the missing dev data mtu for the correct size.
Set the max supported size in hw, if user is asking for more.

Fixes: 9658ac3a4ef6 ("net/dpaa: set the correct frame size in device MTU")
Cc: sta...@dpdk.org

Signed-off-by: Hemant Agrawal <hemant.agra...@nxp.com>
---
 drivers/net/dpaa/dpaa_ethdev.c | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index b9bd557..b9b4999 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -193,14 +193,24 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
        }
 
        if (rx_offloads & DEV_RX_OFFLOAD_JUMBO_FRAME) {
+               uint32_t max_len;
+
+               DPAA_PMD_DEBUG("enabling jumbo");
+
                if (dev->data->dev_conf.rxmode.max_rx_pkt_len <=
-                   DPAA_MAX_RX_PKT_LEN) {
-                       fman_if_set_maxfrm(dpaa_intf->fif,
-                               dev->data->dev_conf.rxmode.max_rx_pkt_len);
-                       return 0;
-               } else {
-                       return -1;
+                   DPAA_MAX_RX_PKT_LEN)
+                       max_len = dev->data->dev_conf.rxmode.max_rx_pkt_len;
+               else {
+                       DPAA_PMD_INFO("enabling jumbo override conf max len=%d "
+                               "supported is %d",
+                               dev->data->dev_conf.rxmode.max_rx_pkt_len,
+                               DPAA_MAX_RX_PKT_LEN);
+                       max_len = DPAA_MAX_RX_PKT_LEN;
                }
+
+               fman_if_set_maxfrm(dpaa_intf->fif, max_len);
+               dev->data->mtu = max_len
+                               - ETHER_HDR_LEN - ETHER_CRC_LEN - VLAN_TAG_SIZE;
        }
        return 0;
 }
-- 
2.7.4

Reply via email to