Lines Matching defs:ndev

78 static void set_multicast_list(struct net_device *ndev);
79 static void fec_enet_itr_coal_set(struct net_device *ndev);
382 static void fec_dump(struct net_device *ndev)
384 struct fec_enet_private *fep = netdev_priv(ndev);
389 netdev_info(ndev, "TX ring dump\n");
415 fec_enet_clear_csum(struct sk_buff *skb, struct net_device *ndev)
477 struct net_device *ndev)
479 struct fec_enet_private *fep = netdev_priv(ndev);
539 netdev_err(ndev, "Tx DMA memory map failed\n");
564 struct sk_buff *skb, struct net_device *ndev)
566 struct fec_enet_private *fep = netdev_priv(ndev);
581 netdev_err(ndev, "NOT enough BD for SG!\n");
586 if (fec_enet_clear_csum(skb, ndev)) {
616 netdev_err(ndev, "Tx DMA memory map failed\n");
621 last_bdp = fec_enet_txq_submit_frag_skb(txq, skb, ndev);
690 struct net_device *ndev,
694 struct fec_enet_private *fep = netdev_priv(ndev);
718 netdev_err(ndev, "Tx DMA memory map failed\n");
750 struct sk_buff *skb, struct net_device *ndev,
753 struct fec_enet_private *fep = netdev_priv(ndev);
780 netdev_err(ndev, "Tx DMA memory map failed\n");
804 struct net_device *ndev)
806 struct fec_enet_private *fep = netdev_priv(ndev);
816 netdev_err(ndev, "NOT enough BD for TSO!\n");
821 if (fec_enet_clear_csum(skb, ndev)) {
840 ret = fec_enet_txq_put_hdr_tso(txq, skb, ndev, bdp, index);
850 ret = fec_enet_txq_put_data_tso(txq, skb, ndev,
887 fec_enet_start_xmit(struct sk_buff *skb, struct net_device *ndev)
889 struct fec_enet_private *fep = netdev_priv(ndev);
898 nq = netdev_get_tx_queue(ndev, queue);
901 ret = fec_enet_txq_submit_tso(txq, skb, ndev);
903 ret = fec_enet_txq_submit_skb(txq, skb, ndev);
995 static void fec_enet_active_rxring(struct net_device *ndev)
997 struct fec_enet_private *fep = netdev_priv(ndev);
1004 static void fec_enet_enable_ring(struct net_device *ndev)
1006 struct fec_enet_private *fep = netdev_priv(ndev);
1039 fec_restart(struct net_device *ndev)
1041 struct fec_enet_private *fep = netdev_priv(ndev);
1062 memcpy(&temp_mac, ndev->dev_addr, ETH_ALEN);
1071 fec_enet_bd_init(ndev);
1073 fec_enet_enable_ring(ndev);
1124 if (ndev->phydev) {
1125 if (ndev->phydev->speed == SPEED_1000)
1127 else if (ndev->phydev->speed == SPEED_100)
1148 if (ndev->phydev && ndev->phydev->speed == SPEED_10)
1162 ndev->phydev && ndev->phydev->pause)) {
1181 set_multicast_list(ndev);
1211 fec_enet_active_rxring(ndev);
1214 fec_ptp_start_cyclecounter(ndev);
1224 fec_enet_itr_coal_set(ndev);
1275 static void fec_irqs_disable(struct net_device *ndev)
1277 struct fec_enet_private *fep = netdev_priv(ndev);
1282 static void fec_irqs_disable_except_wakeup(struct net_device *ndev)
1284 struct fec_enet_private *fep = netdev_priv(ndev);
1291 fec_stop(struct net_device *ndev)
1293 struct fec_enet_private *fep = netdev_priv(ndev);
1302 netdev_err(ndev, "Graceful transmit stop did not complete!\n");
1334 fec_timeout(struct net_device *ndev, unsigned int txqueue)
1336 struct fec_enet_private *fep = netdev_priv(ndev);
1338 fec_dump(ndev);
1340 ndev->stats.tx_errors++;
1349 struct net_device *ndev = fep->netdev;
1352 if (netif_device_present(ndev) || netif_running(ndev)) {
1354 netif_tx_lock_bh(ndev);
1355 fec_restart(ndev);
1356 netif_tx_wake_all_queues(ndev);
1357 netif_tx_unlock_bh(ndev);
1379 fec_enet_tx_queue(struct net_device *ndev, u16 queue_id, int budget)
1393 fep = netdev_priv(ndev);
1397 nq = netdev_get_tx_queue(ndev, queue_id);
1456 ndev->stats.tx_errors++;
1458 ndev->stats.tx_heartbeat_errors++;
1460 ndev->stats.tx_window_errors++;
1462 ndev->stats.tx_aborted_errors++;
1464 ndev->stats.tx_fifo_errors++;
1466 ndev->stats.tx_carrier_errors++;
1468 ndev->stats.tx_packets++;
1471 ndev->stats.tx_bytes += skb->len;
1473 ndev->stats.tx_bytes += frame_len;
1480 ndev->stats.collisions++;
1534 static void fec_enet_tx(struct net_device *ndev, int budget)
1536 struct fec_enet_private *fep = netdev_priv(ndev);
1541 fec_enet_tx_queue(ndev, i, budget);
1630 fec_enet_rx_queue(struct net_device *ndev, int budget, u16 queue_id)
1632 struct fec_enet_private *fep = netdev_priv(ndev);
1687 ndev->stats.rx_errors++;
1690 ndev->stats.rx_fifo_errors++;
1696 ndev->stats.rx_length_errors++;
1698 netdev_err(ndev, "rcv is not +last\n");
1701 ndev->stats.rx_crc_errors++;
1704 ndev->stats.rx_frame_errors++;
1709 ndev->stats.rx_packets++;
1711 ndev->stats.rx_bytes += pkt_len;
1740 ndev->stats.rx_dropped++;
1742 netdev_err_once(ndev, "build_skb failed!\n");
1763 if ((ndev->features & NETIF_F_HW_VLAN_CTAG_RX) &&
1777 skb->protocol = eth_type_trans(skb, ndev);
1840 static int fec_enet_rx(struct net_device *ndev, int budget)
1842 struct fec_enet_private *fep = netdev_priv(ndev);
1847 done += fec_enet_rx_queue(ndev, budget - done, i);
1869 struct net_device *ndev = dev_id;
1870 struct fec_enet_private *fep = netdev_priv(ndev);
1888 struct net_device *ndev = napi->dev;
1889 struct fec_enet_private *fep = netdev_priv(ndev);
1893 done += fec_enet_rx(ndev, budget - done);
1894 fec_enet_tx(ndev, budget);
1906 static int fec_get_mac(struct net_device *ndev)
1908 struct fec_enet_private *fep = netdev_priv(ndev);
1966 eth_hw_addr_random(ndev);
1968 ndev->dev_addr);
1973 eth_hw_addr_gen(ndev, iap, iap == macaddr ? fep->dev_id : 0);
1983 static void fec_enet_adjust_link(struct net_device *ndev)
1985 struct fec_enet_private *fep = netdev_priv(ndev);
1986 struct phy_device *phy_dev = ndev->phydev;
1994 if (!netif_running(ndev) || !netif_device_present(ndev)) {
2014 netif_stop_queue(ndev);
2016 netif_tx_lock_bh(ndev);
2017 fec_restart(ndev);
2018 netif_tx_wake_all_queues(ndev);
2019 netif_tx_unlock_bh(ndev);
2024 netif_stop_queue(ndev);
2026 netif_tx_lock_bh(ndev);
2027 fec_stop(ndev);
2028 netif_tx_unlock_bh(ndev);
2214 static void fec_enet_phy_reset_after_clk_enable(struct net_device *ndev)
2216 struct fec_enet_private *fep = netdev_priv(ndev);
2217 struct phy_device *phy_dev = ndev->phydev;
2235 static int fec_enet_clk_enable(struct net_device *ndev, bool enable)
2237 struct fec_enet_private *fep = netdev_priv(ndev);
2265 fec_enet_phy_reset_after_clk_enable(ndev);
2324 static int fec_enet_mii_probe(struct net_device *ndev)
2326 struct fec_enet_private *fep = netdev_priv(ndev);
2334 phy_dev = of_phy_connect(ndev, fep->phy_node,
2338 netdev_err(ndev, "Unable to connect to phy\n");
2353 netdev_info(ndev, "no PHY, assuming direct connection to switch\n");
2360 phy_dev = phy_connect(ndev, phy_name, &fec_enet_adjust_link,
2365 netdev_err(ndev, "could not attach to PHY\n");
2394 struct net_device *ndev = platform_get_drvdata(pdev);
2395 struct fec_enet_private *fep = netdev_priv(ndev);
2537 static void fec_enet_get_drvinfo(struct net_device *ndev,
2540 struct fec_enet_private *fep = netdev_priv(ndev);
2544 strscpy(info->bus_info, dev_name(&ndev->dev), sizeof(info->bus_info));
2547 static int fec_enet_get_regs_len(struct net_device *ndev)
2549 struct fec_enet_private *fep = netdev_priv(ndev);
2634 static void fec_enet_get_regs(struct net_device *ndev,
2637 struct fec_enet_private *fep = netdev_priv(ndev);
2684 static int fec_enet_get_ts_info(struct net_device *ndev,
2687 struct fec_enet_private *fep = netdev_priv(ndev);
2709 return ethtool_op_get_ts_info(ndev, info);
2715 static void fec_enet_get_pauseparam(struct net_device *ndev,
2718 struct fec_enet_private *fep = netdev_priv(ndev);
2725 static int fec_enet_set_pauseparam(struct net_device *ndev,
2728 struct fec_enet_private *fep = netdev_priv(ndev);
2730 if (!ndev->phydev)
2734 netdev_info(ndev,
2745 phy_set_sym_pause(ndev->phydev, pause->rx_pause, pause->tx_pause,
2749 if (netif_running(ndev))
2750 fec_stop(ndev);
2751 phy_start_aneg(ndev->phydev);
2753 if (netif_running(ndev)) {
2755 netif_tx_lock_bh(ndev);
2756 fec_restart(ndev);
2757 netif_tx_wake_all_queues(ndev);
2758 netif_tx_unlock_bh(ndev);
2982 static int fec_enet_us_to_itr_clock(struct net_device *ndev, int us)
2984 struct fec_enet_private *fep = netdev_priv(ndev);
2990 static void fec_enet_itr_coal_set(struct net_device *ndev)
2992 struct fec_enet_private *fep = netdev_priv(ndev);
3008 rx_itr |= FEC_ITR_ICTT(fec_enet_us_to_itr_clock(ndev, fep->rx_time_itr));
3010 tx_itr |= FEC_ITR_ICTT(fec_enet_us_to_itr_clock(ndev, fep->tx_time_itr));
3025 static int fec_enet_get_coalesce(struct net_device *ndev,
3030 struct fec_enet_private *fep = netdev_priv(ndev);
3044 static int fec_enet_set_coalesce(struct net_device *ndev,
3049 struct fec_enet_private *fep = netdev_priv(ndev);
3066 cycle = fec_enet_us_to_itr_clock(ndev, ec->rx_coalesce_usecs);
3072 cycle = fec_enet_us_to_itr_clock(ndev, ec->tx_coalesce_usecs);
3084 fec_enet_itr_coal_set(ndev);
3092 static int fec_enet_us_to_tx_cycle(struct net_device *ndev, int us)
3094 struct fec_enet_private *fep = netdev_priv(ndev);
3099 static int fec_enet_eee_mode_set(struct net_device *ndev, bool enable)
3101 struct fec_enet_private *fep = netdev_priv(ndev);
3107 ret = phy_init_eee(ndev->phydev, false);
3111 sleep_cycle = fec_enet_us_to_tx_cycle(ndev, p->tx_lpi_timer);
3129 fec_enet_get_eee(struct net_device *ndev, struct ethtool_eee *edata)
3131 struct fec_enet_private *fep = netdev_priv(ndev);
3137 if (!netif_running(ndev))
3145 return phy_ethtool_get_eee(ndev->phydev, edata);
3149 fec_enet_set_eee(struct net_device *ndev, struct ethtool_eee *edata)
3151 struct fec_enet_private *fep = netdev_priv(ndev);
3158 if (!netif_running(ndev))
3165 ret = fec_enet_eee_mode_set(ndev, false);
3167 ret = fec_enet_eee_mode_set(ndev, true);
3172 return phy_ethtool_set_eee(ndev->phydev, edata);
3176 fec_enet_get_wol(struct net_device *ndev, struct ethtool_wolinfo *wol)
3178 struct fec_enet_private *fep = netdev_priv(ndev);
3189 fec_enet_set_wol(struct net_device *ndev, struct ethtool_wolinfo *wol)
3191 struct fec_enet_private *fep = netdev_priv(ndev);
3199 device_set_wakeup_enable(&ndev->dev, wol->wolopts & WAKE_MAGIC);
3200 if (device_may_wakeup(&ndev->dev))
3235 static void fec_enet_free_buffers(struct net_device *ndev)
3237 struct fec_enet_private *fep = netdev_priv(ndev);
3284 static void fec_enet_free_queue(struct net_device *ndev)
3286 struct fec_enet_private *fep = netdev_priv(ndev);
3305 static int fec_enet_alloc_queue(struct net_device *ndev)
3307 struct fec_enet_private *fep = netdev_priv(ndev);
3350 fec_enet_free_queue(ndev);
3355 fec_enet_alloc_rxq_buffers(struct net_device *ndev, unsigned int queue)
3357 struct fec_enet_private *fep = netdev_priv(ndev);
3369 netdev_err(ndev, "%s failed queue %d (%d)\n", __func__, queue, err);
3399 fec_enet_free_buffers(ndev);
3404 fec_enet_alloc_txq_buffers(struct net_device *ndev, unsigned int queue)
3406 struct fec_enet_private *fep = netdev_priv(ndev);
3436 fec_enet_free_buffers(ndev);
3440 static int fec_enet_alloc_buffers(struct net_device *ndev)
3442 struct fec_enet_private *fep = netdev_priv(ndev);
3446 if (fec_enet_alloc_rxq_buffers(ndev, i))
3450 if (fec_enet_alloc_txq_buffers(ndev, i))
3456 fec_enet_open(struct net_device *ndev)
3458 struct fec_enet_private *fep = netdev_priv(ndev);
3467 ret = fec_enet_clk_enable(ndev, true);
3477 if (ndev->phydev && ndev->phydev->drv)
3486 ret = fec_enet_alloc_buffers(ndev);
3491 fec_restart(ndev);
3497 fec_enet_phy_reset_after_clk_enable(ndev);
3500 ret = fec_enet_mii_probe(ndev);
3511 phy_start(ndev->phydev);
3512 netif_tx_start_all_queues(ndev);
3514 device_set_wakeup_enable(&ndev->dev, fep->wol_flag &
3520 fec_enet_free_buffers(ndev);
3522 fec_enet_clk_enable(ndev, false);
3531 fec_enet_close(struct net_device *ndev)
3533 struct fec_enet_private *fep = netdev_priv(ndev);
3535 phy_stop(ndev->phydev);
3537 if (netif_device_present(ndev)) {
3539 netif_tx_disable(ndev);
3540 fec_stop(ndev);
3543 phy_disconnect(ndev->phydev);
3548 fec_enet_update_ethtool_stats(ndev);
3550 fec_enet_clk_enable(ndev, false);
3558 fec_enet_free_buffers(ndev);
3575 static void set_multicast_list(struct net_device *ndev)
3577 struct fec_enet_private *fep = netdev_priv(ndev);
3583 if (ndev->flags & IFF_PROMISC) {
3594 if (ndev->flags & IFF_ALLMULTI) {
3605 netdev_for_each_mc_addr(ha, ndev) {
3607 crc = ether_crc_le(ndev->addr_len, ha->addr);
3626 fec_set_mac_address(struct net_device *ndev, void *p)
3628 struct fec_enet_private *fep = netdev_priv(ndev);
3634 eth_hw_addr_set(ndev, addr->sa_data);
3642 if (!netif_running(ndev))
3645 writel(ndev->dev_addr[3] | (ndev->dev_addr[2] << 8) |
3646 (ndev->dev_addr[1] << 16) | (ndev->dev_addr[0] << 24),
3648 writel((ndev->dev_addr[5] << 16) | (ndev->dev_addr[4] << 24),
3715 static u16 fec_enet_select_queue(struct net_device *ndev, struct sk_buff *skb,
3718 struct fec_enet_private *fep = netdev_priv(ndev);
3722 return netdev_pick_tx(ndev, skb, NULL);
3941 static int fec_hwtstamp_get(struct net_device *ndev,
3944 struct fec_enet_private *fep = netdev_priv(ndev);
3946 if (!netif_running(ndev))
3952 fec_ptp_get(ndev, config);
3957 static int fec_hwtstamp_set(struct net_device *ndev,
3961 struct fec_enet_private *fep = netdev_priv(ndev);
3963 if (!netif_running(ndev))
3969 return fec_ptp_set(ndev, config, extack);
4004 static int fec_enet_init(struct net_device *ndev)
4006 struct fec_enet_private *fep = netdev_priv(ndev);
4036 ret = fec_enet_alloc_queue(ndev);
4051 ret = fec_get_mac(ndev);
4090 ndev->watchdog_timeo = TX_TIMEOUT;
4091 ndev->netdev_ops = &fec_netdev_ops;
4092 ndev->ethtool_ops = &fec_enet_ethtool_ops;
4095 netif_napi_add(ndev, &fep->napi, fec_enet_rx_napi);
4099 ndev->features |= NETIF_F_HW_VLAN_CTAG_RX;
4102 netif_set_tso_max_segs(ndev, FEC_MAX_TSO_SEGS);
4105 ndev->features |= (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM
4115 ndev->hw_features = ndev->features;
4118 ndev->xdp_features = NETDEV_XDP_ACT_BASIC |
4121 fec_restart(ndev);
4124 fec_enet_clear_ethtool_stats(ndev);
4126 fec_enet_update_ethtool_stats(ndev);
4131 fec_enet_free_queue(ndev);
4240 struct net_device *ndev = platform_get_drvdata(pdev);
4241 struct fec_enet_private *fep = netdev_priv(ndev);
4290 struct net_device *ndev;
4304 ndev = alloc_etherdev_mqs(sizeof(struct fec_enet_private) +
4306 if (!ndev)
4309 SET_NETDEV_DEV(ndev, &pdev->dev);
4312 fep = netdev_priv(ndev);
4321 fep->netdev = ndev;
4343 platform_set_drvdata(pdev, ndev);
4434 ret = fec_enet_clk_enable(ndev, true);
4475 ret = fec_enet_init(ndev);
4489 0, pdev->name, ndev);
4504 netif_carrier_off(ndev);
4505 fec_enet_clk_enable(ndev, false);
4508 ndev->max_mtu = PKT_MAXBUF_SIZE - ETH_HLEN - ETH_FCS_LEN;
4510 ret = register_netdev(ndev);
4514 device_init_wakeup(&ndev->dev, fep->wol_flag &
4518 netdev_info(ndev, "registered PHC device %d\n", fep->dev_id);
4543 fec_enet_clk_enable(ndev, false);
4554 free_netdev(ndev);
4562 struct net_device *ndev = platform_get_drvdata(pdev);
4563 struct fec_enet_private *fep = netdev_priv(ndev);
4575 unregister_netdev(ndev);
4594 free_netdev(ndev);
4599 struct net_device *ndev = dev_get_drvdata(dev);
4600 struct fec_enet_private *fep = netdev_priv(ndev);
4604 if (netif_running(ndev)) {
4607 phy_stop(ndev->phydev);
4609 netif_tx_lock_bh(ndev);
4610 netif_device_detach(ndev);
4611 netif_tx_unlock_bh(ndev);
4612 fec_stop(ndev);
4614 fec_irqs_disable(ndev);
4617 fec_irqs_disable_except_wakeup(ndev);
4625 fec_enet_clk_enable(ndev, false);
4652 struct net_device *ndev = dev_get_drvdata(dev);
4653 struct fec_enet_private *fep = netdev_priv(ndev);
4664 if (netif_running(ndev)) {
4668 ret = fec_enet_clk_enable(ndev, true);
4687 fec_restart(ndev);
4688 netif_tx_lock_bh(ndev);
4689 netif_device_attach(ndev);
4690 netif_tx_unlock_bh(ndev);
4692 phy_init_hw(ndev->phydev);
4693 phy_start(ndev->phydev);
4707 struct net_device *ndev = dev_get_drvdata(dev);
4708 struct fec_enet_private *fep = netdev_priv(ndev);
4718 struct net_device *ndev = dev_get_drvdata(dev);
4719 struct fec_enet_private *fep = netdev_priv(ndev);