app/testpmd: fix error detection in MTU command
authorShy Shyman <shys@mellanox.com>
Mon, 8 Jun 2020 14:17:47 +0000 (17:17 +0300)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 16 Jun 2020 17:21:07 +0000 (19:21 +0200)
MTU is used in testpmd to set the maximum payload size for packets.
According to testpmd, the setting influence RX only.
In rte_ethdev there's no relation between MTU setting and JUMBO offload
or rx_max_pkt_len.

The previous fix in patch referenced below was meant to update the
correlated variables of max_pkt_len and JUMBO offload, but by doing so
it assumes that MTU setting can only exist when JUMBO offload supported
in the device. For example fail-safe device does supports set MTU and
doesn't support JUMBO offload, and in this case, though set MTU
succeeds, an error message is still printed since the JUMBO packet
offload is disabled.

The fix separates the two conditions to make sure the error
triggers only in case the set_mtu action actually failed.

Fixes: 150c9ac2df13 ("app/testpmd: update Rx offload after setting MTU")
Cc: stable@dpdk.org
Signed-off-by: Shy Shyman <shys@mellanox.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
app/test-pmd/config.c

index 016bcb0..a7112c9 100644 (file)
@@ -1281,8 +1281,9 @@ port_mtu_set(portid_t port_id, uint16_t mtu)
                return;
        }
        diag = rte_eth_dev_set_mtu(port_id, mtu);
-       if (diag == 0 &&
-           dev_info.rx_offload_capa & DEV_RX_OFFLOAD_JUMBO_FRAME) {
+       if (diag)
+               printf("Set MTU failed. diag=%d\n", diag);
+       else if (dev_info.rx_offload_capa & DEV_RX_OFFLOAD_JUMBO_FRAME) {
                /*
                 * Ether overhead in driver is equal to the difference of
                 * max_rx_pktlen and max_mtu in rte_eth_dev_info when the
@@ -1297,10 +1298,7 @@ port_mtu_set(portid_t port_id, uint16_t mtu)
                } else
                        rte_port->dev_conf.rxmode.offloads &=
                                                ~DEV_RX_OFFLOAD_JUMBO_FRAME;
-
-               return;
        }
-       printf("Set MTU failed. diag=%d\n", diag);
 }
 
 /* Generic flow management functions. */