SoftNIC runs on the service core, it uses the resources from
the testpmd application. When we run quit command, the testpmd
application stops ethdev ports first, SoftNIC will try to
access the port and sometimes that results in segmentation
error. This fix will first close the SoftNIC port.

Signed-off-by: Yogesh Jangra <yogesh.jan...@intel.com>
Signed-off-by: Kamalakannan R <kamalakanna...@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitre...@intel.com>
---
 app/test-pmd/testpmd.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 0032696608..88464ea582 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -3767,6 +3767,21 @@ pmd_test_exit(void)
 #endif
        if (ports != NULL) {
                no_link_check = 1;
+
+               /*
+                * SoftNIC runs on the service core, it uses the resources from
+                * the testpmd application. When we run quit command, the 
testpmd
+                * application stops ethdev ports first, SoftNIC will try to
+                * access the port and sometimes that results in segmentation
+                * error. So first closing the SoftNIC port.
+                */
+               RTE_ETH_FOREACH_DEV(pt_id) {
+                       if (!strcmp(ports[pt_id].dev_info.driver_name, 
"net_softnic")) {
+                               stop_port(pt_id);
+                               close_port(pt_id);
+                       }
+               }
+
                RTE_ETH_FOREACH_DEV(pt_id) {
                        printf("\nStopping port %d...\n", pt_id);
                        fflush(stdout);
-- 
2.25.1

Reply via email to