Re: netif_napi_add vs. multiple netdev's

2007-10-16 Thread David Miller
From: Stephen Hemminger <[EMAIL PROTECTED]>
Date: Tue, 16 Oct 2007 16:37:24 -0700

> It isn't possible, there is only one hardware IRQ, and one
> common status buffer.

Ok, thanks for explaining.  Your hardware is very similar to
Ben's, therefore.

> I'll fix the suspend code, it has other problems as well.

Great!
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: netif_napi_add vs. multiple netdev's

2007-10-16 Thread Stephen Hemminger
On Tue, 16 Oct 2007 15:16:16 -0700 (PDT)
David Miller <[EMAIL PROTECTED]> wrote:

> From: Stephen Hemminger <[EMAIL PROTECTED]>
> Date: Tue, 16 Oct 2007 09:10:35 -0700
> 
> > On Tue, 16 Oct 2007 15:47:13 +1000
> > Benjamin Herrenschmidt <[EMAIL PROTECTED]> wrote:
> > 
> > > The way it's currently implemented, there's a list of NAPI's attached to
> > > the netdev, so obviously, that won't work for my usage scenario.
> > 
> > sky2 driver has potentially 2 ports for 1 NAPI instance.
> 
> And it's unfortunately buggy.
> 
> For example, the sky2_suspend() code iterates over the ports
> and calls sky2_down() on each one that is up.
> 
> That will call napi_disable() on the same NAPI instance if
> multiple ports are up, and thus hang the machine.
> 
> This is why, Stephen, for the second time, I'm telling you
> that perhaps you should put the NAPI instance into the
> sky2_port struct.

It isn't possible, there is only one hardware IRQ, and one
common status buffer.  I'll fix the suspend code, it has other
problems as well.

-- 
Stephen Hemminger <[EMAIL PROTECTED]>
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: netif_napi_add vs. multiple netdev's

2007-10-16 Thread Benjamin Herrenschmidt

On Tue, 2007-10-16 at 15:16 -0700, David Miller wrote:
> And it's unfortunately buggy.
> 
> For example, the sky2_suspend() code iterates over the ports
> and calls sky2_down() on each one that is up.
> 
> That will call napi_disable() on the same NAPI instance if
> multiple ports are up, and thus hang the machine.
> 
> This is why, Stephen, for the second time, I'm telling you
> that perhaps you should put the NAPI instance into the
> sky2_port struct.

Can sky2 send/mask interrupts separately per port ? The reason why I
can't do that with EMAC is why I'm doing multiple ports per NAPI
instance...

If sky2 sticks to doing like EMAC, then it probably also needs to do
like EMAC which is to have it's own port_disable/enable that use local
per-port disable bits. (It may do a real napi_disable when all ports are
disabled, I suppose, though I don't currently do it in EMAC).

Ben.


-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: netif_napi_add vs. multiple netdev's

2007-10-16 Thread David Miller
From: Stephen Hemminger <[EMAIL PROTECTED]>
Date: Tue, 16 Oct 2007 09:10:35 -0700

> On Tue, 16 Oct 2007 15:47:13 +1000
> Benjamin Herrenschmidt <[EMAIL PROTECTED]> wrote:
> 
> > The way it's currently implemented, there's a list of NAPI's attached to
> > the netdev, so obviously, that won't work for my usage scenario.
> 
> sky2 driver has potentially 2 ports for 1 NAPI instance.

And it's unfortunately buggy.

For example, the sky2_suspend() code iterates over the ports
and calls sky2_down() on each one that is up.

That will call napi_disable() on the same NAPI instance if
multiple ports are up, and thus hang the machine.

This is why, Stephen, for the second time, I'm telling you
that perhaps you should put the NAPI instance into the
sky2_port struct.
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: netif_napi_add vs. multiple netdev's

2007-10-16 Thread Stephen Hemminger
On Tue, 16 Oct 2007 15:47:13 +1000
Benjamin Herrenschmidt <[EMAIL PROTECTED]> wrote:

> Hi Stehphen !
> 
> The new netif_napi_add() function takes a netdev argument. In the EMAC
> case, there is one NAPI instance working on behalf of multiple netdev's,
> so that isn't very useful. For my EMAC patch (just posted to you & the
> list), I'm not passing NULL, but I'm wondering what would be a good way
> to handle netpoll here...

The problem is that netpoll only has a handle to the device being used
as a netconsole, but may need to activate the NAPI poll routine to
cleanup state. Perhaps teaching netpoll about N to 1 mappings would
be better.

> 
> The way it's currently implemented, there's a list of NAPI's attached to
> the netdev, so obviously, that won't work for my usage scenario.

sky2 driver has potentially 2 ports for 1 NAPI instance.

> I'm not sure what's the best data structure that would be suitable for
> both N ndev's for 1 NAPI and 1 ndev for N NAPI's though... I could
> allocate "stub" list heads and queue those up, but that's a bit gross...

The new interface doesn't change anything. The old code had the
same problem vis-a-vis netpoll.

-- 
Stephen Hemminger <[EMAIL PROTECTED]>
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


netif_napi_add vs. multiple netdev's

2007-10-15 Thread Benjamin Herrenschmidt
Hi Stehphen !

The new netif_napi_add() function takes a netdev argument. In the EMAC
case, there is one NAPI instance working on behalf of multiple netdev's,
so that isn't very useful. For my EMAC patch (just posted to you & the
list), I'm not passing NULL, but I'm wondering what would be a good way
to handle netpoll here...

The way it's currently implemented, there's a list of NAPI's attached to
the netdev, so obviously, that won't work for my usage scenario.

I'm not sure what's the best data structure that would be suitable for
both N ndev's for 1 NAPI and 1 ndev for N NAPI's though... I could
allocate "stub" list heads and queue those up, but that's a bit gross...

Any better idea ?

Cheers,
Ben.


-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html