This patch use testpmd for example to show how to use failure handle
mechanism for hotplug in app.

Signed-off-by: Jeff Guo <[email protected]>
---
v10->v9:
use new APIs to manage hotplug handling.
---
 app/test-pmd/testpmd.c | 27 ++++++++++++++++++++++-----
 1 file changed, 22 insertions(+), 5 deletions(-)

diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index ee48db2..12fc497 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -2098,14 +2098,22 @@ pmd_test_exit(void)
 
        if (hot_plug) {
                ret = rte_dev_event_monitor_stop();
-               if (ret)
+               if (ret) {
                        RTE_LOG(ERR, EAL,
                                "fail to stop device event monitor.");
+                       return;
+               }
 
                ret = eth_dev_event_callback_unregister();
                if (ret)
+                       return;
+
+               ret = rte_dev_hotplug_handle_disable();
+               if (ret) {
                        RTE_LOG(ERR, EAL,
-                               "fail to unregister all event callbacks.");
+                               "fail to disable hotplug handling.");
+                       return;
+               }
        }
 
        printf("\nBye...\n");
@@ -2784,14 +2792,23 @@ main(int argc, char** argv)
        init_config();
 
        if (hot_plug) {
-               /* enable hot plug monitoring */
+               ret = rte_dev_hotplug_handle_enable();
+               if (ret) {
+                       RTE_LOG(ERR, EAL,
+                               "fail to enable hotplug handling.");
+                       return -1;
+               }
+
                ret = rte_dev_event_monitor_start();
                if (ret) {
-                       rte_errno = EINVAL;
+                       RTE_LOG(ERR, EAL,
+                               "fail to start device event monitoring.");
                        return -1;
                }
-               eth_dev_event_callback_register();
 
+               ret = eth_dev_event_callback_register();
+               if (ret)
+                       return -1;
        }
 
        if (start_port(RTE_PORT_ALL) != 0)
-- 
2.7.4

Reply via email to