fm10k: add PF and VF interrupt handling
[dpdk.git] / lib / librte_pmd_ixgbe / ixgbe_ethdev.c
index b58ec45..d6d408e 100644 (file)
@@ -1495,7 +1495,16 @@ ixgbe_dev_start(struct rte_eth_dev *dev)
                goto error;
        }
 
-       ixgbe_dev_rxtx_start(dev);
+       err = ixgbe_dev_rxtx_start(dev);
+       if (err < 0) {
+               PMD_INIT_LOG(ERR, "Unable to start rxtx queues");
+               goto error;
+       }
+
+       /* Skip link setup if loopback mode is enabled for 82599. */
+       if (hw->mac.type == ixgbe_mac_82599EB &&
+                       dev->data->dev_conf.lpbk_mode == IXGBE_LPBK_82599_TX_RX)
+               goto skip_link_setup;
 
        if (ixgbe_is_sfp(hw) && hw->phy.multispeed_fiber) {
                err = hw->mac.ops.setup_sfp(hw);
@@ -1506,14 +1515,11 @@ ixgbe_dev_start(struct rte_eth_dev *dev)
        /* Turn on the laser */
        ixgbe_enable_tx_laser(hw);
 
-       /* Skip link setup if loopback mode is enabled for 82599. */
-       if (hw->mac.type == ixgbe_mac_82599EB &&
-                       dev->data->dev_conf.lpbk_mode == IXGBE_LPBK_82599_TX_RX)
-               goto skip_link_setup;
-
        err = ixgbe_check_link(hw, &speed, &link_up, 0);
        if (err)
                goto error;
+       dev->data->dev_link.link_status = link_up;
+
        err = ixgbe_get_link_capabilities(hw, &speed, &negotiate);
        if (err)
                goto error;
@@ -1940,7 +1946,6 @@ ixgbevf_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
        if (stats == NULL)
                return;
 
-       memset(stats, 0, sizeof(*stats));
        stats->ipackets = hw_stats->vfgprc;
        stats->ibytes = hw_stats->vfgorc;
        stats->opackets = hw_stats->vfgptc;