Lines Matching full:ndev
42 static inline void moxart_emac_write(struct net_device *ndev, in moxart_emac_write() argument
45 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_emac_write()
50 static void moxart_update_mac_address(struct net_device *ndev) in moxart_update_mac_address() argument
52 moxart_emac_write(ndev, REG_MAC_MS_ADDRESS, in moxart_update_mac_address()
53 ((ndev->dev_addr[0] << 8) | (ndev->dev_addr[1]))); in moxart_update_mac_address()
54 moxart_emac_write(ndev, REG_MAC_MS_ADDRESS + 4, in moxart_update_mac_address()
55 ((ndev->dev_addr[2] << 24) | in moxart_update_mac_address()
56 (ndev->dev_addr[3] << 16) | in moxart_update_mac_address()
57 (ndev->dev_addr[4] << 8) | in moxart_update_mac_address()
58 (ndev->dev_addr[5]))); in moxart_update_mac_address()
61 static int moxart_set_mac_address(struct net_device *ndev, void *addr) in moxart_set_mac_address() argument
68 memcpy(ndev->dev_addr, address->sa_data, ndev->addr_len); in moxart_set_mac_address()
69 moxart_update_mac_address(ndev); in moxart_set_mac_address()
74 static void moxart_mac_free_memory(struct net_device *ndev) in moxart_mac_free_memory() argument
76 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_free_memory()
92 static void moxart_mac_reset(struct net_device *ndev) in moxart_mac_reset() argument
94 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_reset()
105 static void moxart_mac_enable(struct net_device *ndev) in moxart_mac_enable() argument
107 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_enable()
120 static void moxart_mac_setup_desc_ring(struct net_device *ndev) in moxart_mac_setup_desc_ring() argument
122 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_setup_desc_ring()
150 netdev_err(ndev, "DMA mapping error\n"); in moxart_mac_setup_desc_ring()
166 static int moxart_mac_open(struct net_device *ndev) in moxart_mac_open() argument
168 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_open()
170 if (!is_valid_ether_addr(ndev->dev_addr)) in moxart_mac_open()
175 moxart_mac_reset(ndev); in moxart_mac_open()
176 moxart_update_mac_address(ndev); in moxart_mac_open()
177 moxart_mac_setup_desc_ring(ndev); in moxart_mac_open()
178 moxart_mac_enable(ndev); in moxart_mac_open()
179 netif_start_queue(ndev); in moxart_mac_open()
181 netdev_dbg(ndev, "%s: IMR=0x%x, MACCR=0x%x\n", in moxart_mac_open()
188 static int moxart_mac_stop(struct net_device *ndev) in moxart_mac_stop() argument
190 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_stop()
195 netif_stop_queue(ndev); in moxart_mac_stop()
216 struct net_device *ndev = priv->ndev; in moxart_rx_poll() local
234 ndev->stats.rx_dropped++; in moxart_rx_poll()
235 ndev->stats.rx_errors++; in moxart_rx_poll()
247 skb = netdev_alloc_skb_ip_align(ndev, len); in moxart_rx_poll()
251 ndev->stats.rx_dropped++; in moxart_rx_poll()
252 ndev->stats.rx_errors++; in moxart_rx_poll()
258 skb->protocol = eth_type_trans(skb, ndev); in moxart_rx_poll()
262 ndev->stats.rx_packets++; in moxart_rx_poll()
263 ndev->stats.rx_bytes += len; in moxart_rx_poll()
265 ndev->stats.multicast++; in moxart_rx_poll()
284 static int moxart_tx_queue_space(struct net_device *ndev) in moxart_tx_queue_space() argument
286 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_tx_queue_space()
291 static void moxart_tx_finished(struct net_device *ndev) in moxart_tx_finished() argument
293 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_tx_finished()
301 ndev->stats.tx_packets++; in moxart_tx_finished()
302 ndev->stats.tx_bytes += priv->tx_skb[tx_tail]->len; in moxart_tx_finished()
310 if (netif_queue_stopped(ndev) && in moxart_tx_finished()
311 moxart_tx_queue_space(ndev) >= TX_WAKE_THRESHOLD) in moxart_tx_finished()
312 netif_wake_queue(ndev); in moxart_tx_finished()
317 struct net_device *ndev = (struct net_device *)dev_id; in moxart_mac_interrupt() local
318 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_interrupt()
322 moxart_tx_finished(ndev); in moxart_mac_interrupt()
336 struct net_device *ndev) in moxart_mac_start_xmit() argument
338 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_start_xmit()
350 if (moxart_tx_queue_space(ndev) == 1) in moxart_mac_start_xmit()
351 netif_stop_queue(ndev); in moxart_mac_start_xmit()
355 ndev->stats.tx_dropped++; in moxart_mac_start_xmit()
365 netdev_err(ndev, "DMA mapping error\n"); in moxart_mac_start_xmit()
398 netif_trans_update(ndev); in moxart_mac_start_xmit()
406 static void moxart_mac_setmulticast(struct net_device *ndev) in moxart_mac_setmulticast() argument
408 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_setmulticast()
412 netdev_for_each_mc_addr(ha, ndev) { in moxart_mac_setmulticast()
427 static void moxart_mac_set_rx_mode(struct net_device *ndev) in moxart_mac_set_rx_mode() argument
429 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_set_rx_mode()
433 (ndev->flags & IFF_PROMISC) ? (priv->reg_maccr |= RCV_ALL) : in moxart_mac_set_rx_mode()
436 (ndev->flags & IFF_ALLMULTI) ? (priv->reg_maccr |= RX_MULTIPKT) : in moxart_mac_set_rx_mode()
439 if ((ndev->flags & IFF_MULTICAST) && netdev_mc_count(ndev)) { in moxart_mac_set_rx_mode()
441 moxart_mac_setmulticast(ndev); in moxart_mac_set_rx_mode()
464 struct net_device *ndev; in moxart_mac_probe() local
470 ndev = alloc_etherdev(sizeof(struct moxart_mac_priv_t)); in moxart_mac_probe()
471 if (!ndev) in moxart_mac_probe()
476 netdev_err(ndev, "irq_of_parse_and_map failed\n"); in moxart_mac_probe()
481 priv = netdev_priv(ndev); in moxart_mac_probe()
482 priv->ndev = ndev; in moxart_mac_probe()
491 ndev->base_addr = res->start; in moxart_mac_probe()
528 platform_set_drvdata(pdev, ndev); in moxart_mac_probe()
531 pdev->name, ndev); in moxart_mac_probe()
533 netdev_err(ndev, "devm_request_irq failed\n"); in moxart_mac_probe()
537 ndev->netdev_ops = &moxart_netdev_ops; in moxart_mac_probe()
538 netif_napi_add(ndev, &priv->napi, moxart_rx_poll, RX_DESC_NUM); in moxart_mac_probe()
539 ndev->priv_flags |= IFF_UNICAST_FLT; in moxart_mac_probe()
540 ndev->irq = irq; in moxart_mac_probe()
542 SET_NETDEV_DEV(ndev, &pdev->dev); in moxart_mac_probe()
544 ret = register_netdev(ndev); in moxart_mac_probe()
548 netdev_dbg(ndev, "%s: IRQ=%d address=%pM\n", in moxart_mac_probe()
549 __func__, ndev->irq, ndev->dev_addr); in moxart_mac_probe()
554 netdev_err(ndev, "init failed\n"); in moxart_mac_probe()
555 moxart_mac_free_memory(ndev); in moxart_mac_probe()
557 free_netdev(ndev); in moxart_mac_probe()
563 struct net_device *ndev = platform_get_drvdata(pdev); in moxart_remove() local
565 unregister_netdev(ndev); in moxart_remove()
566 devm_free_irq(&pdev->dev, ndev->irq, ndev); in moxart_remove()
567 moxart_mac_free_memory(ndev); in moxart_remove()
568 free_netdev(ndev); in moxart_remove()