提交 aa20c6c6 编写于 作者: D David Graham 提交者: Jeff Garzik

igb: PCIe devices do not need to unset MANC_ARP_ENA

Users reported that ARP's were lost with igb. The problem
is fixed by not enabling this manageability configuration
bit.

None of the release_manageability code is actually needed as the
normal device reset during a shutdown returns everthing to
the right condition automatically.
Signed-off-by: NDavid Graham <david.graham@intel.com>
Signed-off-by: NAuke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: NJeff Garzik <jeff@garzik.org>
上级 41825d71
...@@ -606,9 +606,6 @@ static void igb_init_manageability(struct igb_adapter *adapter) ...@@ -606,9 +606,6 @@ static void igb_init_manageability(struct igb_adapter *adapter)
u32 manc2h = rd32(E1000_MANC2H); u32 manc2h = rd32(E1000_MANC2H);
u32 manc = rd32(E1000_MANC); u32 manc = rd32(E1000_MANC);
/* disable hardware interception of ARP */
manc &= ~(E1000_MANC_ARP_EN);
/* enable receiving management packets to the host */ /* enable receiving management packets to the host */
/* this will probably generate destination unreachable messages /* this will probably generate destination unreachable messages
* from the host OS, but the packets will be handled on SMBUS */ * from the host OS, but the packets will be handled on SMBUS */
...@@ -623,25 +620,6 @@ static void igb_init_manageability(struct igb_adapter *adapter) ...@@ -623,25 +620,6 @@ static void igb_init_manageability(struct igb_adapter *adapter)
} }
} }
static void igb_release_manageability(struct igb_adapter *adapter)
{
struct e1000_hw *hw = &adapter->hw;
if (adapter->en_mng_pt) {
u32 manc = rd32(E1000_MANC);
/* re-enable hardware interception of ARP */
manc |= E1000_MANC_ARP_EN;
manc &= ~E1000_MANC_EN_MNG2HOST;
/* don't explicitly have to mess with MANC2H since
* MANC has an enable disable that gates MANC2H */
/* XXX stop the hardware watchdog ? */
wr32(E1000_MANC, manc);
}
}
/** /**
* igb_configure - configure the hardware for RX and TX * igb_configure - configure the hardware for RX and TX
* @adapter: private board structure * @adapter: private board structure
...@@ -844,7 +822,6 @@ void igb_reset(struct igb_adapter *adapter) ...@@ -844,7 +822,6 @@ void igb_reset(struct igb_adapter *adapter)
igb_reset_adaptive(&adapter->hw); igb_reset_adaptive(&adapter->hw);
adapter->hw.phy.ops.get_phy_info(&adapter->hw); adapter->hw.phy.ops.get_phy_info(&adapter->hw);
igb_release_manageability(adapter);
} }
/** /**
...@@ -1178,9 +1155,6 @@ static void __devexit igb_remove(struct pci_dev *pdev) ...@@ -1178,9 +1155,6 @@ static void __devexit igb_remove(struct pci_dev *pdev)
flush_scheduled_work(); flush_scheduled_work();
igb_release_manageability(adapter);
/* Release control of h/w to f/w. If f/w is AMT enabled, this /* Release control of h/w to f/w. If f/w is AMT enabled, this
* would have already happened in close and is redundant. */ * would have already happened in close and is redundant. */
igb_release_hw_control(adapter); igb_release_hw_control(adapter);
...@@ -3955,8 +3929,6 @@ static int igb_suspend(struct pci_dev *pdev, pm_message_t state) ...@@ -3955,8 +3929,6 @@ static int igb_suspend(struct pci_dev *pdev, pm_message_t state)
pci_enable_wake(pdev, PCI_D3cold, 0); pci_enable_wake(pdev, PCI_D3cold, 0);
} }
igb_release_manageability(adapter);
/* make sure adapter isn't asleep if manageability is enabled */ /* make sure adapter isn't asleep if manageability is enabled */
if (adapter->en_mng_pt) { if (adapter->en_mng_pt) {
pci_enable_wake(pdev, PCI_D3hot, 1); pci_enable_wake(pdev, PCI_D3hot, 1);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册