From patchwork Wed Jul 14 00:48:55 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shreyas Bhatewara X-Patchwork-Id: 58828 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43E151007D2 for ; Wed, 14 Jul 2010 10:49:27 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754119Ab0GNAs5 (ORCPT ); Tue, 13 Jul 2010 20:48:57 -0400 Received: from smtp-outbound-2.vmware.com ([65.115.85.73]:44890 "EHLO smtp-outbound-2.vmware.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754035Ab0GNAsz (ORCPT ); Tue, 13 Jul 2010 20:48:55 -0400 Received: from mailhost2.vmware.com (mailhost2.vmware.com [10.16.67.167]) by smtp-outbound-2.vmware.com (Postfix) with ESMTP id 3800EE009; Tue, 13 Jul 2010 17:48:55 -0700 (PDT) Received: from promb-1s-dhcp85.eng.vmware.com (promb-1s-dhcp85.eng.vmware.com [10.20.84.85]) by mailhost2.vmware.com (Postfix) with ESMTP id 27A178E72B; Tue, 13 Jul 2010 17:48:55 -0700 (PDT) Date: Tue, 13 Jul 2010 17:48:55 -0700 (PDT) From: Shreyas Bhatewara X-X-Sender: sbhatewara@localhost.localdomain To: netdev@vger.kernel.org cc: linux-kernel@vger.kernel.org, pv-drivers@vmware.com Subject: [PATCH 2.6.35-rc1] net-next: vmxnet3 fixes [3/5] Initialize link state at probe time In-Reply-To: Message-ID: References: User-Agent: Alpine 2.00 (LRH 1167 2008-08-23) MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Initialize vmxnet3 link state at probe time This change initializes the state of link at the time when driver is loaded. The ethtool output for 'link detected' and 'link speed' is thus valid even before the interface is brought up. Signed-off-by: Shreyas Bhatewara --- drivers/net/vmxnet3/vmxnet3_drv.c | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c index 7792a44..1e31d40 100644 --- a/drivers/net/vmxnet3/vmxnet3_drv.c +++ b/drivers/net/vmxnet3/vmxnet3_drv.c @@ -130,7 +130,7 @@ vmxnet3_tq_stop(struct vmxnet3_tx_queue *tq, struct vmxnet3_adapter *adapter) * Check the link state. This may start or stop the tx queue. */ static void -vmxnet3_check_link(struct vmxnet3_adapter *adapter) +vmxnet3_check_link(struct vmxnet3_adapter *adapter, bool affectTxQueue) { u32 ret; @@ -143,14 +143,16 @@ vmxnet3_check_link(struct vmxnet3_adapter *adapter) if (!netif_carrier_ok(adapter->netdev)) netif_carrier_on(adapter->netdev); - vmxnet3_tq_start(&adapter->tx_queue, adapter); + if (affectTxQueue) + vmxnet3_tq_start(&adapter->tx_queue, adapter); } else { printk(KERN_INFO "%s: NIC Link is Down\n", adapter->netdev->name); if (netif_carrier_ok(adapter->netdev)) netif_carrier_off(adapter->netdev); - vmxnet3_tq_stop(&adapter->tx_queue, adapter); + if (affectTxQueue) + vmxnet3_tq_stop(&adapter->tx_queue, adapter); } } @@ -165,7 +167,7 @@ vmxnet3_process_events(struct vmxnet3_adapter *adapter) /* Check if link state has changed */ if (events & VMXNET3_ECR_LINK) - vmxnet3_check_link(adapter); + vmxnet3_check_link(adapter, true); /* Check if there is an error on xmit/recv queues */ if (events & (VMXNET3_ECR_TQERR | VMXNET3_ECR_RQERR)) { @@ -1947,7 +1949,7 @@ vmxnet3_activate_dev(struct vmxnet3_adapter *adapter) * Check link state when first activating device. It will start the * tx queue if the link is up. */ - vmxnet3_check_link(adapter); + vmxnet3_check_link(adapter, true); napi_enable(&adapter->napi); vmxnet3_enable_all_intrs(adapter); @@ -2549,6 +2551,7 @@ vmxnet3_probe_device(struct pci_dev *pdev, } set_bit(VMXNET3_STATE_BIT_QUIESCED, &adapter->state); + vmxnet3_check_link(adapter, false); atomic_inc(&devices_found); return 0;