From 497025dac0aff87693557687e0a37f7342aa2ce4 Mon Sep 17 00:00:00 2001 From: Huisong Li Date: Thu, 6 May 2021 11:46:08 +0800 Subject: [PATCH] examples/ethtool: close port before exit Currently, ethtool directly ends the process after 'quit' cmd. In this case, software resources are not released and hardware resources of the device are not uninstalled. This patch adds closing port operation to release resources. Signed-off-by: Huisong Li Signed-off-by: Min Hu (Connor) --- examples/ethtool/ethtool-app/main.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/examples/ethtool/ethtool-app/main.c b/examples/ethtool/ethtool-app/main.c index cdd9e9b60b..1f011a9321 100644 --- a/examples/ethtool/ethtool-app/main.c +++ b/examples/ethtool/ethtool-app/main.c @@ -256,6 +256,22 @@ static int worker_main(__rte_unused void *ptr_data) return 0; } +static void close_ports(void) +{ + uint16_t portid; + int ret; + + for (portid = 0; portid < app_cfg.cnt_ports; portid++) { + printf("Closing port %d...", portid); + ret = rte_eth_dev_stop(portid); + if (ret != 0) + rte_exit(EXIT_FAILURE, "rte_eth_dev_stop: err=%s, port=%u\n", + strerror(-ret), portid); + rte_eth_dev_close(portid); + printf(" Done\n"); + } +} + int main(int argc, char **argv) { int cnt_args_parsed; @@ -299,6 +315,8 @@ int main(int argc, char **argv) return -1; } + close_ports(); + /* clean up the EAL */ rte_eal_cleanup(); -- 2.39.5