• Home
  • Raw
  • Download

Lines Matching refs: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()
80 dma_unmap_single(&ndev->dev, priv->rx_mapping[i], in moxart_mac_free_memory()
95 static void moxart_mac_reset(struct net_device *ndev) in moxart_mac_reset() argument
97 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_reset()
108 static void moxart_mac_enable(struct net_device *ndev) in moxart_mac_enable() argument
110 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_enable()
123 static void moxart_mac_setup_desc_ring(struct net_device *ndev) in moxart_mac_setup_desc_ring() argument
125 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_setup_desc_ring()
148 priv->rx_mapping[i] = dma_map_single(&ndev->dev, in moxart_mac_setup_desc_ring()
152 if (dma_mapping_error(&ndev->dev, priv->rx_mapping[i])) in moxart_mac_setup_desc_ring()
153 netdev_err(ndev, "DMA mapping error\n"); in moxart_mac_setup_desc_ring()
169 static int moxart_mac_open(struct net_device *ndev) in moxart_mac_open() argument
171 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_open()
173 if (!is_valid_ether_addr(ndev->dev_addr)) in moxart_mac_open()
178 moxart_mac_reset(ndev); in moxart_mac_open()
179 moxart_update_mac_address(ndev); in moxart_mac_open()
180 moxart_mac_setup_desc_ring(ndev); in moxart_mac_open()
181 moxart_mac_enable(ndev); in moxart_mac_open()
182 netif_start_queue(ndev); in moxart_mac_open()
184 netdev_dbg(ndev, "%s: IMR=0x%x, MACCR=0x%x\n", in moxart_mac_open()
191 static int moxart_mac_stop(struct net_device *ndev) in moxart_mac_stop() argument
193 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_stop()
197 netif_stop_queue(ndev); in moxart_mac_stop()
213 struct net_device *ndev = priv->ndev; in moxart_rx_poll() local
231 ndev->stats.rx_dropped++; in moxart_rx_poll()
232 ndev->stats.rx_errors++; in moxart_rx_poll()
241 dma_sync_single_for_cpu(&ndev->dev, in moxart_rx_poll()
244 skb = netdev_alloc_skb_ip_align(ndev, len); in moxart_rx_poll()
248 ndev->stats.rx_dropped++; in moxart_rx_poll()
249 ndev->stats.rx_errors++; in moxart_rx_poll()
255 skb->protocol = eth_type_trans(skb, ndev); in moxart_rx_poll()
259 ndev->stats.rx_packets++; in moxart_rx_poll()
260 ndev->stats.rx_bytes += len; in moxart_rx_poll()
262 ndev->stats.multicast++; in moxart_rx_poll()
281 static int moxart_tx_queue_space(struct net_device *ndev) in moxart_tx_queue_space() argument
283 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_tx_queue_space()
288 static void moxart_tx_finished(struct net_device *ndev) in moxart_tx_finished() argument
290 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_tx_finished()
295 dma_unmap_single(&ndev->dev, priv->tx_mapping[tx_tail], in moxart_tx_finished()
298 ndev->stats.tx_packets++; in moxart_tx_finished()
299 ndev->stats.tx_bytes += priv->tx_skb[tx_tail]->len; in moxart_tx_finished()
307 if (netif_queue_stopped(ndev) && in moxart_tx_finished()
308 moxart_tx_queue_space(ndev) >= TX_WAKE_THRESHOLD) in moxart_tx_finished()
309 netif_wake_queue(ndev); in moxart_tx_finished()
314 struct net_device *ndev = (struct net_device *)dev_id; in moxart_mac_interrupt() local
315 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_interrupt()
319 moxart_tx_finished(ndev); in moxart_mac_interrupt()
332 static int moxart_mac_start_xmit(struct sk_buff *skb, struct net_device *ndev) in moxart_mac_start_xmit() argument
334 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_start_xmit()
346 if (moxart_tx_queue_space(ndev) == 1) in moxart_mac_start_xmit()
347 netif_stop_queue(ndev); in moxart_mac_start_xmit()
351 ndev->stats.tx_dropped++; in moxart_mac_start_xmit()
358 priv->tx_mapping[tx_head] = dma_map_single(&ndev->dev, skb->data, in moxart_mac_start_xmit()
360 if (dma_mapping_error(&ndev->dev, priv->tx_mapping[tx_head])) { in moxart_mac_start_xmit()
361 netdev_err(ndev, "DMA mapping error\n"); in moxart_mac_start_xmit()
379 dma_sync_single_for_device(&ndev->dev, priv->tx_mapping[tx_head], in moxart_mac_start_xmit()
394 netif_trans_update(ndev); in moxart_mac_start_xmit()
402 static void moxart_mac_setmulticast(struct net_device *ndev) in moxart_mac_setmulticast() argument
404 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_setmulticast()
408 netdev_for_each_mc_addr(ha, ndev) { in moxart_mac_setmulticast()
423 static void moxart_mac_set_rx_mode(struct net_device *ndev) in moxart_mac_set_rx_mode() argument
425 struct moxart_mac_priv_t *priv = netdev_priv(ndev); in moxart_mac_set_rx_mode()
429 (ndev->flags & IFF_PROMISC) ? (priv->reg_maccr |= RCV_ALL) : in moxart_mac_set_rx_mode()
432 (ndev->flags & IFF_ALLMULTI) ? (priv->reg_maccr |= RX_MULTIPKT) : in moxart_mac_set_rx_mode()
435 if ((ndev->flags & IFF_MULTICAST) && netdev_mc_count(ndev)) { in moxart_mac_set_rx_mode()
437 moxart_mac_setmulticast(ndev); in moxart_mac_set_rx_mode()
460 struct net_device *ndev; in moxart_mac_probe() local
466 ndev = alloc_etherdev(sizeof(struct moxart_mac_priv_t)); in moxart_mac_probe()
467 if (!ndev) in moxart_mac_probe()
472 netdev_err(ndev, "irq_of_parse_and_map failed\n"); in moxart_mac_probe()
477 priv = netdev_priv(ndev); in moxart_mac_probe()
478 priv->ndev = ndev; in moxart_mac_probe()
481 ndev->base_addr = res->start; in moxart_mac_probe()
524 platform_set_drvdata(pdev, ndev); in moxart_mac_probe()
527 pdev->name, ndev); in moxart_mac_probe()
529 netdev_err(ndev, "devm_request_irq failed\n"); in moxart_mac_probe()
533 ndev->netdev_ops = &moxart_netdev_ops; in moxart_mac_probe()
534 netif_napi_add(ndev, &priv->napi, moxart_rx_poll, RX_DESC_NUM); in moxart_mac_probe()
535 ndev->priv_flags |= IFF_UNICAST_FLT; in moxart_mac_probe()
536 ndev->irq = irq; in moxart_mac_probe()
538 SET_NETDEV_DEV(ndev, &pdev->dev); in moxart_mac_probe()
540 ret = register_netdev(ndev); in moxart_mac_probe()
542 free_netdev(ndev); in moxart_mac_probe()
546 netdev_dbg(ndev, "%s: IRQ=%d address=%pM\n", in moxart_mac_probe()
547 __func__, ndev->irq, ndev->dev_addr); in moxart_mac_probe()
552 netdev_err(ndev, "init failed\n"); in moxart_mac_probe()
553 moxart_mac_free_memory(ndev); in moxart_mac_probe()
555 free_netdev(ndev); in moxart_mac_probe()
561 struct net_device *ndev = platform_get_drvdata(pdev); in moxart_remove() local
563 unregister_netdev(ndev); in moxart_remove()
564 free_irq(ndev->irq, ndev); in moxart_remove()
565 moxart_mac_free_memory(ndev); in moxart_remove()
566 free_netdev(ndev); in moxart_remove()