Lines Matching refs:ndev

591 	struct net_device *ndev;  member
660 static int dwceqos_stop(struct net_device *ndev);
661 static int dwceqos_open(struct net_device *ndev);
777 netdev_warn(lp->ndev, "MDIO read timed out\n"); in dwceqos_mdio_read()
807 netdev_warn(lp->ndev, "MDIO write timed out\n"); in dwceqos_mdio_write()
811 static int dwceqos_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd) in dwceqos_ioctl() argument
813 struct net_local *lp = netdev_priv(ndev); in dwceqos_ioctl()
816 if (!netif_running(ndev)) in dwceqos_ioctl()
889 netdev_err(lp->ndev, in dwceqos_set_speed()
898 static void dwceqos_adjust_link(struct net_device *ndev) in dwceqos_adjust_link() argument
900 struct net_local *lp = netdev_priv(ndev); in dwceqos_adjust_link()
923 netdev_dbg(ndev, "set rx flow to %d\n", in dwceqos_adjust_link()
930 netdev_dbg(ndev, "set tx flow to %d\n", in dwceqos_adjust_link()
944 lp->ndev->trans_start = jiffies; in dwceqos_adjust_link()
953 static int dwceqos_mii_probe(struct net_device *ndev) in dwceqos_mii_probe() argument
955 struct net_local *lp = netdev_priv(ndev); in dwceqos_mii_probe()
959 phydev = of_phy_connect(lp->ndev, in dwceqos_mii_probe()
966 netdev_err(ndev, "no PHY found\n"); in dwceqos_mii_probe()
970 netdev_err(ndev, "no PHY configured\n"); in dwceqos_mii_probe()
975 netdev_dbg(lp->ndev, in dwceqos_mii_probe()
987 netdev_dbg(lp->ndev, "phy_addr 0x%x, phy_id 0x%08x\n", in dwceqos_mii_probe()
990 netdev_dbg(lp->ndev, "attach [%s] phy driver\n", in dwceqos_mii_probe()
1002 new_skb = netdev_alloc_skb(lp->ndev, DWCEQOS_RX_BUF_SIZE); in dwceqos_alloc_rxring_desc()
1004 netdev_err(lp->ndev, "alloc_skb error for desc %d\n", index); in dwceqos_alloc_rxring_desc()
1008 new_skb_baddr = dma_map_single(lp->ndev->dev.parent, in dwceqos_alloc_rxring_desc()
1011 if (dma_mapping_error(lp->ndev->dev.parent, new_skb_baddr)) { in dwceqos_alloc_rxring_desc()
1012 netdev_err(lp->ndev, "DMA map error\n"); in dwceqos_alloc_rxring_desc()
1039 dma_unmap_single(lp->ndev->dev.parent, in dwceqos_clean_rings()
1058 dma_unmap_single(lp->ndev->dev.parent, in dwceqos_clean_rings()
1081 dma_free_coherent(lp->ndev->dev.parent, size, in dwceqos_descriptor_free()
1088 dma_free_coherent(lp->ndev->dev.parent, size, in dwceqos_descriptor_free()
1125 lp->rx_descs = dma_alloc_coherent(lp->ndev->dev.parent, size, in dwceqos_descriptor_init()
1133 lp->tx_descs = dma_alloc_coherent(lp->ndev->dev.parent, size, in dwceqos_descriptor_init()
1252 lp->mii_bus->parent = &lp->ndev->dev; in dwceqos_mii_init()
1301 netdev_err(lp->ndev, "DMA reset timed out!\n"); in dwceqos_reset_hw()
1307 netdev_err(lp->ndev, "txdma bus error %s %s (status=%08x)\n", in dwceqos_fatal_bus_error()
1317 netdev_err(lp->ndev, "rxdma bus error %s %s (status=%08x)\n", in dwceqos_fatal_bus_error()
1356 struct net_device *ndev = dev_id; in dwceqos_interrupt() local
1357 struct net_local *lp = netdev_priv(ndev); in dwceqos_interrupt()
1480 netdev_warn(lp->ndev, in dwceqos_configure_flow_control()
1539 netdev_dbg(lp->ndev, "SysbusMode %#X\n", sysbus_reg); in dwceqos_configure_bus()
1619 dwceqos_set_umac_addr(lp, lp->ndev->dev_addr, 0); in dwceqos_init_hw()
1662 struct net_device *ndev = (struct net_device *)data; in dwceqos_tx_reclaim() local
1663 struct net_local *lp = netdev_priv(ndev); in dwceqos_tx_reclaim()
1678 dma_unmap_single(ndev->dev.parent, rd->mapping, rd->len, in dwceqos_tx_reclaim()
1695 netdev_err(ndev, "TX Error, TDES3 = 0x%x\n", in dwceqos_tx_reclaim()
1703 netdev_completed_queue(ndev, tx_packets, tx_bytes); in dwceqos_tx_reclaim()
1706 netif_wake_queue(ndev); in dwceqos_tx_reclaim()
1725 new_skb = netdev_alloc_skb(lp->ndev, DWCEQOS_RX_BUF_SIZE); in dwceqos_rx()
1727 netdev_err(lp->ndev, "no memory for new sk_buff\n"); in dwceqos_rx()
1732 new_skb_baddr = (u32)dma_map_single(lp->ndev->dev.parent, in dwceqos_rx()
1736 if (dma_mapping_error(lp->ndev->dev.parent, new_skb_baddr)) { in dwceqos_rx()
1737 netdev_err(lp->ndev, "DMA map error\n"); in dwceqos_rx()
1750 dma_unmap_single(lp->ndev->dev.parent, in dwceqos_rx()
1761 skb->protocol = eth_type_trans(skb, lp->ndev); in dwceqos_rx()
1776 netdev_dbg(lp->ndev, "rx error: des3=%X\n", in dwceqos_rx()
1838 netdev_err(lp->ndev, "transmit timeout %d s, resetting...\n", in dwceqos_reinit_for_txtimeout()
1845 dwceqos_stop(lp->ndev); in dwceqos_reinit_for_txtimeout()
1846 dwceqos_open(lp->ndev); in dwceqos_reinit_for_txtimeout()
1853 struct net_device *ndev; in dwceqos_probe_config_dt() local
1859 ndev = platform_get_drvdata(pdev); in dwceqos_probe_config_dt()
1860 lp = netdev_priv(ndev); in dwceqos_probe_config_dt()
1866 ether_addr_copy(ndev->dev_addr, mac_address); in dwceqos_probe_config_dt()
1879 netdev_dbg(ndev, "BusCfg: lpi:%u wr:%u rr:%u bm:%X rxpbl:%u txpbl:%d\n", in dwceqos_probe_config_dt()
1890 static int dwceqos_open(struct net_device *ndev) in dwceqos_open() argument
1892 struct net_local *lp = netdev_priv(ndev); in dwceqos_open()
1898 netdev_err(ndev, "Unable to allocate DMA memory, rc %d\n", res); in dwceqos_open()
1901 netdev_reset_queue(ndev); in dwceqos_open()
1907 netif_start_queue(ndev); in dwceqos_open()
1934 static int dwceqos_stop(struct net_device *ndev) in dwceqos_stop() argument
1936 struct net_local *lp = netdev_priv(ndev); in dwceqos_stop()
1941 netif_stop_queue(ndev); in dwceqos_stop()
1946 netif_tx_lock(lp->ndev); in dwceqos_stop()
1949 netif_tx_unlock(lp->ndev); in dwceqos_stop()
2020 dma_handle = dma_map_single(lp->ndev->dev.parent, skb->data, in dwceqos_tx_linear()
2023 if (dma_mapping_error(lp->ndev->dev.parent, dma_handle)) { in dwceqos_tx_linear()
2024 netdev_err(lp->ndev, "TX DMA Mapping error\n"); in dwceqos_tx_linear()
2089 dma_handle = skb_frag_dma_map(lp->ndev->dev.parent, frag, 0, in dwceqos_tx_frags()
2092 if (dma_mapping_error(lp->ndev->dev.parent, dma_handle)) { in dwceqos_tx_frags()
2093 netdev_err(lp->ndev, "DMA Mapping error\n"); in dwceqos_tx_frags()
2160 dma_unmap_single(lp->ndev->dev.parent, in dwceqos_tx_rollback()
2177 static int dwceqos_start_xmit(struct sk_buff *skb, struct net_device *ndev) in dwceqos_start_xmit() argument
2179 struct net_local *lp = netdev_priv(ndev); in dwceqos_start_xmit()
2185 netif_stop_queue(ndev); in dwceqos_start_xmit()
2203 netdev_sent_queue(ndev, skb->len); in dwceqos_start_xmit()
2209 ndev->trans_start = jiffies; in dwceqos_start_xmit()
2219 static int dwceqos_set_mac_address(struct net_device *ndev, void *addr) in dwceqos_set_mac_address() argument
2221 struct net_local *lp = netdev_priv(ndev); in dwceqos_set_mac_address()
2224 if (netif_running(ndev)) in dwceqos_set_mac_address()
2230 memcpy(ndev->dev_addr, hwaddr->sa_data, ndev->addr_len); in dwceqos_set_mac_address()
2232 dwceqos_set_umac_addr(lp, lp->ndev->dev_addr, 0); in dwceqos_set_mac_address()
2236 static void dwceqos_tx_timeout(struct net_device *ndev) in dwceqos_tx_timeout() argument
2238 struct net_local *lp = netdev_priv(ndev); in dwceqos_tx_timeout()
2262 static void dwceqos_set_rx_mode(struct net_device *ndev) in dwceqos_set_rx_mode() argument
2264 struct net_local *lp = netdev_priv(ndev); in dwceqos_set_rx_mode()
2273 if (ndev->flags & IFF_PROMISC) { in dwceqos_set_rx_mode()
2275 } else if (((netdev_mc_count(ndev) > DWCEQOS_HASH_TABLE_SIZE) || in dwceqos_set_rx_mode()
2276 (ndev->flags & IFF_ALLMULTI))) { in dwceqos_set_rx_mode()
2280 } else if (!netdev_mc_empty(ndev)) { in dwceqos_set_rx_mode()
2283 netdev_for_each_mc_addr(ha, ndev) { in dwceqos_set_rx_mode()
2297 if (netdev_uc_count(ndev) > max_mac_addr) { in dwceqos_set_rx_mode()
2300 netdev_for_each_uc_addr(ha, ndev) { in dwceqos_set_rx_mode()
2311 static void dwceqos_poll_controller(struct net_device *ndev) in dwceqos_poll_controller() argument
2313 disable_irq(ndev->irq); in dwceqos_poll_controller()
2314 dwceqos_interrupt(ndev->irq, ndev); in dwceqos_poll_controller()
2315 enable_irq(ndev->irq); in dwceqos_poll_controller()
2494 dwceqos_get_stats64(struct net_device *ndev, struct rtnl_link_stats64 *s) in dwceqos_get_stats64() argument
2497 struct net_local *lp = netdev_priv(ndev); in dwceqos_get_stats64()
2530 dwceqos_get_settings(struct net_device *ndev, struct ethtool_cmd *ecmd) in dwceqos_get_settings() argument
2532 struct net_local *lp = netdev_priv(ndev); in dwceqos_get_settings()
2542 dwceqos_set_settings(struct net_device *ndev, struct ethtool_cmd *ecmd) in dwceqos_set_settings() argument
2544 struct net_local *lp = netdev_priv(ndev); in dwceqos_set_settings()
2554 dwceqos_get_drvinfo(struct net_device *ndev, struct ethtool_drvinfo *ed) in dwceqos_get_drvinfo() argument
2556 const struct net_local *lp = netdev_priv(ndev); in dwceqos_get_drvinfo()
2562 static void dwceqos_get_pauseparam(struct net_device *ndev, in dwceqos_get_pauseparam() argument
2565 const struct net_local *lp = netdev_priv(ndev); in dwceqos_get_pauseparam()
2572 static int dwceqos_set_pauseparam(struct net_device *ndev, in dwceqos_set_pauseparam() argument
2575 struct net_local *lp = netdev_priv(ndev); in dwceqos_set_pauseparam()
2589 if (netif_running(ndev)) in dwceqos_set_pauseparam()
2595 static void dwceqos_get_strings(struct net_device *ndev, u32 stringset, in dwceqos_get_strings() argument
2610 static void dwceqos_get_ethtool_stats(struct net_device *ndev, in dwceqos_get_ethtool_stats() argument
2613 struct net_local *lp = netdev_priv(ndev); in dwceqos_get_ethtool_stats()
2631 static int dwceqos_get_sset_count(struct net_device *ndev, int sset) in dwceqos_get_sset_count() argument
2685 static int dwceqos_get_eee(struct net_device *ndev, struct ethtool_eee *edata) in dwceqos_get_eee() argument
2687 struct net_local *lp = netdev_priv(ndev); in dwceqos_get_eee()
2706 netdev_info(lp->ndev, "MAC LPI State: RX:%s TX:%s\n", in dwceqos_get_eee()
2714 static int dwceqos_set_eee(struct net_device *ndev, struct ethtool_eee *edata) in dwceqos_set_eee() argument
2716 struct net_local *lp = netdev_priv(ndev); in dwceqos_set_eee()
2756 static u32 dwceqos_get_msglevel(struct net_device *ndev) in dwceqos_get_msglevel() argument
2758 const struct net_local *lp = netdev_priv(ndev); in dwceqos_get_msglevel()
2763 static void dwceqos_set_msglevel(struct net_device *ndev, u32 msglevel) in dwceqos_set_msglevel() argument
2765 struct net_local *lp = netdev_priv(ndev); in dwceqos_set_msglevel()
2811 struct net_device *ndev; in dwceqos_probe() local
2821 ndev = alloc_etherdev(sizeof(*lp)); in dwceqos_probe()
2822 if (!ndev) { in dwceqos_probe()
2827 SET_NETDEV_DEV(ndev, &pdev->dev); in dwceqos_probe()
2829 lp = netdev_priv(ndev); in dwceqos_probe()
2830 lp->ndev = ndev; in dwceqos_probe()
2858 ndev->irq = platform_get_irq(pdev, 0); in dwceqos_probe()
2859 ndev->watchdog_timeo = DWCEQOS_TX_TIMEOUT * HZ; in dwceqos_probe()
2860 ndev->netdev_ops = &netdev_ops; in dwceqos_probe()
2861 ndev->ethtool_ops = &dwceqos_ethtool_ops; in dwceqos_probe()
2862 ndev->base_addr = r_mem->start; in dwceqos_probe()
2867 ndev->hw_features = NETIF_F_SG; in dwceqos_probe()
2870 ndev->hw_features |= NETIF_F_TSO | NETIF_F_TSO6; in dwceqos_probe()
2873 ndev->hw_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM; in dwceqos_probe()
2876 ndev->hw_features |= NETIF_F_RXCSUM; in dwceqos_probe()
2878 ndev->features = ndev->hw_features; in dwceqos_probe()
2880 netif_napi_add(ndev, &lp->napi, dwceqos_rx_poll, NAPI_POLL_WEIGHT); in dwceqos_probe()
2882 ret = register_netdev(ndev); in dwceqos_probe()
2927 ret = dwceqos_mii_probe(ndev); in dwceqos_probe()
2929 netdev_err(ndev, "mii_probe fail.\n"); in dwceqos_probe()
2934 dwceqos_set_umac_addr(lp, lp->ndev->dev_addr, 0); in dwceqos_probe()
2937 (unsigned long)ndev); in dwceqos_probe()
2943 platform_set_drvdata(pdev, ndev); in dwceqos_probe()
2951 pdev->id, ndev->base_addr, ndev->irq); in dwceqos_probe()
2953 ret = devm_request_irq(&pdev->dev, ndev->irq, &dwceqos_interrupt, 0, in dwceqos_probe()
2954 ndev->name, ndev); in dwceqos_probe()
2957 ndev->irq, ret); in dwceqos_probe()
2962 netdev_dbg(ndev, "net_local@%p\n", lp); in dwceqos_probe()
2969 unregister_netdev(ndev); in dwceqos_probe()
2974 free_netdev(ndev); in dwceqos_probe()
2981 struct net_device *ndev = platform_get_drvdata(pdev); in dwceqos_remove() local
2984 if (ndev) { in dwceqos_remove()
2985 lp = netdev_priv(ndev); in dwceqos_remove()
2993 unregister_netdev(ndev); in dwceqos_remove()
2998 free_netdev(ndev); in dwceqos_remove()