cxgb4: move the choice of interrupt type before net_device registration
authorDimitris Michailidis <dm@chelsio.com>
Sun, 11 Jul 2010 12:01:15 +0000 (12:01 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 12 Jul 2010 00:07:45 +0000 (17:07 -0700)
We need to settle on the kind of interrupts we'll be using, a choice that
also impacts the number of queues, before registering and making visible
the net_devices.  Move the relevant code up a bit.

Signed-off-by: Dimitris Michailidis <dm@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/cxgb4/cxgb4_main.c

index 2619997..743dc6f 100644 (file)
@@ -3507,6 +3507,12 @@ static int __devinit init_one(struct pci_dev *pdev,
                adapter->params.offload = 0;
        }
 
+       /* See what interrupts we'll be using */
+       if (msi > 1 && enable_msix(adapter) == 0)
+               adapter->flags |= USING_MSIX;
+       else if (msi > 0 && pci_enable_msi(pdev) == 0)
+               adapter->flags |= USING_MSI;
+
        /*
         * The card is now ready to go.  If any errors occur during device
         * registration we do not fail the whole card but rather proceed only
@@ -3542,12 +3548,6 @@ static int __devinit init_one(struct pci_dev *pdev,
                setup_debugfs(adapter);
        }
 
-       /* See what interrupts we'll be using */
-       if (msi > 1 && enable_msix(adapter) == 0)
-               adapter->flags |= USING_MSIX;
-       else if (msi > 0 && pci_enable_msi(pdev) == 0)
-               adapter->flags |= USING_MSI;
-
        if (is_offload(adapter))
                attach_ulds(adapter);
 
@@ -3571,6 +3571,7 @@ sriov:
                        free_netdev(adapter->port[i]);
        if (adapter->flags & FW_OK)
                t4_fw_bye(adapter, 0);
+       disable_msi(adapter);
  out_unmap_bar:
        iounmap(adapter->regs);
  out_free_adapter: