MCPcopy Create free account
hub / github.com/F-Stack/f-stack / iavf_dev_watchdog

Function iavf_dev_watchdog

dpdk/drivers/net/iavf/iavf_ethdev.c:279–329  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

277}
278
279__rte_unused
280static void
281iavf_dev_watchdog(void *cb_arg)
282{
283 struct iavf_adapter *adapter = cb_arg;
284 struct iavf_hw *hw = IAVF_DEV_PRIVATE_TO_HW(adapter);
285 int vfr_inprogress = 0, rc = 0;
286
287 /* check if watchdog has been disabled since last call */
288 if (!adapter->vf.watchdog_enabled)
289 return;
290
291 /* If in reset then poll vfr_inprogress register for completion */
292 if (adapter->vf.vf_reset) {
293 vfr_inprogress = iavf_vfr_inprogress(hw);
294
295 if (!vfr_inprogress) {
296 PMD_DRV_LOG(INFO, "VF \"%s\" reset has completed",
297 adapter->vf.eth_dev->data->name);
298 adapter->vf.vf_reset = false;
299 iavf_set_no_poll(adapter, false);
300 }
301 /* If not in reset then poll vfr_inprogress register for VFLR event */
302 } else {
303 vfr_inprogress = iavf_vfr_inprogress(hw);
304
305 if (vfr_inprogress) {
306 PMD_DRV_LOG(INFO,
307 "VF \"%s\" reset event detected by watchdog",
308 adapter->vf.eth_dev->data->name);
309
310 /* enter reset state with VFLR event */
311 adapter->vf.vf_reset = true;
312 iavf_set_no_poll(adapter, false);
313 adapter->vf.link_up = false;
314
315 iavf_dev_event_post(adapter->vf.eth_dev, RTE_ETH_EVENT_INTR_RESET,
316 NULL, 0);
317 }
318 }
319
320 if (adapter->devargs.watchdog_period) {
321 /* re-alarm watchdog */
322 rc = rte_eal_alarm_set(adapter->devargs.watchdog_period,
323 &iavf_dev_watchdog, cb_arg);
324
325 if (rc)
326 PMD_DRV_LOG(ERR, "Failed \"%s\" to reset device watchdog alarm",
327 adapter->vf.eth_dev->data->name);
328 }
329}
330
331void
332iavf_dev_watchdog_enable(struct iavf_adapter *adapter)

Callers

nothing calls this directly

Calls 4

iavf_vfr_inprogressFunction · 0.85
iavf_set_no_pollFunction · 0.85
iavf_dev_event_postFunction · 0.85
rte_eal_alarm_setFunction · 0.50

Tested by

no test coverage detected