diff options
Diffstat (limited to 'drivers/net/igb/igb_main.c')
-rw-r--r-- | drivers/net/igb/igb_main.c | 30 |
1 files changed, 3 insertions, 27 deletions
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c index b602c4dd0d14..8f66e15ec8d6 100644 --- a/drivers/net/igb/igb_main.c +++ b/drivers/net/igb/igb_main.c | |||
@@ -311,7 +311,7 @@ static void igb_assign_vector(struct igb_adapter *adapter, int rx_queue, | |||
311 | array_wr32(E1000_MSIXBM(0), msix_vector, msixbm); | 311 | array_wr32(E1000_MSIXBM(0), msix_vector, msixbm); |
312 | break; | 312 | break; |
313 | case e1000_82576: | 313 | case e1000_82576: |
314 | /* Kawela uses a table-based method for assigning vectors. | 314 | /* The 82576 uses a table-based method for assigning vectors. |
315 | Each queue has a single entry in the table to which we write | 315 | Each queue has a single entry in the table to which we write |
316 | a vector number along with a "valid" bit. Sadly, the layout | 316 | a vector number along with a "valid" bit. Sadly, the layout |
317 | of the table is somewhat counterintuitive. */ | 317 | of the table is somewhat counterintuitive. */ |
@@ -720,28 +720,6 @@ static void igb_get_hw_control(struct igb_adapter *adapter) | |||
720 | ctrl_ext | E1000_CTRL_EXT_DRV_LOAD); | 720 | ctrl_ext | E1000_CTRL_EXT_DRV_LOAD); |
721 | } | 721 | } |
722 | 722 | ||
723 | static void igb_init_manageability(struct igb_adapter *adapter) | ||
724 | { | ||
725 | struct e1000_hw *hw = &adapter->hw; | ||
726 | |||
727 | if (adapter->en_mng_pt) { | ||
728 | u32 manc2h = rd32(E1000_MANC2H); | ||
729 | u32 manc = rd32(E1000_MANC); | ||
730 | |||
731 | /* enable receiving management packets to the host */ | ||
732 | /* this will probably generate destination unreachable messages | ||
733 | * from the host OS, but the packets will be handled on SMBUS */ | ||
734 | manc |= E1000_MANC_EN_MNG2HOST; | ||
735 | #define E1000_MNG2HOST_PORT_623 (1 << 5) | ||
736 | #define E1000_MNG2HOST_PORT_664 (1 << 6) | ||
737 | manc2h |= E1000_MNG2HOST_PORT_623; | ||
738 | manc2h |= E1000_MNG2HOST_PORT_664; | ||
739 | wr32(E1000_MANC2H, manc2h); | ||
740 | |||
741 | wr32(E1000_MANC, manc); | ||
742 | } | ||
743 | } | ||
744 | |||
745 | /** | 723 | /** |
746 | * igb_configure - configure the hardware for RX and TX | 724 | * igb_configure - configure the hardware for RX and TX |
747 | * @adapter: private board structure | 725 | * @adapter: private board structure |
@@ -755,7 +733,6 @@ static void igb_configure(struct igb_adapter *adapter) | |||
755 | igb_set_multi(netdev); | 733 | igb_set_multi(netdev); |
756 | 734 | ||
757 | igb_restore_vlan(adapter); | 735 | igb_restore_vlan(adapter); |
758 | igb_init_manageability(adapter); | ||
759 | 736 | ||
760 | igb_configure_tx(adapter); | 737 | igb_configure_tx(adapter); |
761 | igb_setup_rctl(adapter); | 738 | igb_setup_rctl(adapter); |
@@ -1372,7 +1349,8 @@ static void __devexit igb_remove(struct pci_dev *pdev) | |||
1372 | 1349 | ||
1373 | unregister_netdev(netdev); | 1350 | unregister_netdev(netdev); |
1374 | 1351 | ||
1375 | if (!igb_check_reset_block(&adapter->hw)) | 1352 | if (adapter->hw.phy.ops.reset_phy && |
1353 | !igb_check_reset_block(&adapter->hw)) | ||
1376 | adapter->hw.phy.ops.reset_phy(&adapter->hw); | 1354 | adapter->hw.phy.ops.reset_phy(&adapter->hw); |
1377 | 1355 | ||
1378 | igb_remove_device(&adapter->hw); | 1356 | igb_remove_device(&adapter->hw); |
@@ -4523,8 +4501,6 @@ static void igb_io_resume(struct pci_dev *pdev) | |||
4523 | struct net_device *netdev = pci_get_drvdata(pdev); | 4501 | struct net_device *netdev = pci_get_drvdata(pdev); |
4524 | struct igb_adapter *adapter = netdev_priv(netdev); | 4502 | struct igb_adapter *adapter = netdev_priv(netdev); |
4525 | 4503 | ||
4526 | igb_init_manageability(adapter); | ||
4527 | |||
4528 | if (netif_running(netdev)) { | 4504 | if (netif_running(netdev)) { |
4529 | if (igb_up(adapter)) { | 4505 | if (igb_up(adapter)) { |
4530 | dev_err(&pdev->dev, "igb_up failed after reset\n"); | 4506 | dev_err(&pdev->dev, "igb_up failed after reset\n"); |