examples/l3fwd-power: fix stop and close on signal
authorJianfeng Tan <jianfeng.tan@intel.com>
Tue, 17 Jan 2017 07:10:30 +0000 (07:10 +0000)
committerYuanhan Liu <yuanhan.liu@linux.intel.com>
Tue, 17 Jan 2017 08:27:16 +0000 (09:27 +0100)
As it gets killed, in SIGINT signal handler, device is not stopped
and closed. In virtio's case, vector assignment in the KVM is not
deassigned.

This patch will invoke dev_stop() and dev_close() in signal handler.

Fixes: d7937e2e3d12 ("power: initial import")

Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
Tested-by: Lei Yao <lei.a.yao@intel.com>
examples/l3fwd-power/main.c

index e741434..15b47c7 100644 (file)
@@ -379,6 +379,7 @@ static void
 signal_exit_now(int sigtype)
 {
        unsigned lcore_id;
+       unsigned int portid, nb_ports;
        int ret;
 
        if (sigtype == SIGINT) {
@@ -393,6 +394,15 @@ signal_exit_now(int sigtype)
                                        "library de-initialization failed on "
                                                        "core%u\n", lcore_id);
                }
+
+               nb_ports = rte_eth_dev_count();
+               for (portid = 0; portid < nb_ports; portid++) {
+                       if ((enabled_port_mask & (1 << portid)) == 0)
+                               continue;
+
+                       rte_eth_dev_stop(portid);
+                       rte_eth_dev_close(portid);
+               }
        }
 
        rte_exit(EXIT_SUCCESS, "User forced exit\n");