net/bnxt: fix build on BSD
[dpdk.git] / drivers / net / e1000 / igb_ethdev.c
index ce7c9e6..520fba8 100644 (file)
@@ -446,6 +446,7 @@ static const struct eth_dev_ops igbvf_eth_dev_ops = {
        .tx_descriptor_status = eth_igb_tx_descriptor_status,
        .tx_queue_setup       = eth_igb_tx_queue_setup,
        .tx_queue_release     = eth_igb_tx_queue_release,
+       .tx_done_cleanup      = eth_igb_tx_done_cleanup,
        .set_mc_addr_list     = eth_igb_set_mc_addr_list,
        .rxq_info_get         = igb_rxq_info_get,
        .txq_info_get         = igb_txq_info_get,
@@ -891,6 +892,8 @@ eth_igb_dev_init(struct rte_eth_dev *eth_dev)
        /* enable support intr */
        igb_intr_enable(eth_dev);
 
+       eth_igb_dev_set_link_down(eth_dev);
+
        /* initialize filter info */
        memset(filter_info, 0,
               sizeof(struct e1000_filter_info));
@@ -1182,6 +1185,9 @@ eth_igb_configure(struct rte_eth_dev *dev)
 
        PMD_INIT_FUNC_TRACE();
 
+       if (dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG)
+               dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_RSS_HASH;
+
        /* multipe queue mode checking */
        ret  = igb_check_mq_mode(dev);
        if (ret != 0) {
@@ -1468,8 +1474,9 @@ eth_igb_stop(struct rte_eth_dev *dev)
        igb_pf_reset_hw(hw);
        E1000_WRITE_REG(hw, E1000_WUC, 0);
 
-       /* Set bit for Go Link disconnect */
-       if (hw->mac.type >= e1000_82580) {
+       /* Set bit for Go Link disconnect if PHY reset is not blocked */
+       if (hw->mac.type >= e1000_82580 &&
+           (e1000_check_reset_block(hw) != E1000_BLK_PHY_RESET)) {
                uint32_t phpm_reg;
 
                phpm_reg = E1000_READ_REG(hw, E1000_82580_PHY_POWER_MGMT);
@@ -1544,8 +1551,9 @@ eth_igb_close(struct rte_eth_dev *dev)
        igb_release_manageability(hw);
        igb_hw_control_release(hw);
 
-       /* Clear bit for Go Link disconnect */
-       if (hw->mac.type >= e1000_82580) {
+       /* Clear bit for Go Link disconnect if PHY reset is not blocked */
+       if (hw->mac.type >= e1000_82580 &&
+           (e1000_check_reset_block(hw) != E1000_BLK_PHY_RESET)) {
                uint32_t phpm_reg;
 
                phpm_reg = E1000_READ_REG(hw, E1000_82580_PHY_POWER_MGMT);
@@ -2907,7 +2915,7 @@ eth_igb_interrupt_action(struct rte_eth_dev *dev,
                                     dev->data->port_id);
                }
 
-               PMD_INIT_LOG(DEBUG, "PCI Address: %04d:%02d:%02d:%d",
+               PMD_INIT_LOG(DEBUG, "PCI Address: " PCI_PRI_FMT,
                             pci_dev->addr.domain,
                             pci_dev->addr.bus,
                             pci_dev->addr.devid,
@@ -3255,6 +3263,9 @@ igbvf_dev_configure(struct rte_eth_dev *dev)
        PMD_INIT_LOG(DEBUG, "Configured Virtual Function port id: %d",
                     dev->data->port_id);
 
+       if (dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG)
+               dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_RSS_HASH;
+
        /*
         * VF has no ability to enable/disable HW CRC
         * Keep the persistent behavior the same as Host PF