app/testpmd: fix MTU configuration before device start
authorAndrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Sun, 24 Oct 2021 16:42:37 +0000 (19:42 +0300)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 28 Oct 2021 18:21:30 +0000 (20:21 +0200)
There is no point to do rte_eth_dev_mtu_set() before configure since
set MTU value is overwritten on configure anyway. So, setting of MTU
before configure is rejected now on ethdev level.

If testpmd is going to do configure (e.g. just after testpmd start
with disabled devices start up or any configuration changes in stopped
state which require reconfigure), just save requested MTU in device
config to be applied on reconfigure.

Fixes: 1bb4a528c41f ("ethdev: fix max Rx packet length")
Fixes: b26bee10ee37 ("ethdev: forbid MTU set before device configure")

Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
app/test-pmd/config.c

index a18871d..3b97164 100644 (file)
@@ -1241,10 +1241,12 @@ port_mtu_set(portid_t port_id, uint16_t mtu)
        if (port_id_is_invalid(port_id, ENABLED_WARN))
                return;
 
-       diag = rte_eth_dev_set_mtu(port_id, mtu);
-       if (diag != 0) {
-               fprintf(stderr, "Set MTU failed. diag=%d\n", diag);
-               return;
+       if (port->need_reconfig == 0) {
+               diag = rte_eth_dev_set_mtu(port_id, mtu);
+               if (diag != 0) {
+                       fprintf(stderr, "Set MTU failed. diag=%d\n", diag);
+                       return;
+               }
        }
 
        port->dev_conf.rxmode.mtu = mtu;