net/ena: fix build with GCC 12
[dpdk.git] / app / test-eventdev / evt_main.c
index 3c27f32..c5d6306 100644 (file)
@@ -6,7 +6,6 @@
 #include <unistd.h>
 #include <signal.h>
 
-#include <rte_atomic.h>
 #include <rte_debug.h>
 #include <rte_eal.h>
 #include <rte_eventdev.h>
@@ -23,27 +22,12 @@ signal_handler(int signum)
        if (signum == SIGINT || signum == SIGTERM) {
                printf("\nSignal %d received, preparing to exit...\n",
                                signum);
-               /* request all lcores to exit from the main loop */
-               *(int *)test->test_priv = true;
-               rte_wmb();
 
-               rte_eal_mp_wait_lcore();
-
-               if (test->ops.eventdev_destroy)
-                       test->ops.eventdev_destroy(test, &opt);
-
-               if (test->ops.ethdev_destroy)
-                       test->ops.ethdev_destroy(test, &opt);
-
-               if (test->ops.mempool_destroy)
-                       test->ops.mempool_destroy(test, &opt);
-
-               if (test->ops.test_destroy)
-                       test->ops.test_destroy(test, &opt);
-
-               /* exit with the expected status */
-               signal(signum, SIG_DFL);
-               kill(getpid(), signum);
+               if (test != NULL) {
+                       /* request all lcores to exit from the main loop */
+                       *(int *)test->test_priv = true;
+                       rte_wmb();
+               }
        }
 }
 
@@ -80,7 +64,7 @@ main(int argc, char **argv)
        /* Parse the command line arguments */
        ret = evt_options_parse(&opt, argc, argv);
        if (ret) {
-               evt_err("parsing on or more user options failed");
+               evt_err("parsing one or more user options failed");
                goto error;
        }
 
@@ -148,11 +132,19 @@ main(int argc, char **argv)
                }
        }
 
+       /* Test specific cryptodev setup */
+       if (test->ops.cryptodev_setup) {
+               if (test->ops.cryptodev_setup(test, &opt)) {
+                       evt_err("%s: cryptodev setup failed", opt.test_name);
+                       goto ethdev_destroy;
+               }
+       }
+
        /* Test specific eventdev setup */
        if (test->ops.eventdev_setup) {
                if (test->ops.eventdev_setup(test, &opt)) {
                        evt_err("%s: eventdev setup failed", opt.test_name);
-                       goto ethdev_destroy;
+                       goto cryptodev_destroy;
                }
        }
 
@@ -164,10 +156,29 @@ main(int argc, char **argv)
                }
        }
 
+       if (test->ops.ethdev_rx_stop)
+               test->ops.ethdev_rx_stop(test, &opt);
+
+       if (test->ops.cryptodev_destroy)
+               test->ops.cryptodev_destroy(test, &opt);
+
        rte_eal_mp_wait_lcore();
 
-       /* Print the test result */
-       ret = test->ops.test_result(test, &opt);
+       if (test->ops.test_result)
+               test->ops.test_result(test, &opt);
+
+       if (test->ops.ethdev_destroy)
+               test->ops.ethdev_destroy(test, &opt);
+
+       if (test->ops.eventdev_destroy)
+               test->ops.eventdev_destroy(test, &opt);
+
+       if (test->ops.mempool_destroy)
+               test->ops.mempool_destroy(test, &opt);
+
+       if (test->ops.test_destroy)
+               test->ops.test_destroy(test, &opt);
+
 nocap:
        if (ret == EVT_TEST_SUCCESS) {
                printf("Result: "CLGRN"%s"CLNRM"\n", "Success");
@@ -183,6 +194,10 @@ eventdev_destroy:
        if (test->ops.eventdev_destroy)
                test->ops.eventdev_destroy(test, &opt);
 
+cryptodev_destroy:
+       if (test->ops.cryptodev_destroy)
+               test->ops.cryptodev_destroy(test, &opt);
+
 ethdev_destroy:
        if (test->ops.ethdev_destroy)
                test->ops.ethdev_destroy(test, &opt);