Received: by 10.213.65.68 with SMTP id h4csp707885imn; Thu, 22 Mar 2018 06:57:31 -0700 (PDT) X-Google-Smtp-Source: AG47ELtYbPfphLpvZ9s4+ObisBFIy3yezvHRSXPaK56sJCDGcIndCNOwmSP3oXGeEOkvU11WPpzQ X-Received: by 2002:a17:902:2884:: with SMTP id f4-v6mr24951646plb.153.1521727051046; Thu, 22 Mar 2018 06:57:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521727051; cv=none; d=google.com; s=arc-20160816; b=iVWp4H2wOJmXhmvBs9AEvJ4BsEVqzqcCN1HX2SnooU+WcIEKPdk/md6IYWoVfU54sl gmMsl/EG1EhE9V0DHwSphoklft0vmjdeb/PKY/LDebKiflV11iT7/z9++8Iil05zdTnl Dc4K7n1VQPpM4O12lTSJGv/QW2vuZsNdJSyr/gn1JtFSvNyHf6m9CXHDUtr/JQMxdHP4 M2anWzIsIX6DAeDUlPVtcflLPc1DcE7dVQ+Vv3EKc3ItOUOH+GiPNuy71rGDvwYuW1ri 3eJ2qG2OsdzjDWFovW4Zj5IL7A23CHv8zB/w3lhw5v1cWeJ0zNkDh4tgelc5xWtKVCz/ xYrw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:spamdiagnosticmetadata :spamdiagnosticoutput:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:arc-authentication-results; bh=SpdamqZn3ZMfu549HCsOGtOQWECTFO7WPobxJ+i5dwk=; b=G5Br1gWBhCXlZNPK/vA8Lk4pTomVyVHzG0IMh3INyBclRw9e5hBoR4VgedhjdiTG5C oad9crGgwusgAcLSE4sgyq71nMaOcb9NDh+Ob9w34Jh9oUlm/LvzlHgi1mkLpmdtO7HP yn43Aubxs3fwnqkjq7DliktwNjtxI0fEWfcws92MylocwiW8Utl34vuvm6cQklNsnXNx iIeAmVT9zcRPtPjRQqpUD6AW2FACHFGVIXGFESaaRl8VedLVh19XUKOHvEhB7W8MyJd6 zcPldMMHWllk1p8fyOIyf0OtrJIc9nFCNNPWYu+Zm9l9la8rik13bdnLXghI5PFC4sbU LgBA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x15si606692pgx.487.2018.03.22.06.57.16; Thu, 22 Mar 2018 06:57:30 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755660AbeCVNw2 (ORCPT + 99 others); Thu, 22 Mar 2018 09:52:28 -0400 Received: from mail-co1nam03on0068.outbound.protection.outlook.com ([104.47.40.68]:52734 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1755611AbeCVNwT (ORCPT ); Thu, 22 Mar 2018 09:52:19 -0400 Received: from BN6PR02CA0030.namprd02.prod.outlook.com (10.173.146.144) by BN6PR02MB2625.namprd02.prod.outlook.com (10.173.142.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.609.10; Thu, 22 Mar 2018 13:52:17 +0000 Received: from CY1NAM02FT010.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e45::206) by BN6PR02CA0030.outlook.office365.com (2603:10b6:404:5f::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.609.10 via Frontend Transport; Thu, 22 Mar 2018 13:52:17 +0000 Authentication-Results: spf=softfail (sender IP is 149.199.60.83) smtp.mailfrom=gmail.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=fail action=none header.from=gmail.com; Received-SPF: SoftFail (protection.outlook.com: domain of transitioning gmail.com discourages use of 149.199.60.83 as permitted sender) Received: from xsj-pvapsmtpgw01 (149.199.60.83) by CY1NAM02FT010.mail.protection.outlook.com (10.152.75.50) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.567.18 via Frontend Transport; Thu, 22 Mar 2018 13:52:16 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66] helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw01 with esmtp (Exim 4.63) (envelope-from ) id 1ez0db-00017g-4F; Thu, 22 Mar 2018 06:52:15 -0700 Received: from [127.0.0.1] (helo=xsj-smtp-dlp1.xlnx.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1ez0dV-0006iy-VR; Thu, 22 Mar 2018 06:52:10 -0700 Received: from xsj-pvapsmtp01 (smtp.xilinx.com [149.199.38.66]) by xsj-smtp-dlp1.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id w2MDq9cP013541; Thu, 22 Mar 2018 06:52:09 -0700 Received: from [172.23.37.92] (helo=xhdharinik40.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1ez0dU-0006gK-Jl; Thu, 22 Mar 2018 06:52:09 -0700 From: To: , , CC: , , , , , Shubhrajyoti Datta Subject: [RFC PATCH 1/5] net: macb: Check MDIO state before read/write and use timeouts Date: Thu, 22 Mar 2018 19:21:36 +0530 Message-ID: <1521726700-22634-2-git-send-email-harinikatakamlinux@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1521726700-22634-1-git-send-email-harinikatakamlinux@gmail.com> References: <1521726700-22634-1-git-send-email-harinikatakamlinux@gmail.com> X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.2.0.1013-23620.005 X-TM-AS-Result: No--0.548-7.0-31-1 X-imss-scan-details: No--0.548-7.0-31-1;No--0.548-5.0-31-1 X-TM-AS-User-Approved-Sender: No;No X-TM-AS-Result-Xfilter: Match text exemption rules:No X-EOPAttributedMessage: 0 X-Matching-Connectors: 131662003369765219;(f9e945fa-a09a-4caa-7158-08d2eb1d8c44);() X-Forefront-Antispam-Report: CIP:149.199.60.83;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(39860400002)(39380400002)(346002)(396003)(376002)(2980300002)(199004)(189003)(105596002)(63266004)(336012)(316002)(76482006)(2876002)(50226002)(73392003)(2906002)(36756003)(81156014)(81166006)(8676002)(8936002)(86362001)(2201001)(47776003)(61266001)(426003)(50466002)(7049001)(54906003)(48376002)(76176011)(26005)(77096007)(86152003)(9786002)(110136005)(106466001)(55446002)(16586007)(107886003)(73972006)(51416003)(5660300001)(498600001)(4326008)(305945005)(356003)(2950100002)(6666003)(83322999)(450100002)(87572001)(446003)(82202002)(107986001)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR02MB2625;H:xsj-pvapsmtpgw01;FPR:;SPF:SoftFail;PTR:unknown-60-83.xilinx.com;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;CY1NAM02FT010;1:tkafYrpfBNHA0GA9pEK1drhhPkmasc/FmrDRtm226UYeUGImNIMBdAXPmC/YbHgk6MGsDQafWaOaKSwrXzIPKzyjFoZJbw4RAXcQ9MYOBC6OS/tgP0PKxMIGBrJ+sQkl MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ea334196-8ecc-469b-dfef-08d58ffc1fb2 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(5600026)(4604075)(2017052603328);SRVR:BN6PR02MB2625; X-Microsoft-Exchange-Diagnostics: 1;BN6PR02MB2625;3:ofDHdzVunvxVRp5sziT7d6r/ssaNWHvesOmpucT6BmA7eUF4HhYZrNB7eSmHBgLJVAjvNf4q1rv1AvmSPnUtueHeDNEBPBk0z/PPMEsJCWZKm2E63lDTeqSixvor/u+UNV+Ll/kOZiZGKTOYtL2y0u2jj10XxXZiv7TbWtLRpTlVAv3ipSpu5a3sAZoXug2kmkNWM4d/FBKJ705NyXRSp/T7Twj3T5ft1xH5Q0TdN0WNGM06ECpxziVMD8egOLoD9AFKc87bOiILlyNkiqT8Vwo36ibOcQIue7SLe+641itcqF8PFoZeAf/eVJIDSdKlczRhTsDjeFtk20e83YTA+d5VFI7wKQx+fFtzufgiOmE=;25:/8nFRlX6Gj1SAireaZ1IvakOV3RPfPk8HqMNvxAEMkyMpBTte4kcN5zuQkePR3o3TNmqzj+1sFl9+ydBnu0ft4kIfK4nNNv9k6gC/hzAiMwQ8T0ppeuI3cQ1uanpVV+j4KRLBt9g8f2gGh5MNMibb1GUqTnrr7badR3AO3qkES5yPVbzZ7roKGVOiR/BdfVAIXKS6njNpu6wHDtCwXFJ2X/iOvEedqqi8zeDWbvf28TrKU9safTBoUmAnrR5KL25aLwH0QsJxwpZZWYrYja+L3VxGdqL5dsL5F0IhYLP3NXmu5S3FGXQAPU+ygOS3syOj1WWfm5/9BUEKLlAJ+mE5A== X-MS-TrafficTypeDiagnostic: BN6PR02MB2625: X-Microsoft-Exchange-Diagnostics: 1;BN6PR02MB2625;31:zMOlAjqYi1uLFRPTicMKzMNjOvnN+ZP6Lz3lWkrneeSDGeQFIgJ4qwM+nHuRFRw53TwJdcA/2meQomkv28ZAbzKuJATHWBzKAS3mUzVVhaQGJngmKfYeZhR623EyyTb35l4O/49nyf5H13ELSqDCMYbldnxItTMIgRE0Wesx8Actlgv0yIJLljiKHWFE0PvUKGjIyCh70K0u3tai9XTDYuooztOeUmjxsSc+dzn40/k=;4:GLBzFS2+Y4XOUDCCOUVmTQBP57T9ramGaXFRVwqalnqr28UOAaarh70gWoZejz/nbZtmiYlbWBI+imueZOVFVp9O7fHZRJldA6sPo7vtVhvhNNd86WC0nP6qR2mrhctwLUg9DHXUuAQUUkn6p8Jf/gwFUjLFBOqILyYvacisU4Q4WaMhZwJPNMZOCgbMUKdxX1f1hyUvgFd1UXMtCaTbVl0ZSwPL49ALFXf2dFU7oa0cAb9V6urhvFsyHEYtSrkwsJgZ+UWsC42x1Ua8fpbF8wDiJTYQttph+GN3xtdSLM0HvO+nw4tue8YGAAi0lYjRwXeHXdHj9SC9H4LoArrygw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089)(192813158149592); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6095135)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231221)(944501327)(52105095)(10201501046)(3002001)(6055026)(6096035)(20161123563025)(20161123556025)(20161123565025)(20161123559100)(201703131430075)(201703131448075)(201703131433075)(201703151042153)(20161123561025)(201708071742011);SRVR:BN6PR02MB2625;BCL:0;PCL:0;RULEID:(400006);SRVR:BN6PR02MB2625; X-Forefront-PRVS: 0619D53754 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN6PR02MB2625;23:yBvEF4TiuNOJdvENPN1S+P3qahfpUHE4tRw7F+kca?= =?us-ascii?Q?PypYLssR23bjzXnSF13s5/5wVZa3NKuS+p8qK+xiPaoDxDlyD5s4YM+Nrr1t?= =?us-ascii?Q?ESKo4x/0ESl929ypW6DiYowWs8vF3JORGpDZ6J5EB2JvGjxoiZY7dt0RVtdk?= =?us-ascii?Q?bt8LND206cS3aaPq97wUPstkzgR/5CmjXTDRsm+bJYBl9MZoos4DVf3PDF6l?= =?us-ascii?Q?kQm0gpa559KzWi0G6IENmYKZs9j4SF1o3EaW7eyVBLgQoPuNuEIEswFk8GTq?= =?us-ascii?Q?I6jSc10nrsXBGYAuzZycwKbYjqg+zsMjhqM8+6YSrtiwlwMIS/EQEut7YWa4?= =?us-ascii?Q?OMKFD8OiaTL0eV+Lu+HwJC3fbpGTZBZ24BL7n1cx2QjeX1Nen0gFImYg4Vlj?= =?us-ascii?Q?Pam/ji95BYt5DQOLAQAPyxUSpDwPsEjk27R/8V1wXLDeNF3pRDhe2+TYJ7H/?= =?us-ascii?Q?UWXDeM2YXt+YPmcIbU8gAorGBpxzcg2B5L10y5rNi4eOqdY11MW3DeM9c9XS?= =?us-ascii?Q?mNyPlF8oOX+FOeR+1tlND0DH3F/hv++WXunYNQAemBimCUezVO0bTo9prGUb?= =?us-ascii?Q?/Uy0+fuS5WkAnBqFcUiBSBaIr1BOArs/U7hQjjfmnPD1gwHX2cVAZi8LJeCk?= =?us-ascii?Q?xxnAT6Wr97ClBOewlWWbDc34wsCl2CXWwupYqGKQBzy2t7XPpTZkIxgF0GNs?= =?us-ascii?Q?tWMfP3a1LU3Yr5WHIK4bIPFTxboZAu4yeZ0lqhz37k2nMk0HoRHpXuyPaFFN?= =?us-ascii?Q?UzyWiGvNHErZc6h5/2w54jjRx0BUnkGunriwcXl4/JdH1CekM0/4UTG0kqoH?= =?us-ascii?Q?xQdwVRyh3mTRZZrgzYmOOQnKxK4AjCCNbZuDoZhauD4Hy6XACSE6iQvWuOV8?= =?us-ascii?Q?KC4ZEgUrdHfPsE8XY0RBm40GJt4VlVWT+kOj6XPqbGPyvlyvLAvwukt/g1db?= =?us-ascii?Q?XJ/Bosozzivq3rurcGA43+OIQ6ryYwX9jUKj5Ey5+jH982IPRUAgwvhKKIM6?= =?us-ascii?Q?QA+7EdtFb9fdMe2Y4MeZfMMHI8DzM90KOmn52oYWYCWCaZX+w4sOOFbVxShU?= =?us-ascii?Q?REVz+8zsB4QjLPyATYayGe0dx8YFav9jHDKfZyDk9sVm1GnPIK1i6nw7uMjm?= =?us-ascii?Q?G/UnWHhiMznDr3/4QqFxUuGUUciJcvA8dOQAwU4R969USV15d20TInck0nrb?= =?us-ascii?Q?WXrMflEQMmr/ycEbN5RadXXaUrAge45J55qtEhuz9j+/+1FO3CoJpLLmqeaC?= =?us-ascii?Q?X2yCGcAWI/XK7XGS4rBHJCEgzsQKoTXo4T1GiDj03tMowIRaOKBtTto7lxqy?= =?us-ascii?Q?h6pSdZWPdRKQe0cDFG5/F8=3D?= X-Microsoft-Antispam-Message-Info: b4y0Xci6DiZtFj3md6nmgGjG3ohQug7XA2d+F03k8Ae86SslgPmYMzWQR9ZxW5BgpyZfXsUlE4ug5AQS5PAi/Fe71RX9CZFEdmHRlT/3fgAcvWrrkpqL3y5mzlW9Bbwu/9hFp0EWdCy20KBToxzvozbTyfWH8v9qIVEllgo6599qYcPbw4bK2432OJbC/KUR X-Microsoft-Exchange-Diagnostics: 1;BN6PR02MB2625;6:f0OhIOP4o7YobRgc6JMljHmkXdfH4cJ2R7/QHn+l+dh0qWVqEXlYN8NswQmFUB2M3VqM3+2Aew0x6Y2DP7ox+SeU5v/hD6lg47hYFwLZgfktPuOaZZiPWG9QE18GuaR4hS0+alqKX+/BAR41KQ0wSUSQmo1chblFa+uy9kKYYe0rka/p9H3B6h02h3rF+GjVpPdPAryaIi1Z3zBMlr0cRopgfZCrVs1oSDSe5wsLVCksWGccaU/WceGIa7ALto5YPkstUfjvD+FTia0bvLYCw6YkMgwsHKpyAPjkGjkqM8cdb0Cp4qysEeXqns235ZCHJetZMli54gBbGqhmsumYCl0x+Etnt9xNoIlHc67MFGSA0hV7Ei5z9L2h+oDqhnYh00Vexw987vAdBzlj6P1rojAf3/sXSZ8GizSvXd8rahg3P+kJsREC/s41T9hGmLTPL8QjQy5L5xepqUdKdC/C/Q==;5:A0ab2UYl0HoGmNtp+inS6J8BgpwFR1F94781DQ99arqyh+n840xVJxUH8eawAc0CYVN6GUm5jeg1qaWgz4QIDTzDViGUMG35PJx1KLNNPrLWTTO+syfA9iXfB+7zrqZtZgZ50WDpJF3lwvLpLyo24T13lrH3aXdZpOgMjwfsd1c=;24:F9xTEgaD/XwuzVWChzmt6XrqKdcViJekDjmBMGZssfg/Xh95dr/ChY85qLrcHB7aiOEqjkCxQUJuEr34/ItUN0j5mDrdzjBfV75uy06gSeA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN6PR02MB2625;7:uIe+WuAuJsKCyiOMT/PtS0zRJKZSWshzkA07/nA8oRt9ZiCBPipeFhScKaUiYgsRSi8p+0hNoQuWvrWmRTDzGl/ztfy4FBlaHN8nY8m1zZYrAggKbRAj+4TRTc7CvZqIr+Op3lv8woo5i6ehz/dY9EWs2tv5cgvX4Vjx8REck9uRiwvejT+T5aGooP3DkGsVQVhKpTF3pruohQ+nPoiBaQI2NooJ0Fh3OyAyGIzM5LvRC2Er3ZKIQtSjZdyBxR94 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2018 13:52:16.0389 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ea334196-8ecc-469b-dfef-08d58ffc1fb2 X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;Ip=[149.199.60.83];Helo=[xsj-pvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR02MB2625 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Harini Katakam Replace the while loop in MDIO read/write functions with a timeout. In addition, add a check for MDIO bus busy before initiating a new operation as well to make sure there is no ongoing MDIO operation. Signed-off-by: Shubhrajyoti Datta Signed-off-by: Harini Katakam --- drivers/net/ethernet/cadence/macb_main.c | 54 ++++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index d09bd43..f4030c1 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -321,6 +321,21 @@ static int macb_mdio_read(struct mii_bus *bus, int mii_id, int regnum) { struct macb *bp = bus->priv; int value; + ulong timeout; + + timeout = jiffies + msecs_to_jiffies(1000); + /* wait for end of transfer */ + do { + if (MACB_BFEXT(IDLE, macb_readl(bp, NSR))) + break; + + cpu_relax(); + } while (!time_after_eq(jiffies, timeout)); + + if (time_after_eq(jiffies, timeout)) { + netdev_err(bp->dev, "wait for end of transfer timed out\n"); + return -ETIMEDOUT; + } macb_writel(bp, MAN, (MACB_BF(SOF, MACB_MAN_SOF) | MACB_BF(RW, MACB_MAN_READ) @@ -328,9 +343,19 @@ static int macb_mdio_read(struct mii_bus *bus, int mii_id, int regnum) | MACB_BF(REGA, regnum) | MACB_BF(CODE, MACB_MAN_CODE))); + timeout = jiffies + msecs_to_jiffies(1000); /* wait for end of transfer */ - while (!MACB_BFEXT(IDLE, macb_readl(bp, NSR))) + do { + if (MACB_BFEXT(IDLE, macb_readl(bp, NSR))) + break; + cpu_relax(); + } while (!time_after_eq(jiffies, timeout)); + + if (time_after_eq(jiffies, timeout)) { + netdev_err(bp->dev, "wait for end of transfer timed out\n"); + return -ETIMEDOUT; + } value = MACB_BFEXT(DATA, macb_readl(bp, MAN)); @@ -341,6 +366,21 @@ static int macb_mdio_write(struct mii_bus *bus, int mii_id, int regnum, u16 value) { struct macb *bp = bus->priv; + ulong timeout; + + timeout = jiffies + msecs_to_jiffies(1000); + /* wait for end of transfer */ + do { + if (MACB_BFEXT(IDLE, macb_readl(bp, NSR))) + break; + + cpu_relax(); + } while (!time_after_eq(jiffies, timeout)); + + if (time_after_eq(jiffies, timeout)) { + netdev_err(bp->dev, "wait for end of transfer timed out\n"); + return -ETIMEDOUT; + } macb_writel(bp, MAN, (MACB_BF(SOF, MACB_MAN_SOF) | MACB_BF(RW, MACB_MAN_WRITE) @@ -349,9 +389,19 @@ static int macb_mdio_write(struct mii_bus *bus, int mii_id, int regnum, | MACB_BF(CODE, MACB_MAN_CODE) | MACB_BF(DATA, value))); + timeout = jiffies + msecs_to_jiffies(1000); /* wait for end of transfer */ - while (!MACB_BFEXT(IDLE, macb_readl(bp, NSR))) + do { + if (MACB_BFEXT(IDLE, macb_readl(bp, NSR))) + break; + cpu_relax(); + } while (!time_after_eq(jiffies, timeout)); + + if (time_after_eq(jiffies, timeout)) { + netdev_err(bp->dev, "wait for end of transfer timed out\n"); + return -ETIMEDOUT; + } return 0; } -- 2.7.4