]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/e1000/e1000_main.c
e1000: Add device IDs of blade version of the 82571 quad port
[linux-2.6-omap-h63xx.git] / drivers / net / e1000 / e1000_main.c
index 49be393e1c1dc5acf40ae88c7ebc5b6bbf9f2ebf..e7c8951f47fa94d3e0fae7551f5e6d84ef16676a 100644 (file)
@@ -100,6 +100,7 @@ static struct pci_device_id e1000_pci_tbl[] = {
        INTEL_E1000_ETHERNET_DEVICE(0x1099),
        INTEL_E1000_ETHERNET_DEVICE(0x109A),
        INTEL_E1000_ETHERNET_DEVICE(0x10A4),
+       INTEL_E1000_ETHERNET_DEVICE(0x10A5),
        INTEL_E1000_ETHERNET_DEVICE(0x10B5),
        INTEL_E1000_ETHERNET_DEVICE(0x10B9),
        INTEL_E1000_ETHERNET_DEVICE(0x10BA),
@@ -107,6 +108,9 @@ static struct pci_device_id e1000_pci_tbl[] = {
        INTEL_E1000_ETHERNET_DEVICE(0x10BC),
        INTEL_E1000_ETHERNET_DEVICE(0x10C4),
        INTEL_E1000_ETHERNET_DEVICE(0x10C5),
+       INTEL_E1000_ETHERNET_DEVICE(0x10D5),
+       INTEL_E1000_ETHERNET_DEVICE(0x10D9),
+       INTEL_E1000_ETHERNET_DEVICE(0x10DA),
        /* required last entry */
        {0,}
 };
@@ -1096,7 +1100,9 @@ e1000_probe(struct pci_dev *pdev,
                break;
        case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3:
        case E1000_DEV_ID_82571EB_QUAD_COPPER:
+       case E1000_DEV_ID_82571EB_QUAD_FIBER:
        case E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE:
+       case E1000_DEV_ID_82571PT_QUAD_COPPER:
                /* if quad port adapter, disable WoL on all but port A */
                if (global_quad_port_a != 0)
                        adapter->eeprom_wol = 0;
@@ -1142,13 +1148,16 @@ e1000_probe(struct pci_dev *pdev,
            !e1000_check_mng_mode(&adapter->hw))
                e1000_get_hw_control(adapter);
 
-       strcpy(netdev->name, "eth%d");
-       if ((err = register_netdev(netdev)))
-               goto err_register;
-
        /* tell the stack to leave us alone until e1000_open() is called */
        netif_carrier_off(netdev);
        netif_stop_queue(netdev);
+#ifdef CONFIG_E1000_NAPI
+       netif_poll_disable(netdev);
+#endif
+
+       strcpy(netdev->name, "eth%d");
+       if ((err = register_netdev(netdev)))
+               goto err_register;
 
        DPRINTK(PROBE, INFO, "Intel(R) PRO/1000 Network Connection\n");
 
@@ -1263,8 +1272,7 @@ e1000_sw_init(struct e1000_adapter *adapter)
        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);
+       hw->revision_id = pdev->revision;
 
        pci_read_config_word(pdev, PCI_COMMAND, &hw->pci_cmd_word);
 
@@ -1325,7 +1333,10 @@ e1000_sw_init(struct e1000_adapter *adapter)
        spin_lock_init(&adapter->tx_queue_lock);
 #endif
 
-       atomic_set(&adapter->irq_sem, 1);
+       /* Explicitly disable IRQ since the NIC can be in any state. */
+       atomic_set(&adapter->irq_sem, 0);
+       e1000_irq_disable(adapter);
+
        spin_lock_init(&adapter->stats_lock);
 
        set_bit(__E1000_DOWN, &adapter->flags);