Lines Matching refs:ndev
31 static inline void moxart_emac_write(struct net_device *ndev, in moxart_emac_write() argument
34 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_emac_write()
39 static void moxart_update_mac_address(struct net_device *ndev) in moxart_update_mac_address() argument
41 moxart_emac_write(ndev, REG_MAC_MS_ADDRESS, in moxart_update_mac_address()
42 ((ndev->dev_addr[0] << 8) | (ndev->dev_addr[1]))); in moxart_update_mac_address()
43 moxart_emac_write(ndev, REG_MAC_MS_ADDRESS + 4, in moxart_update_mac_address()
44 ((ndev->dev_addr[2] << 24) | in moxart_update_mac_address()
45 (ndev->dev_addr[3] << 16) | in moxart_update_mac_address()
46 (ndev->dev_addr[4] << 8) | in moxart_update_mac_address()
47 (ndev->dev_addr[5]))); in moxart_update_mac_address()
50 static int moxart_set_mac_address(struct net_device *ndev, void *addr) in moxart_set_mac_address() argument
57 memcpy(ndev->dev_addr, address->sa_data, ndev->addr_len); in moxart_set_mac_address()
58 moxart_update_mac_address(ndev); in moxart_set_mac_address()
63 static void moxart_mac_free_memory(struct net_device *ndev) in moxart_mac_free_memory() argument
65 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_free_memory()
69 dma_unmap_single(&ndev->dev, priv->rx_mapping[i], in moxart_mac_free_memory()
84 static void moxart_mac_reset(struct net_device *ndev) in moxart_mac_reset() argument
86 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_reset()
97 static void moxart_mac_enable(struct net_device *ndev) in moxart_mac_enable() argument
99 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_enable()
112 static void moxart_mac_setup_desc_ring(struct net_device *ndev) in moxart_mac_setup_desc_ring() argument
114 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_setup_desc_ring()
137 priv->rx_mapping[i] = dma_map_single(&ndev->dev, in moxart_mac_setup_desc_ring()
141 if (dma_mapping_error(&ndev->dev, priv->rx_mapping[i])) in moxart_mac_setup_desc_ring()
142 netdev_err(ndev, "DMA mapping error\n"); in moxart_mac_setup_desc_ring()
158 static int moxart_mac_open(struct net_device *ndev) in moxart_mac_open() argument
160 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_open()
162 if (!is_valid_ether_addr(ndev->dev_addr)) in moxart_mac_open()
167 moxart_mac_reset(ndev); in moxart_mac_open()
168 moxart_update_mac_address(ndev); in moxart_mac_open()
169 moxart_mac_setup_desc_ring(ndev); in moxart_mac_open()
170 moxart_mac_enable(ndev); in moxart_mac_open()
171 netif_start_queue(ndev); in moxart_mac_open()
173 netdev_dbg(ndev, "%s: IMR=0x%x, MACCR=0x%x\n", in moxart_mac_open()
180 static int moxart_mac_stop(struct net_device *ndev) in moxart_mac_stop() argument
182 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_stop()
186 netif_stop_queue(ndev); in moxart_mac_stop()
202 struct net_device *ndev = priv->ndev; in moxart_rx_poll() local
229 dma_sync_single_for_cpu(&ndev->dev, in moxart_rx_poll()
232 skb = netdev_alloc_skb_ip_align(ndev, len); in moxart_rx_poll()
243 skb->protocol = eth_type_trans(skb, ndev); in moxart_rx_poll()
269 static void moxart_tx_finished(struct net_device *ndev) in moxart_tx_finished() argument
271 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_tx_finished()
276 dma_unmap_single(&ndev->dev, priv->tx_mapping[tx_tail], in moxart_tx_finished()
292 struct net_device *ndev = (struct net_device *) dev_id; in moxart_mac_interrupt() local
293 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_interrupt()
297 moxart_tx_finished(ndev); in moxart_mac_interrupt()
310 static int moxart_mac_start_xmit(struct sk_buff *skb, struct net_device *ndev) in moxart_mac_start_xmit() argument
312 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_start_xmit()
330 priv->tx_mapping[tx_head] = dma_map_single(&ndev->dev, skb->data, in moxart_mac_start_xmit()
332 if (dma_mapping_error(&ndev->dev, priv->tx_mapping[tx_head])) { in moxart_mac_start_xmit()
333 netdev_err(ndev, "DMA mapping error\n"); in moxart_mac_start_xmit()
351 dma_sync_single_for_device(&ndev->dev, priv->tx_mapping[tx_head], in moxart_mac_start_xmit()
365 ndev->trans_start = jiffies; in moxart_mac_start_xmit()
373 static struct net_device_stats *moxart_mac_get_stats(struct net_device *ndev) in moxart_mac_get_stats() argument
375 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_get_stats()
380 static void moxart_mac_setmulticast(struct net_device *ndev) in moxart_mac_setmulticast() argument
382 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_setmulticast()
386 netdev_for_each_mc_addr(ha, ndev) { in moxart_mac_setmulticast()
401 static void moxart_mac_set_rx_mode(struct net_device *ndev) in moxart_mac_set_rx_mode() argument
403 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_set_rx_mode()
407 (ndev->flags & IFF_PROMISC) ? (priv->reg_maccr |= RCV_ALL) : in moxart_mac_set_rx_mode()
410 (ndev->flags & IFF_ALLMULTI) ? (priv->reg_maccr |= RX_MULTIPKT) : in moxart_mac_set_rx_mode()
413 if ((ndev->flags & IFF_MULTICAST) && netdev_mc_count(ndev)) { in moxart_mac_set_rx_mode()
415 moxart_mac_setmulticast(ndev); in moxart_mac_set_rx_mode()
440 struct net_device *ndev; in moxart_mac_probe() local
446 ndev = alloc_etherdev(sizeof(struct moxart_mac_priv_t)); in moxart_mac_probe()
447 if (!ndev) in moxart_mac_probe()
452 netdev_err(ndev, "irq_of_parse_and_map failed\n"); in moxart_mac_probe()
457 priv = netdev_priv(ndev); in moxart_mac_probe()
458 priv->ndev = ndev; in moxart_mac_probe()
461 ndev->base_addr = res->start; in moxart_mac_probe()
504 platform_set_drvdata(pdev, ndev); in moxart_mac_probe()
507 pdev->name, ndev); in moxart_mac_probe()
509 netdev_err(ndev, "devm_request_irq failed\n"); in moxart_mac_probe()
513 ndev->netdev_ops = &moxart_netdev_ops; in moxart_mac_probe()
514 netif_napi_add(ndev, &priv->napi, moxart_rx_poll, RX_DESC_NUM); in moxart_mac_probe()
515 ndev->priv_flags |= IFF_UNICAST_FLT; in moxart_mac_probe()
516 ndev->irq = irq; in moxart_mac_probe()
518 SET_NETDEV_DEV(ndev, &pdev->dev); in moxart_mac_probe()
520 ret = register_netdev(ndev); in moxart_mac_probe()
524 netdev_dbg(ndev, "%s: IRQ=%d address=%pM\n", in moxart_mac_probe()
525 __func__, ndev->irq, ndev->dev_addr); in moxart_mac_probe()
530 netdev_err(ndev, "init failed\n"); in moxart_mac_probe()
531 moxart_mac_free_memory(ndev); in moxart_mac_probe()
533 free_netdev(ndev); in moxart_mac_probe()
539 struct net_device *ndev = platform_get_drvdata(pdev); in moxart_remove() local
541 unregister_netdev(ndev); in moxart_remove()
542 devm_free_irq(&pdev->dev, ndev->irq, ndev); in moxart_remove()
543 moxart_mac_free_memory(ndev); in moxart_remove()
544 free_netdev(ndev); in moxart_remove()