diff options
author | Stephen Hemminger <shemminger@linux-foundation.org> | 2008-01-10 19:14:13 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2008-01-12 17:49:10 -0500 |
commit | 84cd2dfb04d23a961c5f537baa243fa54d0987ac (patch) | |
tree | 431af8150d569fd58f22547d500db6595ff2697c /drivers/net | |
parent | 86c6887e6fea0b395dc939174ac80ad0ae88288c (diff) |
sky2: remove check for PCI wakeup setting from BIOS
The driver checks status of PCI power management to mark
default setting of Wake On Lan. On some systems this works, but often
it reports a that WOL is disabled when it isn't.
This patch gets rid of that check and just reports the wake on
lan status based on the hardware capablity.
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/sky2.c | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index bc15940ce1bc..7023bbe545ee 100644 --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c | |||
@@ -3949,7 +3949,7 @@ static __exit void sky2_debug_cleanup(void) | |||
3949 | /* Initialize network device */ | 3949 | /* Initialize network device */ |
3950 | static __devinit struct net_device *sky2_init_netdev(struct sky2_hw *hw, | 3950 | static __devinit struct net_device *sky2_init_netdev(struct sky2_hw *hw, |
3951 | unsigned port, | 3951 | unsigned port, |
3952 | int highmem, int wol) | 3952 | int highmem) |
3953 | { | 3953 | { |
3954 | struct sky2_port *sky2; | 3954 | struct sky2_port *sky2; |
3955 | struct net_device *dev = alloc_etherdev(sizeof(*sky2)); | 3955 | struct net_device *dev = alloc_etherdev(sizeof(*sky2)); |
@@ -3989,7 +3989,7 @@ static __devinit struct net_device *sky2_init_netdev(struct sky2_hw *hw, | |||
3989 | sky2->speed = -1; | 3989 | sky2->speed = -1; |
3990 | sky2->advertising = sky2_supported_modes(hw); | 3990 | sky2->advertising = sky2_supported_modes(hw); |
3991 | sky2->rx_csum = (hw->chip_id != CHIP_ID_YUKON_XL); | 3991 | sky2->rx_csum = (hw->chip_id != CHIP_ID_YUKON_XL); |
3992 | sky2->wol = wol; | 3992 | sky2->wol = sky2_wol_supported(hw) & WAKE_MAGIC; |
3993 | 3993 | ||
3994 | spin_lock_init(&sky2->phy_lock); | 3994 | spin_lock_init(&sky2->phy_lock); |
3995 | sky2->tx_pending = TX_DEF_PENDING; | 3995 | sky2->tx_pending = TX_DEF_PENDING; |
@@ -4086,24 +4086,12 @@ static int __devinit sky2_test_msi(struct sky2_hw *hw) | |||
4086 | return err; | 4086 | return err; |
4087 | } | 4087 | } |
4088 | 4088 | ||
4089 | static int __devinit pci_wake_enabled(struct pci_dev *dev) | ||
4090 | { | ||
4091 | int pm = pci_find_capability(dev, PCI_CAP_ID_PM); | ||
4092 | u16 value; | ||
4093 | |||
4094 | if (!pm) | ||
4095 | return 0; | ||
4096 | if (pci_read_config_word(dev, pm + PCI_PM_CTRL, &value)) | ||
4097 | return 0; | ||
4098 | return value & PCI_PM_CTRL_PME_ENABLE; | ||
4099 | } | ||
4100 | |||
4101 | static int __devinit sky2_probe(struct pci_dev *pdev, | 4089 | static int __devinit sky2_probe(struct pci_dev *pdev, |
4102 | const struct pci_device_id *ent) | 4090 | const struct pci_device_id *ent) |
4103 | { | 4091 | { |
4104 | struct net_device *dev; | 4092 | struct net_device *dev; |
4105 | struct sky2_hw *hw; | 4093 | struct sky2_hw *hw; |
4106 | int err, using_dac = 0, wol_default; | 4094 | int err, using_dac = 0; |
4107 | 4095 | ||
4108 | err = pci_enable_device(pdev); | 4096 | err = pci_enable_device(pdev); |
4109 | if (err) { | 4097 | if (err) { |
@@ -4136,8 +4124,6 @@ static int __devinit sky2_probe(struct pci_dev *pdev, | |||
4136 | } | 4124 | } |
4137 | } | 4125 | } |
4138 | 4126 | ||
4139 | wol_default = pci_wake_enabled(pdev) ? WAKE_MAGIC : 0; | ||
4140 | |||
4141 | err = -ENOMEM; | 4127 | err = -ENOMEM; |
4142 | hw = kzalloc(sizeof(*hw), GFP_KERNEL); | 4128 | hw = kzalloc(sizeof(*hw), GFP_KERNEL); |
4143 | if (!hw) { | 4129 | if (!hw) { |
@@ -4181,7 +4167,7 @@ static int __devinit sky2_probe(struct pci_dev *pdev, | |||
4181 | 4167 | ||
4182 | sky2_reset(hw); | 4168 | sky2_reset(hw); |
4183 | 4169 | ||
4184 | dev = sky2_init_netdev(hw, 0, using_dac, wol_default); | 4170 | dev = sky2_init_netdev(hw, 0, using_dac); |
4185 | if (!dev) { | 4171 | if (!dev) { |
4186 | err = -ENOMEM; | 4172 | err = -ENOMEM; |
4187 | goto err_out_free_pci; | 4173 | goto err_out_free_pci; |
@@ -4218,7 +4204,7 @@ static int __devinit sky2_probe(struct pci_dev *pdev, | |||
4218 | if (hw->ports > 1) { | 4204 | if (hw->ports > 1) { |
4219 | struct net_device *dev1; | 4205 | struct net_device *dev1; |
4220 | 4206 | ||
4221 | dev1 = sky2_init_netdev(hw, 1, using_dac, wol_default); | 4207 | dev1 = sky2_init_netdev(hw, 1, using_dac); |
4222 | if (!dev1) | 4208 | if (!dev1) |
4223 | dev_warn(&pdev->dev, "allocation for second device failed\n"); | 4209 | dev_warn(&pdev->dev, "allocation for second device failed\n"); |
4224 | else if ((err = register_netdev(dev1))) { | 4210 | else if ((err = register_netdev(dev1))) { |