aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/3c59x.c55
1 files changed, 40 insertions, 15 deletions
diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c
index cdbbb6226fc5..b2563d384cf2 100644
--- a/drivers/net/3c59x.c
+++ b/drivers/net/3c59x.c
@@ -992,6 +992,42 @@ out:
992 return rc; 992 return rc;
993} 993}
994 994
995static const struct net_device_ops boomrang_netdev_ops = {
996 .ndo_open = vortex_open,
997 .ndo_stop = vortex_close,
998 .ndo_start_xmit = boomerang_start_xmit,
999 .ndo_tx_timeout = vortex_tx_timeout,
1000 .ndo_get_stats = vortex_get_stats,
1001#ifdef CONFIG_PCI
1002 .ndo_do_ioctl = vortex_ioctl,
1003#endif
1004 .ndo_set_multicast_list = set_rx_mode,
1005 .ndo_change_mtu = eth_change_mtu,
1006 .ndo_set_mac_address = eth_mac_addr,
1007 .ndo_validate_addr = eth_validate_addr,
1008#ifdef CONFIG_NET_POLL_CONTROLLER
1009 .ndo_poll_controller = poll_vortex,
1010#endif
1011};
1012
1013static const struct net_device_ops vortex_netdev_ops = {
1014 .ndo_open = vortex_open,
1015 .ndo_stop = vortex_close,
1016 .ndo_start_xmit = vortex_start_xmit,
1017 .ndo_tx_timeout = vortex_tx_timeout,
1018 .ndo_get_stats = vortex_get_stats,
1019#ifdef CONFIG_PCI
1020 .ndo_do_ioctl = vortex_ioctl,
1021#endif
1022 .ndo_set_multicast_list = set_rx_mode,
1023 .ndo_change_mtu = eth_change_mtu,
1024 .ndo_set_mac_address = eth_mac_addr,
1025 .ndo_validate_addr = eth_validate_addr,
1026#ifdef CONFIG_NET_POLL_CONTROLLER
1027 .ndo_poll_controller = poll_vortex,
1028#endif
1029};
1030
995/* 1031/*
996 * Start up the PCI/EISA device which is described by *gendev. 1032 * Start up the PCI/EISA device which is described by *gendev.
997 * Return 0 on success. 1033 * Return 0 on success.
@@ -1366,18 +1402,16 @@ static int __devinit vortex_probe1(struct device *gendev,
1366 } 1402 }
1367 1403
1368 /* The 3c59x-specific entries in the device structure. */ 1404 /* The 3c59x-specific entries in the device structure. */
1369 dev->open = vortex_open;
1370 if (vp->full_bus_master_tx) { 1405 if (vp->full_bus_master_tx) {
1371 dev->hard_start_xmit = boomerang_start_xmit; 1406 dev->netdev_ops = &boomrang_netdev_ops;
1372 /* Actually, it still should work with iommu. */ 1407 /* Actually, it still should work with iommu. */
1373 if (card_idx < MAX_UNITS && 1408 if (card_idx < MAX_UNITS &&
1374 ((hw_checksums[card_idx] == -1 && (vp->drv_flags & HAS_HWCKSM)) || 1409 ((hw_checksums[card_idx] == -1 && (vp->drv_flags & HAS_HWCKSM)) ||
1375 hw_checksums[card_idx] == 1)) { 1410 hw_checksums[card_idx] == 1)) {
1376 dev->features |= NETIF_F_IP_CSUM | NETIF_F_SG; 1411 dev->features |= NETIF_F_IP_CSUM | NETIF_F_SG;
1377 } 1412 }
1378 } else { 1413 } else
1379 dev->hard_start_xmit = vortex_start_xmit; 1414 dev->netdev_ops = &vortex_netdev_ops;
1380 }
1381 1415
1382 if (print_info) { 1416 if (print_info) {
1383 printk(KERN_INFO "%s: scatter/gather %sabled. h/w checksums %sabled\n", 1417 printk(KERN_INFO "%s: scatter/gather %sabled. h/w checksums %sabled\n",
@@ -1386,18 +1420,9 @@ static int __devinit vortex_probe1(struct device *gendev,
1386 (dev->features & NETIF_F_IP_CSUM) ? "en":"dis"); 1420 (dev->features & NETIF_F_IP_CSUM) ? "en":"dis");
1387 } 1421 }
1388 1422
1389 dev->stop = vortex_close;
1390 dev->get_stats = vortex_get_stats;
1391#ifdef CONFIG_PCI
1392 dev->do_ioctl = vortex_ioctl;
1393#endif
1394 dev->ethtool_ops = &vortex_ethtool_ops; 1423 dev->ethtool_ops = &vortex_ethtool_ops;
1395 dev->set_multicast_list = set_rx_mode;
1396 dev->tx_timeout = vortex_tx_timeout;
1397 dev->watchdog_timeo = (watchdog * HZ) / 1000; 1424 dev->watchdog_timeo = (watchdog * HZ) / 1000;
1398#ifdef CONFIG_NET_POLL_CONTROLLER 1425
1399 dev->poll_controller = poll_vortex;
1400#endif
1401 if (pdev) { 1426 if (pdev) {
1402 vp->pm_state_valid = 1; 1427 vp->pm_state_valid = 1;
1403 pci_save_state(VORTEX_PCI(vp)); 1428 pci_save_state(VORTEX_PCI(vp));