From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754787AbbJ0R5a (ORCPT ); Tue, 27 Oct 2015 13:57:30 -0400 Received: from mail-qg0-f46.google.com ([209.85.192.46]:33785 "EHLO mail-qg0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754652AbbJ0R50 (ORCPT ); Tue, 27 Oct 2015 13:57:26 -0400 Subject: Re: [PATCH] ixgbe: Wait for 1ms, not 1us, after RST To: dan.streetman@canonical.com, Jeff Kirsher References: <1445904971-9442-1-git-send-email-dan.streetman@canonical.com> Cc: Jesse Brandeburg , Shannon Nelson , Carolyn Wyborny , Don Skidmore , Matthew Vick , John Ronciak , Mitch Williams , intel-wired-lan@lists.osuosl.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Dan Streetman From: Peter Hurley Message-ID: <562FBB01.3080901@hurleysoftware.com> Date: Tue, 27 Oct 2015 13:57:21 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <1445904971-9442-1-git-send-email-dan.streetman@canonical.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Dan, On 10/26/2015 08:16 PM, dan.streetman@canonical.com wrote: > From: Dan Streetman > > The driver currently waits 1us after issuing a RST, but the spec > requires it to wait 1ms. > > Signed-off-by: Dan Streetman > Signed-off-by: Dan Streetman > --- > drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c > index 4e75843..147bc65 100644 > --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c > +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c > @@ -113,7 +113,12 @@ mac_reset_top: > > /* Poll for reset bit to self-clear indicating reset is complete */ > for (i = 0; i < 10; i++) { > - udelay(1); > + /* sec 8.2.4.1.1 : > + * programmers must wait approximately 1 ms after setting before > + * attempting to check if the bit has cleared or to access (read > + * or write) any other device register. > + */ > + mdelay(1); Since ixgbe_reset_hw_x540() goes on to msleep(100) immediately after this busy-wait loop, this should instead be: msleep(1); Regards, Peter Hurley > ctrl = IXGBE_READ_REG(hw, IXGBE_CTRL); > if (!(ctrl & IXGBE_CTRL_RST_MASK)) > break; >