diff options
-rw-r--r-- | drivers/net/vmxnet3/vmxnet3_drv.c | 50 | ||||
-rw-r--r-- | drivers/net/vmxnet3/vmxnet3_int.h | 8 |
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 | ||
2690 | static int | 2690 | static int |
2691 | vmxnet3_alloc_pci_resources(struct vmxnet3_adapter *adapter, bool *dma64) | 2691 | vmxnet3_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); |
2752 | err_ioremap: | 2734 | err_ioremap: |
2753 | pci_release_selected_regions(pdev, (1 << 2) - 1); | 2735 | pci_release_selected_regions(pdev, (1 << 2) - 1); |
2754 | err_set_mask: | 2736 | err_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: | |||
3504 | err_alloc_shared: | 3504 | err_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); |
3507 | err_dma_map: | 3507 | err_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. */ |