Lines Matching refs:netdev
108 struct net_device *netdev; member
222 static void gmac_dump_dma_state(struct net_device *netdev);
224 static void gmac_update_config0_reg(struct net_device *netdev, in gmac_update_config0_reg() argument
227 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_update_config0_reg()
240 static void gmac_enable_tx_rx(struct net_device *netdev) in gmac_enable_tx_rx() argument
242 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_enable_tx_rx()
255 static void gmac_disable_tx_rx(struct net_device *netdev) in gmac_disable_tx_rx() argument
257 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_disable_tx_rx()
272 static void gmac_set_flow_control(struct net_device *netdev, bool tx, bool rx) in gmac_set_flow_control() argument
274 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_set_flow_control()
291 static void gmac_speed_set(struct net_device *netdev) in gmac_speed_set() argument
293 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_speed_set()
294 struct phy_device *phydev = netdev->phydev; in gmac_speed_set()
309 netdev_dbg(netdev, "connect %s to RGMII @ 1Gbit\n", in gmac_speed_set()
316 netdev_dbg(netdev, "connect %s to RGMII @ 100 Mbit\n", in gmac_speed_set()
323 netdev_dbg(netdev, "connect %s to RGMII @ 10 Mbit\n", in gmac_speed_set()
327 netdev_warn(netdev, "Unsupported PHY speed (%d) on %s\n", in gmac_speed_set()
342 gmac_set_flow_control(netdev, pause_tx, pause_rx); in gmac_speed_set()
349 netdev_info(netdev, "link flow control: %s\n", in gmac_speed_set()
356 gmac_disable_tx_rx(netdev); in gmac_speed_set()
358 gmac_enable_tx_rx(netdev); in gmac_speed_set()
361 static int gmac_setup_phy(struct net_device *netdev) in gmac_setup_phy() argument
363 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_setup_phy()
368 phy = of_phy_get_and_connect(netdev, in gmac_setup_phy()
373 netdev->phydev = phy; in gmac_setup_phy()
381 netdev_dbg(netdev, in gmac_setup_phy()
386 netdev_dbg(netdev, in gmac_setup_phy()
391 netdev_dbg(netdev, in gmac_setup_phy()
396 netdev_err(netdev, "Unsupported MII interface\n"); in gmac_setup_phy()
398 netdev->phydev = NULL; in gmac_setup_phy()
462 static int gmac_init(struct net_device *netdev) in gmac_init() argument
464 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_init()
515 config0.bits.max_len = gmac_pick_rx_max_len(netdev->mtu); in gmac_init()
543 static void gmac_uninit(struct net_device *netdev) in gmac_uninit() argument
545 if (netdev->phydev) in gmac_uninit()
546 phy_disconnect(netdev->phydev); in gmac_uninit()
549 static int gmac_setup_txqs(struct net_device *netdev) in gmac_setup_txqs() argument
551 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_setup_txqs()
552 unsigned int n_txq = netdev->num_tx_queues; in gmac_setup_txqs()
605 static void gmac_clean_txq(struct net_device *netdev, struct gmac_txq *txq, in gmac_clean_txq() argument
608 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_clean_txq()
677 static void gmac_cleanup_txqs(struct net_device *netdev) in gmac_cleanup_txqs() argument
679 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_cleanup_txqs()
680 unsigned int n_txq = netdev->num_tx_queues; in gmac_cleanup_txqs()
693 gmac_clean_txq(netdev, port->txq + i, r); in gmac_cleanup_txqs()
703 static int gmac_setup_rxq(struct net_device *netdev) in gmac_setup_rxq() argument
705 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_setup_rxq()
709 qhdr = geth->base + TOE_DEFAULT_Q_HDR_BASE(netdev->dev_id); in gmac_setup_rxq()
755 static void gmac_cleanup_rxq(struct net_device *netdev) in gmac_cleanup_rxq() argument
757 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_cleanup_rxq()
769 TOE_DEFAULT_Q_HDR_BASE(netdev->dev_id); in gmac_cleanup_rxq()
1043 struct net_device *netdev = port->netdev; in geth_resize_freeq() local
1052 if (netdev->dev_id == 0) in geth_resize_freeq()
1053 other_netdev = geth->port1->netdev; in geth_resize_freeq()
1055 other_netdev = geth->port0->netdev; in geth_resize_freeq()
1061 netdev_dbg(netdev, "port %d size: %d order %d\n", in geth_resize_freeq()
1062 netdev->dev_id, in geth_resize_freeq()
1108 static void gmac_tx_irq_enable(struct net_device *netdev, in gmac_tx_irq_enable() argument
1111 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_tx_irq_enable()
1115 netdev_dbg(netdev, "%s device %d\n", __func__, netdev->dev_id); in gmac_tx_irq_enable()
1117 mask = GMAC0_IRQ0_TXQ0_INTS << (6 * netdev->dev_id + txq); in gmac_tx_irq_enable()
1127 static void gmac_tx_irq(struct net_device *netdev, unsigned int txq_num) in gmac_tx_irq() argument
1129 struct netdev_queue *ntxq = netdev_get_tx_queue(netdev, txq_num); in gmac_tx_irq()
1131 gmac_tx_irq_enable(netdev, txq_num, 0); in gmac_tx_irq()
1135 static int gmac_map_tx_bufs(struct net_device *netdev, struct sk_buff *skb, in gmac_map_tx_bufs() argument
1138 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_map_tx_bufs()
1152 mtu += netdev->mtu; in gmac_map_tx_bufs()
1226 static int gmac_start_xmit(struct sk_buff *skb, struct net_device *netdev) in gmac_start_xmit() argument
1228 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_start_xmit()
1243 ntxq = netdev_get_tx_queue(netdev, txq_num); in gmac_start_xmit()
1254 gmac_clean_txq(netdev, txq, r); in gmac_start_xmit()
1264 gmac_tx_irq_enable(netdev, txq_num, 1); in gmac_start_xmit()
1267 netdev->stats.tx_fifo_errors++; in gmac_start_xmit()
1273 if (gmac_map_tx_bufs(netdev, skb, txq, &w)) { in gmac_start_xmit()
1281 if (gmac_map_tx_bufs(netdev, skb, txq, &w)) in gmac_start_xmit()
1287 gmac_clean_txq(netdev, txq, r); in gmac_start_xmit()
1299 static void gmac_tx_timeout(struct net_device *netdev) in gmac_tx_timeout() argument
1301 netdev_err(netdev, "Tx timeout\n"); in gmac_tx_timeout()
1302 gmac_dump_dma_state(netdev); in gmac_tx_timeout()
1305 static void gmac_enable_irq(struct net_device *netdev, int enable) in gmac_enable_irq() argument
1307 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_enable_irq()
1312 netdev_dbg(netdev, "%s device %d %s\n", __func__, in gmac_enable_irq()
1313 netdev->dev_id, enable ? "enable" : "disable"); in gmac_enable_irq()
1316 mask = GMAC0_IRQ0_2 << (netdev->dev_id * 2); in gmac_enable_irq()
1321 mask = DEFAULT_Q0_INT_BIT << netdev->dev_id; in gmac_enable_irq()
1326 mask = GMAC0_IRQ4_8 << (netdev->dev_id * 8); in gmac_enable_irq()
1334 static void gmac_enable_rx_irq(struct net_device *netdev, int enable) in gmac_enable_rx_irq() argument
1336 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_enable_rx_irq()
1341 netdev_dbg(netdev, "%s device %d %s\n", __func__, netdev->dev_id, in gmac_enable_rx_irq()
1344 mask = DEFAULT_Q0_INT_BIT << netdev->dev_id; in gmac_enable_rx_irq()
1393 static unsigned int gmac_rx(struct net_device *netdev, unsigned int budget) in gmac_rx() argument
1395 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_rx()
1415 writel(DEFAULT_Q0_INT_BIT << netdev->dev_id, in gmac_rx()
1435 netdev_err(netdev, in gmac_rx()
1475 netdev_err(netdev, "Received fragment with len = 0\n"); in gmac_rx()
1534 static void gmac_dump_dma_state(struct net_device *netdev) in gmac_dump_dma_state() argument
1536 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_dump_dma_state()
1547 netdev_err(netdev, "IRQ status: 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x\n", in gmac_dump_dma_state()
1556 netdev_err(netdev, "IRQ enable: 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x\n", in gmac_dump_dma_state()
1564 netdev_err(netdev, "RX DMA regs: 0x%08x 0x%08x, ptr: %u %u\n", in gmac_dump_dma_state()
1571 netdev_err(netdev, "RX DMA descriptor: 0x%08x 0x%08x 0x%08x 0x%08x\n", in gmac_dump_dma_state()
1581 netdev_err(netdev, "TX DMA regs: 0x%08x 0x%08x, ptr: %u %u\n", in gmac_dump_dma_state()
1588 netdev_err(netdev, "TX DMA descriptor: 0x%08x 0x%08x 0x%08x 0x%08x\n", in gmac_dump_dma_state()
1601 netdev_err(netdev, "FQ SW ptr: %u %u, HW ptr: %u %u\n", in gmac_dump_dma_state()
1605 static void gmac_update_hw_stats(struct net_device *netdev) in gmac_update_hw_stats() argument
1607 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_update_hw_stats()
1629 writel(GMAC0_MIB_INT_BIT << (netdev->dev_id * 8), in gmac_update_hw_stats()
1641 static u32 gmac_get_intr_flags(struct net_device *netdev, int i) in gmac_get_intr_flags() argument
1643 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_get_intr_flags()
1672 struct net_device *netdev = data; in gmac_irq() local
1676 port = netdev_priv(netdev); in gmac_irq()
1679 val = gmac_get_intr_flags(netdev, 0); in gmac_irq()
1682 if (val & (GMAC0_IRQ0_2 << (netdev->dev_id * 2))) { in gmac_irq()
1684 netdev_err(netdev, "hw failure/sw bug\n"); in gmac_irq()
1685 gmac_dump_dma_state(netdev); in gmac_irq()
1688 gmac_enable_irq(netdev, 0); in gmac_irq()
1692 if (val & (GMAC0_IRQ0_TXQ0_INTS << (netdev->dev_id * 6))) in gmac_irq()
1693 gmac_tx_irq(netdev, 0); in gmac_irq()
1695 val = gmac_get_intr_flags(netdev, 1); in gmac_irq()
1698 if (val & (DEFAULT_Q0_INT_BIT << netdev->dev_id)) { in gmac_irq()
1699 gmac_enable_rx_irq(netdev, 0); in gmac_irq()
1712 val = gmac_get_intr_flags(netdev, 4); in gmac_irq()
1715 if (val & (GMAC0_MIB_INT_BIT << (netdev->dev_id * 8))) in gmac_irq()
1716 gmac_update_hw_stats(netdev); in gmac_irq()
1718 if (val & (GMAC0_RX_OVERRUN_INT_BIT << (netdev->dev_id * 8))) { in gmac_irq()
1719 writel(GMAC0_RXDERR_INT_BIT << (netdev->dev_id * 8), in gmac_irq()
1764 static int gmac_open(struct net_device *netdev) in gmac_open() argument
1766 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_open()
1769 if (!netdev->phydev) { in gmac_open()
1770 err = gmac_setup_phy(netdev); in gmac_open()
1772 netif_err(port, ifup, netdev, in gmac_open()
1778 err = request_irq(netdev->irq, gmac_irq, in gmac_open()
1779 IRQF_SHARED, netdev->name, netdev); in gmac_open()
1781 netdev_err(netdev, "no IRQ\n"); in gmac_open()
1785 netif_carrier_off(netdev); in gmac_open()
1786 phy_start(netdev->phydev); in gmac_open()
1793 netdev_err(netdev, "could not resize freeq\n"); in gmac_open()
1797 err = gmac_setup_rxq(netdev); in gmac_open()
1799 netdev_err(netdev, "could not setup RXQ\n"); in gmac_open()
1803 err = gmac_setup_txqs(netdev); in gmac_open()
1805 netdev_err(netdev, "could not setup TXQs\n"); in gmac_open()
1806 gmac_cleanup_rxq(netdev); in gmac_open()
1813 gmac_enable_irq(netdev, 1); in gmac_open()
1814 gmac_enable_tx_rx(netdev); in gmac_open()
1815 netif_tx_start_all_queues(netdev); in gmac_open()
1821 netdev_dbg(netdev, "opened\n"); in gmac_open()
1826 phy_stop(netdev->phydev); in gmac_open()
1827 free_irq(netdev->irq, netdev); in gmac_open()
1831 static int gmac_stop(struct net_device *netdev) in gmac_stop() argument
1833 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_stop()
1836 netif_tx_stop_all_queues(netdev); in gmac_stop()
1837 gmac_disable_tx_rx(netdev); in gmac_stop()
1841 gmac_enable_irq(netdev, 0); in gmac_stop()
1842 gmac_cleanup_rxq(netdev); in gmac_stop()
1843 gmac_cleanup_txqs(netdev); in gmac_stop()
1845 phy_stop(netdev->phydev); in gmac_stop()
1846 free_irq(netdev->irq, netdev); in gmac_stop()
1848 gmac_update_hw_stats(netdev); in gmac_stop()
1852 static void gmac_set_rx_mode(struct net_device *netdev) in gmac_set_rx_mode() argument
1854 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_set_rx_mode()
1867 if (netdev->flags & IFF_PROMISC) { in gmac_set_rx_mode()
1872 } else if (netdev->flags & IFF_ALLMULTI) { in gmac_set_rx_mode()
1876 netdev_for_each_mc_addr(ha, netdev) { in gmac_set_rx_mode()
1887 static void gmac_write_mac_address(struct net_device *netdev) in gmac_write_mac_address() argument
1889 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_write_mac_address()
1893 memcpy(addr, netdev->dev_addr, ETH_ALEN); in gmac_write_mac_address()
1900 static int gmac_set_mac_address(struct net_device *netdev, void *addr) in gmac_set_mac_address() argument
1904 memcpy(netdev->dev_addr, sa->sa_data, ETH_ALEN); in gmac_set_mac_address()
1905 gmac_write_mac_address(netdev); in gmac_set_mac_address()
1910 static void gmac_clear_hw_stats(struct net_device *netdev) in gmac_clear_hw_stats() argument
1912 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_clear_hw_stats()
1922 static void gmac_get_stats64(struct net_device *netdev, in gmac_get_stats64() argument
1925 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_get_stats64()
1928 gmac_update_hw_stats(netdev); in gmac_get_stats64()
1971 static int gmac_change_mtu(struct net_device *netdev, int new_mtu) in gmac_change_mtu() argument
1978 gmac_disable_tx_rx(netdev); in gmac_change_mtu()
1980 netdev->mtu = new_mtu; in gmac_change_mtu()
1981 gmac_update_config0_reg(netdev, max_len << CONFIG0_MAXLEN_SHIFT, in gmac_change_mtu()
1984 netdev_update_features(netdev); in gmac_change_mtu()
1986 gmac_enable_tx_rx(netdev); in gmac_change_mtu()
1991 static netdev_features_t gmac_fix_features(struct net_device *netdev, in gmac_fix_features() argument
1994 if (netdev->mtu + ETH_HLEN + VLAN_HLEN > MTU_SIZE_BIT_MASK) in gmac_fix_features()
2000 static int gmac_set_features(struct net_device *netdev, in gmac_set_features() argument
2003 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_set_features()
2018 static int gmac_get_sset_count(struct net_device *netdev, int sset) in gmac_get_sset_count() argument
2023 static void gmac_get_strings(struct net_device *netdev, u32 stringset, u8 *data) in gmac_get_strings() argument
2031 static void gmac_get_ethtool_stats(struct net_device *netdev, in gmac_get_ethtool_stats() argument
2034 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_get_ethtool_stats()
2039 gmac_update_hw_stats(netdev); in gmac_get_ethtool_stats()
2081 static int gmac_get_ksettings(struct net_device *netdev, in gmac_get_ksettings() argument
2084 if (!netdev->phydev) in gmac_get_ksettings()
2086 phy_ethtool_ksettings_get(netdev->phydev, cmd); in gmac_get_ksettings()
2091 static int gmac_set_ksettings(struct net_device *netdev, in gmac_set_ksettings() argument
2094 if (!netdev->phydev) in gmac_set_ksettings()
2096 return phy_ethtool_ksettings_set(netdev->phydev, cmd); in gmac_set_ksettings()
2099 static int gmac_nway_reset(struct net_device *netdev) in gmac_nway_reset() argument
2101 if (!netdev->phydev) in gmac_nway_reset()
2103 return phy_start_aneg(netdev->phydev); in gmac_nway_reset()
2106 static void gmac_get_pauseparam(struct net_device *netdev, in gmac_get_pauseparam() argument
2109 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_get_pauseparam()
2119 static void gmac_get_ringparam(struct net_device *netdev, in gmac_get_ringparam() argument
2122 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_get_ringparam()
2138 static int gmac_set_ringparam(struct net_device *netdev, in gmac_set_ringparam() argument
2141 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_set_ringparam()
2144 if (netif_running(netdev)) in gmac_set_ringparam()
2159 static int gmac_get_coalesce(struct net_device *netdev, in gmac_get_coalesce() argument
2162 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_get_coalesce()
2171 static int gmac_set_coalesce(struct net_device *netdev, in gmac_set_coalesce() argument
2174 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_set_coalesce()
2187 static u32 gmac_get_msglevel(struct net_device *netdev) in gmac_get_msglevel() argument
2189 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_get_msglevel()
2194 static void gmac_set_msglevel(struct net_device *netdev, u32 level) in gmac_set_msglevel() argument
2196 struct gemini_ethernet_port *port = netdev_priv(netdev); in gmac_set_msglevel()
2201 static void gmac_get_drvinfo(struct net_device *netdev, in gmac_get_drvinfo() argument
2206 strcpy(info->bus_info, netdev->dev_id ? "1" : "0"); in gmac_get_drvinfo()
2295 if (port->netdev) in gemini_port_remove()
2296 unregister_netdev(port->netdev); in gemini_port_remove()
2369 struct net_device *netdev; in gemini_ethernet_port_probe() local
2389 netdev = alloc_etherdev_mq(sizeof(*port), TX_QUEUE_NUM); in gemini_ethernet_port_probe()
2390 if (!netdev) { in gemini_ethernet_port_probe()
2395 port = netdev_priv(netdev); in gemini_ethernet_port_probe()
2396 SET_NETDEV_DEV(netdev, dev); in gemini_ethernet_port_probe()
2397 port->netdev = netdev; in gemini_ethernet_port_probe()
2463 netdev->dev_id = port->id; in gemini_ethernet_port_probe()
2464 netdev->irq = irq; in gemini_ethernet_port_probe()
2465 netdev->netdev_ops = &gmac_351x_ops; in gemini_ethernet_port_probe()
2466 netdev->ethtool_ops = &gmac_351x_ethtool_ops; in gemini_ethernet_port_probe()
2469 gmac_clear_hw_stats(netdev); in gemini_ethernet_port_probe()
2471 netdev->hw_features = GMAC_OFFLOAD_FEATURES; in gemini_ethernet_port_probe()
2472 netdev->features |= GMAC_OFFLOAD_FEATURES | NETIF_F_GRO; in gemini_ethernet_port_probe()
2476 netdev->min_mtu = ETH_MIN_MTU; in gemini_ethernet_port_probe()
2477 netdev->max_mtu = 10236 - VLAN_ETH_HLEN; in gemini_ethernet_port_probe()
2480 netif_napi_add(netdev, &port->napi, gmac_napi_poll, in gemini_ethernet_port_probe()
2484 memcpy(netdev->dev_addr, port->mac_addr, ETH_ALEN); in gemini_ethernet_port_probe()
2490 eth_random_addr(netdev->dev_addr); in gemini_ethernet_port_probe()
2492 gmac_write_mac_address(netdev); in gemini_ethernet_port_probe()
2504 ret = register_netdev(netdev); in gemini_ethernet_port_probe()
2506 netdev_info(netdev, in gemini_ethernet_port_probe()
2510 ret = gmac_setup_phy(netdev); in gemini_ethernet_port_probe()
2512 netdev_info(netdev, in gemini_ethernet_port_probe()
2517 port->netdev = NULL; in gemini_ethernet_port_probe()
2518 free_netdev(netdev); in gemini_ethernet_port_probe()
2527 free_netdev(port->netdev); in gemini_ethernet_port_remove()