From patchwork Tue Dec 4 05:36:56 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 203562 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 39AD32C0089 for ; Tue, 4 Dec 2012 16:22:00 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751531Ab2LDFV4 (ORCPT ); Tue, 4 Dec 2012 00:21:56 -0500 Received: from mms3.broadcom.com ([216.31.210.19]:3680 "EHLO mms3.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751297Ab2LDFVy (ORCPT ); Tue, 4 Dec 2012 00:21:54 -0500 Received: from [10.9.200.133] by mms3.broadcom.com with ESMTP (Broadcom SMTP Relay (Email Firewall v6.5)); Mon, 03 Dec 2012 21:17:16 -0800 X-Server-Uuid: B86B6450-0931-4310-942E-F00ED04CA7AF Received: from mail-irva-13.broadcom.com (10.11.16.103) by IRVEXCHHUB02.corp.ad.broadcom.com (10.9.200.133) with Microsoft SMTP Server id 8.2.247.2; Mon, 3 Dec 2012 21:21:21 -0800 Received: from dell (dhcp-10-12-137-198.irv.broadcom.com [10.12.137.198]) by mail-irva-13.broadcom.com (Postfix) with ESMTP id CB9DC40FE3; Mon, 3 Dec 2012 21:21:41 -0800 (PST) From: "Michael Chan" To: davem@davemloft.net cc: netdev@vger.kernel.org, nsujir@broadcom.com, richardcochran@gmail.com Subject: [PATCH 1/5 net-next v2] tg3: Fix inconsistent locking for tg3_netif_start(). Date: Mon, 3 Dec 2012 21:36:56 -0800 Message-ID: <1354599420-3589-1-git-send-email-mchan@broadcom.com> X-Mailer: git-send-email 1.5.5.GIT MIME-Version: 1.0 X-WSS-ID: 7CA358D639W4877413-01-01 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Nithin Nayak Sujir Every caller holds tp->lock when calling tg3_netif_start() except tg3_io_resume(). Fix it so that it is all consistent. The subsequent PTP patches add tg3_ptp_resume() to tg3_netif_start() and the tp->lock is required. Signed-off-by: Nithin Nayak Sujir Signed-off-by: Michael Chan Acked-by: Richard Cochran --- drivers/net/ethernet/broadcom/tg3.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c index 5cc976d..41a2dbd 100644 --- a/drivers/net/ethernet/broadcom/tg3.c +++ b/drivers/net/ethernet/broadcom/tg3.c @@ -6525,6 +6525,7 @@ static inline void tg3_netif_stop(struct tg3 *tp) netif_tx_disable(tp->dev); } +/* tp->lock must be held */ static inline void tg3_netif_start(struct tg3 *tp) { /* NOTE: unconditional netif_tx_wake_all_queues is only @@ -16598,8 +16599,8 @@ static void tg3_io_resume(struct pci_dev *pdev) tg3_full_lock(tp, 0); tg3_flag_set(tp, INIT_COMPLETE); err = tg3_restart_hw(tp, 1); - tg3_full_unlock(tp); if (err) { + tg3_full_unlock(tp); netdev_err(netdev, "Cannot restart hardware after reset.\n"); goto done; } @@ -16610,6 +16611,8 @@ static void tg3_io_resume(struct pci_dev *pdev) tg3_netif_start(tp); + tg3_full_unlock(tp); + tg3_phy_start(tp); done: