Message ID | 20090503114820.GA14926@ime.usp.br (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
From: Rogério 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ério 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 = (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.
From: David Miller <davem@davemloft.net> Date: Sun, 03 May 2009 14:15:24 -0700 (PDT) > From: Rogério 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ério 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.
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;