DPDK patches and discussions
 help / color / mirror / Atom feed
* Hang in ixgbe_dev_link_update_share()
@ 2022-05-30 14:02 Lewis Donzis
  0 siblings, 0 replies; only message in thread
From: Lewis Donzis @ 2022-05-30 14:02 UTC (permalink / raw)
  To: dev; +Cc: qiming.yang, wenjun1.wu, anatoly.burakov

Using DPDK 21.11.1 on FreeBSD 13.1, calling rte_eth_link_get_nowait() appears to hang waiting for the link to come up on an XL710 or 82599 based NIC.

This call eventually makes its way to ixgbe_dev_link_update_share() with wait_to_complete set to false.

Inside that function, there is this code:

/* BSD has no interrupt mechanism, so force NIC status synchronization. */ 
#ifdef RTE_EXEC_ENV_FREEBSD 
        wait = 1; 
#endif

This then calls ixgbe_check_link() with wait == true, which then calls ixgbe_check_mac_link_generic(), but the parameter is now called "link_up_wait_to_complete", and it loops forever waiting for the link to be up, with a 100ms delay between polls.

Perhaps our understanding is incorrect, but we're using rte_eth_link_get_nowait() because we can't tolerate any significant delay in the function call, but we certainly don't want to wait for the link to be up.  We're just trying to find out if it's up or down.  Empirically, removing the "wait = 1" restores normal operation.

Thanks,
lew

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-05-30 14:02 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-30 14:02 Hang in ixgbe_dev_link_update_share() Lewis Donzis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).