From: Jesse Brandeburg <jesse.brandeburg@intel.com>
To: David Laight <David.Laight@ACULAB.COM>
Cc: 'Jeff Kirsher' <jeffrey.t.kirsher@intel.com>,
"davem@davemloft.net" <davem@davemloft.net>,
Kamil Krawczyk <kamil.krawczyk@intel.com>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
"nhorman@redhat.com" <nhorman@redhat.com>,
"sassmann@redhat.com" <sassmann@redhat.com>,
"jogreene@redhat.com" <jogreene@redhat.com>,
jesse.brandeburg@intel.com
Subject: Re: [net-next 1/9] i40e: poll firmware slower
Date: Fri, 7 Nov 2014 14:58:19 -0800 [thread overview]
Message-ID: <20141107145819.00007fa0@unknown> (raw)
In-Reply-To: <063D6719AE5E284EB5DD2968C1650D6D1C9EAE27@AcuExch.aculab.com>
Thanks for the review David, comments follow.
On Fri, 7 Nov 2014 09:40:08 +0000
David Laight <David.Laight@ACULAB.COM> wrote:
> From: Jeff Kirsher
> > From: Kamil Krawczyk <kamil.krawczyk@intel.com>
> >
> > The code was polling the firmware tail register for completion every
> > 10 microseconds, which is way faster than the firmware can respond.
> > This changes the poll interval to 1ms, which reduces polling CPU
> > utilization, and the number of times we loop.
>
> Are you sure the code path is allowed to sleep?
Yes, we are never (should never be) in interrupt context when calling
these routines.
>
> > The maximum delay is still 100ms.
>
> Actually it is now likely to be up to 200ms or more.
> You could convert the maximum delay check to one that
> looks at jiffies - but maybe it doesn't matter.
Thats okay, this is all init or reset or shutdown level code. If the
delay goes up it won't hurt anything.
>
> > --- a/drivers/net/ethernet/intel/i40e/i40e_adminq.c
> > +++ b/drivers/net/ethernet/intel/i40e/i40e_adminq.c
> > @@ -853,7 +853,6 @@ i40e_status i40e_asq_send_command(struct i40e_hw *hw,
> > */
> > if (!details->async && !details->postpone) {
> > u32 total_delay = 0;
> > - u32 delay_len = 10;
> >
> > do {
> > /* AQ designers suggest use of head for better
> > @@ -862,8 +861,8 @@ i40e_status i40e_asq_send_command(struct i40e_hw *hw,
> > if (i40e_asq_done(hw))
> > break;
> > /* ugh! delay while spin_lock */
>
> The comment is not right any more.
yes it should have been removed.
>
> > - udelay(delay_len);
> > - total_delay += delay_len;
> > + usleep_range(1000, 2000);
> > + total_delay++;
> > } while (total_delay < hw->aq.asq_cmd_timeout);
> > }
> >
> > diff --git a/drivers/net/ethernet/intel/i40e/i40e_adminq.h
> > b/drivers/net/ethernet/intel/i40e/i40e_adminq.h
> > index ba38a89..df0bd09 100644
> > --- a/drivers/net/ethernet/intel/i40e/i40e_adminq.h
> > +++ b/drivers/net/ethernet/intel/i40e/i40e_adminq.h
> > @@ -141,7 +141,7 @@ static inline int i40e_aq_rc_to_posix(u16 aq_rc)
> >
> > /* general information */
> > #define I40E_AQ_LARGE_BUF 512
> > -#define I40E_ASQ_CMD_TIMEOUT 100000 /* usecs */
> > +#define I40E_ASQ_CMD_TIMEOUT 100 /* msecs */
>
> It looks like this value is written to asq_cmd_timeout, that makes
> be wonder whether anything else can change it - otherwise the compile
> time constant would be used.
> Changing the units has broken anything else that modifies the value.
I pretty much agree with you, but I can tell you why it's there.
Currently nothing in the code changes it. The code was designed such
that it can run on hardware requiring different timeouts.
next prev parent reply other threads:[~2014-11-07 22:58 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-07 8:57 [net-next 0/9][pull request] Intel Wired LAN Driver Updates 2014-11-07 Jeff Kirsher
2014-11-07 8:57 ` [net-next 1/9] i40e: poll firmware slower Jeff Kirsher
2014-11-07 9:40 ` David Laight
2014-11-07 22:58 ` Jesse Brandeburg [this message]
2014-11-07 13:29 ` Or Gerlitz
2014-11-07 23:02 ` Jesse Brandeburg
2014-11-07 8:57 ` [net-next 2/9] i40e: don't do link_status or stats collection on every ARQ Jeff Kirsher
2014-11-07 8:57 ` [net-next 3/9] i40e: clean up throttle rate code Jeff Kirsher
2014-11-07 8:57 ` [net-next 4/9] i40evf: make early init processing more robust Jeff Kirsher
2014-11-07 8:57 ` [net-next 5/9] i40evf: don't use more queues than CPUs Jeff Kirsher
2014-11-07 8:57 ` [net-next 6/9] ixgbe: fix X540 Completion timeout Jeff Kirsher
2014-11-07 14:35 ` Sergei Shtylyov
2014-11-07 17:06 ` Skidmore, Donald C
2014-11-07 8:57 ` [net-next 7/9] ixgbe: cleanup ixgbe_ndo_set_vf_vlan Jeff Kirsher
2014-11-07 8:57 ` [net-next 8/9] ixgbe: cleanup move setting PFQDE.HIDE_VLAN to support function Jeff Kirsher
2014-11-07 8:57 ` [net-next 9/9] ixgbe: Add new support for X550 MAC's Jeff Kirsher
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20141107145819.00007fa0@unknown \
--to=jesse.brandeburg@intel.com \
--cc=David.Laight@ACULAB.COM \
--cc=davem@davemloft.net \
--cc=jeffrey.t.kirsher@intel.com \
--cc=jogreene@redhat.com \
--cc=kamil.krawczyk@intel.com \
--cc=netdev@vger.kernel.org \
--cc=nhorman@redhat.com \
--cc=sassmann@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).