Re: netif_napi_add vs. multiple netdev's
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
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
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
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
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