netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Alexander Duyck <alexander.h.duyck@intel.com>
Cc: "Kirsher, Jeffrey T" <jeffrey.t.kirsher@intel.com>,
	"davem@davemloft.net" <davem@davemloft.net>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"gospo@redhat.com" <gospo@redhat.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"greg@kroah.com" <greg@kroah.com>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"Zhao, Yu" <yu.zhao@intel.com>
Subject: Re: [net-next PATCH 1/2] igbvf: add new driver to support 82576 virtual functions
Date: Wed, 18 Mar 2009 18:56:30 -0700	[thread overview]
Message-ID: <20090318185630.11f3d557.akpm@linux-foundation.org> (raw)
In-Reply-To: <49C1948F.1060300@intel.com>

On Wed, 18 Mar 2009 17:40:47 -0700 Alexander Duyck <alexander.h.duyck@intel.com> wrote:

> Andrew Morton wrote:
> > On Wed, 18 Mar 2009 08:22:46 -0700 Alexander Duyck <alexander.h.duyck@intel.com> wrote:
> > 
> >>>>>> +static int igbvf_set_ringparam(struct net_device *netdev,
> >>>>>> +                               struct ethtool_ringparam *ring)
> >>>>>> +{
> >>>>>> +     struct igbvf_adapter *adapter = netdev_priv(netdev);
> >>>>>> +     struct igbvf_ring *tx_ring, *tx_old;
> >>>>>> +     struct igbvf_ring *rx_ring, *rx_old;
> >>>>>> +     int err;
> >>>>>> +
> >>>>>> +     if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending))
> >>>>>> +             return -EINVAL;
> >>>>>> +
> >>>>>> +     while (test_and_set_bit(__IGBVF_RESETTING, &adapter->state))
> >>>>>> +             msleep(1);
> >>>>> No timeout needed here?  Interrupts might not be working, for example..
> >>>> This bit isn't set in interrupt context.  This is always used out of 
> >>>> interrupt context and is just to prevent multiple setting changes at the 
> >>>> same time.
> >>> Oh.  Can't use plain old mutex_lock()?
> >> We have one or two spots that actually check to see if the bit is set 
> >> and just report a warning instead of actually waiting on the bit to clear.
> > 
> > mutex_is_locked()?
> 
> I suppose that would work, but I still would prefer to keep this bit of 
> code as it is.  My main motivation is just to use what was already 
> proven, and the fact is the e1000, e1000e, igb, and several other 
> drivers all use this same approach and it works.

OK, that's a reason.

> I don't think we need the extra overhead of the mutex lock since most of 
> the calls that end up setting the __IGBVF_RESETTING bit will already be 
> wrapped within rtnl_lock/unlock calls.  As far as I can tell it looks 
> like the only two threads that would ever be competing for the lock 
> would be the igbvf_reinit_locked and whatever ethtool or ifconfig 
> requests that decide to make changes to the configuration of the netdevice.

You may well find that mutex_lock is more efficient than setting a timer
and waking up once per millisecond.  Certainly much lower latency on some
setups given clock granularities of as much as 10 milliseconds.

But it sounds like that's all a separate standalone exercise.

      reply	other threads:[~2009-03-19  1:56 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-11  2:09 [net-next PATCH 1/2] igbvf: add new driver to support 82576 virtual functions Jeff Kirsher
2009-03-11  2:09 ` [net-next PATCH 2/2] igb: add PF to pool if adding a VLVF register value and the VFTA bit is Jeff Kirsher
2009-03-11  5:21 ` [net-next PATCH 1/2] igbvf: add new driver to support 82576 virtual functions Andrew Morton
2009-03-18  0:12   ` Alexander Duyck
2009-03-18  1:08     ` Andrew Morton
2009-03-18 15:22       ` Alexander Duyck
2009-03-18 21:53         ` Andrew Morton
2009-03-19  0:40           ` Alexander Duyck
2009-03-19  1:56             ` Andrew Morton [this message]

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=20090318185630.11f3d557.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=alexander.h.duyck@intel.com \
    --cc=davem@davemloft.net \
    --cc=gospo@redhat.com \
    --cc=greg@kroah.com \
    --cc=jeffrey.t.kirsher@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=yu.zhao@intel.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).