> Could it be that simple. Probably not. It works at a first glace on > a 405EP ang GPr board. But it might cause problems when having more than > one EMAC up at the same time.
I talked with the network folks and that should be ok. We only need to be a bit careful in case for some reason the EMAC we linked to NAPI get removed/destroyed... We only do all at once for now but heh.. Ben. > Matthias > > [PATCH] powerpc: Fix ibm_newemac driver > > Since commit d565b0a1a9b6ee7d netif_napi_add must be called > if a proper net_device pointer != NULL. > > Signed-off-by: Matthias Fuchs <matthias.fu...@esd-electronics.com> > --- > drivers/net/ibm_newemac/core.c | 3 +++ > drivers/net/ibm_newemac/mal.c | 5 +---- > drivers/net/ibm_newemac/mal.h | 1 + > 3 files changed, 5 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/ibm_newemac/core.c b/drivers/net/ibm_newemac/core.c > index 87a7066..9bd4d6d 100644 > --- a/drivers/net/ibm_newemac/core.c > +++ b/drivers/net/ibm_newemac/core.c > @@ -2767,6 +2767,9 @@ static int __devinit emac_probe(struct of_device *ofdev, > if (dev->mdio_dev != NULL) > dev->mdio_instance = dev_get_drvdata(&dev->mdio_dev->dev); > > + netif_napi_add(ndev, &dev->mal->napi, mal_poll, > + CONFIG_IBM_NEW_EMAC_POLL_WEIGHT); > + > /* Register with MAL */ > dev->commac.ops = &emac_commac_ops; > dev->commac.dev = dev; > diff --git a/drivers/net/ibm_newemac/mal.c b/drivers/net/ibm_newemac/mal.c > index ecf9798..d5306ae 100644 > --- a/drivers/net/ibm_newemac/mal.c > +++ b/drivers/net/ibm_newemac/mal.c > @@ -391,7 +391,7 @@ void mal_poll_enable(struct mal_instance *mal, struct > mal_commac *commac) > napi_schedule(&mal->napi); > } > > -static int mal_poll(struct napi_struct *napi, int budget) > +int mal_poll(struct napi_struct *napi, int budget) > { > struct mal_instance *mal = container_of(napi, struct mal_instance, > napi); > struct list_head *l; > @@ -613,9 +613,6 @@ static int __devinit mal_probe(struct of_device *ofdev, > INIT_LIST_HEAD(&mal->list); > spin_lock_init(&mal->lock); > > - netif_napi_add(NULL, &mal->napi, mal_poll, > - CONFIG_IBM_NEW_EMAC_POLL_WEIGHT); > - > /* Load power-on reset defaults */ > mal_reset(mal); > > diff --git a/drivers/net/ibm_newemac/mal.h b/drivers/net/ibm_newemac/mal.h > index 2f0a873..51597bd 100644 > --- a/drivers/net/ibm_newemac/mal.h > +++ b/drivers/net/ibm_newemac/mal.h > @@ -282,6 +282,7 @@ void mal_disable_rx_channel(struct mal_instance *mal, int > channel); > > void mal_poll_disable(struct mal_instance *mal, struct mal_commac *commac); > void mal_poll_enable(struct mal_instance *mal, struct mal_commac *commac); > +int mal_poll(struct napi_struct *napi, int budget); > > /* Add/remove EMAC to/from MAL polling list */ > void mal_poll_add(struct mal_instance *mal, struct mal_commac *commac); _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev