upgrade to linux 2.6.10-1.12_FC2
[linux-2.6.git] / drivers / net / e1000 / e1000_main.c
index 1b82892..92ca2d3 100644 (file)
@@ -48,7 +48,7 @@ char e1000_driver_string[] = "Intel(R) PRO/1000 Network Driver";
 #else
 #define DRIVERNAPI "-NAPI"
 #endif
-#define DRV_VERSION "5.3.19-k2"DRIVERNAPI
+#define DRV_VERSION "5.5.4-k2"DRIVERNAPI;
 char e1000_driver_version[] = DRV_VERSION;
 char e1000_copyright[] = "Copyright (c) 1999-2004 Intel Corporation.";
 
@@ -313,7 +313,8 @@ e1000_down(struct e1000_adapter *adapter)
 void
 e1000_reset(struct e1000_adapter *adapter)
 {
-       uint32_t pba, manc;
+       uint32_t pba;
+
        /* Repartition Pba for greater than 9k mtu
         * To take effect CTRL.RST is required.
         */
@@ -356,12 +357,6 @@ e1000_reset(struct e1000_adapter *adapter)
 
        e1000_reset_adaptive(&adapter->hw);
        e1000_phy_get_info(&adapter->hw, &adapter->phy_info);
-
-       if(adapter->en_mng_pt) {
-               manc = E1000_READ_REG(&adapter->hw, MANC);
-               manc |= (E1000_MANC_ARP_EN | E1000_MANC_EN_MNG2HOST);
-               E1000_WRITE_REG(&adapter->hw, MANC, manc);
-       }
 }
 
 /**
@@ -424,11 +419,6 @@ e1000_probe(struct pci_dev *pdev,
        adapter->hw.back = adapter;
        adapter->msg_enable = (1 << debug) - 1;
 
-       rtnl_lock();
-       /* we need to set the name early for the DPRINTK macro */
-       if(dev_alloc_name(netdev, netdev->name) < 0)
-               goto err_free_unlock;
-
        mmio_start = pci_resource_start(pdev, BAR_0);
        mmio_len = pci_resource_len(pdev, BAR_0);
 
@@ -468,6 +458,7 @@ e1000_probe(struct pci_dev *pdev,
 #ifdef CONFIG_NET_POLL_CONTROLLER
        netdev->poll_controller = e1000_netpoll;
 #endif
+       strcpy(netdev->name, pci_name(pdev));
 
        netdev->mem_start = mmio_start;
        netdev->mem_end = mmio_start + mmio_len;
@@ -504,8 +495,6 @@ e1000_probe(struct pci_dev *pdev,
        /* hard_start_xmit is safe against parallel locking */
        netdev->features |= NETIF_F_LLTX; 
  
-       adapter->en_mng_pt = e1000_enable_mng_pass_thru(&adapter->hw);
-
        /* before reading the EEPROM, reset the controller to 
         * put the device in a known good starting state */
        
@@ -555,7 +544,6 @@ e1000_probe(struct pci_dev *pdev,
        netif_carrier_off(netdev);
        netif_stop_queue(netdev);
 
-       DPRINTK(PROBE, INFO, "Intel(R) PRO/1000 Network Connection\n");
        e1000_check_options(adapter);
 
        /* Initial Wake on LAN setting
@@ -588,12 +576,13 @@ e1000_probe(struct pci_dev *pdev,
        /* reset the hardware with the new settings */
        e1000_reset(adapter);
 
-       /* We're already holding the rtnl lock; call the no-lock version */
-       if((err = register_netdevice(netdev)))
+       strcpy(netdev->name, "eth%d");
+       if((err = register_netdev(netdev)))
                goto err_register;
 
+       DPRINTK(PROBE, INFO, "Intel(R) PRO/1000 Network Connection\n");
+
        cards_found++;
-       rtnl_unlock();
        return 0;
 
 err_register:
@@ -601,8 +590,6 @@ err_sw_init:
 err_eeprom:
        iounmap(adapter->hw.hw_addr);
 err_ioremap:
-err_free_unlock:
-       rtnl_unlock();
        free_netdev(netdev);
 err_alloc_etherdev:
        pci_release_regions(pdev);
@@ -643,6 +630,8 @@ e1000_remove(struct pci_dev *pdev)
        pci_release_regions(pdev);
 
        free_netdev(netdev);
+
+       pci_disable_device(pdev);
 }
 
 /**
@@ -2447,8 +2436,8 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter)
                if(unlikely(adapter->vlgrp &&
                            (rx_desc->status & E1000_RXD_STAT_VP))) {
                        vlan_hwaccel_receive_skb(skb, adapter->vlgrp,
-                                                le16_to_cpu(rx_desc->special &
-                                                E1000_RXD_SPC_VLAN_MASK));
+                                       le16_to_cpu(rx_desc->special) &
+                                       E1000_RXD_SPC_VLAN_MASK);
                } else {
                        netif_receive_skb(skb);
                }
@@ -2456,8 +2445,8 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter)
                if(unlikely(adapter->vlgrp &&
                            (rx_desc->status & E1000_RXD_STAT_VP))) {
                        vlan_hwaccel_rx(skb, adapter->vlgrp,
-                                       le16_to_cpu(rx_desc->special &
-                                       E1000_RXD_SPC_VLAN_MASK));
+                                       le16_to_cpu(rx_desc->special) &
+                                       E1000_RXD_SPC_VLAN_MASK);
                } else {
                        netif_rx(skb);
                }
@@ -3020,7 +3009,7 @@ e1000_suspend(struct pci_dev *pdev, uint32_t state)
                pci_enable_wake(pdev, 4, 0); /* 4 == D3 cold */
        }
 
-       pci_save_state(pdev, adapter->pci_state);
+       pci_save_state(pdev);
 
        if(adapter->hw.mac_type >= e1000_82540 &&
           adapter->hw.media_type == e1000_media_type_copper) {
@@ -3047,11 +3036,13 @@ e1000_resume(struct pci_dev *pdev)
 {
        struct net_device *netdev = pci_get_drvdata(pdev);
        struct e1000_adapter *adapter = netdev->priv;
-       uint32_t manc;
+       uint32_t manc, ret;
 
-       pci_enable_device(pdev);
        pci_set_power_state(pdev, 0);
-       pci_restore_state(pdev, adapter->pci_state);
+       pci_restore_state(pdev);
+       ret = pci_enable_device(pdev);
+       if (pdev->is_busmaster)
+               pci_set_master(pdev);
 
        pci_enable_wake(pdev, 3, 0);
        pci_enable_wake(pdev, 4, 0); /* 4 == D3 cold */