Lines Matching full:ndev

26 static void arc_emac_restart(struct net_device *ndev);
41 * @ndev: Pointer to the net_device structure.
46 static void arc_emac_adjust_link(struct net_device *ndev) in arc_emac_adjust_link() argument
48 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_adjust_link()
49 struct phy_device *phy_dev = ndev->phydev; in arc_emac_adjust_link()
83 * @ndev: Pointer to net_device structure.
89 static void arc_emac_get_drvinfo(struct net_device *ndev, in arc_emac_get_drvinfo() argument
92 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_get_drvinfo()
108 * @ndev: Pointer to the network device.
110 static void arc_emac_tx_clean(struct net_device *ndev) in arc_emac_tx_clean() argument
112 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_tx_clean()
113 struct net_device_stats *stats = &ndev->stats; in arc_emac_tx_clean()
114 struct device *dev = ndev->dev.parent; in arc_emac_tx_clean()
162 if (netif_queue_stopped(ndev) && arc_emac_tx_avail(priv)) in arc_emac_tx_clean()
163 netif_wake_queue(ndev); in arc_emac_tx_clean()
168 * @ndev: Pointer to the network device.
175 static int arc_emac_rx(struct net_device *ndev, int budget) in arc_emac_rx() argument
177 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_rx()
178 struct device *dev = ndev->dev.parent; in arc_emac_rx()
183 struct net_device_stats *stats = &ndev->stats; in arc_emac_rx()
204 netdev_err(ndev, "incomplete packet received\n"); in arc_emac_rx()
217 skb = netdev_alloc_skb_ip_align(ndev, EMAC_BUFFER_SIZE); in arc_emac_rx()
220 netdev_err(ndev, "cannot allocate skb\n"); in arc_emac_rx()
232 netdev_err(ndev, "cannot map dma buffer\n"); in arc_emac_rx()
249 rx_buff->skb->dev = ndev; in arc_emac_rx()
250 rx_buff->skb->protocol = eth_type_trans(rx_buff->skb, ndev); in arc_emac_rx()
272 * @ndev: Pointer to the net_device structure.
274 static void arc_emac_rx_miss_handle(struct net_device *ndev) in arc_emac_rx_miss_handle() argument
276 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_rx_miss_handle()
277 struct net_device_stats *stats = &ndev->stats; in arc_emac_rx_miss_handle()
290 * @ndev: Pointer to the net_device structure.
299 static void arc_emac_rx_stall_check(struct net_device *ndev, in arc_emac_rx_stall_check() argument
302 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_rx_stall_check()
311 arc_emac_restart(ndev); in arc_emac_rx_stall_check()
326 struct net_device *ndev = napi->dev; in arc_emac_poll() local
327 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_poll()
330 arc_emac_tx_clean(ndev); in arc_emac_poll()
331 arc_emac_rx_miss_handle(ndev); in arc_emac_poll()
333 work_done = arc_emac_rx(ndev, budget); in arc_emac_poll()
339 arc_emac_rx_stall_check(ndev, budget, work_done); in arc_emac_poll()
356 struct net_device *ndev = dev_instance; in arc_emac_intr() local
357 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_intr()
358 struct net_device_stats *stats = &ndev->stats; in arc_emac_intr()
416 * @ndev: Pointer to the network device.
424 static int arc_emac_open(struct net_device *ndev) in arc_emac_open() argument
426 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_open()
427 struct phy_device *phy_dev = ndev->phydev; in arc_emac_open()
428 struct device *dev = ndev->dev.parent; in arc_emac_open()
446 rx_buff->skb = netdev_alloc_skb_ip_align(ndev, in arc_emac_open()
454 netdev_err(ndev, "cannot dma map\n"); in arc_emac_open()
500 phy_start(ndev->phydev); in arc_emac_open()
502 netif_start_queue(ndev); in arc_emac_open()
509 * @ndev: Pointer to the network device.
514 static void arc_emac_set_rx_mode(struct net_device *ndev) in arc_emac_set_rx_mode() argument
516 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_set_rx_mode()
518 if (ndev->flags & IFF_PROMISC) { in arc_emac_set_rx_mode()
523 if (ndev->flags & IFF_ALLMULTI) { in arc_emac_set_rx_mode()
526 } else if (ndev->flags & IFF_MULTICAST) { in arc_emac_set_rx_mode()
531 netdev_for_each_mc_addr(ha, ndev) { in arc_emac_set_rx_mode()
547 * @ndev: Pointer to the network device.
551 static void arc_free_tx_queue(struct net_device *ndev) in arc_free_tx_queue() argument
553 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_free_tx_queue()
554 struct device *dev = ndev->dev.parent; in arc_free_tx_queue()
579 * @ndev: Pointer to the network device.
583 static void arc_free_rx_queue(struct net_device *ndev) in arc_free_rx_queue() argument
585 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_free_rx_queue()
586 struct device *dev = ndev->dev.parent; in arc_free_rx_queue()
611 * @ndev: Pointer to the network device.
617 static int arc_emac_stop(struct net_device *ndev) in arc_emac_stop() argument
619 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_stop()
622 netif_stop_queue(ndev); in arc_emac_stop()
624 phy_stop(ndev->phydev); in arc_emac_stop()
633 arc_free_tx_queue(ndev); in arc_emac_stop()
634 arc_free_rx_queue(ndev); in arc_emac_stop()
641 * @ndev: Pointer to net_device structure.
646 static struct net_device_stats *arc_emac_stats(struct net_device *ndev) in arc_emac_stats() argument
648 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_stats()
649 struct net_device_stats *stats = &ndev->stats; in arc_emac_stats()
674 * @ndev: Pointer to net_device structure.
681 static netdev_tx_t arc_emac_tx(struct sk_buff *skb, struct net_device *ndev) in arc_emac_tx() argument
683 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_tx()
685 struct net_device_stats *stats = &ndev->stats; in arc_emac_tx()
687 struct device *dev = ndev->dev.parent; in arc_emac_tx()
696 netif_stop_queue(ndev); in arc_emac_tx()
697 netdev_err(ndev, "BUG! Tx Ring full when queue awake!\n"); in arc_emac_tx()
736 netif_stop_queue(ndev); in arc_emac_tx()
740 netif_start_queue(ndev); in arc_emac_tx()
748 static void arc_emac_set_address_internal(struct net_device *ndev) in arc_emac_set_address_internal() argument
750 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_set_address_internal()
753 addr_low = le32_to_cpu(*(__le32 *)&ndev->dev_addr[0]); in arc_emac_set_address_internal()
754 addr_hi = le16_to_cpu(*(__le16 *)&ndev->dev_addr[4]); in arc_emac_set_address_internal()
762 * @ndev: Pointer to net_device structure.
771 static int arc_emac_set_address(struct net_device *ndev, void *p) in arc_emac_set_address() argument
775 if (netif_running(ndev)) in arc_emac_set_address()
781 eth_hw_addr_set(ndev, addr->sa_data); in arc_emac_set_address()
783 arc_emac_set_address_internal(ndev); in arc_emac_set_address()
790 * @ndev: Pointer to net_device structure.
795 static void arc_emac_restart(struct net_device *ndev) in arc_emac_restart() argument
797 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_restart()
798 struct net_device_stats *stats = &ndev->stats; in arc_emac_restart()
802 netdev_warn(ndev, "restarting stalled EMAC\n"); in arc_emac_restart()
804 netif_stop_queue(ndev); in arc_emac_restart()
813 arc_free_tx_queue(ndev); in arc_emac_restart()
842 netif_start_queue(ndev); in arc_emac_restart()
858 int arc_emac_probe(struct net_device *ndev, int interface) in arc_emac_probe() argument
860 struct device *dev = ndev->dev.parent; in arc_emac_probe()
891 ndev->netdev_ops = &arc_emac_netdev_ops; in arc_emac_probe()
892 ndev->ethtool_ops = &arc_emac_ethtool_ops; in arc_emac_probe()
893 ndev->watchdog_timeo = TX_TIMEOUT; in arc_emac_probe()
895 priv = netdev_priv(ndev); in arc_emac_probe()
937 ndev->irq = irq; in arc_emac_probe()
938 dev_info(dev, "IRQ is %d\n", ndev->irq); in arc_emac_probe()
941 err = devm_request_irq(dev, ndev->irq, arc_emac_intr, 0, in arc_emac_probe()
942 ndev->name, ndev); in arc_emac_probe()
949 err = of_get_ethdev_address(dev->of_node, ndev); in arc_emac_probe()
951 eth_hw_addr_random(ndev); in arc_emac_probe()
953 arc_emac_set_address_internal(ndev); in arc_emac_probe()
954 dev_info(dev, "MAC address is now %pM\n", ndev->dev_addr); in arc_emac_probe()
978 phydev = of_phy_connect(ndev, phy_node, arc_emac_adjust_link, 0, in arc_emac_probe()
989 netif_napi_add_weight(ndev, &priv->napi, arc_emac_poll, in arc_emac_probe()
992 err = register_netdev(ndev); in arc_emac_probe()
1016 void arc_emac_remove(struct net_device *ndev) in arc_emac_remove() argument
1018 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_remove()
1020 phy_disconnect(ndev->phydev); in arc_emac_remove()
1022 unregister_netdev(ndev); in arc_emac_remove()