diff options
-rw-r--r-- | drivers/net/vmxnet3/vmxnet3_drv.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c index 0fbfc67e0f79..57d3850cca8d 100644 --- a/drivers/net/vmxnet3/vmxnet3_drv.c +++ b/drivers/net/vmxnet3/vmxnet3_drv.c | |||
@@ -132,7 +132,7 @@ vmxnet3_tq_stop(struct vmxnet3_tx_queue *tq, struct vmxnet3_adapter *adapter) | |||
132 | * Check the link state. This may start or stop the tx queue. | 132 | * Check the link state. This may start or stop the tx queue. |
133 | */ | 133 | */ |
134 | static void | 134 | static void |
135 | vmxnet3_check_link(struct vmxnet3_adapter *adapter) | 135 | vmxnet3_check_link(struct vmxnet3_adapter *adapter, bool affectTxQueue) |
136 | { | 136 | { |
137 | u32 ret; | 137 | u32 ret; |
138 | 138 | ||
@@ -145,14 +145,16 @@ vmxnet3_check_link(struct vmxnet3_adapter *adapter) | |||
145 | if (!netif_carrier_ok(adapter->netdev)) | 145 | if (!netif_carrier_ok(adapter->netdev)) |
146 | netif_carrier_on(adapter->netdev); | 146 | netif_carrier_on(adapter->netdev); |
147 | 147 | ||
148 | vmxnet3_tq_start(&adapter->tx_queue, adapter); | 148 | if (affectTxQueue) |
149 | vmxnet3_tq_start(&adapter->tx_queue, adapter); | ||
149 | } else { | 150 | } else { |
150 | printk(KERN_INFO "%s: NIC Link is Down\n", | 151 | printk(KERN_INFO "%s: NIC Link is Down\n", |
151 | adapter->netdev->name); | 152 | adapter->netdev->name); |
152 | if (netif_carrier_ok(adapter->netdev)) | 153 | if (netif_carrier_ok(adapter->netdev)) |
153 | netif_carrier_off(adapter->netdev); | 154 | netif_carrier_off(adapter->netdev); |
154 | 155 | ||
155 | vmxnet3_tq_stop(&adapter->tx_queue, adapter); | 156 | if (affectTxQueue) |
157 | vmxnet3_tq_stop(&adapter->tx_queue, adapter); | ||
156 | } | 158 | } |
157 | } | 159 | } |
158 | 160 | ||
@@ -167,7 +169,7 @@ vmxnet3_process_events(struct vmxnet3_adapter *adapter) | |||
167 | 169 | ||
168 | /* Check if link state has changed */ | 170 | /* Check if link state has changed */ |
169 | if (events & VMXNET3_ECR_LINK) | 171 | if (events & VMXNET3_ECR_LINK) |
170 | vmxnet3_check_link(adapter); | 172 | vmxnet3_check_link(adapter, true); |
171 | 173 | ||
172 | /* Check if there is an error on xmit/recv queues */ | 174 | /* Check if there is an error on xmit/recv queues */ |
173 | if (events & (VMXNET3_ECR_TQERR | VMXNET3_ECR_RQERR)) { | 175 | if (events & (VMXNET3_ECR_TQERR | VMXNET3_ECR_RQERR)) { |
@@ -1894,7 +1896,7 @@ vmxnet3_activate_dev(struct vmxnet3_adapter *adapter) | |||
1894 | * Check link state when first activating device. It will start the | 1896 | * Check link state when first activating device. It will start the |
1895 | * tx queue if the link is up. | 1897 | * tx queue if the link is up. |
1896 | */ | 1898 | */ |
1897 | vmxnet3_check_link(adapter); | 1899 | vmxnet3_check_link(adapter, true); |
1898 | 1900 | ||
1899 | napi_enable(&adapter->napi); | 1901 | napi_enable(&adapter->napi); |
1900 | vmxnet3_enable_all_intrs(adapter); | 1902 | vmxnet3_enable_all_intrs(adapter); |
@@ -2496,6 +2498,7 @@ vmxnet3_probe_device(struct pci_dev *pdev, | |||
2496 | } | 2498 | } |
2497 | 2499 | ||
2498 | set_bit(VMXNET3_STATE_BIT_QUIESCED, &adapter->state); | 2500 | set_bit(VMXNET3_STATE_BIT_QUIESCED, &adapter->state); |
2501 | vmxnet3_check_link(adapter, false); | ||
2499 | atomic_inc(&devices_found); | 2502 | atomic_inc(&devices_found); |
2500 | return 0; | 2503 | return 0; |
2501 | 2504 | ||