aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/vmxnet3/vmxnet3_drv.c13
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 */
134static void 134static void
135vmxnet3_check_link(struct vmxnet3_adapter *adapter) 135vmxnet3_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