Lines Matching full:mac
519 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_select_pcs() local
521 struct mtk_eth *eth = mac->hw; in mtk_mac_select_pcs()
527 0 : mac->id; in mtk_mac_select_pcs()
538 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_prepare() local
540 struct mtk_eth *eth = mac->hw; in mtk_mac_prepare()
543 mac->id != MTK_GMAC1_ID) { in mtk_mac_prepare()
544 mtk_m32(mac->hw, XMAC_MCR_TRX_DISABLE, in mtk_mac_prepare()
545 XMAC_MCR_TRX_DISABLE, MTK_XMAC_MCR(mac->id)); in mtk_mac_prepare()
547 mtk_m32(mac->hw, MTK_XGMAC_FORCE_MODE(mac->id) | in mtk_mac_prepare()
548 MTK_XGMAC_FORCE_LINK(mac->id), in mtk_mac_prepare()
549 MTK_XGMAC_FORCE_MODE(mac->id), MTK_XGMAC_STS(mac->id)); in mtk_mac_prepare()
558 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_config() local
560 struct mtk_eth *eth = mac->hw; in mtk_mac_config()
564 /* MT76x8 has no hardware settings between for the MAC */ in mtk_mac_config()
566 mac->interface != state->interface) { in mtk_mac_config()
576 err = mtk_gmac_rgmii_path_setup(eth, mac->id); in mtk_mac_config()
584 err = mtk_gmac_sgmii_path_setup(eth, mac->id); in mtk_mac_config()
590 err = mtk_gmac_gephy_path_setup(eth, mac->id); in mtk_mac_config()
596 if (mac->id == MTK_GMAC2_ID && in mtk_mac_config()
598 err = mtk_gmac_2p5gphy_path_setup(eth, mac->id); in mtk_mac_config()
608 if (!mac->id && state->interface != PHY_INTERFACE_MODE_SGMII && in mtk_mac_config()
610 MTK_HAS_CAPS(mac->hw->soc->caps, MTK_GMAC1_TRGMII)) { in mtk_mac_config()
611 if (MTK_HAS_CAPS(mac->hw->soc->caps, in mtk_mac_config()
613 if (mt7621_gmac0_rgmii_adjust(mac->hw, in mtk_mac_config()
617 mtk_gmac0_rgmii_adjust(mac->hw, in mtk_mac_config()
622 mtk_w32(mac->hw, in mtk_mac_config()
627 mtk_m32(mac->hw, 0, RXC_RST | RXC_DQSISEL, in mtk_mac_config()
629 mtk_m32(mac->hw, RXC_RST, 0, TRGMII_RCK_CTRL); in mtk_mac_config()
645 val &= ~SYSCFG0_GE_MODE(SYSCFG0_GE_MASK, mac->id); in mtk_mac_config()
646 val |= SYSCFG0_GE_MODE(ge_mode, mac->id); in mtk_mac_config()
649 mac->interface = state->interface; in mtk_mac_config()
665 mac->syscfg0 = val; in mtk_mac_config()
674 mtk_w32(mac->hw, MTK_GDMA_XGDM_SEL, MTK_GDMA_EG_CTRL(mac->id)); in mtk_mac_config()
675 mtk_w32(mac->hw, MAC_MCR_FORCE_LINK_DOWN, MTK_MAC_MCR(mac->id)); in mtk_mac_config()
677 if (mac->id == MTK_GMAC1_ID) in mtk_mac_config()
685 mac->id, phy_modes(state->interface)); in mtk_mac_config()
690 mac->id, phy_modes(state->interface), err); in mtk_mac_config()
696 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_finish() local
698 struct mtk_eth *eth = mac->hw; in mtk_mac_finish()
705 SYSCFG0_SGMII_MASK, mac->syscfg0); in mtk_mac_finish()
708 mcr_cur = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id)); in mtk_mac_finish()
715 mtk_w32(mac->hw, mcr_new, MTK_MAC_MCR(mac->id)); in mtk_mac_finish()
723 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_link_down() local
726 if (!mtk_interface_mode_is_xgmii(mac->hw, interface)) { in mtk_mac_link_down()
728 mtk_m32(mac->hw, in mtk_mac_link_down()
730 MTK_MAC_MCR(mac->id)); in mtk_mac_link_down()
731 } else if (mac->id != MTK_GMAC1_ID) { in mtk_mac_link_down()
733 mtk_m32(mac->hw, XMAC_MCR_TRX_DISABLE, XMAC_MCR_TRX_DISABLE, in mtk_mac_link_down()
734 MTK_XMAC_MCR(mac->id)); in mtk_mac_link_down()
735 mtk_m32(mac->hw, MTK_XGMAC_FORCE_LINK(mac->id), 0, in mtk_mac_link_down()
736 MTK_XGMAC_STS(mac->id)); in mtk_mac_link_down()
809 static void mtk_gdm_mac_link_up(struct mtk_mac *mac, in mtk_gdm_mac_link_up() argument
817 mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id)); in mtk_gdm_mac_link_up()
823 mac->speed = speed; in mtk_gdm_mac_link_up()
845 mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id)); in mtk_gdm_mac_link_up()
848 static void mtk_xgdm_mac_link_up(struct mtk_mac *mac, in mtk_xgdm_mac_link_up() argument
856 if (mac->id == MTK_GMAC1_ID) in mtk_xgdm_mac_link_up()
860 mtk_m32(mac->hw, XMAC_LOGIC_RST, 0, MTK_XMAC_LOGIC_RST(mac->id)); in mtk_xgdm_mac_link_up()
862 mtk_m32(mac->hw, XMAC_GLB_CNTCLR, XMAC_GLB_CNTCLR, in mtk_xgdm_mac_link_up()
863 MTK_XMAC_CNT_CTRL(mac->id)); in mtk_xgdm_mac_link_up()
865 mtk_m32(mac->hw, MTK_XGMAC_FORCE_LINK(mac->id), in mtk_xgdm_mac_link_up()
866 MTK_XGMAC_FORCE_LINK(mac->id), MTK_XGMAC_STS(mac->id)); in mtk_xgdm_mac_link_up()
868 mcr = mtk_r32(mac->hw, MTK_XMAC_MCR(mac->id)); in mtk_xgdm_mac_link_up()
879 mtk_w32(mac->hw, mcr, MTK_XMAC_MCR(mac->id)); in mtk_xgdm_mac_link_up()
887 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_link_up() local
890 if (mtk_interface_mode_is_xgmii(mac->hw, interface)) in mtk_mac_link_up()
891 mtk_xgdm_mac_link_up(mac, phy, mode, interface, speed, duplex, in mtk_mac_link_up()
894 mtk_gdm_mac_link_up(mac, phy, mode, interface, speed, duplex, in mtk_mac_link_up()
900 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_disable_tx_lpi() local
902 struct mtk_eth *eth = mac->hw; in mtk_mac_disable_tx_lpi()
904 mtk_m32(eth, MAC_MCR_EEE100M | MAC_MCR_EEE1G, 0, MTK_MAC_MCR(mac->id)); in mtk_mac_disable_tx_lpi()
910 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_enable_tx_lpi() local
912 struct mtk_eth *eth = mac->hw; in mtk_mac_enable_tx_lpi()
915 if (mtk_interface_mode_is_xgmii(eth, mac->interface)) in mtk_mac_enable_tx_lpi()
941 mtk_w32(eth, val, MTK_MAC_EEECR(mac->id)); in mtk_mac_enable_tx_lpi()
942 mtk_m32(eth, 0, MAC_MCR_EEE100M | MAC_MCR_EEE1G, MTK_MAC_MCR(mac->id)); in mtk_mac_enable_tx_lpi()
1076 struct mtk_mac *mac = netdev_priv(dev); in mtk_set_mac_address() local
1077 struct mtk_eth *eth = mac->hw; in mtk_set_mac_address()
1083 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_set_mac_address()
1086 spin_lock_bh(&mac->hw->page_lock); in mtk_set_mac_address()
1088 mtk_w32(mac->hw, (macaddr[0] << 8) | macaddr[1], in mtk_set_mac_address()
1090 mtk_w32(mac->hw, (macaddr[2] << 24) | (macaddr[3] << 16) | in mtk_set_mac_address()
1094 mtk_w32(mac->hw, (macaddr[0] << 8) | macaddr[1], in mtk_set_mac_address()
1095 MTK_GDMA_MAC_ADRH(mac->id)); in mtk_set_mac_address()
1096 mtk_w32(mac->hw, (macaddr[2] << 24) | (macaddr[3] << 16) | in mtk_set_mac_address()
1098 MTK_GDMA_MAC_ADRL(mac->id)); in mtk_set_mac_address()
1100 spin_unlock_bh(&mac->hw->page_lock); in mtk_set_mac_address()
1105 void mtk_stats_update_mac(struct mtk_mac *mac) in mtk_stats_update_mac() argument
1107 struct mtk_hw_stats *hw_stats = mac->hw_stats; in mtk_stats_update_mac()
1108 struct mtk_eth *eth = mac->hw; in mtk_stats_update_mac()
1113 hw_stats->tx_packets += mtk_r32(mac->hw, MT7628_SDM_TPCNT); in mtk_stats_update_mac()
1114 hw_stats->tx_bytes += mtk_r32(mac->hw, MT7628_SDM_TBCNT); in mtk_stats_update_mac()
1115 hw_stats->rx_packets += mtk_r32(mac->hw, MT7628_SDM_RPCNT); in mtk_stats_update_mac()
1116 hw_stats->rx_bytes += mtk_r32(mac->hw, MT7628_SDM_RBCNT); in mtk_stats_update_mac()
1118 mtk_r32(mac->hw, MT7628_SDM_CS_ERR); in mtk_stats_update_mac()
1124 hw_stats->rx_bytes += mtk_r32(mac->hw, reg_map->gdm1_cnt + offs); in mtk_stats_update_mac()
1125 stats = mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x4 + offs); in mtk_stats_update_mac()
1129 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x8 + offs); in mtk_stats_update_mac()
1131 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x10 + offs); in mtk_stats_update_mac()
1133 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x14 + offs); in mtk_stats_update_mac()
1135 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x18 + offs); in mtk_stats_update_mac()
1137 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x1c + offs); in mtk_stats_update_mac()
1139 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x20 + offs); in mtk_stats_update_mac()
1141 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x24 + offs); in mtk_stats_update_mac()
1145 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x50 + offs); in mtk_stats_update_mac()
1147 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x54 + offs); in mtk_stats_update_mac()
1149 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x40 + offs); in mtk_stats_update_mac()
1150 stats = mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x44 + offs); in mtk_stats_update_mac()
1154 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x48 + offs); in mtk_stats_update_mac()
1157 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x28 + offs); in mtk_stats_update_mac()
1159 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x2c + offs); in mtk_stats_update_mac()
1161 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x30 + offs); in mtk_stats_update_mac()
1162 stats = mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x34 + offs); in mtk_stats_update_mac()
1166 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x38 + offs); in mtk_stats_update_mac()
1178 if (!eth->mac[i] || !eth->mac[i]->hw_stats) in mtk_stats_update()
1180 if (spin_trylock(ð->mac[i]->hw_stats->stats_lock)) { in mtk_stats_update()
1181 mtk_stats_update_mac(eth->mac[i]); in mtk_stats_update()
1182 spin_unlock(ð->mac[i]->hw_stats->stats_lock); in mtk_stats_update()
1190 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_stats64() local
1191 struct mtk_hw_stats *hw_stats = mac->hw_stats; in mtk_get_stats64()
1196 mtk_stats_update_mac(mac); in mtk_get_stats64()
1441 struct mtk_mac *mac = netdev_priv(dev); in mtk_tx_set_dma_desc_v1() local
1442 struct mtk_eth *eth = mac->hw; in mtk_tx_set_dma_desc_v1()
1454 data = (mac->id + 1) << TX_DMA_FPORT_SHIFT; /* forward port */ in mtk_tx_set_dma_desc_v1()
1471 struct mtk_mac *mac = netdev_priv(dev); in mtk_tx_set_dma_desc_v2() local
1473 struct mtk_eth *eth = mac->hw; in mtk_tx_set_dma_desc_v2()
1488 switch (mac->id) { in mtk_tx_set_dma_desc_v2()
1527 struct mtk_mac *mac = netdev_priv(dev); in mtk_tx_set_dma_desc() local
1528 struct mtk_eth *eth = mac->hw; in mtk_tx_set_dma_desc()
1550 struct mtk_mac *mac = netdev_priv(dev); in mtk_tx_map() local
1551 struct mtk_eth *eth = mac->hw; in mtk_tx_map()
1577 itx_buf->mac_id = mac->id; in mtk_tx_map()
1625 tx_buf->mac_id = mac->id; in mtk_tx_map()
1733 struct mtk_mac *mac = netdev_priv(dev); in mtk_start_xmit() local
1734 struct mtk_eth *eth = mac->hw; in mtk_start_xmit()
1907 struct mtk_mac *mac = netdev_priv(dev); in mtk_xdp_frame_map() local
1927 tx_buf->mac_id = mac->id; in mtk_xdp_frame_map()
1944 struct mtk_mac *mac = netdev_priv(dev); in mtk_xdp_submit_frame() local
1949 .qid = mac->id, in mtk_xdp_submit_frame()
1999 txd_info.qid = mac->id; in mtk_xdp_submit_frame()
2061 struct mtk_mac *mac = netdev_priv(dev); in mtk_xdp_xmit() local
2062 struct mtk_hw_stats *hw_stats = mac->hw_stats; in mtk_xdp_xmit()
2063 struct mtk_eth *eth = mac->hw; in mtk_xdp_xmit()
2086 struct mtk_mac *mac = netdev_priv(dev); in mtk_xdp_run() local
2087 struct mtk_hw_stats *hw_stats = mac->hw_stats; in mtk_xdp_run()
2165 int mac = 0; in mtk_poll_rx() local
2178 /* find out which mac the packet come from. values start at 1 */ in mtk_poll_rx()
2185 mac = val - 1; in mtk_poll_rx()
2188 mac = MTK_GMAC3_ID; in mtk_poll_rx()
2195 mac = RX_DMA_GET_SPORT(trxd.rxd4) - 1; in mtk_poll_rx()
2198 if (unlikely(mac < 0 || mac >= MTK_MAX_DEVS || in mtk_poll_rx()
2199 !eth->netdev[mac])) in mtk_poll_rx()
2202 netdev = eth->netdev[mac]; in mtk_poll_rx()
2203 ppe_idx = eth->mac[mac]->ppe_idx; in mtk_poll_rx()
2385 mtk_poll_tx_done(struct mtk_eth *eth, struct mtk_poll_state *state, u8 mac, in mtk_poll_tx_done() argument
2396 dev = eth->netdev[mac]; in mtk_poll_tx_done()
3047 static int mtk_hwlro_get_ip_cnt(struct mtk_mac *mac) in mtk_hwlro_get_ip_cnt() argument
3053 if (mac->hwlro_ip[i]) in mtk_hwlro_get_ip_cnt()
3065 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_add_ipaddr() local
3066 struct mtk_eth *eth = mac->hw; in mtk_hwlro_add_ipaddr()
3074 mac->hwlro_ip[fsp->location] = htonl(fsp->h_u.tcp_ip4_spec.ip4dst); in mtk_hwlro_add_ipaddr()
3075 hwlro_idx = (mac->id * MTK_MAX_LRO_IP_CNT) + fsp->location; in mtk_hwlro_add_ipaddr()
3077 mac->hwlro_ip_cnt = mtk_hwlro_get_ip_cnt(mac); in mtk_hwlro_add_ipaddr()
3079 mtk_hwlro_val_ipaddr(eth, hwlro_idx, mac->hwlro_ip[fsp->location]); in mtk_hwlro_add_ipaddr()
3089 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_del_ipaddr() local
3090 struct mtk_eth *eth = mac->hw; in mtk_hwlro_del_ipaddr()
3096 mac->hwlro_ip[fsp->location] = 0; in mtk_hwlro_del_ipaddr()
3097 hwlro_idx = (mac->id * MTK_MAX_LRO_IP_CNT) + fsp->location; in mtk_hwlro_del_ipaddr()
3099 mac->hwlro_ip_cnt = mtk_hwlro_get_ip_cnt(mac); in mtk_hwlro_del_ipaddr()
3108 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_netdev_disable() local
3109 struct mtk_eth *eth = mac->hw; in mtk_hwlro_netdev_disable()
3113 mac->hwlro_ip[i] = 0; in mtk_hwlro_netdev_disable()
3114 hwlro_idx = (mac->id * MTK_MAX_LRO_IP_CNT) + i; in mtk_hwlro_netdev_disable()
3119 mac->hwlro_ip_cnt = 0; in mtk_hwlro_netdev_disable()
3125 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_get_fdir_entry() local
3129 if (fsp->location >= ARRAY_SIZE(mac->hwlro_ip)) in mtk_hwlro_get_fdir_entry()
3134 fsp->h_u.tcp_ip4_spec.ip4dst = ntohl(mac->hwlro_ip[fsp->location]); in mtk_hwlro_get_fdir_entry()
3153 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_get_fdir_all() local
3161 if (mac->hwlro_ip[i]) { in mtk_hwlro_get_fdir_all()
3176 struct mtk_mac *mac = netdev_priv(dev); in mtk_fix_features() local
3177 int ip_cnt = mtk_hwlro_get_ip_cnt(mac); in mtk_fix_features()
3324 struct mtk_mac *mac = netdev_priv(dev); in mtk_tx_timeout() local
3325 struct mtk_eth *eth = mac->hw; in mtk_tx_timeout()
3333 eth->netdev[mac->id]->stats.tx_errors++; in mtk_tx_timeout()
3387 struct mtk_mac *mac = netdev_priv(dev); in mtk_poll_controller() local
3388 struct mtk_eth *eth = mac->hw; in mtk_poll_controller()
3473 struct mtk_mac *mac = container_of(n, struct mtk_mac, device_notifier); in mtk_device_event() local
3474 struct mtk_eth *eth = mac->hw; in mtk_device_event()
3485 if (netdev_priv(ldev) == mac) in mtk_device_event()
3505 if (mac->speed > 0 && mac->speed <= s.base.speed) in mtk_device_event()
3515 struct mtk_mac *mac = netdev_priv(dev); in mtk_open() local
3516 struct mtk_eth *eth = mac->hw; in mtk_open()
3522 err = phylink_of_phy_connect(mac->phylink, mac->of_node, 0); in mtk_open()
3537 phylink_disconnect_phy(mac->phylink); in mtk_open()
3574 phylink_start(mac->phylink); in mtk_open()
3597 * disabled if at least one MAC does not use DSA. in mtk_open()
3635 struct mtk_mac *mac = netdev_priv(dev); in mtk_stop() local
3636 struct mtk_eth *eth = mac->hw; in mtk_stop()
3639 phylink_stop(mac->phylink); in mtk_stop()
3643 phylink_disconnect_phy(mac->phylink); in mtk_stop()
3675 struct mtk_mac *mac = netdev_priv(dev); in mtk_xdp_setup() local
3676 struct mtk_eth *eth = mac->hw; in mtk_xdp_setup()
3816 static void mtk_set_mcr_max_rx(struct mtk_mac *mac, u32 val) in mtk_set_mcr_max_rx() argument
3818 struct mtk_eth *eth = mac->hw; in mtk_set_mcr_max_rx()
3824 mcr_cur = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id)); in mtk_set_mcr_max_rx()
3837 mtk_w32(mac->hw, mcr_new, MTK_MAC_MCR(mac->id)); in mtk_set_mcr_max_rx()
4053 dev_err(eth->dev, "MAC reset failed!\n"); in mtk_hw_init()
4236 struct mtk_mac *mac = netdev_priv(dev); in mtk_uninit() local
4237 struct mtk_eth *eth = mac->hw; in mtk_uninit()
4239 phylink_disconnect_phy(mac->phylink); in mtk_uninit()
4247 struct mtk_mac *mac = netdev_priv(dev); in mtk_change_mtu() local
4248 struct mtk_eth *eth = mac->hw; in mtk_change_mtu()
4256 mtk_set_mcr_max_rx(mac, length); in mtk_change_mtu()
4264 struct mtk_mac *mac = netdev_priv(dev); in mtk_do_ioctl() local
4270 return phylink_mii_ioctl(mac->phylink, ifr, cmd); in mtk_do_ioctl()
4398 struct mtk_mac *mac; in mtk_unreg_dev() local
4401 mac = netdev_priv(eth->netdev[i]); in mtk_unreg_dev()
4403 unregister_netdevice_notifier(&mac->device_notifier); in mtk_unreg_dev()
4432 struct mtk_mac *mac = netdev_priv(ndev); in mtk_get_link_ksettings() local
4434 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_get_link_ksettings()
4437 return phylink_ethtool_ksettings_get(mac->phylink, cmd); in mtk_get_link_ksettings()
4443 struct mtk_mac *mac = netdev_priv(ndev); in mtk_set_link_ksettings() local
4445 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_set_link_ksettings()
4448 return phylink_ethtool_ksettings_set(mac->phylink, cmd); in mtk_set_link_ksettings()
4454 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_drvinfo() local
4456 strscpy(info->driver, mac->hw->dev->driver->name, sizeof(info->driver)); in mtk_get_drvinfo()
4457 strscpy(info->bus_info, dev_name(mac->hw->dev), sizeof(info->bus_info)); in mtk_get_drvinfo()
4463 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_msglevel() local
4465 return mac->hw->msg_enable; in mtk_get_msglevel()
4470 struct mtk_mac *mac = netdev_priv(dev); in mtk_set_msglevel() local
4472 mac->hw->msg_enable = value; in mtk_set_msglevel()
4477 struct mtk_mac *mac = netdev_priv(dev); in mtk_nway_reset() local
4479 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_nway_reset()
4482 if (!mac->phylink) in mtk_nway_reset()
4485 return phylink_ethtool_nway_reset(mac->phylink); in mtk_nway_reset()
4494 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_strings() local
4498 if (mtk_page_pool_enabled(mac->hw)) in mtk_get_strings()
4512 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_sset_count() local
4514 if (mtk_page_pool_enabled(mac->hw)) in mtk_get_sset_count()
4542 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_ethtool_stats() local
4543 struct mtk_hw_stats *hwstats = mac->hw_stats; in mtk_get_ethtool_stats()
4548 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_get_ethtool_stats()
4553 mtk_stats_update_mac(mac); in mtk_get_ethtool_stats()
4566 if (mtk_page_pool_enabled(mac->hw)) in mtk_get_ethtool_stats()
4567 mtk_ethtool_pp_stats(mac->hw, data_dst); in mtk_get_ethtool_stats()
4585 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_rxnfc() local
4587 cmd->rule_cnt = mac->hwlro_ip_cnt; in mtk_get_rxnfc()
4629 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_pauseparam() local
4631 phylink_ethtool_get_pauseparam(mac->phylink, pause); in mtk_get_pauseparam()
4636 struct mtk_mac *mac = netdev_priv(dev); in mtk_set_pauseparam() local
4638 return phylink_ethtool_set_pauseparam(mac->phylink, pause); in mtk_set_pauseparam()
4643 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_eee() local
4645 return phylink_ethtool_get_eee(mac->phylink, eee); in mtk_get_eee()
4650 struct mtk_mac *mac = netdev_priv(dev); in mtk_set_eee() local
4652 return phylink_ethtool_set_eee(mac->phylink, eee); in mtk_set_eee()
4658 struct mtk_mac *mac = netdev_priv(dev); in mtk_select_queue() local
4664 queue = mac->id; in mtk_select_queue()
4718 struct mtk_mac *mac; in mtk_add_mac() local
4724 dev_err(eth->dev, "missing mac id\n"); in mtk_add_mac()
4730 dev_err(eth->dev, "%d is not a valid mac id\n", id); in mtk_add_mac()
4735 dev_err(eth->dev, "duplicate mac id found: %d\n", id); in mtk_add_mac()
4742 eth->netdev[id] = alloc_etherdev_mqs(sizeof(*mac), txqs, 1); in mtk_add_mac()
4747 mac = netdev_priv(eth->netdev[id]); in mtk_add_mac()
4748 eth->mac[id] = mac; in mtk_add_mac()
4749 mac->id = id; in mtk_add_mac()
4750 mac->hw = eth; in mtk_add_mac()
4751 mac->of_node = np; in mtk_add_mac()
4753 err = of_get_ethdev_address(mac->of_node, eth->netdev[id]); in mtk_add_mac()
4758 /* If the mac address is invalid, use random mac address */ in mtk_add_mac()
4760 dev_err(eth->dev, "generated random MAC address %pM\n", in mtk_add_mac()
4764 memset(mac->hwlro_ip, 0, sizeof(mac->hwlro_ip)); in mtk_add_mac()
4765 mac->hwlro_ip_cnt = 0; in mtk_add_mac()
4767 mac->hw_stats = devm_kzalloc(eth->dev, in mtk_add_mac()
4768 sizeof(*mac->hw_stats), in mtk_add_mac()
4770 if (!mac->hw_stats) { in mtk_add_mac()
4775 spin_lock_init(&mac->hw_stats->stats_lock); in mtk_add_mac()
4776 u64_stats_init(&mac->hw_stats->syncp); in mtk_add_mac()
4779 mac->hw_stats->reg_offset = id * 0x80; in mtk_add_mac()
4781 mac->hw_stats->reg_offset = id * 0x40; in mtk_add_mac()
4790 /* mac config is not set */ in mtk_add_mac()
4791 mac->interface = PHY_INTERFACE_MODE_NA; in mtk_add_mac()
4792 mac->speed = SPEED_UNKNOWN; in mtk_add_mac()
4794 mac->phylink_config.dev = ð->netdev[id]->dev; in mtk_add_mac()
4795 mac->phylink_config.type = PHYLINK_NETDEV; in mtk_add_mac()
4796 mac->phylink_config.mac_capabilities = MAC_ASYM_PAUSE | MAC_SYM_PAUSE | in mtk_add_mac()
4798 mac->phylink_config.lpi_capabilities = MAC_100FD | MAC_1000FD | in mtk_add_mac()
4800 mac->phylink_config.lpi_timer_default = 1000; in mtk_add_mac()
4806 if (!mac->hw->soc->disable_pll_modes || mac->id != 0) { in mtk_add_mac()
4808 mac->phylink_config.supported_interfaces); in mtk_add_mac()
4810 mac->phylink_config.supported_interfaces); in mtk_add_mac()
4812 if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_RGMII)) in mtk_add_mac()
4813 phy_interface_set_rgmii(mac->phylink_config.supported_interfaces); in mtk_add_mac()
4816 if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_TRGMII) && !mac->id) in mtk_add_mac()
4818 mac->phylink_config.supported_interfaces); in mtk_add_mac()
4821 if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_GMAC1_TRGMII) && in mtk_add_mac()
4822 MTK_HAS_CAPS(mac->hw->soc->caps, MTK_TRGMII_MT7621_CLK)) { in mtk_add_mac()
4826 mac->phylink_config.supported_interfaces); in mtk_add_mac()
4829 if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_SGMII)) { in mtk_add_mac()
4831 mac->phylink_config.supported_interfaces); in mtk_add_mac()
4833 mac->phylink_config.supported_interfaces); in mtk_add_mac()
4835 mac->phylink_config.supported_interfaces); in mtk_add_mac()
4838 if (mtk_is_netsys_v3_or_greater(mac->hw) && in mtk_add_mac()
4839 MTK_HAS_CAPS(mac->hw->soc->caps, MTK_ESW) && in mtk_add_mac()
4841 mac->phylink_config.mac_capabilities = MAC_ASYM_PAUSE | in mtk_add_mac()
4844 phy_interface_zero(mac->phylink_config.supported_interfaces); in mtk_add_mac()
4846 mac->phylink_config.supported_interfaces); in mtk_add_mac()
4849 phylink = phylink_create(&mac->phylink_config, in mtk_add_mac()
4850 of_fwnode_handle(mac->of_node), in mtk_add_mac()
4857 mac->phylink = phylink; in mtk_add_mac()
4859 if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_2P5GPHY) && in mtk_add_mac()
4862 mac->phylink_config.supported_interfaces); in mtk_add_mac()
4887 mac->device_notifier.notifier_call = mtk_device_event; in mtk_add_mac()
4888 register_netdevice_notifier(&mac->device_notifier); in mtk_add_mac()
5148 "mediatek,eth-mac")) in mtk_probe()
5259 struct mtk_mac *mac; in mtk_remove() local
5267 mac = netdev_priv(eth->netdev[i]); in mtk_remove()
5268 phylink_disconnect_phy(mac->phylink); in mtk_remove()