Lines Matching refs:dev

86 static int mace_open(struct net_device *dev);
87 static int mace_close(struct net_device *dev);
88 static netdev_tx_t mace_xmit_start(struct sk_buff *skb, struct net_device *dev);
89 static void mace_set_multicast(struct net_device *dev);
90 static int mace_set_address(struct net_device *dev, void *addr);
91 static void mace_reset(struct net_device *dev);
94 static void mace_tx_timeout(struct net_device *dev, unsigned int txqueue);
95 static void __mace_set_address(struct net_device *dev, const void *addr);
101 static void mace_load_rxdma_base(struct net_device *dev, int set) in mace_load_rxdma_base() argument
103 struct mace_data *mp = netdev_priv(dev); in mace_load_rxdma_base()
116 static void mace_rxdma_reset(struct net_device *dev) in mace_rxdma_reset() argument
118 struct mace_data *mp = netdev_priv(dev); in mace_rxdma_reset()
125 mace_load_rxdma_base(dev, 0x00); in mace_rxdma_reset()
129 mace_load_rxdma_base(dev, 0x10); in mace_rxdma_reset()
143 static void mace_txdma_reset(struct net_device *dev) in mace_txdma_reset() argument
145 struct mace_data *mp = netdev_priv(dev); in mace_txdma_reset()
165 static void mace_dma_off(struct net_device *dev) in mace_dma_off() argument
198 struct net_device *dev; in mace_probe() local
203 dev = alloc_etherdev(PRIV_BYTES); in mace_probe()
204 if (!dev) in mace_probe()
207 mp = netdev_priv(dev); in mace_probe()
209 mp->device = &pdev->dev; in mace_probe()
210 platform_set_drvdata(pdev, dev); in mace_probe()
211 SET_NETDEV_DEV(dev, &pdev->dev); in mace_probe()
213 dev->base_addr = (u32)MACE_BASE; in mace_probe()
216 dev->irq = IRQ_MAC_MACE; in mace_probe()
235 eth_hw_addr_set(dev, macaddr); in mace_probe()
241 free_netdev(dev); in mace_probe()
245 dev->netdev_ops = &mace_netdev_ops; in mace_probe()
246 dev->watchdog_timeo = TX_TIMEOUT; in mace_probe()
249 dev->dev_addr, mp->chipid); in mace_probe()
251 err = register_netdev(dev); in mace_probe()
255 free_netdev(dev); in mace_probe()
263 static void mace_reset(struct net_device *dev) in mace_reset() argument
265 struct mace_data *mp = netdev_priv(dev); in mace_reset()
296 __mace_set_address(dev, dev->dev_addr); in mace_reset()
320 static void __mace_set_address(struct net_device *dev, const void *addr) in __mace_set_address() argument
322 struct mace_data *mp = netdev_priv(dev); in __mace_set_address()
338 eth_hw_addr_set(dev, macaddr); in __mace_set_address()
343 static int mace_set_address(struct net_device *dev, void *addr) in mace_set_address() argument
345 struct mace_data *mp = netdev_priv(dev); in mace_set_address()
354 __mace_set_address(dev, addr); in mace_set_address()
368 static int mace_open(struct net_device *dev) in mace_open() argument
370 struct mace_data *mp = netdev_priv(dev); in mace_open()
374 mace_reset(dev); in mace_open()
376 if (request_irq(dev->irq, mace_interrupt, 0, dev->name, dev)) { in mace_open()
377 printk(KERN_ERR "%s: can't get irq %d\n", dev->name, dev->irq); in mace_open()
380 if (request_irq(mp->dma_intr, mace_dma_intr, 0, dev->name, dev)) { in mace_open()
381 printk(KERN_ERR "%s: can't get irq %d\n", dev->name, mp->dma_intr); in mace_open()
382 free_irq(dev->irq, dev); in mace_open()
400 mace_dma_off(dev); in mace_open()
409 mace_rxdma_reset(dev); in mace_open()
410 mace_txdma_reset(dev); in mace_open()
422 free_irq(dev->irq, dev); in mace_open()
423 free_irq(mp->dma_intr, dev); in mace_open()
431 static int mace_close(struct net_device *dev) in mace_close() argument
433 struct mace_data *mp = netdev_priv(dev); in mace_close()
438 mace_dma_off(dev); /* disable rx and tx dma */ in mace_close()
447 static netdev_tx_t mace_xmit_start(struct sk_buff *skb, struct net_device *dev) in mace_xmit_start() argument
449 struct mace_data *mp = netdev_priv(dev); in mace_xmit_start()
455 netif_stop_queue(dev); in mace_xmit_start()
464 dev->stats.tx_packets++; in mace_xmit_start()
465 dev->stats.tx_bytes += skb->len; in mace_xmit_start()
483 static void mace_set_multicast(struct net_device *dev) in mace_set_multicast() argument
485 struct mace_data *mp = netdev_priv(dev); in mace_set_multicast()
496 if (dev->flags & IFF_PROMISC) { in mace_set_multicast()
502 if (dev->flags & IFF_ALLMULTI) { in mace_set_multicast()
509 netdev_for_each_mc_addr(ha, dev) { in mace_set_multicast()
534 static void mace_handle_misc_intrs(struct net_device *dev, int intr) in mace_handle_misc_intrs() argument
536 struct mace_data *mp = netdev_priv(dev); in mace_handle_misc_intrs()
541 dev->stats.rx_missed_errors += 256; in mace_handle_misc_intrs()
542 dev->stats.rx_missed_errors += mb->mpc; /* reading clears it */ in mace_handle_misc_intrs()
544 dev->stats.rx_length_errors += 256; in mace_handle_misc_intrs()
545 dev->stats.rx_length_errors += mb->rntpc; /* reading clears it */ in mace_handle_misc_intrs()
547 ++dev->stats.tx_heartbeat_errors; in mace_handle_misc_intrs()
558 struct net_device *dev = (struct net_device *) dev_id; in mace_interrupt() local
559 struct mace_data *mp = netdev_priv(dev); in mace_interrupt()
568 mace_handle_misc_intrs(dev, intr); in mace_interrupt()
574 mace_reset(dev); in mace_interrupt()
586 ++dev->stats.tx_errors; in mace_interrupt()
588 ++dev->stats.tx_carrier_errors; in mace_interrupt()
590 ++dev->stats.tx_aborted_errors; in mace_interrupt()
592 dev->stats.tx_fifo_errors++; in mace_interrupt()
593 mace_txdma_reset(dev); in mace_interrupt()
600 netif_wake_queue(dev); in mace_interrupt()
607 static void mace_tx_timeout(struct net_device *dev, unsigned int txqueue) in mace_tx_timeout() argument
609 struct mace_data *mp = netdev_priv(dev); in mace_tx_timeout()
618 mace_txdma_reset(dev); in mace_tx_timeout()
619 mace_reset(dev); in mace_tx_timeout()
622 mace_rxdma_reset(dev); in mace_tx_timeout()
625 netif_wake_queue(dev); in mace_tx_timeout()
639 static void mace_dma_rx_frame(struct net_device *dev, struct mace_frame *mf) in mace_dma_rx_frame() argument
645 dev->stats.rx_errors++; in mace_dma_rx_frame()
647 dev->stats.rx_fifo_errors++; in mace_dma_rx_frame()
649 dev->stats.collisions++; in mace_dma_rx_frame()
651 dev->stats.rx_frame_errors++; in mace_dma_rx_frame()
653 dev->stats.rx_crc_errors++; in mace_dma_rx_frame()
657 skb = netdev_alloc_skb(dev, frame_length + 2); in mace_dma_rx_frame()
659 dev->stats.rx_dropped++; in mace_dma_rx_frame()
665 skb->protocol = eth_type_trans(skb, dev); in mace_dma_rx_frame()
667 dev->stats.rx_packets++; in mace_dma_rx_frame()
668 dev->stats.rx_bytes += frame_length; in mace_dma_rx_frame()
678 struct net_device *dev = (struct net_device *) dev_id; in mace_dma_intr() local
679 struct mace_data *mp = netdev_priv(dev); in mace_dma_intr()
696 mace_rxdma_reset(dev); in mace_dma_intr()
706 mace_dma_rx_frame(dev, (struct mace_frame*) (mp->rx_ring in mace_dma_intr()
715 mace_load_rxdma_base(dev, mp->rx_slot); in mace_dma_intr()
729 mace_txdma_reset(dev); in mace_dma_intr()
744 struct net_device *dev = platform_get_drvdata(pdev); in mac_mace_device_remove() local
745 struct mace_data *mp = netdev_priv(dev); in mac_mace_device_remove()
747 unregister_netdev(dev); in mac_mace_device_remove()
749 free_irq(dev->irq, dev); in mac_mace_device_remove()
750 free_irq(IRQ_MAC_MACE_DMA, dev); in mac_mace_device_remove()
757 free_netdev(dev); in mac_mace_device_remove()