• Home
  • Raw
  • Download

Lines Matching refs:ndev

152 static void axienet_dma_bd_release(struct net_device *ndev)  in axienet_dma_bd_release()  argument
155 struct axienet_local *lp = netdev_priv(ndev); in axienet_dma_bd_release()
158 dma_unmap_single(ndev->dev.parent, lp->rx_bd_v[i].phys, in axienet_dma_bd_release()
165 dma_free_coherent(ndev->dev.parent, in axienet_dma_bd_release()
171 dma_free_coherent(ndev->dev.parent, in axienet_dma_bd_release()
188 static int axienet_dma_bd_init(struct net_device *ndev) in axienet_dma_bd_init() argument
193 struct axienet_local *lp = netdev_priv(ndev); in axienet_dma_bd_init()
201 lp->tx_bd_v = dma_zalloc_coherent(ndev->dev.parent, in axienet_dma_bd_init()
207 lp->rx_bd_v = dma_zalloc_coherent(ndev->dev.parent, in axienet_dma_bd_init()
224 skb = netdev_alloc_skb_ip_align(ndev, lp->max_frm_size); in axienet_dma_bd_init()
229 lp->rx_bd_v[i].phys = dma_map_single(ndev->dev.parent, in axienet_dma_bd_init()
293 axienet_dma_bd_release(ndev); in axienet_dma_bd_init()
305 static void axienet_set_mac_address(struct net_device *ndev, void *address) in axienet_set_mac_address() argument
307 struct axienet_local *lp = netdev_priv(ndev); in axienet_set_mac_address()
310 memcpy(ndev->dev_addr, address, ETH_ALEN); in axienet_set_mac_address()
311 if (!is_valid_ether_addr(ndev->dev_addr)) in axienet_set_mac_address()
312 eth_random_addr(ndev->dev_addr); in axienet_set_mac_address()
316 (ndev->dev_addr[0]) | in axienet_set_mac_address()
317 (ndev->dev_addr[1] << 8) | in axienet_set_mac_address()
318 (ndev->dev_addr[2] << 16) | in axienet_set_mac_address()
319 (ndev->dev_addr[3] << 24)); in axienet_set_mac_address()
323 (ndev->dev_addr[4] | in axienet_set_mac_address()
324 (ndev->dev_addr[5] << 8)))); in axienet_set_mac_address()
338 static int netdev_set_mac_address(struct net_device *ndev, void *p) in netdev_set_mac_address() argument
341 axienet_set_mac_address(ndev, addr->sa_data); in netdev_set_mac_address()
356 static void axienet_set_multicast_list(struct net_device *ndev) in axienet_set_multicast_list() argument
360 struct axienet_local *lp = netdev_priv(ndev); in axienet_set_multicast_list()
362 if (ndev->flags & (IFF_ALLMULTI | IFF_PROMISC) || in axienet_set_multicast_list()
363 netdev_mc_count(ndev) > XAE_MULTICAST_CAM_TABLE_NUM) { in axienet_set_multicast_list()
368 ndev->flags |= IFF_PROMISC; in axienet_set_multicast_list()
372 dev_info(&ndev->dev, "Promiscuous mode enabled.\n"); in axienet_set_multicast_list()
373 } else if (!netdev_mc_empty(ndev)) { in axienet_set_multicast_list()
377 netdev_for_each_mc_addr(ha, ndev) { in axienet_set_multicast_list()
412 dev_info(&ndev->dev, "Promiscuous mode disabled.\n"); in axienet_set_multicast_list()
427 static void axienet_setoptions(struct net_device *ndev, u32 options) in axienet_setoptions() argument
430 struct axienet_local *lp = netdev_priv(ndev); in axienet_setoptions()
458 netdev_err(lp->ndev, "%s: DMA reset timeout!\n", in __axienet_device_reset()
476 static void axienet_device_reset(struct net_device *ndev) in axienet_device_reset() argument
479 struct axienet_local *lp = netdev_priv(ndev); in axienet_device_reset()
481 __axienet_device_reset(lp, &ndev->dev, XAXIDMA_TX_CR_OFFSET); in axienet_device_reset()
482 __axienet_device_reset(lp, &ndev->dev, XAXIDMA_RX_CR_OFFSET); in axienet_device_reset()
488 if ((ndev->mtu > XAE_MTU) && in axienet_device_reset()
489 (ndev->mtu <= XAE_JUMBO_MTU)) { in axienet_device_reset()
490 lp->max_frm_size = ndev->mtu + VLAN_ETH_HLEN + in axienet_device_reset()
497 if (axienet_dma_bd_init(ndev)) { in axienet_device_reset()
498 netdev_err(ndev, "%s: descriptor allocation failed\n", in axienet_device_reset()
515 axienet_setoptions(ndev, lp->options & in axienet_device_reset()
517 axienet_set_mac_address(ndev, NULL); in axienet_device_reset()
518 axienet_set_multicast_list(ndev); in axienet_device_reset()
519 axienet_setoptions(ndev, lp->options); in axienet_device_reset()
521 ndev->trans_start = jiffies; in axienet_device_reset()
532 static void axienet_adjust_link(struct net_device *ndev) in axienet_adjust_link() argument
537 struct axienet_local *lp = netdev_priv(ndev); in axienet_adjust_link()
566 dev_err(&ndev->dev, "Speed other than 10, 100 " in axienet_adjust_link()
575 netdev_err(ndev, in axienet_adjust_link()
592 static void axienet_start_xmit_done(struct net_device *ndev) in axienet_start_xmit_done() argument
596 struct axienet_local *lp = netdev_priv(ndev); in axienet_start_xmit_done()
603 dma_unmap_single(ndev->dev.parent, cur_p->phys, in axienet_start_xmit_done()
624 ndev->stats.tx_packets += packets; in axienet_start_xmit_done()
625 ndev->stats.tx_bytes += size; in axienet_start_xmit_done()
630 netif_wake_queue(ndev); in axienet_start_xmit_done()
670 axienet_start_xmit(struct sk_buff *skb, struct net_device *ndev) in axienet_start_xmit() argument
678 struct axienet_local *lp = netdev_priv(ndev); in axienet_start_xmit()
685 if (netif_queue_stopped(ndev)) in axienet_start_xmit()
688 netif_stop_queue(ndev); in axienet_start_xmit()
697 netif_wake_queue(ndev); in axienet_start_xmit()
716 cur_p->phys = dma_map_single(ndev->dev.parent, skb->data, in axienet_start_xmit()
724 cur_p->phys = dma_map_single(ndev->dev.parent, in axienet_start_xmit()
752 static void axienet_recv(struct net_device *ndev) in axienet_recv() argument
759 struct axienet_local *lp = netdev_priv(ndev); in axienet_recv()
770 dma_unmap_single(ndev->dev.parent, cur_p->phys, in axienet_recv()
775 skb->protocol = eth_type_trans(skb, ndev); in axienet_recv()
799 new_skb = netdev_alloc_skb_ip_align(ndev, lp->max_frm_size); in axienet_recv()
803 cur_p->phys = dma_map_single(ndev->dev.parent, new_skb->data, in axienet_recv()
815 ndev->stats.rx_packets += packets; in axienet_recv()
816 ndev->stats.rx_bytes += size; in axienet_recv()
836 struct net_device *ndev = _ndev; in axienet_tx_irq() local
837 struct axienet_local *lp = netdev_priv(ndev); in axienet_tx_irq()
842 axienet_start_xmit_done(lp->ndev); in axienet_tx_irq()
846 dev_err(&ndev->dev, "No interrupts asserted in Tx path"); in axienet_tx_irq()
848 dev_err(&ndev->dev, "DMA Tx error 0x%x\n", status); in axienet_tx_irq()
849 dev_err(&ndev->dev, "Current BD is at: 0x%x\n", in axienet_tx_irq()
885 struct net_device *ndev = _ndev; in axienet_rx_irq() local
886 struct axienet_local *lp = netdev_priv(ndev); in axienet_rx_irq()
891 axienet_recv(lp->ndev); in axienet_rx_irq()
895 dev_err(&ndev->dev, "No interrupts asserted in Rx path"); in axienet_rx_irq()
897 dev_err(&ndev->dev, "DMA Rx error 0x%x\n", status); in axienet_rx_irq()
898 dev_err(&ndev->dev, "Current BD is at: 0x%x\n", in axienet_rx_irq()
935 static int axienet_open(struct net_device *ndev) in axienet_open() argument
938 struct axienet_local *lp = netdev_priv(ndev); in axienet_open()
940 dev_dbg(&ndev->dev, "axienet_open()\n"); in axienet_open()
953 axienet_device_reset(ndev); in axienet_open()
962 lp->phy_dev = of_phy_connect(lp->ndev, lp->phy_node, in axienet_open()
966 lp->phy_dev = of_phy_connect(lp->ndev, lp->phy_node, in axienet_open()
982 ret = request_irq(lp->tx_irq, axienet_tx_irq, 0, ndev->name, ndev); in axienet_open()
986 ret = request_irq(lp->rx_irq, axienet_rx_irq, 0, ndev->name, ndev); in axienet_open()
993 free_irq(lp->tx_irq, ndev); in axienet_open()
1013 static int axienet_stop(struct net_device *ndev) in axienet_stop() argument
1016 struct axienet_local *lp = netdev_priv(ndev); in axienet_stop()
1018 dev_dbg(&ndev->dev, "axienet_close()\n"); in axienet_stop()
1026 axienet_setoptions(ndev, lp->options & in axienet_stop()
1031 free_irq(lp->tx_irq, ndev); in axienet_stop()
1032 free_irq(lp->rx_irq, ndev); in axienet_stop()
1038 axienet_dma_bd_release(ndev); in axienet_stop()
1053 static int axienet_change_mtu(struct net_device *ndev, int new_mtu) in axienet_change_mtu() argument
1055 struct axienet_local *lp = netdev_priv(ndev); in axienet_change_mtu()
1057 if (netif_running(ndev)) in axienet_change_mtu()
1067 ndev->mtu = new_mtu; in axienet_change_mtu()
1080 static void axienet_poll_controller(struct net_device *ndev) in axienet_poll_controller() argument
1082 struct axienet_local *lp = netdev_priv(ndev); in axienet_poll_controller()
1085 axienet_rx_irq(lp->tx_irq, ndev); in axienet_poll_controller()
1086 axienet_tx_irq(lp->rx_irq, ndev); in axienet_poll_controller()
1117 static int axienet_ethtools_get_settings(struct net_device *ndev, in axienet_ethtools_get_settings() argument
1120 struct axienet_local *lp = netdev_priv(ndev); in axienet_ethtools_get_settings()
1140 static int axienet_ethtools_set_settings(struct net_device *ndev, in axienet_ethtools_set_settings() argument
1143 struct axienet_local *lp = netdev_priv(ndev); in axienet_ethtools_set_settings()
1158 static void axienet_ethtools_get_drvinfo(struct net_device *ndev, in axienet_ethtools_get_drvinfo() argument
1175 static int axienet_ethtools_get_regs_len(struct net_device *ndev) in axienet_ethtools_get_regs_len() argument
1190 static void axienet_ethtools_get_regs(struct net_device *ndev, in axienet_ethtools_get_regs() argument
1195 struct axienet_local *lp = netdev_priv(ndev); in axienet_ethtools_get_regs()
1245 axienet_ethtools_get_pauseparam(struct net_device *ndev, in axienet_ethtools_get_pauseparam() argument
1249 struct axienet_local *lp = netdev_priv(ndev); in axienet_ethtools_get_pauseparam()
1269 axienet_ethtools_set_pauseparam(struct net_device *ndev, in axienet_ethtools_set_pauseparam() argument
1273 struct axienet_local *lp = netdev_priv(ndev); in axienet_ethtools_set_pauseparam()
1275 if (netif_running(ndev)) { in axienet_ethtools_set_pauseparam()
1276 netdev_err(ndev, in axienet_ethtools_set_pauseparam()
1306 static int axienet_ethtools_get_coalesce(struct net_device *ndev, in axienet_ethtools_get_coalesce() argument
1310 struct axienet_local *lp = netdev_priv(ndev); in axienet_ethtools_get_coalesce()
1331 static int axienet_ethtools_set_coalesce(struct net_device *ndev, in axienet_ethtools_set_coalesce() argument
1334 struct axienet_local *lp = netdev_priv(ndev); in axienet_ethtools_set_coalesce()
1336 if (netif_running(ndev)) { in axienet_ethtools_set_coalesce()
1337 netdev_err(ndev, in axienet_ethtools_set_coalesce()
1397 struct net_device *ndev = lp->ndev; in axienet_dma_err_handler() local
1400 axienet_setoptions(ndev, lp->options & in axienet_dma_err_handler()
1412 __axienet_device_reset(lp, &ndev->dev, XAXIDMA_TX_CR_OFFSET); in axienet_dma_err_handler()
1413 __axienet_device_reset(lp, &ndev->dev, XAXIDMA_RX_CR_OFFSET); in axienet_dma_err_handler()
1421 dma_unmap_single(ndev->dev.parent, cur_p->phys, in axienet_dma_err_handler()
1509 axienet_setoptions(ndev, lp->options & in axienet_dma_err_handler()
1511 axienet_set_mac_address(ndev, NULL); in axienet_dma_err_handler()
1512 axienet_set_multicast_list(ndev); in axienet_dma_err_handler()
1513 axienet_setoptions(ndev, lp->options); in axienet_dma_err_handler()
1533 struct net_device *ndev; in axienet_probe() local
1538 ndev = alloc_etherdev(sizeof(*lp)); in axienet_probe()
1539 if (!ndev) in axienet_probe()
1542 platform_set_drvdata(pdev, ndev); in axienet_probe()
1544 SET_NETDEV_DEV(ndev, &pdev->dev); in axienet_probe()
1545 ndev->flags &= ~IFF_MULTICAST; /* clear multicast */ in axienet_probe()
1546 ndev->features = NETIF_F_SG; in axienet_probe()
1547 ndev->netdev_ops = &axienet_netdev_ops; in axienet_probe()
1548 ndev->ethtool_ops = &axienet_ethtool_ops; in axienet_probe()
1550 lp = netdev_priv(ndev); in axienet_probe()
1551 lp->ndev = ndev; in axienet_probe()
1574 ndev->features |= NETIF_F_IP_CSUM; in axienet_probe()
1581 ndev->features |= NETIF_F_IP_CSUM; in axienet_probe()
1649 axienet_set_mac_address(ndev, (void *)mac_addr); in axienet_probe()
1661 ret = register_netdev(lp->ndev); in axienet_probe()
1670 free_netdev(ndev); in axienet_probe()
1677 struct net_device *ndev = platform_get_drvdata(pdev); in axienet_remove() local
1678 struct axienet_local *lp = netdev_priv(ndev); in axienet_remove()
1681 unregister_netdev(ndev); in axienet_remove()
1686 free_netdev(ndev); in axienet_remove()