]> git.hungrycats.org Git - linux/commitdiff
e1000 net driver minor fixes/cleanups:
authorJeb J. Cramer <jeb.j.cramer@intel.com>
Fri, 11 Oct 2002 07:57:59 +0000 (03:57 -0400)
committerJeff Garzik <jgarzik@mandrakesoft.com>
Fri, 11 Oct 2002 07:57:59 +0000 (03:57 -0400)
* don't read PCI bus for values stored in struct pci_dev
* remove silly BUG() in e1000_sw_init, and
* return error from e1000_sw_init

drivers/net/e1000/e1000_main.c

index ed1826de999b2e950f33a41eabbf8cc69b9b06ff..e6a6409dd31ad79ff0a7f8ce7390d7b8e7187694 100644 (file)
@@ -135,7 +135,7 @@ static int e1000_init_module(void);
 static void e1000_exit_module(void);
 static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
 static void e1000_remove(struct pci_dev *pdev);
-static void e1000_sw_init(struct e1000_adapter *adapter);
+static int e1000_sw_init(struct e1000_adapter *adapter);
 static int e1000_open(struct net_device *netdev);
 static int e1000_close(struct net_device *netdev);
 static int e1000_setup_tx_resources(struct e1000_adapter *adapter);
@@ -415,7 +415,8 @@ e1000_probe(struct pci_dev *pdev,
 
        /* setup the private structure */
 
-       e1000_sw_init(adapter);
+       if(e1000_sw_init(adapter))
+               goto err_sw_init;
 
        if(adapter->hw.mac_type >= e1000_82543) {
                netdev->features = NETIF_F_SG |
@@ -500,6 +501,7 @@ e1000_probe(struct pci_dev *pdev,
        cards_found++;
        return 0;
 
+err_sw_init:
 err_eeprom:
        iounmap(adapter->hw.hw_addr);
 err_ioremap:
@@ -555,7 +557,7 @@ e1000_remove(struct pci_dev *pdev)
  * OS network device settings (MTU size).
  **/
 
-static void __devinit
+static int __devinit
 e1000_sw_init(struct e1000_adapter *adapter)
 {
        struct e1000_hw *hw = &adapter->hw;
@@ -564,11 +566,11 @@ e1000_sw_init(struct e1000_adapter *adapter)
 
        /* PCI config space info */
 
-       pci_read_config_word(pdev, PCI_VENDOR_ID, &hw->vendor_id);
-       pci_read_config_word(pdev, PCI_DEVICE_ID, &hw->device_id);
-       pci_read_config_word(pdev, PCI_SUBSYSTEM_VENDOR_ID, 
-                            &hw->subsystem_vendor_id);
-       pci_read_config_word(pdev, PCI_SUBSYSTEM_ID, &hw->subsystem_id);
+       hw->vendor_id = pdev->vendor;
+       hw->device_id = pdev->device;
+       hw->subsystem_vendor_id = pdev->subsystem_vendor;
+       hw->subsystem_id = pdev->subsystem_device;
+
        pci_read_config_byte(pdev, PCI_REVISION_ID, &hw->revision_id);
        pci_read_config_word(pdev, PCI_COMMAND, &hw->pci_cmd_word);
 
@@ -581,7 +583,7 @@ e1000_sw_init(struct e1000_adapter *adapter)
 
        if (e1000_set_mac_type(hw)) {
                E1000_ERR("Unknown MAC Type\n");
-               BUG();
+               return -1;
        }
 
        /* flow control settings */
@@ -622,6 +624,8 @@ e1000_sw_init(struct e1000_adapter *adapter)
 
        atomic_set(&adapter->irq_sem, 1);
        spin_lock_init(&adapter->stats_lock);
+
+       return 0;
 }
 
 /**