Lines Matching refs:mac
210 struct mtk_mac *mac = netdev_priv(dev); in mtk_phy_link_adjust() local
218 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_phy_link_adjust()
230 if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_GMAC1_TRGMII) && in mtk_phy_link_adjust()
231 !mac->id && !mac->trgmii) in mtk_phy_link_adjust()
232 mtk_gmac0_rgmii_adjust(mac->hw, dev->phydev->speed); in mtk_phy_link_adjust()
257 netif_dbg(mac->hw, link, dev, "rx pause %s, tx pause %s\n", in mtk_phy_link_adjust()
262 mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id)); in mtk_phy_link_adjust()
269 if (!of_phy_is_fixed_link(mac->of_node)) in mtk_phy_link_adjust()
273 static int mtk_phy_connect_node(struct mtk_eth *eth, struct mtk_mac *mac, in mtk_phy_connect_node() argument
285 phydev = of_phy_connect(eth->netdev[mac->id], phy_node, in mtk_phy_connect_node()
294 mac->id, phydev_name(phydev), phydev->phy_id, in mtk_phy_connect_node()
302 struct mtk_mac *mac = netdev_priv(dev); in mtk_phy_connect() local
307 eth = mac->hw; in mtk_phy_connect()
308 np = of_parse_phandle(mac->of_node, "phy-handle", 0); in mtk_phy_connect()
309 if (!np && of_phy_is_fixed_link(mac->of_node)) in mtk_phy_connect()
310 if (!of_phy_register_fixed_link(mac->of_node)) in mtk_phy_connect()
311 np = of_node_get(mac->of_node); in mtk_phy_connect()
315 mac->ge_mode = 0; in mtk_phy_connect()
318 mac->trgmii = true; in mtk_phy_connect()
326 mtk_gmac_sgmii_hw_setup(eth, mac->id); in mtk_phy_connect()
329 mac->ge_mode = 1; in mtk_phy_connect()
332 mac->ge_mode = 2; in mtk_phy_connect()
335 if (!mac->id) in mtk_phy_connect()
337 mac->ge_mode = 3; in mtk_phy_connect()
345 val &= ~SYSCFG0_GE_MODE(SYSCFG0_GE_MASK, mac->id); in mtk_phy_connect()
346 val |= SYSCFG0_GE_MODE(mac->ge_mode, mac->id); in mtk_phy_connect()
350 if (mtk_phy_connect_node(eth, mac, np)) in mtk_phy_connect()
357 if (of_phy_is_fixed_link(mac->of_node)) in mtk_phy_connect()
372 if (of_phy_is_fixed_link(mac->of_node)) in mtk_phy_connect()
373 of_phy_deregister_fixed_link(mac->of_node); in mtk_phy_connect()
470 struct mtk_mac *mac = netdev_priv(dev); in mtk_set_mac_address() local
476 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_set_mac_address()
479 spin_lock_bh(&mac->hw->page_lock); in mtk_set_mac_address()
480 mtk_w32(mac->hw, (macaddr[0] << 8) | macaddr[1], in mtk_set_mac_address()
481 MTK_GDMA_MAC_ADRH(mac->id)); in mtk_set_mac_address()
482 mtk_w32(mac->hw, (macaddr[2] << 24) | (macaddr[3] << 16) | in mtk_set_mac_address()
484 MTK_GDMA_MAC_ADRL(mac->id)); in mtk_set_mac_address()
485 spin_unlock_bh(&mac->hw->page_lock); in mtk_set_mac_address()
490 void mtk_stats_update_mac(struct mtk_mac *mac) in mtk_stats_update_mac() argument
492 struct mtk_hw_stats *hw_stats = mac->hw_stats; in mtk_stats_update_mac()
500 hw_stats->rx_bytes += mtk_r32(mac->hw, base); in mtk_stats_update_mac()
501 stats = mtk_r32(mac->hw, base + 0x04); in mtk_stats_update_mac()
504 hw_stats->rx_packets += mtk_r32(mac->hw, base + 0x08); in mtk_stats_update_mac()
505 hw_stats->rx_overflow += mtk_r32(mac->hw, base + 0x10); in mtk_stats_update_mac()
506 hw_stats->rx_fcs_errors += mtk_r32(mac->hw, base + 0x14); in mtk_stats_update_mac()
507 hw_stats->rx_short_errors += mtk_r32(mac->hw, base + 0x18); in mtk_stats_update_mac()
508 hw_stats->rx_long_errors += mtk_r32(mac->hw, base + 0x1c); in mtk_stats_update_mac()
509 hw_stats->rx_checksum_errors += mtk_r32(mac->hw, base + 0x20); in mtk_stats_update_mac()
511 mtk_r32(mac->hw, base + 0x24); in mtk_stats_update_mac()
512 hw_stats->tx_skip += mtk_r32(mac->hw, base + 0x28); in mtk_stats_update_mac()
513 hw_stats->tx_collisions += mtk_r32(mac->hw, base + 0x2c); in mtk_stats_update_mac()
514 hw_stats->tx_bytes += mtk_r32(mac->hw, base + 0x30); in mtk_stats_update_mac()
515 stats = mtk_r32(mac->hw, base + 0x34); in mtk_stats_update_mac()
518 hw_stats->tx_packets += mtk_r32(mac->hw, base + 0x38); in mtk_stats_update_mac()
527 if (!eth->mac[i] || !eth->mac[i]->hw_stats) in mtk_stats_update()
529 if (spin_trylock(ð->mac[i]->hw_stats->stats_lock)) { in mtk_stats_update()
530 mtk_stats_update_mac(eth->mac[i]); in mtk_stats_update()
531 spin_unlock(ð->mac[i]->hw_stats->stats_lock); in mtk_stats_update()
539 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_stats64() local
540 struct mtk_hw_stats *hw_stats = mac->hw_stats; in mtk_get_stats64()
545 mtk_stats_update_mac(mac); in mtk_get_stats64()
684 struct mtk_mac *mac = netdev_priv(dev); in mtk_tx_map() local
685 struct mtk_eth *eth = mac->hw; in mtk_tx_map()
698 fport = (mac->id + 1) << TX_DMA_FPORT_SHIFT; in mtk_tx_map()
722 itx_buf->flags |= (!mac->id) ? MTK_TX_FLAGS_FPORT0 : in mtk_tx_map()
765 tx_buf->flags |= (!mac->id) ? MTK_TX_FLAGS_FPORT0 : in mtk_tx_map()
868 struct mtk_mac *mac = netdev_priv(dev); in mtk_start_xmit() local
869 struct mtk_eth *eth = mac->hw; in mtk_start_xmit()
979 int mac = 0; in mtk_poll_rx() local
994 mac = (trxd.rxd4 >> RX_DMA_FPORT_SHIFT) & in mtk_poll_rx()
996 mac--; in mtk_poll_rx()
998 if (unlikely(mac < 0 || mac >= MTK_MAC_COUNT || in mtk_poll_rx()
999 !eth->netdev[mac])) in mtk_poll_rx()
1002 netdev = eth->netdev[mac]; in mtk_poll_rx()
1094 int mac = 0; in mtk_poll_tx() local
1102 mac = 1; in mtk_poll_tx()
1109 bytes[mac] += skb->len; in mtk_poll_tx()
1110 done[mac]++; in mtk_poll_tx()
1500 static int mtk_hwlro_get_ip_cnt(struct mtk_mac *mac) in mtk_hwlro_get_ip_cnt() argument
1506 if (mac->hwlro_ip[i]) in mtk_hwlro_get_ip_cnt()
1518 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_add_ipaddr() local
1519 struct mtk_eth *eth = mac->hw; in mtk_hwlro_add_ipaddr()
1527 mac->hwlro_ip[fsp->location] = htonl(fsp->h_u.tcp_ip4_spec.ip4dst); in mtk_hwlro_add_ipaddr()
1528 hwlro_idx = (mac->id * MTK_MAX_LRO_IP_CNT) + fsp->location; in mtk_hwlro_add_ipaddr()
1530 mac->hwlro_ip_cnt = mtk_hwlro_get_ip_cnt(mac); in mtk_hwlro_add_ipaddr()
1532 mtk_hwlro_val_ipaddr(eth, hwlro_idx, mac->hwlro_ip[fsp->location]); in mtk_hwlro_add_ipaddr()
1542 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_del_ipaddr() local
1543 struct mtk_eth *eth = mac->hw; in mtk_hwlro_del_ipaddr()
1549 mac->hwlro_ip[fsp->location] = 0; in mtk_hwlro_del_ipaddr()
1550 hwlro_idx = (mac->id * MTK_MAX_LRO_IP_CNT) + fsp->location; in mtk_hwlro_del_ipaddr()
1552 mac->hwlro_ip_cnt = mtk_hwlro_get_ip_cnt(mac); in mtk_hwlro_del_ipaddr()
1561 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_netdev_disable() local
1562 struct mtk_eth *eth = mac->hw; in mtk_hwlro_netdev_disable()
1566 mac->hwlro_ip[i] = 0; in mtk_hwlro_netdev_disable()
1567 hwlro_idx = (mac->id * MTK_MAX_LRO_IP_CNT) + i; in mtk_hwlro_netdev_disable()
1572 mac->hwlro_ip_cnt = 0; in mtk_hwlro_netdev_disable()
1578 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_get_fdir_entry() local
1584 fsp->h_u.tcp_ip4_spec.ip4dst = ntohl(mac->hwlro_ip[fsp->location]); in mtk_hwlro_get_fdir_entry()
1603 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_get_fdir_all() local
1608 if (mac->hwlro_ip[i]) { in mtk_hwlro_get_fdir_all()
1623 struct mtk_mac *mac = netdev_priv(dev); in mtk_fix_features() local
1624 int ip_cnt = mtk_hwlro_get_ip_cnt(mac); in mtk_fix_features()
1742 struct mtk_mac *mac = netdev_priv(dev); in mtk_tx_timeout() local
1743 struct mtk_eth *eth = mac->hw; in mtk_tx_timeout()
1745 eth->netdev[mac->id]->stats.tx_errors++; in mtk_tx_timeout()
1778 struct mtk_mac *mac = netdev_priv(dev); in mtk_poll_controller() local
1779 struct mtk_eth *eth = mac->hw; in mtk_poll_controller()
1817 struct mtk_mac *mac = netdev_priv(dev); in mtk_open() local
1818 struct mtk_eth *eth = mac->hw; in mtk_open()
1865 struct mtk_mac *mac = netdev_priv(dev); in mtk_stop() local
1866 struct mtk_eth *eth = mac->hw; in mtk_stop()
1947 if (!eth->mac[i]) in mtk_hw_init()
1949 val &= ~SYSCFG0_GE_MODE(SYSCFG0_GE_MASK, eth->mac[i]->id); in mtk_hw_init()
1950 val |= SYSCFG0_GE_MODE(eth->mac[i]->ge_mode, eth->mac[i]->id); in mtk_hw_init()
2033 struct mtk_mac *mac = netdev_priv(dev); in mtk_init() local
2034 struct mtk_eth *eth = mac->hw; in mtk_init()
2037 mac_addr = of_get_mac_address(mac->of_node); in mtk_init()
2053 struct mtk_mac *mac = netdev_priv(dev); in mtk_uninit() local
2054 struct mtk_eth *eth = mac->hw; in mtk_uninit()
2057 if (of_phy_is_fixed_link(mac->of_node)) in mtk_uninit()
2058 of_phy_deregister_fixed_link(mac->of_node); in mtk_uninit()
2111 if (!eth->mac[i] || in mtk_pending_work()
2112 of_phy_is_fixed_link(eth->mac[i]->of_node)) in mtk_pending_work()
2177 struct mtk_mac *mac = netdev_priv(ndev); in mtk_get_link_ksettings() local
2179 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_get_link_ksettings()
2190 struct mtk_mac *mac = netdev_priv(ndev); in mtk_set_link_ksettings() local
2192 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_set_link_ksettings()
2201 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_drvinfo() local
2203 strlcpy(info->driver, mac->hw->dev->driver->name, sizeof(info->driver)); in mtk_get_drvinfo()
2204 strlcpy(info->bus_info, dev_name(mac->hw->dev), sizeof(info->bus_info)); in mtk_get_drvinfo()
2210 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_msglevel() local
2212 return mac->hw->msg_enable; in mtk_get_msglevel()
2217 struct mtk_mac *mac = netdev_priv(dev); in mtk_set_msglevel() local
2219 mac->hw->msg_enable = value; in mtk_set_msglevel()
2224 struct mtk_mac *mac = netdev_priv(dev); in mtk_nway_reset() local
2226 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_nway_reset()
2234 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_link() local
2237 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_get_link()
2274 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_ethtool_stats() local
2275 struct mtk_hw_stats *hwstats = mac->hw_stats; in mtk_get_ethtool_stats()
2280 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_get_ethtool_stats()
2285 mtk_stats_update_mac(mac); in mtk_get_ethtool_stats()
2315 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_rxnfc() local
2317 cmd->rule_cnt = mac->hwlro_ip_cnt; in mtk_get_rxnfc()
2392 struct mtk_mac *mac; in mtk_add_mac() local
2412 eth->netdev[id] = alloc_etherdev(sizeof(*mac)); in mtk_add_mac()
2417 mac = netdev_priv(eth->netdev[id]); in mtk_add_mac()
2418 eth->mac[id] = mac; in mtk_add_mac()
2419 mac->id = id; in mtk_add_mac()
2420 mac->hw = eth; in mtk_add_mac()
2421 mac->of_node = np; in mtk_add_mac()
2423 memset(mac->hwlro_ip, 0, sizeof(mac->hwlro_ip)); in mtk_add_mac()
2424 mac->hwlro_ip_cnt = 0; in mtk_add_mac()
2426 mac->hw_stats = devm_kzalloc(eth->dev, in mtk_add_mac()
2427 sizeof(*mac->hw_stats), in mtk_add_mac()
2429 if (!mac->hw_stats) { in mtk_add_mac()
2434 spin_lock_init(&mac->hw_stats->stats_lock); in mtk_add_mac()
2435 u64_stats_init(&mac->hw_stats->syncp); in mtk_add_mac()
2436 mac->hw_stats->reg_offset = id * MTK_STAT_OFFSET; in mtk_add_mac()