The testpmd application aim is for testing;
so order of operations should not be enforced.

There was a test to forbid detaching before closing a port.
However, it may interesting to test what happens in such case.
It is possible for a PMD to automatically close the port when detaching.

in order to avoid a crash, it is checked that the port must be stopped
before detaching (as for closing).

Signed-off-by: Thomas Monjalon <tho...@monjalon.net>
---
 app/test-pmd/testpmd.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index c4109417a..31aadec63 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -2343,13 +2343,15 @@ detach_port(portid_t port_id)
        printf("Detaching a port...\n");
 
        if (!port_is_closed(port_id)) {
-               printf("Please close port first\n");
-               return;
+               if (ports[port_id].port_status != RTE_PORT_STOPPED) {
+                       printf("Port not stopped\n");
+                       return;
+               }
+               printf("Port was not closed\n");
+               if (ports[port_id].flow_list)
+                       port_flow_flush(port_id);
        }
 
-       if (ports[port_id].flow_list)
-               port_flow_flush(port_id);
-
        if (rte_eth_dev_detach(port_id, name)) {
                TESTPMD_LOG(ERR, "Failed to detach port %u\n", port_id);
                return;
-- 
2.19.0

Reply via email to