+static void ena_timer_wd_callback(__rte_unused struct rte_timer *timer,
+ void *arg)
+{
+ struct ena_adapter *adapter = (struct ena_adapter *)arg;
+ struct rte_eth_dev *dev = adapter->rte_dev;
+
+ if (adapter->keep_alive_timeout == ENA_HW_HINTS_NO_TIMEOUT)
+ return;
+
+ /* Within reasonable timing range no memory barriers are needed */
+ if ((rte_get_timer_cycles() - adapter->timestamp_wd) >=
+ adapter->keep_alive_timeout) {
+ RTE_LOG(ERR, PMD, "The ENA device is not responding - "
+ "performing device reset...");
+ adapter->reset_reason = ENA_REGS_RESET_KEEP_ALIVE_TO;
+ _rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_RESET,
+ NULL);
+ }
+}
+