Lines Matching refs:dev

183 static int el3_common_init(struct net_device *dev);
184 static void el3_common_remove(struct net_device *dev);
187 static int el3_open(struct net_device *dev);
188 static netdev_tx_t el3_start_xmit(struct sk_buff *skb, struct net_device *dev);
190 static void update_stats(struct net_device *dev);
191 static struct net_device_stats *el3_get_stats(struct net_device *dev);
192 static int el3_rx(struct net_device *dev);
193 static int el3_close(struct net_device *dev);
194 static void set_multicast_list(struct net_device *dev);
195 static void el3_tx_timeout (struct net_device *dev, unsigned int txqueue);
196 static void el3_down(struct net_device *dev);
197 static void el3_up(struct net_device *dev);
211 static void el3_poll_controller(struct net_device *dev);
268 static void el3_dev_fill(struct net_device *dev, __be16 *phys_addr, int ioaddr, in el3_dev_fill() argument
271 struct el3_private *lp = netdev_priv(dev); in el3_dev_fill()
273 eth_hw_addr_set(dev, (u8 *)phys_addr); in el3_dev_fill()
274 dev->base_addr = ioaddr; in el3_dev_fill()
275 dev->irq = irq; in el3_dev_fill()
276 dev->if_port = if_port; in el3_dev_fill()
282 struct net_device *dev; in el3_isa_match() local
300 dev = alloc_etherdev(sizeof(struct el3_private)); in el3_isa_match()
301 if (!dev) in el3_isa_match()
304 SET_NETDEV_DEV(dev, pdev); in el3_isa_match()
307 free_netdev(dev); in el3_isa_match()
319 free_netdev(dev); in el3_isa_match()
326 el3_dev_fill(dev, phys_addr, ioaddr, isa_irq, if_port, EL3_ISA); in el3_isa_match()
327 dev_set_drvdata(pdev, dev); in el3_isa_match()
328 if (el3_common_init(dev)) { in el3_isa_match()
329 free_netdev(dev); in el3_isa_match()
333 el3_devs[el3_cards++] = dev; in el3_isa_match()
345 static int el3_isa_suspend(struct device *dev, unsigned int n, in el3_isa_suspend() argument
349 return el3_suspend(dev, state); in el3_isa_suspend()
352 static int el3_isa_resume(struct device *dev, unsigned int n) in el3_isa_resume() argument
354 struct net_device *ndev = dev_get_drvdata(dev); in el3_isa_resume()
371 return el3_resume(dev); in el3_isa_resume()
406 struct net_device *dev = NULL; in el3_pnp_probe() local
417 dev = alloc_etherdev(sizeof(struct el3_private)); in el3_pnp_probe()
418 if (!dev) { in el3_pnp_probe()
422 SET_NETDEV_DEV(dev, &pdev->dev); in el3_pnp_probe()
424 el3_dev_fill(dev, phys_addr, ioaddr, irq, if_port, EL3_PNP); in el3_pnp_probe()
425 pnp_set_drvdata(pdev, dev); in el3_pnp_probe()
426 err = el3_common_init(dev); in el3_pnp_probe()
430 free_netdev(dev); in el3_pnp_probe()
434 el3_devs[el3_cards++] = dev; in el3_pnp_probe()
447 return el3_suspend(&pdev->dev, state); in el3_pnp_suspend()
452 return el3_resume(&pdev->dev); in el3_pnp_resume()
511 static int el3_common_init(struct net_device *dev) in el3_common_init() argument
513 struct el3_private *lp = netdev_priv(dev); in el3_common_init()
521 if (dev->mem_start & 0x05) { /* xcvr codes 1/3/4/12 */ in el3_common_init()
522 dev->if_port = (dev->mem_start & 0x0f); in el3_common_init()
525 dev->if_port |= (dev->mem_start & 0x08); in el3_common_init()
529 dev->netdev_ops = &netdev_ops; in el3_common_init()
530 dev->watchdog_timeo = TX_TIMEOUT; in el3_common_init()
531 dev->ethtool_ops = &ethtool_ops; in el3_common_init()
533 err = register_netdev(dev); in el3_common_init()
536 dev->base_addr, dev->irq); in el3_common_init()
537 release_region(dev->base_addr, EL3_IO_EXTENT); in el3_common_init()
542 dev->name, dev->base_addr, if_names[(dev->if_port & 0x03)], in el3_common_init()
543 dev->dev_addr, dev->irq); in el3_common_init()
549 static void el3_common_remove (struct net_device *dev) in el3_common_remove() argument
551 unregister_netdev (dev); in el3_common_remove()
552 release_region(dev->base_addr, EL3_IO_EXTENT); in el3_common_remove()
553 free_netdev (dev); in el3_common_remove()
562 struct net_device *dev = NULL; in el3_eisa_probe() local
584 dev = alloc_etherdev(sizeof (struct el3_private)); in el3_eisa_probe()
585 if (dev == NULL) { in el3_eisa_probe()
590 SET_NETDEV_DEV(dev, device); in el3_eisa_probe()
592 el3_dev_fill(dev, phys_addr, ioaddr, irq, if_port, EL3_EISA); in el3_eisa_probe()
593 eisa_set_drvdata (edev, dev); in el3_eisa_probe()
594 err = el3_common_init(dev); in el3_eisa_probe()
598 free_netdev(dev); in el3_eisa_probe()
602 el3_devs[el3_cards++] = dev; in el3_eisa_probe()
612 struct net_device *dev; in el3_device_remove() local
614 dev = dev_get_drvdata(device); in el3_device_remove()
616 el3_common_remove (dev); in el3_device_remove()
656 el3_open(struct net_device *dev) in el3_open() argument
658 int ioaddr = dev->base_addr; in el3_open()
665 i = request_irq(dev->irq, el3_interrupt, 0, dev->name, dev); in el3_open()
671 pr_debug("%s: Opening, IRQ %d status@%x %4.4x.\n", dev->name, in el3_open()
672 dev->irq, ioaddr + EL3_STATUS, inw(ioaddr + EL3_STATUS)); in el3_open()
674 el3_up(dev); in el3_open()
678 dev->name, dev->irq, inw(ioaddr + EL3_STATUS)); in el3_open()
684 el3_tx_timeout (struct net_device *dev, unsigned int txqueue) in el3_tx_timeout() argument
686 int ioaddr = dev->base_addr; in el3_tx_timeout()
690 dev->name, inb(ioaddr + TX_STATUS), inw(ioaddr + EL3_STATUS), in el3_tx_timeout()
692 dev->stats.tx_errors++; in el3_tx_timeout()
693 netif_trans_update(dev); /* prevent tx timeout */ in el3_tx_timeout()
697 netif_wake_queue(dev); in el3_tx_timeout()
702 el3_start_xmit(struct sk_buff *skb, struct net_device *dev) in el3_start_xmit() argument
704 struct el3_private *lp = netdev_priv(dev); in el3_start_xmit()
705 int ioaddr = dev->base_addr; in el3_start_xmit()
708 netif_stop_queue (dev); in el3_start_xmit()
710 dev->stats.tx_bytes += skb->len; in el3_start_xmit()
714 dev->name, skb->len, inw(ioaddr + EL3_STATUS)); in el3_start_xmit()
736 netif_start_queue(dev); in el3_start_xmit()
751 if (tx_status & 0x38) dev->stats.tx_aborted_errors++; in el3_start_xmit()
764 struct net_device *dev = dev_id; in el3_interrupt() local
769 lp = netdev_priv(dev); in el3_interrupt()
772 ioaddr = dev->base_addr; in el3_interrupt()
776 pr_debug("%s: interrupt, status %4.4x.\n", dev->name, status); in el3_interrupt()
783 el3_rx(dev); in el3_interrupt()
790 netif_wake_queue (dev); in el3_interrupt()
795 update_stats(dev); in el3_interrupt()
797 el3_rx(dev); in el3_interrupt()
805 if (tx_status & 0x38) dev->stats.tx_aborted_errors++; in el3_interrupt()
816 | (dev->flags & IFF_ALLMULTI ? RxMulticast : 0) in el3_interrupt()
817 | (dev->flags & IFF_PROMISC ? RxProm : 0), in el3_interrupt()
826 dev->name, status); in el3_interrupt()
836 pr_debug("%s: exiting interrupt, status %4.4x.\n", dev->name, in el3_interrupt()
849 static void el3_poll_controller(struct net_device *dev) in el3_poll_controller() argument
851 disable_irq(dev->irq); in el3_poll_controller()
852 el3_interrupt(dev->irq, dev); in el3_poll_controller()
853 enable_irq(dev->irq); in el3_poll_controller()
858 el3_get_stats(struct net_device *dev) in el3_get_stats() argument
860 struct el3_private *lp = netdev_priv(dev); in el3_get_stats()
869 update_stats(dev); in el3_get_stats()
871 return &dev->stats; in el3_get_stats()
879 static void update_stats(struct net_device *dev) in update_stats() argument
881 int ioaddr = dev->base_addr; in update_stats()
889 dev->stats.tx_carrier_errors += inb(ioaddr + 0); in update_stats()
890 dev->stats.tx_heartbeat_errors += inb(ioaddr + 1); in update_stats()
892 dev->stats.collisions += inb(ioaddr + 3); in update_stats()
893 dev->stats.tx_window_errors += inb(ioaddr + 4); in update_stats()
894 dev->stats.rx_fifo_errors += inb(ioaddr + 5); in update_stats()
895 dev->stats.tx_packets += inb(ioaddr + 6); in update_stats()
907 el3_rx(struct net_device *dev) in el3_rx() argument
909 int ioaddr = dev->base_addr; in el3_rx()
920 dev->stats.rx_errors++; in el3_rx()
922 case 0x0000: dev->stats.rx_over_errors++; break; in el3_rx()
923 case 0x0800: dev->stats.rx_length_errors++; break; in el3_rx()
924 case 0x1000: dev->stats.rx_frame_errors++; break; in el3_rx()
925 case 0x1800: dev->stats.rx_length_errors++; break; in el3_rx()
926 case 0x2000: dev->stats.rx_frame_errors++; break; in el3_rx()
927 case 0x2800: dev->stats.rx_crc_errors++; break; in el3_rx()
933 skb = netdev_alloc_skb(dev, pkt_len + 5); in el3_rx()
945 skb->protocol = eth_type_trans(skb,dev); in el3_rx()
947 dev->stats.rx_bytes += pkt_len; in el3_rx()
948 dev->stats.rx_packets++; in el3_rx()
952 dev->stats.rx_dropped++; in el3_rx()
955 dev->name, pkt_len); in el3_rx()
970 set_multicast_list(struct net_device *dev) in set_multicast_list() argument
973 struct el3_private *lp = netdev_priv(dev); in set_multicast_list()
974 int ioaddr = dev->base_addr; in set_multicast_list()
975 int mc_count = netdev_mc_count(dev); in set_multicast_list()
982 dev->name, mc_count); in set_multicast_list()
986 if (dev->flags&IFF_PROMISC) { in set_multicast_list()
990 else if (mc_count || (dev->flags&IFF_ALLMULTI)) { in set_multicast_list()
999 el3_close(struct net_device *dev) in el3_close() argument
1001 int ioaddr = dev->base_addr; in el3_close()
1002 struct el3_private *lp = netdev_priv(dev); in el3_close()
1005 pr_debug("%s: Shutting down ethercard.\n", dev->name); in el3_close()
1007 el3_down(dev); in el3_close()
1009 free_irq(dev->irq, dev); in el3_close()
1023 el3_link_ok(struct net_device *dev) in el3_link_ok() argument
1025 int ioaddr = dev->base_addr; in el3_link_ok()
1035 el3_netdev_get_ecmd(struct net_device *dev, struct ethtool_link_ksettings *cmd) in el3_netdev_get_ecmd() argument
1038 int ioaddr = dev->base_addr; in el3_netdev_get_ecmd()
1081 el3_netdev_set_ecmd(struct net_device *dev, in el3_netdev_set_ecmd() argument
1085 int ioaddr = dev->base_addr; in el3_netdev_set_ecmd()
1099 dev->if_port = 0; in el3_netdev_set_ecmd()
1103 dev->if_port = 1; in el3_netdev_set_ecmd()
1107 dev->if_port = 3; in el3_netdev_set_ecmd()
1114 if (dev->if_port == 3) { in el3_netdev_set_ecmd()
1136 static void el3_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info) in el3_get_drvinfo() argument
1141 static int el3_get_link_ksettings(struct net_device *dev, in el3_get_link_ksettings() argument
1144 struct el3_private *lp = netdev_priv(dev); in el3_get_link_ksettings()
1147 el3_netdev_get_ecmd(dev, cmd); in el3_get_link_ksettings()
1152 static int el3_set_link_ksettings(struct net_device *dev, in el3_set_link_ksettings() argument
1155 struct el3_private *lp = netdev_priv(dev); in el3_set_link_ksettings()
1159 ret = el3_netdev_set_ecmd(dev, cmd); in el3_set_link_ksettings()
1164 static u32 el3_get_link(struct net_device *dev) in el3_get_link() argument
1166 struct el3_private *lp = netdev_priv(dev); in el3_get_link()
1170 ret = el3_link_ok(dev); in el3_get_link()
1175 static u32 el3_get_msglevel(struct net_device *dev) in el3_get_msglevel() argument
1180 static void el3_set_msglevel(struct net_device *dev, u32 v) in el3_set_msglevel() argument
1195 el3_down(struct net_device *dev) in el3_down() argument
1197 int ioaddr = dev->base_addr; in el3_down()
1199 netif_stop_queue(dev); in el3_down()
1208 if (dev->if_port == 3) in el3_down()
1211 else if (dev->if_port == 0) { in el3_down()
1219 update_stats(dev); in el3_down()
1223 el3_up(struct net_device *dev) in el3_up() argument
1226 int ioaddr = dev->base_addr; in el3_up()
1232 outw((dev->irq << 12) | 0x0f00, ioaddr + WN0_IRQ); in el3_up()
1238 outb(dev->dev_addr[i], ioaddr + i); in el3_up()
1240 if ((dev->if_port & 0x03) == 3) /* BNC interface */ in el3_up()
1243 else if ((dev->if_port & 0x03) == 0) { /* 10baseT interface */ in el3_up()
1253 pr_info("%s: ", dev->name); in el3_up()
1254 switch (dev->if_port & 0x0c) { in el3_up()
1276 pr_cont(" if_port: %d, sw_info: %4.4x\n", dev->if_port, sw_info); in el3_up()
1278 pr_debug("%s: 3c5x9 net diag word is now: %4.4x.\n", dev->name, net_diag); in el3_up()
1308 netif_start_queue(dev); in el3_up()
1318 struct net_device *dev; in el3_suspend() local
1322 dev = dev_get_drvdata(pdev); in el3_suspend()
1323 lp = netdev_priv(dev); in el3_suspend()
1324 ioaddr = dev->base_addr; in el3_suspend()
1328 if (netif_running(dev)) in el3_suspend()
1329 netif_device_detach(dev); in el3_suspend()
1331 el3_down(dev); in el3_suspend()
1342 struct net_device *dev; in el3_resume() local
1346 dev = dev_get_drvdata(pdev); in el3_resume()
1347 lp = netdev_priv(dev); in el3_resume()
1348 ioaddr = dev->base_addr; in el3_resume()
1354 el3_up(dev); in el3_resume()
1356 if (netif_running(dev)) in el3_resume()
1357 netif_device_attach(dev); in el3_resume()