net/dpaa2: configure jumbo frames
authorHemant Agrawal <hemant.agrawal@nxp.com>
Fri, 26 May 2017 06:51:22 +0000 (12:21 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Mon, 12 Jun 2017 09:41:26 +0000 (10:41 +0100)
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
doc/guides/nics/features/dpaa2.ini
drivers/net/dpaa2/dpaa2_ethdev.c

index 720c35b..48422f0 100644 (file)
@@ -6,6 +6,7 @@
 [Features]
 Link status          = Y
 Queue start/stop     = Y
+Jumbo frame          = Y
 MTU update           = Y
 Promiscuous mode     = Y
 Allmulticast mode    = Y
index edff04a..efd6064 100644 (file)
@@ -57,6 +57,7 @@ static struct rte_dpaa2_driver rte_dpaa2_pmd;
 static int dpaa2_dev_uninit(struct rte_eth_dev *eth_dev);
 static int dpaa2_dev_set_link_up(struct rte_eth_dev *dev);
 static int dpaa2_dev_set_link_down(struct rte_eth_dev *dev);
+static int dpaa2_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu);
 
 /**
  * Atomically reads the link status information from global
@@ -278,6 +279,20 @@ dpaa2_eth_dev_configure(struct rte_eth_dev *dev)
 
        PMD_INIT_FUNC_TRACE();
 
+       if (eth_conf->rxmode.jumbo_frame == 1) {
+               if (eth_conf->rxmode.max_rx_pkt_len <= DPAA2_MAX_RX_PKT_LEN) {
+                       ret = dpaa2_dev_mtu_set(dev,
+                                       eth_conf->rxmode.max_rx_pkt_len);
+                       if (ret) {
+                               PMD_INIT_LOG(ERR,
+                                            "unable to set mtu. check config\n");
+                               return ret;
+                       }
+               } else {
+                       return -1;
+               }
+       }
+
        /* Check for correct configuration */
        if (eth_conf->rxmode.mq_mode != ETH_MQ_RX_RSS &&
            data->nb_rx_queues > 1) {
@@ -778,6 +793,11 @@ dpaa2_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
        if ((mtu < ETHER_MIN_MTU) || (frame_size > DPAA2_MAX_RX_PKT_LEN))
                return -EINVAL;
 
+       if (frame_size > ETHER_MAX_LEN)
+               dev->data->dev_conf.rxmode.jumbo_frame = 1;
+       else
+               dev->data->dev_conf.rxmode.jumbo_frame = 0;
+
        /* Set the Max Rx frame length as 'mtu' +
         * Maximum Ethernet header length
         */