net/dpaa2: support config max Rx length in HW
authorHemant Agrawal <hemant.agrawal@nxp.com>
Thu, 29 Aug 2019 10:27:25 +0000 (15:57 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 8 Oct 2019 10:14:31 +0000 (12:14 +0200)
The MC expects the length to be configured without CRC

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
drivers/net/dpaa2/dpaa2_ethdev.c

index 4c6585f..d0e4d06 100644 (file)
@@ -420,12 +420,17 @@ dpaa2_eth_dev_configure(struct rte_eth_dev *dev)
        if (rx_offloads & DEV_RX_OFFLOAD_JUMBO_FRAME) {
                if (eth_conf->rxmode.max_rx_pkt_len <= DPAA2_MAX_RX_PKT_LEN) {
                        ret = dpni_set_max_frame_length(dpni, CMD_PRI_LOW,
-                               priv->token, eth_conf->rxmode.max_rx_pkt_len);
+                               priv->token, eth_conf->rxmode.max_rx_pkt_len
+                               - RTE_ETHER_CRC_LEN);
                        if (ret) {
                                DPAA2_PMD_ERR(
                                        "Unable to set mtu. check config");
                                return ret;
                        }
+                       dev->data->mtu =
+                               dev->data->dev_conf.rxmode.max_rx_pkt_len -
+                               RTE_ETHER_HDR_LEN - RTE_ETHER_CRC_LEN -
+                               VLAN_TAG_SIZE;
                } else {
                        return -1;
                }
@@ -1211,7 +1216,7 @@ dpaa2_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
         * Maximum Ethernet header length
         */
        ret = dpni_set_max_frame_length(dpni, CMD_PRI_LOW, priv->token,
-                                       frame_size);
+                                       frame_size - RTE_ETHER_CRC_LEN);
        if (ret) {
                DPAA2_PMD_ERR("Setting the max frame length failed");
                return -1;
@@ -2386,6 +2391,14 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev)
                }
        }
 
+       ret = dpni_set_max_frame_length(dpni_dev, CMD_PRI_LOW, priv->token,
+                                       RTE_ETHER_MAX_LEN - RTE_ETHER_CRC_LEN
+                                       + VLAN_TAG_SIZE);
+       if (ret) {
+               DPAA2_PMD_ERR("Unable to set mtu. check config");
+               goto init_err;
+       }
+
        RTE_LOG(INFO, PMD, "%s: netdev created\n", eth_dev->data->name);
        return 0;
 init_err: