Lines Matching refs:ndev
24 static void nps_enet_clean_rx_fifo(struct net_device *ndev, u32 frame_len)
26 struct nps_enet_priv *priv = netdev_priv(ndev);
34 static void nps_enet_read_rx_fifo(struct net_device *ndev,
37 struct nps_enet_priv *priv = netdev_priv(ndev);
62 static u32 nps_enet_rx_handler(struct net_device *ndev)
66 struct nps_enet_priv *priv = netdev_priv(ndev);
84 ndev->stats.rx_errors++;
90 ndev->stats.rx_crc_errors++;
91 ndev->stats.rx_dropped++;
97 ndev->stats.rx_length_errors++;
98 ndev->stats.rx_dropped++;
106 skb = netdev_alloc_skb_ip_align(ndev, frame_len);
108 ndev->stats.rx_errors++;
109 ndev->stats.rx_dropped++;
114 nps_enet_read_rx_fifo(ndev, skb->data, frame_len);
117 skb->protocol = eth_type_trans(skb, ndev);
120 ndev->stats.rx_packets++;
121 ndev->stats.rx_bytes += frame_len;
128 nps_enet_clean_rx_fifo(ndev, frame_len);
137 static void nps_enet_tx_handler(struct net_device *ndev)
139 struct nps_enet_priv *priv = netdev_priv(ndev);
153 ndev->stats.tx_errors++;
155 ndev->stats.tx_packets++;
156 ndev->stats.tx_bytes += tx_ctrl_nt;
162 if (netif_queue_stopped(ndev))
163 netif_wake_queue(ndev);
175 struct net_device *ndev = napi->dev;
176 struct nps_enet_priv *priv = netdev_priv(ndev);
179 nps_enet_tx_handler(ndev);
180 work_done = nps_enet_rx_handler(ndev);
221 struct net_device *ndev = dev_instance;
222 struct nps_enet_priv *priv = netdev_priv(ndev);
235 static void nps_enet_set_hw_mac_address(struct net_device *ndev)
237 struct nps_enet_priv *priv = netdev_priv(ndev);
242 ge_mac_cfg_1_value |= ndev->dev_addr[0] << CFG_1_OCTET_0_SHIFT;
243 ge_mac_cfg_1_value |= ndev->dev_addr[1] << CFG_1_OCTET_1_SHIFT;
244 ge_mac_cfg_1_value |= ndev->dev_addr[2] << CFG_1_OCTET_2_SHIFT;
245 ge_mac_cfg_1_value |= ndev->dev_addr[3] << CFG_1_OCTET_3_SHIFT;
247 | ndev->dev_addr[4] << CFG_2_OCTET_4_SHIFT;
249 | ndev->dev_addr[5] << CFG_2_OCTET_5_SHIFT;
260 * @ndev: Pointer to the network device.
268 static void nps_enet_hw_reset(struct net_device *ndev)
270 struct nps_enet_priv *priv = netdev_priv(ndev);
291 static void nps_enet_hw_enable_control(struct net_device *ndev)
293 struct nps_enet_priv *priv = netdev_priv(ndev);
315 max_frame_length = ETH_HLEN + ndev->mtu + ETH_FCS_LEN;
329 nps_enet_set_hw_mac_address(ndev);
365 static void nps_enet_hw_disable_control(struct net_device *ndev)
367 struct nps_enet_priv *priv = netdev_priv(ndev);
376 static void nps_enet_send_frame(struct net_device *ndev,
379 struct nps_enet_priv *priv = netdev_priv(ndev);
404 * @ndev: Pointer to net_device structure.
413 static s32 nps_enet_set_mac_address(struct net_device *ndev, void *p)
418 if (netif_running(ndev))
421 res = eth_mac_addr(ndev, p);
423 eth_hw_addr_set(ndev, addr->sa_data);
424 nps_enet_set_hw_mac_address(ndev);
432 * @ndev: Pointer to the network device.
436 static void nps_enet_set_rx_mode(struct net_device *ndev)
438 struct nps_enet_priv *priv = netdev_priv(ndev);
441 if (ndev->flags & IFF_PROMISC) {
459 * @ndev: Pointer to the network device.
466 static s32 nps_enet_open(struct net_device *ndev)
468 struct nps_enet_priv *priv = netdev_priv(ndev);
484 nps_enet_hw_disable_control(ndev);
488 0, "enet-rx-tx", ndev);
495 nps_enet_hw_reset(ndev);
496 nps_enet_hw_enable_control(ndev);
498 netif_start_queue(ndev);
505 * @ndev: Pointer to the network device.
509 static s32 nps_enet_stop(struct net_device *ndev)
511 struct nps_enet_priv *priv = netdev_priv(ndev);
514 netif_stop_queue(ndev);
515 nps_enet_hw_disable_control(ndev);
516 free_irq(priv->irq, ndev);
524 * @ndev: Pointer to net_device structure.
532 struct net_device *ndev)
534 struct nps_enet_priv *priv = netdev_priv(ndev);
537 netif_stop_queue(ndev);
546 nps_enet_send_frame(ndev, skb);
552 static void nps_enet_poll_controller(struct net_device *ndev)
554 disable_irq(ndev->irq);
555 nps_enet_irq_handler(ndev->irq, ndev);
556 enable_irq(ndev->irq);
574 struct net_device *ndev;
581 ndev = alloc_etherdev(sizeof(struct nps_enet_priv));
582 if (!ndev)
585 platform_set_drvdata(pdev, ndev);
586 SET_NETDEV_DEV(ndev, dev);
587 priv = netdev_priv(ndev);
590 ndev->netdev_ops = &nps_netdev_ops;
591 ndev->watchdog_timeo = (400 * HZ / 1000);
593 ndev->flags &= ~IFF_MULTICAST;
603 err = of_get_ethdev_address(dev->of_node, ndev);
605 eth_hw_addr_random(ndev);
614 netif_napi_add_weight(ndev, &priv->napi, nps_enet_poll,
618 err = register_netdev(ndev);
620 dev_err(dev, "Failed to register ndev for %s, err = 0x%08x\n",
621 ndev->name, (s32)err);
631 free_netdev(ndev);
638 struct net_device *ndev = platform_get_drvdata(pdev);
639 struct nps_enet_priv *priv = netdev_priv(ndev);
641 unregister_netdev(ndev);
643 free_netdev(ndev);