Skip to content

Commit

Permalink
e1000e: fix drv load issues
Browse files Browse the repository at this point in the history
a few people seem to have problems maintaining gigabit link
and it was root caused to an interaction between the managability
firmware on the host and the driver, not communicating.

The form of communication they use is the drv_load bit.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
  • Loading branch information
Jesse Brandeburg authored and Jeff Garzik committed Aug 7, 2008
1 parent 10aa4c0 commit c43bc57
Showing 1 changed file with 12 additions and 16 deletions.
28 changes: 12 additions & 16 deletions drivers/net/e1000e/netdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -2444,7 +2444,7 @@ void e1000e_reset(struct e1000_adapter *adapter)
* For parts with AMT enabled, let the firmware know
* that the network interface is in control
*/
if ((adapter->flags & FLAG_HAS_AMT) && e1000e_check_mng_mode(hw))
if (adapter->flags & FLAG_HAS_AMT)
e1000_get_hw_control(adapter);

ew32(WUC, 0);
Expand Down Expand Up @@ -2634,8 +2634,7 @@ static int e1000_open(struct net_device *netdev)
* If AMT is enabled, let the firmware know that the network
* interface is now open
*/
if ((adapter->flags & FLAG_HAS_AMT) &&
e1000e_check_mng_mode(&adapter->hw))
if (adapter->flags & FLAG_HAS_AMT)
e1000_get_hw_control(adapter);

/*
Expand Down Expand Up @@ -2713,8 +2712,7 @@ static int e1000_close(struct net_device *netdev)
* If AMT is enabled, let the firmware know that the network
* interface is now closed
*/
if ((adapter->flags & FLAG_HAS_AMT) &&
e1000e_check_mng_mode(&adapter->hw))
if (adapter->flags & FLAG_HAS_AMT)
e1000_release_hw_control(adapter);

return 0;
Expand Down Expand Up @@ -4030,7 +4028,7 @@ static int e1000_resume(struct pci_dev *pdev)
* is up. For all other cases, let the f/w know that the h/w is now
* under the control of the driver.
*/
if (!(adapter->flags & FLAG_HAS_AMT) || !e1000e_check_mng_mode(&adapter->hw))
if (!(adapter->flags & FLAG_HAS_AMT))
e1000_get_hw_control(adapter);

return 0;
Expand Down Expand Up @@ -4149,8 +4147,7 @@ static void e1000_io_resume(struct pci_dev *pdev)
* is up. For all other cases, let the f/w know that the h/w is now
* under the control of the driver.
*/
if (!(adapter->flags & FLAG_HAS_AMT) ||
!e1000e_check_mng_mode(&adapter->hw))
if (!(adapter->flags & FLAG_HAS_AMT))
e1000_get_hw_control(adapter);

}
Expand Down Expand Up @@ -4505,8 +4502,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
* is up. For all other cases, let the f/w know that the h/w is now
* under the control of the driver.
*/
if (!(adapter->flags & FLAG_HAS_AMT) ||
!e1000e_check_mng_mode(&adapter->hw))
if (!(adapter->flags & FLAG_HAS_AMT))
e1000_get_hw_control(adapter);

/* tell the stack to leave us alone until e1000_open() is called */
Expand All @@ -4523,19 +4519,19 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
return 0;

err_register:
err_hw_init:
e1000_release_hw_control(adapter);
if (!(adapter->flags & FLAG_HAS_AMT))
e1000_release_hw_control(adapter);
err_eeprom:
if (!e1000_check_reset_block(&adapter->hw))
e1000_phy_hw_reset(&adapter->hw);
err_hw_init:

if (adapter->hw.flash_address)
iounmap(adapter->hw.flash_address);

err_flashmap:
kfree(adapter->tx_ring);
kfree(adapter->rx_ring);
err_sw_init:
if (adapter->hw.flash_address)
iounmap(adapter->hw.flash_address);
err_flashmap:
iounmap(adapter->hw.hw_addr);
err_ioremap:
free_netdev(netdev);
Expand Down

0 comments on commit c43bc57

Please sign in to comment.