summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/vmxnet3/vmxnet3_drv.c50
-rw-r--r--drivers/net/vmxnet3/vmxnet3_int.h8
2 files changed, 30 insertions, 28 deletions
diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c
index 9ebe2a689966..ed58685c353f 100644
--- a/drivers/net/vmxnet3/vmxnet3_drv.c
+++ b/drivers/net/vmxnet3/vmxnet3_drv.c
@@ -2688,7 +2688,7 @@ vmxnet3_set_mac_addr(struct net_device *netdev, void *p)
2688/* ==================== initialization and cleanup routines ============ */ 2688/* ==================== initialization and cleanup routines ============ */
2689 2689
2690static int 2690static int
2691vmxnet3_alloc_pci_resources(struct vmxnet3_adapter *adapter, bool *dma64) 2691vmxnet3_alloc_pci_resources(struct vmxnet3_adapter *adapter)
2692{ 2692{
2693 int err; 2693 int err;
2694 unsigned long mmio_start, mmio_len; 2694 unsigned long mmio_start, mmio_len;
@@ -2700,30 +2700,12 @@ vmxnet3_alloc_pci_resources(struct vmxnet3_adapter *adapter, bool *dma64)
2700 return err; 2700 return err;
2701 } 2701 }
2702 2702
2703 if (pci_set_dma_mask(pdev, DMA_BIT_MASK(64)) == 0) {
2704 if (pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)) != 0) {
2705 dev_err(&pdev->dev,
2706 "pci_set_consistent_dma_mask failed\n");
2707 err = -EIO;
2708 goto err_set_mask;
2709 }
2710 *dma64 = true;
2711 } else {
2712 if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32)) != 0) {
2713 dev_err(&pdev->dev,
2714 "pci_set_dma_mask failed\n");
2715 err = -EIO;
2716 goto err_set_mask;
2717 }
2718 *dma64 = false;
2719 }
2720
2721 err = pci_request_selected_regions(pdev, (1 << 2) - 1, 2703 err = pci_request_selected_regions(pdev, (1 << 2) - 1,
2722 vmxnet3_driver_name); 2704 vmxnet3_driver_name);
2723 if (err) { 2705 if (err) {
2724 dev_err(&pdev->dev, 2706 dev_err(&pdev->dev,
2725 "Failed to request region for adapter: error %d\n", err); 2707 "Failed to request region for adapter: error %d\n", err);
2726 goto err_set_mask; 2708 goto err_enable_device;
2727 } 2709 }
2728 2710
2729 pci_set_master(pdev); 2711 pci_set_master(pdev);
@@ -2751,7 +2733,7 @@ err_bar1:
2751 iounmap(adapter->hw_addr0); 2733 iounmap(adapter->hw_addr0);
2752err_ioremap: 2734err_ioremap:
2753 pci_release_selected_regions(pdev, (1 << 2) - 1); 2735 pci_release_selected_regions(pdev, (1 << 2) - 1);
2754err_set_mask: 2736err_enable_device:
2755 pci_disable_device(pdev); 2737 pci_disable_device(pdev);
2756 return err; 2738 return err;
2757} 2739}
@@ -3254,7 +3236,7 @@ vmxnet3_probe_device(struct pci_dev *pdev,
3254#endif 3236#endif
3255 }; 3237 };
3256 int err; 3238 int err;
3257 bool dma64 = false; /* stupid gcc */ 3239 bool dma64;
3258 u32 ver; 3240 u32 ver;
3259 struct net_device *netdev; 3241 struct net_device *netdev;
3260 struct vmxnet3_adapter *adapter; 3242 struct vmxnet3_adapter *adapter;
@@ -3300,6 +3282,24 @@ vmxnet3_probe_device(struct pci_dev *pdev,
3300 adapter->rx_ring_size = VMXNET3_DEF_RX_RING_SIZE; 3282 adapter->rx_ring_size = VMXNET3_DEF_RX_RING_SIZE;
3301 adapter->rx_ring2_size = VMXNET3_DEF_RX_RING2_SIZE; 3283 adapter->rx_ring2_size = VMXNET3_DEF_RX_RING2_SIZE;
3302 3284
3285 if (pci_set_dma_mask(pdev, DMA_BIT_MASK(64)) == 0) {
3286 if (pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)) != 0) {
3287 dev_err(&pdev->dev,
3288 "pci_set_consistent_dma_mask failed\n");
3289 err = -EIO;
3290 goto err_set_mask;
3291 }
3292 dma64 = true;
3293 } else {
3294 if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32)) != 0) {
3295 dev_err(&pdev->dev,
3296 "pci_set_dma_mask failed\n");
3297 err = -EIO;
3298 goto err_set_mask;
3299 }
3300 dma64 = false;
3301 }
3302
3303 spin_lock_init(&adapter->cmd_lock); 3303 spin_lock_init(&adapter->cmd_lock);
3304 adapter->adapter_pa = dma_map_single(&adapter->pdev->dev, adapter, 3304 adapter->adapter_pa = dma_map_single(&adapter->pdev->dev, adapter,
3305 sizeof(struct vmxnet3_adapter), 3305 sizeof(struct vmxnet3_adapter),
@@ -3307,7 +3307,7 @@ vmxnet3_probe_device(struct pci_dev *pdev,
3307 if (dma_mapping_error(&adapter->pdev->dev, adapter->adapter_pa)) { 3307 if (dma_mapping_error(&adapter->pdev->dev, adapter->adapter_pa)) {
3308 dev_err(&pdev->dev, "Failed to map dma\n"); 3308 dev_err(&pdev->dev, "Failed to map dma\n");
3309 err = -EFAULT; 3309 err = -EFAULT;
3310 goto err_dma_map; 3310 goto err_set_mask;
3311 } 3311 }
3312 adapter->shared = dma_alloc_coherent( 3312 adapter->shared = dma_alloc_coherent(
3313 &adapter->pdev->dev, 3313 &adapter->pdev->dev,
@@ -3358,7 +3358,7 @@ vmxnet3_probe_device(struct pci_dev *pdev,
3358 } 3358 }
3359#endif /* VMXNET3_RSS */ 3359#endif /* VMXNET3_RSS */
3360 3360
3361 err = vmxnet3_alloc_pci_resources(adapter, &dma64); 3361 err = vmxnet3_alloc_pci_resources(adapter);
3362 if (err < 0) 3362 if (err < 0)
3363 goto err_alloc_pci; 3363 goto err_alloc_pci;
3364 3364
@@ -3504,7 +3504,7 @@ err_alloc_queue_desc:
3504err_alloc_shared: 3504err_alloc_shared:
3505 dma_unmap_single(&adapter->pdev->dev, adapter->adapter_pa, 3505 dma_unmap_single(&adapter->pdev->dev, adapter->adapter_pa,
3506 sizeof(struct vmxnet3_adapter), PCI_DMA_TODEVICE); 3506 sizeof(struct vmxnet3_adapter), PCI_DMA_TODEVICE);
3507err_dma_map: 3507err_set_mask:
3508 free_netdev(netdev); 3508 free_netdev(netdev);
3509 return err; 3509 return err;
3510} 3510}
diff --git a/drivers/net/vmxnet3/vmxnet3_int.h b/drivers/net/vmxnet3/vmxnet3_int.h
index a3326463b71f..b379bed5f51d 100644
--- a/drivers/net/vmxnet3/vmxnet3_int.h
+++ b/drivers/net/vmxnet3/vmxnet3_int.h
@@ -69,10 +69,12 @@
69/* 69/*
70 * Version numbers 70 * Version numbers
71 */ 71 */
72#define VMXNET3_DRIVER_VERSION_STRING "1.4.14.0-k" 72#define VMXNET3_DRIVER_VERSION_STRING "1.4.15.0-k"
73 73
74/* a 32-bit int, each byte encode a verion number in VMXNET3_DRIVER_VERSION */ 74/* Each byte of this 32-bit integer encodes a version number in
75#define VMXNET3_DRIVER_VERSION_NUM 0x01040e00 75 * VMXNET3_DRIVER_VERSION_STRING.
76 */
77#define VMXNET3_DRIVER_VERSION_NUM 0x01040f00
76 78
77#if defined(CONFIG_PCI_MSI) 79#if defined(CONFIG_PCI_MSI)
78 /* RSS only makes sense if MSI-X is supported. */ 80 /* RSS only makes sense if MSI-X is supported. */