ethdev: update link status after start
authorJia Yu <jyu@vmware.com>
Fri, 7 Nov 2014 17:31:50 +0000 (09:31 -0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 18 Feb 2015 16:50:15 +0000 (17:50 +0100)
Since LSR interrupt is disabled by pmd drivers, link status in rte_eth_device is always down.
Bond slave_configure() enables LSR interrupt on devices to get notification if link status
changes. However, the LSC interrupt at device start time is still lost.

In this fix, call link_update to read link status from hardware
register at device start time.

Signed-off-by: Jia Yu <jyu@vmware.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
lib/librte_ether/rte_ethdev.c

index ea3a1fb..8993b35 100644 (file)
@@ -911,6 +911,10 @@ rte_eth_dev_start(uint8_t port_id)
 
        rte_eth_dev_config_restore(port_id);
 
+       if (dev->data->dev_conf.intr_conf.lsc != 0) {
+               FUNC_PTR_OR_ERR_RET(*dev->dev_ops->link_update, -ENOTSUP);
+               (*dev->dev_ops->link_update)(dev, 0);
+       }
        return 0;
 }