[dpdk-dev] to wait or not to wait.. DPDK & OVS ixgbe with fibre disconnected

Stephen Hemminger stephen at networkplumber.org
Fri Aug 31 17:12:05 CEST 2018


On Wed, 29 Aug 2018 16:57:55 -0500
David Evans <davidjoshuaevans at gmail.com> wrote:

> Hi!
> 
> We have a thread running on ovs discuss. - Can you contribute?
> 
> regarding ixgbe_ethdev.c
> 
>   ixgbe_dev_link_update() doesn't honour wait_to_complete flag always.
> 
> Basically, where you have 'wait_to_complete' set to 0, we are still having
> to wait sometimes
> Dpdk is always attempting setup if intr->flags & IXGBE_FLAG_NEED_LINK_CONFIG
> Which happens if you unplug fibre, or don't plug it in.
> 
> is there a better way to handle this? It is causing OVS to get stuck
> busy... on the thread that calls this.
> 
> eg:
>  in line 4000  -  ixgbe_setup_link(hw,speed,true)
> 
>         if ((intr->flags & IXGBE_FLAG_NEED_LINK_CONFIG) &&
>                 ixgbe_get_media_type(hw) == ixgbe_media_type_fiber) {
>                 speed = hw->phy.autoneg_advertised;
>                 if (!speed)
>                         ixgbe_get_link_capabilities(hw, &speed, &autoneg);
>                 ixgbe_setup_link(hw, speed, true);
>         }
> 
> 
> or also...
> 
> #0  rte_delay_us_block (us=100000) at
> /usr/src/debug/dpdk-17.11.3/lib/librte_eal/common/eal_common_timer.c:59
> #1  0x00007f548f79ceec in ixgbe_setup_mac_link_multispeed_fiber
> (hw=0x7f543fc2f680, speed=128, autoneg_wait_to_complete=0) at
> /usr/src/debug/dpdk-17.11.3/drivers/net/ixgbe/base/ixgbe_common.c:5155
> #2  0x00007f548f7c2cb2 in ixgbe_dev_link_update_share (vf=0,
> wait_to_complete=0, dev=0x7f549492d480 <rte_eth_devices+82560>) at
> /usr/src/debug/dpdk-17.11.3/drivers/net/ixgbe/ixgbe_ethdev.c:4000
> #3  ixgbe_dev_link_update (dev=0x7f549492d480 <rte_eth_devices+82560>,
> wait_to_complete=0) at
> /usr/src/debug/dpdk-17.11.3/drivers/net/ixgbe/ixgbe_ethdev.c:4070
> 
> Thanks so much
> 
> Dave.

In my experience the wait flag is pretty useless. It means "wait until link is up"
which means the wait loop happens in the driver when it is better handled by the
application. Also, many drivers do not implement it.


More information about the dev mailing list