aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/intel/ixgbe/ixgbe_main.c')
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_main.c29
1 files changed, 17 insertions, 12 deletions
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 3e26b1f9ac75..88f6b2e9b72d 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -3154,14 +3154,6 @@ static void ixgbe_set_rx_buffer_len(struct ixgbe_adapter *adapter)
3154 set_ring_rsc_enabled(rx_ring); 3154 set_ring_rsc_enabled(rx_ring);
3155 else 3155 else
3156 clear_ring_rsc_enabled(rx_ring); 3156 clear_ring_rsc_enabled(rx_ring);
3157#ifdef IXGBE_FCOE
3158 if (netdev->features & NETIF_F_FCOE_MTU) {
3159 struct ixgbe_ring_feature *f;
3160 f = &adapter->ring_feature[RING_F_FCOE];
3161 if ((i >= f->mask) && (i < f->mask + f->indices))
3162 set_bit(__IXGBE_RX_FCOE_BUFSZ, &rx_ring->state);
3163 }
3164#endif /* IXGBE_FCOE */
3165 } 3157 }
3166} 3158}
3167 3159
@@ -4836,7 +4828,9 @@ static int ixgbe_resume(struct pci_dev *pdev)
4836 4828
4837 pci_wake_from_d3(pdev, false); 4829 pci_wake_from_d3(pdev, false);
4838 4830
4831 rtnl_lock();
4839 err = ixgbe_init_interrupt_scheme(adapter); 4832 err = ixgbe_init_interrupt_scheme(adapter);
4833 rtnl_unlock();
4840 if (err) { 4834 if (err) {
4841 e_dev_err("Cannot initialize interrupts for device\n"); 4835 e_dev_err("Cannot initialize interrupts for device\n");
4842 return err; 4836 return err;
@@ -4879,10 +4873,6 @@ static int __ixgbe_shutdown(struct pci_dev *pdev, bool *enable_wake)
4879 } 4873 }
4880 4874
4881 ixgbe_clear_interrupt_scheme(adapter); 4875 ixgbe_clear_interrupt_scheme(adapter);
4882#ifdef CONFIG_DCB
4883 kfree(adapter->ixgbe_ieee_pfc);
4884 kfree(adapter->ixgbe_ieee_ets);
4885#endif
4886 4876
4887#ifdef CONFIG_PM 4877#ifdef CONFIG_PM
4888 retval = pci_save_state(pdev); 4878 retval = pci_save_state(pdev);
@@ -4893,6 +4883,16 @@ static int __ixgbe_shutdown(struct pci_dev *pdev, bool *enable_wake)
4893 if (wufc) { 4883 if (wufc) {
4894 ixgbe_set_rx_mode(netdev); 4884 ixgbe_set_rx_mode(netdev);
4895 4885
4886 /*
4887 * enable the optics for both mult-speed fiber and
4888 * 82599 SFP+ fiber as we can WoL.
4889 */
4890 if (hw->mac.ops.enable_tx_laser &&
4891 (hw->phy.multispeed_fiber ||
4892 (hw->mac.ops.get_media_type(hw) == ixgbe_media_type_fiber &&
4893 hw->mac.type == ixgbe_mac_82599EB)))
4894 hw->mac.ops.enable_tx_laser(hw);
4895
4896 /* turn on all-multi mode if wake on multicast is enabled */ 4896 /* turn on all-multi mode if wake on multicast is enabled */
4897 if (wufc & IXGBE_WUFC_MC) { 4897 if (wufc & IXGBE_WUFC_MC) {
4898 fctrl = IXGBE_READ_REG(hw, IXGBE_FCTRL); 4898 fctrl = IXGBE_READ_REG(hw, IXGBE_FCTRL);
@@ -7220,6 +7220,11 @@ static void __devexit ixgbe_remove(struct pci_dev *pdev)
7220 7220
7221 ixgbe_release_hw_control(adapter); 7221 ixgbe_release_hw_control(adapter);
7222 7222
7223#ifdef CONFIG_DCB
7224 kfree(adapter->ixgbe_ieee_pfc);
7225 kfree(adapter->ixgbe_ieee_ets);
7226
7227#endif
7223 iounmap(adapter->hw.hw_addr); 7228 iounmap(adapter->hw.hw_addr);
7224 pci_release_selected_regions(pdev, pci_select_bars(pdev, 7229 pci_release_selected_regions(pdev, pci_select_bars(pdev,
7225 IORESOURCE_MEM)); 7230 IORESOURCE_MEM));