aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/atp.c32
1 files changed, 24 insertions, 8 deletions
diff --git a/drivers/net/atp.c b/drivers/net/atp.c
index ea493ce23982..4317b3edb3d7 100644
--- a/drivers/net/atp.c
+++ b/drivers/net/atp.c
@@ -204,8 +204,7 @@ static irqreturn_t atp_interrupt(int irq, void *dev_id);
204static void net_rx(struct net_device *dev); 204static void net_rx(struct net_device *dev);
205static void read_block(long ioaddr, int length, unsigned char *buffer, int data_mode); 205static void read_block(long ioaddr, int length, unsigned char *buffer, int data_mode);
206static int net_close(struct net_device *dev); 206static int net_close(struct net_device *dev);
207static void set_rx_mode_8002(struct net_device *dev); 207static void set_rx_mode(struct net_device *dev);
208static void set_rx_mode_8012(struct net_device *dev);
209static void tx_timeout(struct net_device *dev); 208static void tx_timeout(struct net_device *dev);
210 209
211 210
@@ -242,6 +241,17 @@ static int __init atp_init(void)
242 return -ENODEV; 241 return -ENODEV;
243} 242}
244 243
244static const struct net_device_ops atp_netdev_ops = {
245 .ndo_open = net_open,
246 .ndo_stop = net_close,
247 .ndo_start_xmit = atp_send_packet,
248 .ndo_set_multicast_list = set_rx_mode,
249 .ndo_tx_timeout = tx_timeout,
250 .ndo_change_mtu = eth_change_mtu,
251 .ndo_set_mac_address = eth_mac_addr,
252 .ndo_validate_addr = eth_validate_addr,
253};
254
245static int __init atp_probe1(long ioaddr) 255static int __init atp_probe1(long ioaddr)
246{ 256{
247 struct net_device *dev = NULL; 257 struct net_device *dev = NULL;
@@ -342,12 +352,7 @@ static int __init atp_probe1(long ioaddr)
342 if (dev->mem_end & 0xf) 352 if (dev->mem_end & 0xf)
343 net_debug = dev->mem_end & 7; 353 net_debug = dev->mem_end & 7;
344 354
345 dev->open = net_open; 355 dev->netdev_ops = &atp_netdev_ops;
346 dev->stop = net_close;
347 dev->hard_start_xmit = atp_send_packet;
348 dev->set_multicast_list =
349 lp->chip_type == RTL8002 ? &set_rx_mode_8002 : &set_rx_mode_8012;
350 dev->tx_timeout = tx_timeout;
351 dev->watchdog_timeo = TX_TIMEOUT; 356 dev->watchdog_timeo = TX_TIMEOUT;
352 357
353 res = register_netdev(dev); 358 res = register_netdev(dev);
@@ -903,6 +908,17 @@ static void set_rx_mode_8012(struct net_device *dev)
903 write_reg(ioaddr, CMR2, CMR2_IRQOUT); /* Switch back to page 0 */ 908 write_reg(ioaddr, CMR2, CMR2_IRQOUT); /* Switch back to page 0 */
904} 909}
905 910
911static void set_rx_mode(struct net_device *dev)
912{
913 struct net_local *lp = netdev_priv(dev);
914
915 if (lp->chip_type == RTL8002)
916 return set_rx_mode_8002(dev);
917 else
918 return set_rx_mode_8012(dev);
919}
920
921
906static int __init atp_init_module(void) { 922static int __init atp_init_module(void) {
907 if (debug) /* Emit version even if no cards detected. */ 923 if (debug) /* Emit version even if no cards detected. */
908 printk(KERN_INFO "%s", version); 924 printk(KERN_INFO "%s", version);