netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Eugene Surovegin <ebs@ebshome.net>
To: David Miller <davem@davemloft.net>
Cc: benh@kernel.crashing.org, netdev@vger.kernel.org
Subject: Re: NAPI and shared interrupt control
Date: Thu, 7 Dec 2006 01:45:02 -0800	[thread overview]
Message-ID: <20061207094502.GA19479@gate.ebshome.net> (raw)
In-Reply-To: <20061207.011627.43485384.davem@davemloft.net>

On Thu, Dec 07, 2006 at 01:16:27AM -0800, David Miller wrote:
> From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Date: Thu, 07 Dec 2006 15:24:06 +1100
> 
> > 
> > > What Eugene does currently, which seems to me like it's actually the
> > > only proper solution, is to create a separate net_device structure for
> > > the DMA engine and thus have a single NAPI poll & weighting for all the
> > > EMACs sharing a given MAL (MAL is the name of that DMA engine). This
> > > means that Rx from any of the channels schedules the poll, and
> > > interrupts can be properly masked/unmasked globally based on the
> > > presence/absence of work on all the channels.
> > 
> > Actually, another solution would be to have one of the instances do the
> > NAPI poll for all of them instead of creating a separate net_device for
> > the DMA engine...
> 
> I think this idea would work the best.

I fail to see how this is not even more ugly and more complex than the 
solution we have right now. Instead of trivial "orthogonal" polling 
code you are suggesting adding additional complexity - handle 
dynamic selection of that "master" EMAC and also handling situation 
when this master device goes down and you have to switch to 
another one without disturbing polling for other active devices. Why 
all this? This hw is ugly enough as it is.

> Just link the other related devices into a list in the driver private
> struct.  Or a simple "work pending" bitmask for each of the EMACs,
> which tell the primary EMAC netdev which devices should be polled.
> 
> This architecture doesn't make things easy, that's for sure :-)
> 
> If things get too hairy, don't feel too bad about ideas like forgoing
> NAPI altogether and just using the interrupt mitigation features of
> the chip.  Does it have any?

No, it does not.

-- 
Eugene


  reply	other threads:[~2006-12-07  9:45 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-07  4:21 NAPI and shared interrupt control Benjamin Herrenschmidt
2006-12-07  4:24 ` Benjamin Herrenschmidt
2006-12-07  9:16   ` David Miller
2006-12-07  9:45     ` Eugene Surovegin [this message]
2006-12-07  9:59       ` David Miller
2006-12-07 10:15         ` Eugene Surovegin
2006-12-07 10:20           ` David Miller
2006-12-07 10:22             ` Eugene Surovegin
2006-12-07 10:56               ` Benjamin Herrenschmidt
2006-12-08  7:52                 ` David 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=20061207094502.GA19479@gate.ebshome.net \
    --to=ebs@ebshome.net \
    --cc=benh@kernel.crashing.org \
    --cc=davem@davemloft.net \
    --cc=netdev@vger.kernel.org \
    /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).