• Home
  • Raw
  • Download

Lines Matching refs:mac

193 	struct mtk_mac *mac = container_of(config, struct mtk_mac,  in mtk_mac_config()  local
195 struct mtk_eth *eth = mac->hw; in mtk_mac_config()
201 mac->interface != state->interface) { in mtk_mac_config()
205 if (mac->id) in mtk_mac_config()
207 if (!MTK_HAS_CAPS(mac->hw->soc->caps, in mtk_mac_config()
219 err = mtk_gmac_rgmii_path_setup(eth, mac->id); in mtk_mac_config()
228 err = mtk_gmac_sgmii_path_setup(eth, mac->id); in mtk_mac_config()
235 err = mtk_gmac_gephy_path_setup(eth, mac->id); in mtk_mac_config()
245 if (!mac->id && state->interface != PHY_INTERFACE_MODE_SGMII && in mtk_mac_config()
247 MTK_HAS_CAPS(mac->hw->soc->caps, MTK_GMAC1_TRGMII)) { in mtk_mac_config()
248 if (MTK_HAS_CAPS(mac->hw->soc->caps, in mtk_mac_config()
250 if (mt7621_gmac0_rgmii_adjust(mac->hw, in mtk_mac_config()
256 mtk_gmac0_rgmii_adjust(mac->hw, in mtk_mac_config()
271 if (mac->id) in mtk_mac_config()
281 val &= ~SYSCFG0_GE_MODE(SYSCFG0_GE_MASK, mac->id); in mtk_mac_config()
282 val |= SYSCFG0_GE_MODE(ge_mode, mac->id); in mtk_mac_config()
285 mac->interface = state->interface; in mtk_mac_config()
302 0 : mac->id; in mtk_mac_config()
323 mcr_cur = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id)); in mtk_mac_config()
350 mtk_w32(mac->hw, mcr_new, MTK_MAC_MCR(mac->id)); in mtk_mac_config()
356 mac->id, phy_modes(state->interface)); in mtk_mac_config()
361 mac->id, phy_modes(state->interface), err); in mtk_mac_config()
367 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_link_state() local
369 u32 pmsr = mtk_r32(mac->hw, MTK_MAC_MSR(mac->id)); in mtk_mac_link_state()
400 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_an_restart() local
403 mtk_sgmii_restart_an(mac->hw, mac->id); in mtk_mac_an_restart()
409 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_link_down() local
411 u32 mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id)); in mtk_mac_link_down()
414 mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id)); in mtk_mac_link_down()
421 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_link_up() local
423 u32 mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id)); in mtk_mac_link_up()
426 mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id)); in mtk_mac_link_up()
433 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_validate() local
440 !(MTK_HAS_CAPS(mac->hw->soc->caps, MTK_RGMII) && in mtk_validate()
442 !(MTK_HAS_CAPS(mac->hw->soc->caps, MTK_TRGMII) && in mtk_validate()
443 !mac->id && state->interface == PHY_INTERFACE_MODE_TRGMII) && in mtk_validate()
444 !(MTK_HAS_CAPS(mac->hw->soc->caps, MTK_SGMII) && in mtk_validate()
487 if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_SGMII)) { in mtk_validate()
492 if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_RGMII)) { in mtk_validate()
497 if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_GEPHY)) { in mtk_validate()
615 struct mtk_mac *mac = netdev_priv(dev); in mtk_set_mac_address() local
616 struct mtk_eth *eth = mac->hw; in mtk_set_mac_address()
622 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_set_mac_address()
625 spin_lock_bh(&mac->hw->page_lock); in mtk_set_mac_address()
627 mtk_w32(mac->hw, (macaddr[0] << 8) | macaddr[1], in mtk_set_mac_address()
629 mtk_w32(mac->hw, (macaddr[2] << 24) | (macaddr[3] << 16) | in mtk_set_mac_address()
633 mtk_w32(mac->hw, (macaddr[0] << 8) | macaddr[1], in mtk_set_mac_address()
634 MTK_GDMA_MAC_ADRH(mac->id)); in mtk_set_mac_address()
635 mtk_w32(mac->hw, (macaddr[2] << 24) | (macaddr[3] << 16) | in mtk_set_mac_address()
637 MTK_GDMA_MAC_ADRL(mac->id)); in mtk_set_mac_address()
639 spin_unlock_bh(&mac->hw->page_lock); in mtk_set_mac_address()
644 void mtk_stats_update_mac(struct mtk_mac *mac) in mtk_stats_update_mac() argument
646 struct mtk_hw_stats *hw_stats = mac->hw_stats; in mtk_stats_update_mac()
654 hw_stats->rx_bytes += mtk_r32(mac->hw, base); in mtk_stats_update_mac()
655 stats = mtk_r32(mac->hw, base + 0x04); in mtk_stats_update_mac()
658 hw_stats->rx_packets += mtk_r32(mac->hw, base + 0x08); in mtk_stats_update_mac()
659 hw_stats->rx_overflow += mtk_r32(mac->hw, base + 0x10); in mtk_stats_update_mac()
660 hw_stats->rx_fcs_errors += mtk_r32(mac->hw, base + 0x14); in mtk_stats_update_mac()
661 hw_stats->rx_short_errors += mtk_r32(mac->hw, base + 0x18); in mtk_stats_update_mac()
662 hw_stats->rx_long_errors += mtk_r32(mac->hw, base + 0x1c); in mtk_stats_update_mac()
663 hw_stats->rx_checksum_errors += mtk_r32(mac->hw, base + 0x20); in mtk_stats_update_mac()
665 mtk_r32(mac->hw, base + 0x24); in mtk_stats_update_mac()
666 hw_stats->tx_skip += mtk_r32(mac->hw, base + 0x28); in mtk_stats_update_mac()
667 hw_stats->tx_collisions += mtk_r32(mac->hw, base + 0x2c); in mtk_stats_update_mac()
668 hw_stats->tx_bytes += mtk_r32(mac->hw, base + 0x30); in mtk_stats_update_mac()
669 stats = mtk_r32(mac->hw, base + 0x34); in mtk_stats_update_mac()
672 hw_stats->tx_packets += mtk_r32(mac->hw, base + 0x38); in mtk_stats_update_mac()
681 if (!eth->mac[i] || !eth->mac[i]->hw_stats) in mtk_stats_update()
683 if (spin_trylock(&eth->mac[i]->hw_stats->stats_lock)) { in mtk_stats_update()
684 mtk_stats_update_mac(eth->mac[i]); in mtk_stats_update()
685 spin_unlock(&eth->mac[i]->hw_stats->stats_lock); in mtk_stats_update()
693 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_stats64() local
694 struct mtk_hw_stats *hw_stats = mac->hw_stats; in mtk_get_stats64()
699 mtk_stats_update_mac(mac); in mtk_get_stats64()
888 struct mtk_mac *mac = netdev_priv(dev); in mtk_tx_map() local
889 struct mtk_eth *eth = mac->hw; in mtk_tx_map()
905 fport = (mac->id + 1) << TX_DMA_FPORT_SHIFT; in mtk_tx_map()
929 itx_buf->flags |= (!mac->id) ? MTK_TX_FLAGS_FPORT0 : in mtk_tx_map()
984 tx_buf->flags |= (!mac->id) ? MTK_TX_FLAGS_FPORT0 : in mtk_tx_map()
1106 struct mtk_mac *mac = netdev_priv(dev); in mtk_start_xmit() local
1107 struct mtk_eth *eth = mac->hw; in mtk_start_xmit()
1217 int mac; in mtk_poll_rx() local
1233 mac = 0; in mtk_poll_rx()
1235 mac = (trxd.rxd4 >> RX_DMA_FPORT_SHIFT) & in mtk_poll_rx()
1237 mac--; in mtk_poll_rx()
1240 if (unlikely(mac < 0 || mac >= MTK_MAC_COUNT || in mtk_poll_rx()
1241 !eth->netdev[mac])) in mtk_poll_rx()
1244 netdev = eth->netdev[mac]; in mtk_poll_rx()
1335 int mac = 0; in mtk_poll_tx_qdma() local
1343 mac = 1; in mtk_poll_tx_qdma()
1350 bytes[mac] += skb->len; in mtk_poll_tx_qdma()
1351 done[mac]++; in mtk_poll_tx_qdma()
1831 static int mtk_hwlro_get_ip_cnt(struct mtk_mac *mac) in mtk_hwlro_get_ip_cnt() argument
1837 if (mac->hwlro_ip[i]) in mtk_hwlro_get_ip_cnt()
1849 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_add_ipaddr() local
1850 struct mtk_eth *eth = mac->hw; in mtk_hwlro_add_ipaddr()
1858 mac->hwlro_ip[fsp->location] = htonl(fsp->h_u.tcp_ip4_spec.ip4dst); in mtk_hwlro_add_ipaddr()
1859 hwlro_idx = (mac->id * MTK_MAX_LRO_IP_CNT) + fsp->location; in mtk_hwlro_add_ipaddr()
1861 mac->hwlro_ip_cnt = mtk_hwlro_get_ip_cnt(mac); in mtk_hwlro_add_ipaddr()
1863 mtk_hwlro_val_ipaddr(eth, hwlro_idx, mac->hwlro_ip[fsp->location]); in mtk_hwlro_add_ipaddr()
1873 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_del_ipaddr() local
1874 struct mtk_eth *eth = mac->hw; in mtk_hwlro_del_ipaddr()
1880 mac->hwlro_ip[fsp->location] = 0; in mtk_hwlro_del_ipaddr()
1881 hwlro_idx = (mac->id * MTK_MAX_LRO_IP_CNT) + fsp->location; in mtk_hwlro_del_ipaddr()
1883 mac->hwlro_ip_cnt = mtk_hwlro_get_ip_cnt(mac); in mtk_hwlro_del_ipaddr()
1892 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_netdev_disable() local
1893 struct mtk_eth *eth = mac->hw; in mtk_hwlro_netdev_disable()
1897 mac->hwlro_ip[i] = 0; in mtk_hwlro_netdev_disable()
1898 hwlro_idx = (mac->id * MTK_MAX_LRO_IP_CNT) + i; in mtk_hwlro_netdev_disable()
1903 mac->hwlro_ip_cnt = 0; in mtk_hwlro_netdev_disable()
1909 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_get_fdir_entry() local
1915 fsp->h_u.tcp_ip4_spec.ip4dst = ntohl(mac->hwlro_ip[fsp->location]); in mtk_hwlro_get_fdir_entry()
1934 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_get_fdir_all() local
1939 if (mac->hwlro_ip[i]) { in mtk_hwlro_get_fdir_all()
1954 struct mtk_mac *mac = netdev_priv(dev); in mtk_fix_features() local
1955 int ip_cnt = mtk_hwlro_get_ip_cnt(mac); in mtk_fix_features()
2088 struct mtk_mac *mac = netdev_priv(dev); in mtk_tx_timeout() local
2089 struct mtk_eth *eth = mac->hw; in mtk_tx_timeout()
2091 eth->netdev[mac->id]->stats.tx_errors++; in mtk_tx_timeout()
2140 struct mtk_mac *mac = netdev_priv(dev); in mtk_poll_controller() local
2141 struct mtk_eth *eth = mac->hw; in mtk_poll_controller()
2185 struct mtk_mac *mac = netdev_priv(dev); in mtk_open() local
2186 struct mtk_eth *eth = mac->hw; in mtk_open()
2189 err = phylink_of_phy_connect(mac->phylink, mac->of_node, 0); in mtk_open()
2212 phylink_start(mac->phylink); in mtk_open()
2242 struct mtk_mac *mac = netdev_priv(dev); in mtk_stop() local
2243 struct mtk_eth *eth = mac->hw; in mtk_stop()
2245 phylink_stop(mac->phylink); in mtk_stop()
2249 phylink_disconnect_phy(mac->phylink); in mtk_stop()
2425 struct mtk_mac *mac = netdev_priv(dev); in mtk_init() local
2426 struct mtk_eth *eth = mac->hw; in mtk_init()
2429 mac_addr = of_get_mac_address(mac->of_node); in mtk_init()
2445 struct mtk_mac *mac = netdev_priv(dev); in mtk_uninit() local
2446 struct mtk_eth *eth = mac->hw; in mtk_uninit()
2448 phylink_disconnect_phy(mac->phylink); in mtk_uninit()
2455 struct mtk_mac *mac = netdev_priv(dev); in mtk_do_ioctl() local
2461 return phylink_mii_ioctl(mac->phylink, ifr, cmd); in mtk_do_ioctl()
2559 struct mtk_mac *mac = netdev_priv(ndev); in mtk_get_link_ksettings() local
2561 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_get_link_ksettings()
2564 return phylink_ethtool_ksettings_get(mac->phylink, cmd); in mtk_get_link_ksettings()
2570 struct mtk_mac *mac = netdev_priv(ndev); in mtk_set_link_ksettings() local
2572 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_set_link_ksettings()
2575 return phylink_ethtool_ksettings_set(mac->phylink, cmd); in mtk_set_link_ksettings()
2581 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_drvinfo() local
2583 strlcpy(info->driver, mac->hw->dev->driver->name, sizeof(info->driver)); in mtk_get_drvinfo()
2584 strlcpy(info->bus_info, dev_name(mac->hw->dev), sizeof(info->bus_info)); in mtk_get_drvinfo()
2590 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_msglevel() local
2592 return mac->hw->msg_enable; in mtk_get_msglevel()
2597 struct mtk_mac *mac = netdev_priv(dev); in mtk_set_msglevel() local
2599 mac->hw->msg_enable = value; in mtk_set_msglevel()
2604 struct mtk_mac *mac = netdev_priv(dev); in mtk_nway_reset() local
2606 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_nway_reset()
2609 if (!mac->phylink) in mtk_nway_reset()
2612 return phylink_ethtool_nway_reset(mac->phylink); in mtk_nway_reset()
2642 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_ethtool_stats() local
2643 struct mtk_hw_stats *hwstats = mac->hw_stats; in mtk_get_ethtool_stats()
2648 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_get_ethtool_stats()
2653 mtk_stats_update_mac(mac); in mtk_get_ethtool_stats()
2683 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_rxnfc() local
2685 cmd->rule_cnt = mac->hwlro_ip_cnt; in mtk_get_rxnfc()
2763 struct mtk_mac *mac; in mtk_add_mac() local
2781 eth->netdev[id] = alloc_etherdev(sizeof(*mac)); in mtk_add_mac()
2786 mac = netdev_priv(eth->netdev[id]); in mtk_add_mac()
2787 eth->mac[id] = mac; in mtk_add_mac()
2788 mac->id = id; in mtk_add_mac()
2789 mac->hw = eth; in mtk_add_mac()
2790 mac->of_node = np; in mtk_add_mac()
2792 memset(mac->hwlro_ip, 0, sizeof(mac->hwlro_ip)); in mtk_add_mac()
2793 mac->hwlro_ip_cnt = 0; in mtk_add_mac()
2795 mac->hw_stats = devm_kzalloc(eth->dev, in mtk_add_mac()
2796 sizeof(*mac->hw_stats), in mtk_add_mac()
2798 if (!mac->hw_stats) { in mtk_add_mac()
2803 spin_lock_init(&mac->hw_stats->stats_lock); in mtk_add_mac()
2804 u64_stats_init(&mac->hw_stats->syncp); in mtk_add_mac()
2805 mac->hw_stats->reg_offset = id * MTK_STAT_OFFSET; in mtk_add_mac()
2816 mac->interface = PHY_INTERFACE_MODE_NA; in mtk_add_mac()
2817 mac->mode = MLO_AN_PHY; in mtk_add_mac()
2818 mac->speed = SPEED_UNKNOWN; in mtk_add_mac()
2820 mac->phylink_config.dev = &eth->netdev[id]->dev; in mtk_add_mac()
2821 mac->phylink_config.type = PHYLINK_NETDEV; in mtk_add_mac()
2823 phylink = phylink_create(&mac->phylink_config, in mtk_add_mac()
2824 of_fwnode_handle(mac->of_node), in mtk_add_mac()
2831 mac->phylink = phylink; in mtk_add_mac()
3047 struct mtk_mac *mac; in mtk_remove() local
3055 mac = netdev_priv(eth->netdev[i]); in mtk_remove()
3056 phylink_disconnect_phy(mac->phylink); in mtk_remove()