- intr->flags |= IXGBE_FLAG_NEED_LINK_CONFIG;
- if (ixgbe_dev_wait_setup_link_complete(dev) &&
- rte_atomic32_test_and_set(&ad->link_thread_running)) {
+ ixgbe_dev_wait_setup_link_complete(dev, 0);
+ if (rte_atomic32_test_and_set(&ad->link_thread_running)) {
+ /* To avoid race condition between threads, set
+ * the IXGBE_FLAG_NEED_LINK_CONFIG flag only
+ * when there is no link thread running.
+ */
+ intr->flags |= IXGBE_FLAG_NEED_LINK_CONFIG;