Lines Matching refs:ndev

27 static void nps_enet_clean_rx_fifo(struct net_device *ndev, u32 frame_len)  in nps_enet_clean_rx_fifo()  argument
29 struct nps_enet_priv *priv = netdev_priv(ndev); in nps_enet_clean_rx_fifo()
37 static void nps_enet_read_rx_fifo(struct net_device *ndev, in nps_enet_read_rx_fifo() argument
40 struct nps_enet_priv *priv = netdev_priv(ndev); in nps_enet_read_rx_fifo()
63 static u32 nps_enet_rx_handler(struct net_device *ndev) in nps_enet_rx_handler() argument
67 struct nps_enet_priv *priv = netdev_priv(ndev); in nps_enet_rx_handler()
83 ndev->stats.rx_errors++; in nps_enet_rx_handler()
89 ndev->stats.rx_crc_errors++; in nps_enet_rx_handler()
90 ndev->stats.rx_dropped++; in nps_enet_rx_handler()
96 ndev->stats.rx_length_errors++; in nps_enet_rx_handler()
97 ndev->stats.rx_dropped++; in nps_enet_rx_handler()
105 skb = netdev_alloc_skb_ip_align(ndev, frame_len); in nps_enet_rx_handler()
107 ndev->stats.rx_errors++; in nps_enet_rx_handler()
108 ndev->stats.rx_dropped++; in nps_enet_rx_handler()
113 nps_enet_read_rx_fifo(ndev, skb->data, frame_len); in nps_enet_rx_handler()
116 skb->protocol = eth_type_trans(skb, ndev); in nps_enet_rx_handler()
119 ndev->stats.rx_packets++; in nps_enet_rx_handler()
120 ndev->stats.rx_bytes += frame_len; in nps_enet_rx_handler()
127 nps_enet_clean_rx_fifo(ndev, frame_len); in nps_enet_rx_handler()
136 static void nps_enet_tx_handler(struct net_device *ndev) in nps_enet_tx_handler() argument
138 struct nps_enet_priv *priv = netdev_priv(ndev); in nps_enet_tx_handler()
152 ndev->stats.tx_errors++; in nps_enet_tx_handler()
154 ndev->stats.tx_packets++; in nps_enet_tx_handler()
155 ndev->stats.tx_bytes += tx_ctrl.nt; in nps_enet_tx_handler()
161 if (netif_queue_stopped(ndev)) in nps_enet_tx_handler()
162 netif_wake_queue(ndev); in nps_enet_tx_handler()
174 struct net_device *ndev = napi->dev; in nps_enet_poll() local
175 struct nps_enet_priv *priv = netdev_priv(ndev); in nps_enet_poll()
178 nps_enet_tx_handler(ndev); in nps_enet_poll()
179 work_done = nps_enet_rx_handler(ndev); in nps_enet_poll()
206 struct net_device *ndev = dev_instance; in nps_enet_irq_handler() local
207 struct nps_enet_priv *priv = netdev_priv(ndev); in nps_enet_irq_handler()
223 static void nps_enet_set_hw_mac_address(struct net_device *ndev) in nps_enet_set_hw_mac_address() argument
225 struct nps_enet_priv *priv = netdev_priv(ndev); in nps_enet_set_hw_mac_address()
230 ge_mac_cfg_1.octet_0 = ndev->dev_addr[0]; in nps_enet_set_hw_mac_address()
231 ge_mac_cfg_1.octet_1 = ndev->dev_addr[1]; in nps_enet_set_hw_mac_address()
232 ge_mac_cfg_1.octet_2 = ndev->dev_addr[2]; in nps_enet_set_hw_mac_address()
233 ge_mac_cfg_1.octet_3 = ndev->dev_addr[3]; in nps_enet_set_hw_mac_address()
234 ge_mac_cfg_2->octet_4 = ndev->dev_addr[4]; in nps_enet_set_hw_mac_address()
235 ge_mac_cfg_2->octet_5 = ndev->dev_addr[5]; in nps_enet_set_hw_mac_address()
254 static void nps_enet_hw_reset(struct net_device *ndev) in nps_enet_hw_reset() argument
256 struct nps_enet_priv *priv = netdev_priv(ndev); in nps_enet_hw_reset()
280 static void nps_enet_hw_enable_control(struct net_device *ndev) in nps_enet_hw_enable_control() argument
282 struct nps_enet_priv *priv = netdev_priv(ndev); in nps_enet_hw_enable_control()
304 max_frame_length = ETH_HLEN + ndev->mtu + ETH_FCS_LEN; in nps_enet_hw_enable_control()
315 nps_enet_set_hw_mac_address(ndev); in nps_enet_hw_enable_control()
346 static void nps_enet_hw_disable_control(struct net_device *ndev) in nps_enet_hw_disable_control() argument
348 struct nps_enet_priv *priv = netdev_priv(ndev); in nps_enet_hw_disable_control()
357 static void nps_enet_send_frame(struct net_device *ndev, in nps_enet_send_frame() argument
360 struct nps_enet_priv *priv = netdev_priv(ndev); in nps_enet_send_frame()
399 static s32 nps_enet_set_mac_address(struct net_device *ndev, void *p) in nps_enet_set_mac_address() argument
404 if (netif_running(ndev)) in nps_enet_set_mac_address()
407 res = eth_mac_addr(ndev, p); in nps_enet_set_mac_address()
409 ether_addr_copy(ndev->dev_addr, addr->sa_data); in nps_enet_set_mac_address()
410 nps_enet_set_hw_mac_address(ndev); in nps_enet_set_mac_address()
422 static void nps_enet_set_rx_mode(struct net_device *ndev) in nps_enet_set_rx_mode() argument
424 struct nps_enet_priv *priv = netdev_priv(ndev); in nps_enet_set_rx_mode()
429 if (ndev->flags & IFF_PROMISC) { in nps_enet_set_rx_mode()
449 static s32 nps_enet_open(struct net_device *ndev) in nps_enet_open() argument
451 struct nps_enet_priv *priv = netdev_priv(ndev); in nps_enet_open()
464 nps_enet_hw_disable_control(ndev); in nps_enet_open()
468 0, "enet-rx-tx", ndev); in nps_enet_open()
475 nps_enet_hw_reset(ndev); in nps_enet_open()
476 nps_enet_hw_enable_control(ndev); in nps_enet_open()
478 netif_start_queue(ndev); in nps_enet_open()
489 static s32 nps_enet_stop(struct net_device *ndev) in nps_enet_stop() argument
491 struct nps_enet_priv *priv = netdev_priv(ndev); in nps_enet_stop()
494 netif_stop_queue(ndev); in nps_enet_stop()
495 nps_enet_hw_disable_control(ndev); in nps_enet_stop()
496 free_irq(priv->irq, ndev); in nps_enet_stop()
512 struct net_device *ndev) in nps_enet_start_xmit() argument
514 struct nps_enet_priv *priv = netdev_priv(ndev); in nps_enet_start_xmit()
517 netif_stop_queue(ndev); in nps_enet_start_xmit()
521 nps_enet_send_frame(ndev, skb); in nps_enet_start_xmit()
527 static void nps_enet_poll_controller(struct net_device *ndev) in nps_enet_poll_controller() argument
529 disable_irq(ndev->irq); in nps_enet_poll_controller()
530 nps_enet_irq_handler(ndev->irq, ndev); in nps_enet_poll_controller()
531 enable_irq(ndev->irq); in nps_enet_poll_controller()
549 struct net_device *ndev; in nps_enet_probe() local
558 ndev = alloc_etherdev(sizeof(struct nps_enet_priv)); in nps_enet_probe()
559 if (!ndev) in nps_enet_probe()
562 platform_set_drvdata(pdev, ndev); in nps_enet_probe()
563 SET_NETDEV_DEV(ndev, dev); in nps_enet_probe()
564 priv = netdev_priv(ndev); in nps_enet_probe()
567 ndev->netdev_ops = &nps_netdev_ops; in nps_enet_probe()
568 ndev->watchdog_timeo = (400 * HZ / 1000); in nps_enet_probe()
570 ndev->flags &= ~IFF_MULTICAST; in nps_enet_probe()
583 ether_addr_copy(ndev->dev_addr, mac_addr); in nps_enet_probe()
585 eth_hw_addr_random(ndev); in nps_enet_probe()
595 netif_napi_add(ndev, &priv->napi, nps_enet_poll, in nps_enet_probe()
599 err = register_netdev(ndev); in nps_enet_probe()
602 ndev->name, (s32)err); in nps_enet_probe()
613 free_netdev(ndev); in nps_enet_probe()
620 struct net_device *ndev = platform_get_drvdata(pdev); in nps_enet_remove() local
621 struct nps_enet_priv *priv = netdev_priv(ndev); in nps_enet_remove()
623 unregister_netdev(ndev); in nps_enet_remove()
624 free_netdev(ndev); in nps_enet_remove()