Lines Matching full:ndev
15 struct net_device *ndev; in xge_get_resources() local
22 ndev = pdata->ndev; in xge_get_resources()
37 if (device_get_ethdev_address(dev, ndev)) in xge_get_resources()
38 eth_hw_addr_random(ndev); in xge_get_resources()
40 memcpy(ndev->perm_addr, ndev->dev_addr, ndev->addr_len); in xge_get_resources()
62 static int xge_refill_buffers(struct net_device *ndev, u32 nbuf) in xge_refill_buffers() argument
64 struct xge_pdata *pdata = netdev_priv(ndev); in xge_refill_buffers()
80 skb = netdev_alloc_skb(ndev, len); in xge_refill_buffers()
86 netdev_err(ndev, "DMA mapping error\n"); in xge_refill_buffers()
112 static int xge_init_hw(struct net_device *ndev) in xge_init_hw() argument
114 struct xge_pdata *pdata = netdev_priv(ndev); in xge_init_hw()
117 ret = xge_port_reset(ndev); in xge_init_hw()
121 xge_port_init(ndev); in xge_init_hw()
139 static int xge_request_irq(struct net_device *ndev) in xge_request_irq() argument
141 struct xge_pdata *pdata = netdev_priv(ndev); in xge_request_irq()
144 snprintf(pdata->irq_name, IRQ_ID_SIZE, "%s", ndev->name); in xge_request_irq()
149 netdev_err(ndev, "Failed to request irq %s\n", pdata->irq_name); in xge_request_irq()
154 static void xge_free_irq(struct net_device *ndev) in xge_free_irq() argument
156 struct xge_pdata *pdata = netdev_priv(ndev); in xge_free_irq()
170 static netdev_tx_t xge_start_xmit(struct sk_buff *skb, struct net_device *ndev) in xge_start_xmit() argument
172 struct xge_pdata *pdata = netdev_priv(ndev); in xge_start_xmit()
188 netif_stop_queue(ndev); in xge_start_xmit()
234 static void xge_txc_poll(struct net_device *ndev) in xge_txc_poll() argument
236 struct xge_pdata *pdata = netdev_priv(ndev); in xge_txc_poll()
277 if (netif_queue_stopped(ndev)) in xge_txc_poll()
278 netif_wake_queue(ndev); in xge_txc_poll()
283 static int xge_rx_poll(struct net_device *ndev, unsigned int budget) in xge_rx_poll() argument
285 struct xge_pdata *pdata = netdev_priv(ndev); in xge_rx_poll()
327 skb->protocol = eth_type_trans(skb, ndev); in xge_rx_poll()
333 ret = xge_refill_buffers(ndev, 1); in xge_rx_poll()
349 static void xge_delete_desc_ring(struct net_device *ndev, in xge_delete_desc_ring() argument
352 struct xge_pdata *pdata = netdev_priv(ndev); in xge_delete_desc_ring()
367 static void xge_free_buffers(struct net_device *ndev) in xge_free_buffers() argument
369 struct xge_pdata *pdata = netdev_priv(ndev); in xge_free_buffers()
389 static void xge_delete_desc_rings(struct net_device *ndev) in xge_delete_desc_rings() argument
391 struct xge_pdata *pdata = netdev_priv(ndev); in xge_delete_desc_rings()
393 xge_txc_poll(ndev); in xge_delete_desc_rings()
394 xge_delete_desc_ring(ndev, pdata->tx_ring); in xge_delete_desc_rings()
396 xge_rx_poll(ndev, 64); in xge_delete_desc_rings()
397 xge_free_buffers(ndev); in xge_delete_desc_rings()
398 xge_delete_desc_ring(ndev, pdata->rx_ring); in xge_delete_desc_rings()
401 static struct xge_desc_ring *xge_create_desc_ring(struct net_device *ndev) in xge_create_desc_ring() argument
403 struct xge_pdata *pdata = netdev_priv(ndev); in xge_create_desc_ring()
412 ring->ndev = ndev; in xge_create_desc_ring()
430 xge_delete_desc_ring(ndev, ring); in xge_create_desc_ring()
435 static int xge_create_desc_rings(struct net_device *ndev) in xge_create_desc_rings() argument
437 struct xge_pdata *pdata = netdev_priv(ndev); in xge_create_desc_rings()
442 ring = xge_create_desc_ring(ndev); in xge_create_desc_rings()
450 ring = xge_create_desc_ring(ndev); in xge_create_desc_rings()
457 ret = xge_refill_buffers(ndev, XGENE_ENET_NUM_DESC); in xge_create_desc_rings()
463 xge_delete_desc_rings(ndev); in xge_create_desc_rings()
468 static int xge_open(struct net_device *ndev) in xge_open() argument
470 struct xge_pdata *pdata = netdev_priv(ndev); in xge_open()
473 ret = xge_create_desc_rings(ndev); in xge_open()
478 ret = xge_request_irq(ndev); in xge_open()
485 phy_start(ndev->phydev); in xge_open()
487 netif_start_queue(ndev); in xge_open()
492 static int xge_close(struct net_device *ndev) in xge_close() argument
494 struct xge_pdata *pdata = netdev_priv(ndev); in xge_close()
496 netif_stop_queue(ndev); in xge_close()
498 phy_stop(ndev->phydev); in xge_close()
501 xge_free_irq(ndev); in xge_close()
503 xge_delete_desc_rings(ndev); in xge_close()
510 struct net_device *ndev = napi->dev; in xge_napi() local
514 pdata = netdev_priv(ndev); in xge_napi()
516 xge_txc_poll(ndev); in xge_napi()
517 processed = xge_rx_poll(ndev, budget); in xge_napi()
527 static int xge_set_mac_addr(struct net_device *ndev, void *addr) in xge_set_mac_addr() argument
529 struct xge_pdata *pdata = netdev_priv(ndev); in xge_set_mac_addr()
532 ret = eth_mac_addr(ndev, addr); in xge_set_mac_addr()
549 static void xge_free_pending_skb(struct net_device *ndev) in xge_free_pending_skb() argument
551 struct xge_pdata *pdata = netdev_priv(ndev); in xge_free_pending_skb()
576 static void xge_timeout(struct net_device *ndev, unsigned int txqueue) in xge_timeout() argument
578 struct xge_pdata *pdata = netdev_priv(ndev); in xge_timeout()
582 if (!netif_running(ndev)) in xge_timeout()
585 netif_stop_queue(ndev); in xge_timeout()
590 xge_txc_poll(ndev); in xge_timeout()
591 xge_free_pending_skb(ndev); in xge_timeout()
601 netif_start_queue(ndev); in xge_timeout()
607 static void xge_get_stats64(struct net_device *ndev, in xge_get_stats64() argument
610 struct xge_pdata *pdata = netdev_priv(ndev); in xge_get_stats64()
633 struct net_device *ndev; in xge_probe() local
637 ndev = alloc_etherdev(sizeof(*pdata)); in xge_probe()
638 if (!ndev) in xge_probe()
641 pdata = netdev_priv(ndev); in xge_probe()
644 pdata->ndev = ndev; in xge_probe()
645 SET_NETDEV_DEV(ndev, dev); in xge_probe()
647 ndev->netdev_ops = &xgene_ndev_ops; in xge_probe()
649 ndev->features |= NETIF_F_GSO | in xge_probe()
656 ndev->hw_features = ndev->features; in xge_probe()
657 xge_set_ethtool_ops(ndev); in xge_probe()
661 netdev_err(ndev, "No usable DMA configuration\n"); in xge_probe()
665 ret = xge_init_hw(ndev); in xge_probe()
669 ret = xge_mdio_config(ndev); in xge_probe()
673 netif_napi_add(ndev, &pdata->napi, xge_napi); in xge_probe()
675 ret = register_netdev(ndev); in xge_probe()
677 netdev_err(ndev, "Failed to register netdev\n"); in xge_probe()
684 xge_mdio_remove(ndev); in xge_probe()
686 free_netdev(ndev); in xge_probe()
694 struct net_device *ndev; in xge_remove() local
697 ndev = pdata->ndev; in xge_remove()
700 if (netif_running(ndev)) in xge_remove()
701 dev_close(ndev); in xge_remove()
704 xge_mdio_remove(ndev); in xge_remove()
705 unregister_netdev(ndev); in xge_remove()
706 free_netdev(ndev); in xge_remove()
717 if (!pdata->ndev) in xge_shutdown()