examples/ipsec-secgw: add ethdev reset callback
authorRadu Nicolau <radu.nicolau@intel.com>
Mon, 1 Nov 2021 12:58:14 +0000 (12:58 +0000)
committerAkhil Goyal <gakhil@marvell.com>
Thu, 4 Nov 2021 18:46:27 +0000 (19:46 +0100)
Applications should not quietly ignore an ethdev reset event.
Register an event handler for ethdev reset callback
RTE_ETH_EVENT_INTR_RESET that prints a message and
quits the application.

Signed-off-by: Declan Doherty <declan.doherty@intel.com>
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
examples/ipsec-secgw/ipsec-secgw.c

index cb170e4..cca2b0e 100644 (file)
@@ -2551,6 +2551,17 @@ inline_ipsec_event_callback(uint16_t port_id, enum rte_eth_event_type type,
        return -1;
 }
 
+static int
+ethdev_reset_event_callback(uint16_t port_id,
+               enum rte_eth_event_type type,
+                void *param __rte_unused, void *ret_param __rte_unused)
+{
+       printf("Reset Event on port id %d type %d\n", port_id, type);
+       printf("Force quit application");
+       force_quit = true;
+       return 0;
+}
+
 static uint16_t
 rx_callback(__rte_unused uint16_t port, __rte_unused uint16_t queue,
        struct rte_mbuf *pkt[], uint16_t nb_pkts,
@@ -3317,6 +3328,9 @@ main(int32_t argc, char **argv)
                                        rte_strerror(-ret), portid);
                }
 
+               rte_eth_dev_callback_register(portid, RTE_ETH_EVENT_INTR_RESET,
+                       ethdev_reset_event_callback, NULL);
+
                rte_eth_dev_callback_register(portid,
                        RTE_ETH_EVENT_IPSEC, inline_ipsec_event_callback, NULL);
        }