ethdev: forbid MTU set before device configure
authorIvan Ilchenko <ivan.ilchenko@oktetlabs.ru>
Fri, 22 Oct 2021 10:18:28 +0000 (13:18 +0300)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 22 Oct 2021 13:26:54 +0000 (15:26 +0200)
rte_eth_dev_configure() always sets MTU to either dev_conf.rxmode.mtu
or RTE_ETHER_MTU if application doesn't provide the value.
So, there is no point to allow rte_eth_dev_set_mtu() before since
set value will be overwritten on configure anyway.

Fixes: 1bb4a528c41f ("ethdev: fix max Rx packet length")

Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
lib/ethdev/rte_ethdev.c

index 4ea5a65..0d7dd68 100644 (file)
@@ -3728,6 +3728,13 @@ rte_eth_dev_set_mtu(uint16_t port_id, uint16_t mtu)
                        return ret;
        }
 
+       if (dev->data->dev_configured == 0) {
+               RTE_ETHDEV_LOG(ERR,
+                       "Port %u must be configured before MTU set\n",
+                       port_id);
+               return -EINVAL;
+       }
+
        ret = (*dev->dev_ops->mtu_set)(dev, mtu);
        if (ret == 0)
                dev->data->mtu = mtu;