All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: "David S. Miller" <davem@davemloft.net>
Cc: netdev@oss.sgi.com
Subject: Re: netdev ioctl & dev_base_lock : bad idea ?
Date: Fri, 10 Dec 2004 09:14:35 +1100	[thread overview]
Message-ID: <1102630475.22746.7.camel@gaston> (raw)
In-Reply-To: <20041208231331.40cd98ad.davem@davemloft.net>

On Wed, 2004-12-08 at 23:13 -0800, David S. Miller wrote:
> On Thu, 09 Dec 2004 17:22:13 +1100
> Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote:
> 
> > Right, and I missed the fact that we did indeed take the semaphore and
> > not the lock in the _set_ functions which is just fine, we can actually
> > schedule.... except in set_multicast...
> > 
> > Is there any reason we actually _need_ to get the xmit lock in this one
> > specifically ?
> 
> Since we implement NETIF_F_LLTX, the core packet transmit routines do
> no locking, the driver does it all.
> 
> So if we don't hold the tx lock in the set multicast routine, any other
> cpu can come into our hard_start_xmit function and poke at the hardware.
> 
> Upon further consideration, it seems that it may be OK to drop that tx
> lock right after we do the netif_stop_queue().  But we should regrab
> the tx lock when we do the subsequent netif_wake_queue().

Yes. In fact, I think it should be driver local locking policy, and not
enforced by net/core/*.

For example, for things like USB based networking (or other "remote"
busses like that), it's both very useful to be able to schedule in
set_multicast, and there is no need for any synchronisation with the
xmit code.

For things like sungem, I already have a driver local lock that can be
used if necessary.

Also, the lack of ability  to schedule means we can't suspend and resume
NAPI polling, which basically forces us to take a lock in the NAPI poll
side of the driver... I'm aiming at limiting the amount of locks we take
in sungem along with moving as much as I can to task level so I can do a
bit better power management without having big u/mdelay's all over.
 
Also, why would we need the xmit lock when calling netif_wake_queue() ?
I'm not sure I get that one (but I'm not too familiar with the net core
neither).

Ben.

  reply	other threads:[~2004-12-09 22:14 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-11-26  8:48 netdev ioctl & dev_base_lock : bad idea ? Benjamin Herrenschmidt
2004-12-09  6:06 ` David S. Miller
2004-12-09  6:22   ` Benjamin Herrenschmidt
2004-12-09  7:13     ` David S. Miller
2004-12-09 22:14       ` Benjamin Herrenschmidt [this message]
2004-12-09 23:19         ` David S. Miller

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=1102630475.22746.7.camel@gaston \
    --to=benh@kernel.crashing.org \
    --cc=davem@davemloft.net \
    --cc=netdev@oss.sgi.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.