diff options
| -rw-r--r-- | drivers/net/Kconfig | 2 | ||||
| -rw-r--r-- | drivers/net/vmxnet3/vmxnet3_drv.c | 11 |
2 files changed, 11 insertions, 2 deletions
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index ce2eba173865..e19ca4bb7510 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig | |||
| @@ -3235,7 +3235,7 @@ config VIRTIO_NET | |||
| 3235 | 3235 | ||
| 3236 | config VMXNET3 | 3236 | config VMXNET3 |
| 3237 | tristate "VMware VMXNET3 ethernet driver" | 3237 | tristate "VMware VMXNET3 ethernet driver" |
| 3238 | depends on PCI && X86 | 3238 | depends on PCI && X86 && INET |
| 3239 | help | 3239 | help |
| 3240 | This driver supports VMware's vmxnet3 virtual ethernet NIC. | 3240 | This driver supports VMware's vmxnet3 virtual ethernet NIC. |
| 3241 | To compile this driver as a module, choose M here: the | 3241 | To compile this driver as a module, choose M here: the |
diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c index 44fb0c5a2800..6a16f76f277e 100644 --- a/drivers/net/vmxnet3/vmxnet3_drv.c +++ b/drivers/net/vmxnet3/vmxnet3_drv.c | |||
| @@ -1314,9 +1314,11 @@ vmxnet3_netpoll(struct net_device *netdev) | |||
| 1314 | struct vmxnet3_adapter *adapter = netdev_priv(netdev); | 1314 | struct vmxnet3_adapter *adapter = netdev_priv(netdev); |
| 1315 | int irq; | 1315 | int irq; |
| 1316 | 1316 | ||
| 1317 | #ifdef CONFIG_PCI_MSI | ||
| 1317 | if (adapter->intr.type == VMXNET3_IT_MSIX) | 1318 | if (adapter->intr.type == VMXNET3_IT_MSIX) |
| 1318 | irq = adapter->intr.msix_entries[0].vector; | 1319 | irq = adapter->intr.msix_entries[0].vector; |
| 1319 | else | 1320 | else |
| 1321 | #endif | ||
| 1320 | irq = adapter->pdev->irq; | 1322 | irq = adapter->pdev->irq; |
| 1321 | 1323 | ||
| 1322 | disable_irq(irq); | 1324 | disable_irq(irq); |
| @@ -1330,12 +1332,15 @@ vmxnet3_request_irqs(struct vmxnet3_adapter *adapter) | |||
| 1330 | { | 1332 | { |
| 1331 | int err; | 1333 | int err; |
| 1332 | 1334 | ||
| 1335 | #ifdef CONFIG_PCI_MSI | ||
| 1333 | if (adapter->intr.type == VMXNET3_IT_MSIX) { | 1336 | if (adapter->intr.type == VMXNET3_IT_MSIX) { |
| 1334 | /* we only use 1 MSI-X vector */ | 1337 | /* we only use 1 MSI-X vector */ |
| 1335 | err = request_irq(adapter->intr.msix_entries[0].vector, | 1338 | err = request_irq(adapter->intr.msix_entries[0].vector, |
| 1336 | vmxnet3_intr, 0, adapter->netdev->name, | 1339 | vmxnet3_intr, 0, adapter->netdev->name, |
| 1337 | adapter->netdev); | 1340 | adapter->netdev); |
| 1338 | } else if (adapter->intr.type == VMXNET3_IT_MSI) { | 1341 | } else |
| 1342 | #endif | ||
| 1343 | if (adapter->intr.type == VMXNET3_IT_MSI) { | ||
| 1339 | err = request_irq(adapter->pdev->irq, vmxnet3_intr, 0, | 1344 | err = request_irq(adapter->pdev->irq, vmxnet3_intr, 0, |
| 1340 | adapter->netdev->name, adapter->netdev); | 1345 | adapter->netdev->name, adapter->netdev); |
| 1341 | } else { | 1346 | } else { |
| @@ -1376,6 +1381,7 @@ vmxnet3_free_irqs(struct vmxnet3_adapter *adapter) | |||
| 1376 | adapter->intr.num_intrs <= 0); | 1381 | adapter->intr.num_intrs <= 0); |
| 1377 | 1382 | ||
| 1378 | switch (adapter->intr.type) { | 1383 | switch (adapter->intr.type) { |
| 1384 | #ifdef CONFIG_PCI_MSI | ||
| 1379 | case VMXNET3_IT_MSIX: | 1385 | case VMXNET3_IT_MSIX: |
| 1380 | { | 1386 | { |
| 1381 | int i; | 1387 | int i; |
| @@ -1385,6 +1391,7 @@ vmxnet3_free_irqs(struct vmxnet3_adapter *adapter) | |||
| 1385 | adapter->netdev); | 1391 | adapter->netdev); |
| 1386 | break; | 1392 | break; |
| 1387 | } | 1393 | } |
| 1394 | #endif | ||
| 1388 | case VMXNET3_IT_MSI: | 1395 | case VMXNET3_IT_MSI: |
| 1389 | free_irq(adapter->pdev->irq, adapter->netdev); | 1396 | free_irq(adapter->pdev->irq, adapter->netdev); |
| 1390 | break; | 1397 | break; |
| @@ -2134,6 +2141,7 @@ vmxnet3_alloc_intr_resources(struct vmxnet3_adapter *adapter) | |||
| 2134 | if (adapter->intr.type == VMXNET3_IT_AUTO) { | 2141 | if (adapter->intr.type == VMXNET3_IT_AUTO) { |
| 2135 | int err; | 2142 | int err; |
| 2136 | 2143 | ||
| 2144 | #ifdef CONFIG_PCI_MSI | ||
| 2137 | adapter->intr.msix_entries[0].entry = 0; | 2145 | adapter->intr.msix_entries[0].entry = 0; |
| 2138 | err = pci_enable_msix(adapter->pdev, adapter->intr.msix_entries, | 2146 | err = pci_enable_msix(adapter->pdev, adapter->intr.msix_entries, |
| 2139 | VMXNET3_LINUX_MAX_MSIX_VECT); | 2147 | VMXNET3_LINUX_MAX_MSIX_VECT); |
| @@ -2142,6 +2150,7 @@ vmxnet3_alloc_intr_resources(struct vmxnet3_adapter *adapter) | |||
| 2142 | adapter->intr.type = VMXNET3_IT_MSIX; | 2150 | adapter->intr.type = VMXNET3_IT_MSIX; |
| 2143 | return; | 2151 | return; |
| 2144 | } | 2152 | } |
| 2153 | #endif | ||
| 2145 | 2154 | ||
| 2146 | err = pci_enable_msi(adapter->pdev); | 2155 | err = pci_enable_msi(adapter->pdev); |
| 2147 | if (!err) { | 2156 | if (!err) { |
