]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/net/vmxnet3/vmxnet3_drv.c
net-next: vmxnet3 fixes [5/5] Respect the interrupt type in VM configuration
[net-next-2.6.git] / drivers / net / vmxnet3 / vmxnet3_drv.c
index 3b55fbd1294d8526cde05c19ecc0d1dc0c33b9a3..9d64186050f3373505f275e7bde9f67eb3429f37 100644 (file)
@@ -2302,9 +2302,13 @@ vmxnet3_alloc_intr_resources(struct vmxnet3_adapter *adapter)
        adapter->intr.mask_mode = (cfg >> 2) & 0x3;
 
        if (adapter->intr.type == VMXNET3_IT_AUTO) {
-               int err;
+               adapter->intr.type = VMXNET3_IT_MSIX;
+       }
 
 #ifdef CONFIG_PCI_MSI
+       if (adapter->intr.type == VMXNET3_IT_MSIX) {
+               int err;
+
                adapter->intr.msix_entries[0].entry = 0;
                err = pci_enable_msix(adapter->pdev, adapter->intr.msix_entries,
                                      VMXNET3_LINUX_MAX_MSIX_VECT);
@@ -2313,15 +2317,18 @@ vmxnet3_alloc_intr_resources(struct vmxnet3_adapter *adapter)
                        adapter->intr.type = VMXNET3_IT_MSIX;
                        return;
                }
-#endif
+               adapter->intr.type = VMXNET3_IT_MSI;
+       }
 
+       if (adapter->intr.type == VMXNET3_IT_MSI) {
+               int err;
                err = pci_enable_msi(adapter->pdev);
                if (!err) {
                        adapter->intr.num_intrs = 1;
-                       adapter->intr.type = VMXNET3_IT_MSI;
                        return;
                }
        }
+#endif /* CONFIG_PCI_MSI */
 
        adapter->intr.type = VMXNET3_IT_INTX;