* [2.6.30-rc3] powerpc: compilation error of mace module @ 2009-04-26 15:57 Rogério Brito 2009-04-27 6:06 ` David Miller 0 siblings, 1 reply; 8+ messages in thread From: Rogério Brito @ 2009-04-26 15:57 UTC (permalink / raw) To: linux-kernel, linuxppc-dev Hi there, people. I am attempting to compile a new kernel for my OldWorld ppc box and I'm having some problems. The first one that appears to happen is the following: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CC [M] drivers/net/mace.o drivers/net/mace.c: In function ‘mace_probe’: drivers/net/mace.c:210: error: ‘struct net_device’ has no member named ‘open’ drivers/net/mace.c:211: error: ‘struct net_device’ has no member named ‘stop’ drivers/net/mace.c:212: error: ‘struct net_device’ has no member named ‘hard_start_xmit’ drivers/net/mace.c:213: error: ‘struct net_device’ has no member named ‘set_multicast_list’ drivers/net/mace.c:214: error: ‘struct net_device’ has no member named ‘set_mac_address’ make[3]: *** [drivers/net/mace.o] Error 1 make[2]: *** [drivers/net] Error 2 make[1]: *** [drivers] Error 2 make[1]: Leaving directory `/usr/local/media/cross-compile/linux' make: *** [debian/stamp/build/kernel] Error 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Any help is appreciated. Thanks, Rogério Brito. -- Rogério Brito : rbrito@{mackenzie,ime.usp}.br : GPG key 1024D/7C2CAEB8 http://www.ime.usp.br/~rbrito : http://meusite.mackenzie.com.br/rbrito Projects: algorithms.berlios.de : lame.sf.net : vrms.alioth.debian.org ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [2.6.30-rc3] powerpc: compilation error of mace module 2009-04-26 15:57 [2.6.30-rc3] powerpc: compilation error of mace module Rogério Brito @ 2009-04-27 6:06 ` David Miller 2009-04-27 12:16 ` [PATCH] powerpc: convert mace to netdev_ops (was: Re: [2.6.30-rc3] powerpc: compilation error of mace module) Rogério Brito 0 siblings, 1 reply; 8+ messages in thread From: David Miller @ 2009-04-27 6:06 UTC (permalink / raw) To: rbrito; +Cc: linuxppc-dev, linux-kernel, netdev From: Rog=E9rio Brito <rbrito@ime.usp.br> Date: Sun, 26 Apr 2009 12:57:09 -0300 > I am attempting to compile a new kernel for my OldWorld ppc box and I= 'm > having some problems. The first one that appears to happen is the fol= lowing: Turn on CONFIG_COMPAT_NET_DEV_OPS in your kernel config. There was no reason for you to turn that off, and you had to have done it explicitly I think :-) Or, if you're bored, feel free to convert the mace driver over to netdev_ops :-) ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] powerpc: convert mace to netdev_ops (was: Re: [2.6.30-rc3] powerpc: compilation error of mace module) 2009-04-27 6:06 ` David Miller @ 2009-04-27 12:16 ` Rogério Brito 2009-04-27 12:42 ` [PATCH] powerpc: convert mace to netdev_ops David Miller 0 siblings, 1 reply; 8+ messages in thread From: Rogério Brito @ 2009-04-27 12:16 UTC (permalink / raw) To: David Miller; +Cc: linuxppc-dev, paulus, linux-kernel, netdev Hi, Dave. On Apr 26 2009, David Miller wrote: > Or, if you're bored, feel free to convert the mace driver over > to netdev_ops :-) Is this anything close to what needs to be done? It's not without failures, because the function mace_set_timeout receives a pointer to a struct net_device, but is marked inline and is used by mace_tx_timeout, which receives an unsigned long (which calls mace_set_timeout). Perhaps it would be a case of removing the inline hint to the compiler? I guess that BenH or Paul could comment here better... Signed-off-by: Rogério Brito <rbrito@ime.usp.br> --- --- a/drivers/net/mace.c 2008-12-29 15:25:15.000000000 -0200 +++ b/drivers/net/mace.c 2009-04-27 08:54:16.000000000 -0300 @@ -89,6 +89,16 @@ static inline void dbdma_reset(volatile static inline void mace_clean_rings(struct mace_data *mp); static void __mace_set_address(struct net_device *dev, void *addr); +/* Conversion to netdev_ops. */ +static const struct net_device_ops mace_netdev_ops = { + .ndo_open = mace_open, + .ndo_stop = mace_close, + .ndo_start_xmit = mace_xmit_start, + .ndo_tx_timeout = mace_set_timeout, + .ndo_set_multicast_list = mace_set_multicast, + .ndo_set_mac_address = mace_set_address, +}; + /* * If we can't get a skbuff when we need it, we use this area for DMA. */ @@ -208,11 +217,7 @@ static int __devinit mace_probe(struct m } } - dev->open = mace_open; - dev->stop = mace_close; - dev->hard_start_xmit = mace_xmit_start; - dev->set_multicast_list = mace_set_multicast; - dev->set_mac_address = mace_set_address; + dev->netdev_ops = &mace_netdev_ops; /* * Most of what is below could be moved to mace_open() -- Rogério Brito : rbrito@{mackenzie,ime.usp}.br : GPG key 1024D/7C2CAEB8 http://www.ime.usp.br/~rbrito : http://meusite.mackenzie.com.br/rbrito Projects: algorithms.berlios.de : lame.sf.net : vrms.alioth.debian.org ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] powerpc: convert mace to netdev_ops 2009-04-27 12:16 ` [PATCH] powerpc: convert mace to netdev_ops (was: Re: [2.6.30-rc3] powerpc: compilation error of mace module) Rogério Brito @ 2009-04-27 12:42 ` David Miller 2009-04-27 14:20 ` Rogério Brito 2009-05-03 11:48 ` Rogério Brito 0 siblings, 2 replies; 8+ messages in thread From: David Miller @ 2009-04-27 12:42 UTC (permalink / raw) To: rbrito; +Cc: linuxppc-dev, paulus, linux-kernel, netdev From: Rog=E9rio Brito <rbrito@ime.usp.br> Date: Mon, 27 Apr 2009 09:16:33 -0300 > Is this anything close to what needs to be done? It's not without > failures, because the function mace_set_timeout receives a pointer to= a > struct net_device, but is marked inline and is used by mace_tx_timeou= t, > which receives an unsigned long (which calls mace_set_timeout). > = > Perhaps it would be a case of removing the inline hint to the compile= r? > I guess that BenH or Paul could comment here better... > = > Signed-off-by: Rog=E9rio Brito <rbrito@ime.usp.br> You can fix the mace_set_timeout() function arguments by having a helper function that simply wraps around it and provides the second expection of argument types. Your patch is also wrong, it's missing a lot of netdev_ops entries that are implicitly obtained via alloc_etherdev(), namely: .ndo_change_mtu =3D eth_change_mtu, .ndo_set_mac_address =3D eth_mac_addr, .ndo_validate_addr =3D eth_validate_addr, ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] powerpc: convert mace to netdev_ops 2009-04-27 12:42 ` [PATCH] powerpc: convert mace to netdev_ops David Miller @ 2009-04-27 14:20 ` Rogério Brito 2009-05-03 11:48 ` Rogério Brito 1 sibling, 0 replies; 8+ messages in thread From: Rogério Brito @ 2009-04-27 14:20 UTC (permalink / raw) To: David Miller; +Cc: linuxppc-dev, paulus, linux-kernel, netdev Hi, Dave. On Apr 27 2009, David Miller wrote: > You can fix the mace_set_timeout() function arguments by having a > helper function that simply wraps around it and provides the second > expection of argument types. Hummm, this means that I'm not that bad... The wrapper function was the first thing that came to my mind, but I just wanted to be as least disruptive as possible. > Your patch is also wrong, it's missing a lot of netdev_ops > entries that are implicitly obtained via alloc_etherdev(), > namely: Thanks for pointing those out. I didn't find the documentation about netdev_ops under Documentation (a simple grep didn't turn any results). > .ndo_change_mtu = eth_change_mtu, > .ndo_set_mac_address = eth_mac_addr, > .ndo_validate_addr = eth_validate_addr, Nice. I will incorporate such things. Thanks, Rogério Brito. -- Rogério Brito : rbrito@{mackenzie,ime.usp}.br : GPG key 1024D/7C2CAEB8 http://www.ime.usp.br/~rbrito : http://meusite.mackenzie.com.br/rbrito Projects: algorithms.berlios.de : lame.sf.net : vrms.alioth.debian.org ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] powerpc: convert mace to netdev_ops 2009-04-27 12:42 ` [PATCH] powerpc: convert mace to netdev_ops David Miller 2009-04-27 14:20 ` Rogério Brito @ 2009-05-03 11:48 ` Rogério Brito 2009-05-03 21:15 ` David Miller 1 sibling, 1 reply; 8+ messages in thread From: Rogério Brito @ 2009-05-03 11:48 UTC (permalink / raw) To: David Miller; +Cc: linuxppc-dev, paulus, linux-kernel, netdev Hi, Dave. On Apr 27 2009, David Miller wrote: > You can fix the mace_set_timeout() function arguments by having > a helper function that simply wraps around it and provides the > second expection of argument types. I hope that this version is a slightly better fix to convert mace to netdev_ops. This is against this morning's net-2.6 tree. Signed-off-by: Rogério Brito <rbrito@ime.usp.br> --- diff --git a/drivers/net/mace.c b/drivers/net/mace.c index feebbd9..03a179d 100644 --- a/drivers/net/mace.c +++ b/drivers/net/mace.c @@ -89,6 +89,19 @@ static inline void dbdma_reset(volatile struct dbdma_regs __iomem *dma); static inline void mace_clean_rings(struct mace_data *mp); static void __mace_set_address(struct net_device *dev, void *addr); +/* Conversion to netdev_ops. */ +static const struct net_device_ops mace_netdev_ops = { + .ndo_open = mace_open, + .ndo_stop = mace_close, + .ndo_start_xmit = mace_xmit_start, + .ndo_tx_timeout = mace_tx_timeout, + .ndo_set_multicast_list = mace_set_multicast, + .ndo_set_mac_address = mace_set_address, + .ndo_change_mtu = eth_change_mtu, + .ndo_set_mac_address = eth_mac_addr, + .ndo_validate_addr = eth_validate_addr, +}; + /* * If we can't get a skbuff when we need it, we use this area for DMA. */ @@ -207,11 +220,7 @@ static int __devinit mace_probe(struct macio_dev *mdev, const struct of_device_i } } - dev->open = mace_open; - dev->stop = mace_close; - dev->hard_start_xmit = mace_xmit_start; - dev->set_multicast_list = mace_set_multicast; - dev->set_mac_address = mace_set_address; + dev->netdev_ops = &mace_netdev_ops; /* * Most of what is below could be moved to mace_open() @@ -798,6 +807,13 @@ static irqreturn_t mace_interrupt(int irq, void *dev_id) return IRQ_HANDLED; } +/* + * In the following, the parameter "data" is treated like a pointer, + * which is probably OK for 32 bit arches, but not for 64. + * + * (Are mace's found on any newer machines??) -- rbrito + * + */ static void mace_tx_timeout(unsigned long data) { struct net_device *dev = (struct net_device *) data; -- Rogério Brito : rbrito@{mackenzie,ime.usp}.br : GPG key 1024D/7C2CAEB8 http://www.ime.usp.br/~rbrito : http://meusite.mackenzie.com.br/rbrito Projects: algorithms.berlios.de : lame.sf.net : vrms.alioth.debian.org ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] powerpc: convert mace to netdev_ops 2009-05-03 11:48 ` Rogério Brito @ 2009-05-03 21:15 ` David Miller 2009-05-03 21:20 ` David Miller 0 siblings, 1 reply; 8+ messages in thread From: David Miller @ 2009-05-03 21:15 UTC (permalink / raw) To: rbrito; +Cc: linuxppc-dev, paulus, linux-kernel, netdev From: Rog=E9rio Brito <rbrito@ime.usp.br> Date: Sun, 3 May 2009 08:48:20 -0300 > I hope that this version is a slightly better fix to convert mace to > netdev_ops. > = > This is against this morning's net-2.6 tree. > = > Signed-off-by: Rog=E9rio Brito <rbrito@ime.usp.br> I'll apply this, thanks! I made one change however. > @@ -798,6 +807,13 @@ static irqreturn_t mace_interrupt(int irq, void = *dev_id) > return IRQ_HANDLED; > } > = > +/* > + * In the following, the parameter "data" is treated like a pointer,= > + * which is probably OK for 32 bit arches, but not for 64. > + * > + * (Are mace's found on any newer machines??) -- rbrito > + * > + */ > static void mace_tx_timeout(unsigned long data) > { > struct net_device *dev =3D (struct net_device *) data; I left this new comment out, as this is a common idiom (passing opaque data as an 'unsigned long' argument to a callback) and casting it to a pointer. It also works perfectly fine on all 32-bit and 64-bit platforms. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] powerpc: convert mace to netdev_ops 2009-05-03 21:15 ` David Miller @ 2009-05-03 21:20 ` David Miller 0 siblings, 0 replies; 8+ messages in thread From: David Miller @ 2009-05-03 21:20 UTC (permalink / raw) To: rbrito; +Cc: linuxppc-dev, paulus, linux-kernel, netdev From: David Miller <davem@davemloft.net> Date: Sun, 03 May 2009 14:15:24 -0700 (PDT) > From: Rog=E9rio Brito <rbrito@ime.usp.br> > Date: Sun, 3 May 2009 08:48:20 -0300 > = >> I hope that this version is a slightly better fix to convert mace to= >> netdev_ops. >> = >> This is against this morning's net-2.6 tree. >> = >> Signed-off-by: Rog=E9rio Brito <rbrito@ime.usp.br> > = > I'll apply this, thanks! I made one change however. Oh, nevermind, it seems that MACE was already converted to netdev_ops some time ago in the net-next-2.6 tree. ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2009-05-03 21:20 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-04-26 15:57 [2.6.30-rc3] powerpc: compilation error of mace module Rogério Brito 2009-04-27 6:06 ` David Miller 2009-04-27 12:16 ` [PATCH] powerpc: convert mace to netdev_ops (was: Re: [2.6.30-rc3] powerpc: compilation error of mace module) Rogério Brito 2009-04-27 12:42 ` [PATCH] powerpc: convert mace to netdev_ops David Miller 2009-04-27 14:20 ` Rogério Brito 2009-05-03 11:48 ` Rogério Brito 2009-05-03 21:15 ` David Miller 2009-05-03 21:20 ` David Miller
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).