Merge branch 'upstream-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/linvil...
[pandora-kernel.git] / drivers / net / netxen / netxen_nic_main.c
index 69c1b9d..1bf3d49 100644 (file)
@@ -434,12 +434,13 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
                adapter->port_count++;
                adapter->port[i] = port;
        }
-
+#ifndef CONFIG_PPC64
        writel(0, NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE));
        netxen_pinit_from_rom(adapter, 0);
        udelay(500);
        netxen_load_firmware(adapter);
        netxen_phantom_init(adapter, NETXEN_NIC_PEG_TUNE);
+#endif
        /*
         * delay a while to ensure that the Pegs are up & running.
         * Otherwise, we might see some flaky behaviour.
@@ -524,6 +525,8 @@ static void __devexit netxen_nic_remove(struct pci_dev *pdev)
        if (adapter == NULL)
                return;
 
+       if (adapter->irq)
+               free_irq(adapter->irq, adapter);
        netxen_nic_stop_all_ports(adapter);
        /* leave the hw in the same state as reboot */
        netxen_pinit_from_rom(adapter, 0);
@@ -619,8 +622,8 @@ static int netxen_nic_open(struct net_device *netdev)
                }
                adapter->irq = adapter->ahw.pdev->irq;
                err = request_irq(adapter->ahw.pdev->irq, &netxen_intr,
-                                 SA_SHIRQ | SA_SAMPLE_RANDOM, netdev->name,
-                                 adapter);
+                                 IRQF_SHARED | IRQF_SAMPLE_RANDOM,
+                                 netdev->name, adapter);
                if (err) {
                        printk(KERN_ERR "request_irq failed with: %d\n", err);
                        netxen_free_hw_resources(adapter);
@@ -671,8 +674,6 @@ static int netxen_nic_close(struct net_device *netdev)
 
        if (!adapter->active_ports) {
                netxen_nic_disable_int(adapter);
-               if (adapter->irq)
-                       free_irq(adapter->irq, adapter);
                cmd_buff = adapter->cmd_buf_arr;
                for (i = 0; i < adapter->max_tx_desc_count; i++) {
                        buffrag = cmd_buff->frag_array;
@@ -1154,8 +1155,8 @@ static void __exit netxen_exit_module(void)
        /*
         * Wait for some time to allow the dma to drain, if any.
         */
-       destroy_workqueue(netxen_workq);
        pci_unregister_driver(&netxen_driver);
+       destroy_workqueue(netxen_workq);
 }
 
 module_exit(netxen_exit_module);