Lines Matching refs:mac
520 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_select_pcs() local
522 struct mtk_eth *eth = mac->hw; in mtk_mac_select_pcs()
528 0 : mac->id; in mtk_mac_select_pcs()
539 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_prepare() local
541 struct mtk_eth *eth = mac->hw; in mtk_mac_prepare()
544 mac->id != MTK_GMAC1_ID) { in mtk_mac_prepare()
545 mtk_m32(mac->hw, XMAC_MCR_TRX_DISABLE, in mtk_mac_prepare()
546 XMAC_MCR_TRX_DISABLE, MTK_XMAC_MCR(mac->id)); in mtk_mac_prepare()
548 mtk_m32(mac->hw, MTK_XGMAC_FORCE_MODE(mac->id) | in mtk_mac_prepare()
549 MTK_XGMAC_FORCE_LINK(mac->id), in mtk_mac_prepare()
550 MTK_XGMAC_FORCE_MODE(mac->id), MTK_XGMAC_STS(mac->id)); in mtk_mac_prepare()
559 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_config() local
561 struct mtk_eth *eth = mac->hw; in mtk_mac_config()
567 mac->interface != state->interface) { in mtk_mac_config()
577 err = mtk_gmac_rgmii_path_setup(eth, mac->id); in mtk_mac_config()
585 err = mtk_gmac_sgmii_path_setup(eth, mac->id); in mtk_mac_config()
591 err = mtk_gmac_gephy_path_setup(eth, mac->id); in mtk_mac_config()
597 if (mac->id == MTK_GMAC2_ID && in mtk_mac_config()
599 err = mtk_gmac_2p5gphy_path_setup(eth, mac->id); in mtk_mac_config()
609 if (!mac->id && state->interface != PHY_INTERFACE_MODE_SGMII && in mtk_mac_config()
611 MTK_HAS_CAPS(mac->hw->soc->caps, MTK_GMAC1_TRGMII)) { in mtk_mac_config()
612 if (MTK_HAS_CAPS(mac->hw->soc->caps, in mtk_mac_config()
614 if (mt7621_gmac0_rgmii_adjust(mac->hw, in mtk_mac_config()
618 mtk_gmac0_rgmii_adjust(mac->hw, in mtk_mac_config()
623 mtk_w32(mac->hw, in mtk_mac_config()
628 mtk_m32(mac->hw, 0, RXC_RST | RXC_DQSISEL, in mtk_mac_config()
630 mtk_m32(mac->hw, RXC_RST, 0, TRGMII_RCK_CTRL); in mtk_mac_config()
646 val &= ~SYSCFG0_GE_MODE(SYSCFG0_GE_MASK, mac->id); in mtk_mac_config()
647 val |= SYSCFG0_GE_MODE(ge_mode, mac->id); in mtk_mac_config()
650 mac->interface = state->interface; in mtk_mac_config()
666 mac->syscfg0 = val; in mtk_mac_config()
675 mtk_w32(mac->hw, MTK_GDMA_XGDM_SEL, MTK_GDMA_EG_CTRL(mac->id)); in mtk_mac_config()
676 mtk_w32(mac->hw, MAC_MCR_FORCE_LINK_DOWN, MTK_MAC_MCR(mac->id)); in mtk_mac_config()
678 if (mac->id == MTK_GMAC1_ID) in mtk_mac_config()
686 mac->id, phy_modes(state->interface)); in mtk_mac_config()
691 mac->id, phy_modes(state->interface), err); in mtk_mac_config()
697 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_finish() local
699 struct mtk_eth *eth = mac->hw; in mtk_mac_finish()
706 SYSCFG0_SGMII_MASK, mac->syscfg0); in mtk_mac_finish()
709 mcr_cur = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id)); in mtk_mac_finish()
716 mtk_w32(mac->hw, mcr_new, MTK_MAC_MCR(mac->id)); in mtk_mac_finish()
724 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_link_down() local
727 if (!mtk_interface_mode_is_xgmii(mac->hw, interface)) { in mtk_mac_link_down()
729 mtk_m32(mac->hw, in mtk_mac_link_down()
731 MTK_MAC_MCR(mac->id)); in mtk_mac_link_down()
732 } else if (mac->id != MTK_GMAC1_ID) { in mtk_mac_link_down()
734 mtk_m32(mac->hw, XMAC_MCR_TRX_DISABLE, XMAC_MCR_TRX_DISABLE, in mtk_mac_link_down()
735 MTK_XMAC_MCR(mac->id)); in mtk_mac_link_down()
736 mtk_m32(mac->hw, MTK_XGMAC_FORCE_LINK(mac->id), 0, in mtk_mac_link_down()
737 MTK_XGMAC_STS(mac->id)); in mtk_mac_link_down()
810 static void mtk_gdm_mac_link_up(struct mtk_mac *mac, in mtk_gdm_mac_link_up() argument
818 mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id)); in mtk_gdm_mac_link_up()
824 mac->speed = speed; in mtk_gdm_mac_link_up()
846 mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id)); in mtk_gdm_mac_link_up()
849 static void mtk_xgdm_mac_link_up(struct mtk_mac *mac, in mtk_xgdm_mac_link_up() argument
857 if (mac->id == MTK_GMAC1_ID) in mtk_xgdm_mac_link_up()
861 mtk_m32(mac->hw, XMAC_LOGIC_RST, 0, MTK_XMAC_LOGIC_RST(mac->id)); in mtk_xgdm_mac_link_up()
863 mtk_m32(mac->hw, XMAC_GLB_CNTCLR, XMAC_GLB_CNTCLR, in mtk_xgdm_mac_link_up()
864 MTK_XMAC_CNT_CTRL(mac->id)); in mtk_xgdm_mac_link_up()
866 mtk_m32(mac->hw, MTK_XGMAC_FORCE_LINK(mac->id), in mtk_xgdm_mac_link_up()
867 MTK_XGMAC_FORCE_LINK(mac->id), MTK_XGMAC_STS(mac->id)); in mtk_xgdm_mac_link_up()
869 mcr = mtk_r32(mac->hw, MTK_XMAC_MCR(mac->id)); in mtk_xgdm_mac_link_up()
880 mtk_w32(mac->hw, mcr, MTK_XMAC_MCR(mac->id)); in mtk_xgdm_mac_link_up()
888 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_link_up() local
891 if (mtk_interface_mode_is_xgmii(mac->hw, interface)) in mtk_mac_link_up()
892 mtk_xgdm_mac_link_up(mac, phy, mode, interface, speed, duplex, in mtk_mac_link_up()
895 mtk_gdm_mac_link_up(mac, phy, mode, interface, speed, duplex, in mtk_mac_link_up()
901 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_disable_tx_lpi() local
903 struct mtk_eth *eth = mac->hw; in mtk_mac_disable_tx_lpi()
905 mtk_m32(eth, MAC_MCR_EEE100M | MAC_MCR_EEE1G, 0, MTK_MAC_MCR(mac->id)); in mtk_mac_disable_tx_lpi()
911 struct mtk_mac *mac = container_of(config, struct mtk_mac, in mtk_mac_enable_tx_lpi() local
913 struct mtk_eth *eth = mac->hw; in mtk_mac_enable_tx_lpi()
916 if (mtk_interface_mode_is_xgmii(eth, mac->interface)) in mtk_mac_enable_tx_lpi()
942 mtk_w32(eth, val, MTK_MAC_EEECR(mac->id)); in mtk_mac_enable_tx_lpi()
943 mtk_m32(eth, 0, MAC_MCR_EEE100M | MAC_MCR_EEE1G, MTK_MAC_MCR(mac->id)); in mtk_mac_enable_tx_lpi()
1077 struct mtk_mac *mac = netdev_priv(dev); in mtk_set_mac_address() local
1078 struct mtk_eth *eth = mac->hw; in mtk_set_mac_address()
1084 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_set_mac_address()
1087 spin_lock_bh(&mac->hw->page_lock); in mtk_set_mac_address()
1089 mtk_w32(mac->hw, (macaddr[0] << 8) | macaddr[1], in mtk_set_mac_address()
1091 mtk_w32(mac->hw, (macaddr[2] << 24) | (macaddr[3] << 16) | in mtk_set_mac_address()
1095 mtk_w32(mac->hw, (macaddr[0] << 8) | macaddr[1], in mtk_set_mac_address()
1096 MTK_GDMA_MAC_ADRH(mac->id)); in mtk_set_mac_address()
1097 mtk_w32(mac->hw, (macaddr[2] << 24) | (macaddr[3] << 16) | in mtk_set_mac_address()
1099 MTK_GDMA_MAC_ADRL(mac->id)); in mtk_set_mac_address()
1101 spin_unlock_bh(&mac->hw->page_lock); in mtk_set_mac_address()
1106 void mtk_stats_update_mac(struct mtk_mac *mac) in mtk_stats_update_mac() argument
1108 struct mtk_hw_stats *hw_stats = mac->hw_stats; in mtk_stats_update_mac()
1109 struct mtk_eth *eth = mac->hw; in mtk_stats_update_mac()
1114 hw_stats->tx_packets += mtk_r32(mac->hw, MT7628_SDM_TPCNT); in mtk_stats_update_mac()
1115 hw_stats->tx_bytes += mtk_r32(mac->hw, MT7628_SDM_TBCNT); in mtk_stats_update_mac()
1116 hw_stats->rx_packets += mtk_r32(mac->hw, MT7628_SDM_RPCNT); in mtk_stats_update_mac()
1117 hw_stats->rx_bytes += mtk_r32(mac->hw, MT7628_SDM_RBCNT); in mtk_stats_update_mac()
1119 mtk_r32(mac->hw, MT7628_SDM_CS_ERR); in mtk_stats_update_mac()
1125 hw_stats->rx_bytes += mtk_r32(mac->hw, reg_map->gdm1_cnt + offs); in mtk_stats_update_mac()
1126 stats = mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x4 + offs); in mtk_stats_update_mac()
1130 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x8 + offs); in mtk_stats_update_mac()
1132 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x10 + offs); in mtk_stats_update_mac()
1134 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x14 + offs); in mtk_stats_update_mac()
1136 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x18 + offs); in mtk_stats_update_mac()
1138 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x1c + offs); in mtk_stats_update_mac()
1140 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x20 + offs); in mtk_stats_update_mac()
1142 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x24 + offs); in mtk_stats_update_mac()
1146 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x50 + offs); in mtk_stats_update_mac()
1148 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x54 + offs); in mtk_stats_update_mac()
1150 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x40 + offs); in mtk_stats_update_mac()
1151 stats = mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x44 + offs); in mtk_stats_update_mac()
1155 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x48 + offs); in mtk_stats_update_mac()
1158 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x28 + offs); in mtk_stats_update_mac()
1160 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x2c + offs); in mtk_stats_update_mac()
1162 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x30 + offs); in mtk_stats_update_mac()
1163 stats = mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x34 + offs); in mtk_stats_update_mac()
1167 mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x38 + offs); in mtk_stats_update_mac()
1179 if (!eth->mac[i] || !eth->mac[i]->hw_stats) in mtk_stats_update()
1181 if (spin_trylock(ð->mac[i]->hw_stats->stats_lock)) { in mtk_stats_update()
1182 mtk_stats_update_mac(eth->mac[i]); in mtk_stats_update()
1183 spin_unlock(ð->mac[i]->hw_stats->stats_lock); in mtk_stats_update()
1191 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_stats64() local
1192 struct mtk_hw_stats *hw_stats = mac->hw_stats; in mtk_get_stats64()
1197 mtk_stats_update_mac(mac); in mtk_get_stats64()
1465 struct mtk_mac *mac = netdev_priv(dev); in mtk_tx_set_dma_desc_v1() local
1466 struct mtk_eth *eth = mac->hw; in mtk_tx_set_dma_desc_v1()
1478 data = (mac->id + 1) << TX_DMA_FPORT_SHIFT; /* forward port */ in mtk_tx_set_dma_desc_v1()
1495 struct mtk_mac *mac = netdev_priv(dev); in mtk_tx_set_dma_desc_v2() local
1497 struct mtk_eth *eth = mac->hw; in mtk_tx_set_dma_desc_v2()
1512 switch (mac->id) { in mtk_tx_set_dma_desc_v2()
1551 struct mtk_mac *mac = netdev_priv(dev); in mtk_tx_set_dma_desc() local
1552 struct mtk_eth *eth = mac->hw; in mtk_tx_set_dma_desc()
1574 struct mtk_mac *mac = netdev_priv(dev); in mtk_tx_map() local
1575 struct mtk_eth *eth = mac->hw; in mtk_tx_map()
1601 itx_buf->mac_id = mac->id; in mtk_tx_map()
1649 tx_buf->mac_id = mac->id; in mtk_tx_map()
1757 struct mtk_mac *mac = netdev_priv(dev); in mtk_start_xmit() local
1758 struct mtk_eth *eth = mac->hw; in mtk_start_xmit()
1939 struct mtk_mac *mac = netdev_priv(dev); in mtk_xdp_frame_map() local
1959 tx_buf->mac_id = mac->id; in mtk_xdp_frame_map()
1976 struct mtk_mac *mac = netdev_priv(dev); in mtk_xdp_submit_frame() local
1981 .qid = mac->id, in mtk_xdp_submit_frame()
2031 txd_info.qid = mac->id; in mtk_xdp_submit_frame()
2093 struct mtk_mac *mac = netdev_priv(dev); in mtk_xdp_xmit() local
2094 struct mtk_hw_stats *hw_stats = mac->hw_stats; in mtk_xdp_xmit()
2095 struct mtk_eth *eth = mac->hw; in mtk_xdp_xmit()
2118 struct mtk_mac *mac = netdev_priv(dev); in mtk_xdp_run() local
2119 struct mtk_hw_stats *hw_stats = mac->hw_stats; in mtk_xdp_run()
2197 int mac = 0; in mtk_poll_rx() local
2217 mac = val - 1; in mtk_poll_rx()
2220 mac = MTK_GMAC3_ID; in mtk_poll_rx()
2227 mac = RX_DMA_GET_SPORT(trxd.rxd4) - 1; in mtk_poll_rx()
2230 if (unlikely(mac < 0 || mac >= MTK_MAX_DEVS || in mtk_poll_rx()
2231 !eth->netdev[mac])) in mtk_poll_rx()
2234 netdev = eth->netdev[mac]; in mtk_poll_rx()
2235 ppe_idx = eth->mac[mac]->ppe_idx; in mtk_poll_rx()
2417 mtk_poll_tx_done(struct mtk_eth *eth, struct mtk_poll_state *state, u8 mac, in mtk_poll_tx_done() argument
2428 dev = eth->netdev[mac]; in mtk_poll_tx_done()
3056 static int mtk_hwlro_get_ip_cnt(struct mtk_mac *mac) in mtk_hwlro_get_ip_cnt() argument
3062 if (mac->hwlro_ip[i]) in mtk_hwlro_get_ip_cnt()
3074 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_add_ipaddr() local
3075 struct mtk_eth *eth = mac->hw; in mtk_hwlro_add_ipaddr()
3083 mac->hwlro_ip[fsp->location] = htonl(fsp->h_u.tcp_ip4_spec.ip4dst); in mtk_hwlro_add_ipaddr()
3084 hwlro_idx = (mac->id * MTK_MAX_LRO_IP_CNT) + fsp->location; in mtk_hwlro_add_ipaddr()
3086 mac->hwlro_ip_cnt = mtk_hwlro_get_ip_cnt(mac); in mtk_hwlro_add_ipaddr()
3088 mtk_hwlro_val_ipaddr(eth, hwlro_idx, mac->hwlro_ip[fsp->location]); in mtk_hwlro_add_ipaddr()
3098 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_del_ipaddr() local
3099 struct mtk_eth *eth = mac->hw; in mtk_hwlro_del_ipaddr()
3105 mac->hwlro_ip[fsp->location] = 0; in mtk_hwlro_del_ipaddr()
3106 hwlro_idx = (mac->id * MTK_MAX_LRO_IP_CNT) + fsp->location; in mtk_hwlro_del_ipaddr()
3108 mac->hwlro_ip_cnt = mtk_hwlro_get_ip_cnt(mac); in mtk_hwlro_del_ipaddr()
3117 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_netdev_disable() local
3118 struct mtk_eth *eth = mac->hw; in mtk_hwlro_netdev_disable()
3122 mac->hwlro_ip[i] = 0; in mtk_hwlro_netdev_disable()
3123 hwlro_idx = (mac->id * MTK_MAX_LRO_IP_CNT) + i; in mtk_hwlro_netdev_disable()
3128 mac->hwlro_ip_cnt = 0; in mtk_hwlro_netdev_disable()
3134 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_get_fdir_entry() local
3138 if (fsp->location >= ARRAY_SIZE(mac->hwlro_ip)) in mtk_hwlro_get_fdir_entry()
3143 fsp->h_u.tcp_ip4_spec.ip4dst = ntohl(mac->hwlro_ip[fsp->location]); in mtk_hwlro_get_fdir_entry()
3162 struct mtk_mac *mac = netdev_priv(dev); in mtk_hwlro_get_fdir_all() local
3170 if (mac->hwlro_ip[i]) { in mtk_hwlro_get_fdir_all()
3185 struct mtk_mac *mac = netdev_priv(dev); in mtk_fix_features() local
3186 int ip_cnt = mtk_hwlro_get_ip_cnt(mac); in mtk_fix_features()
3334 struct mtk_mac *mac = netdev_priv(dev); in mtk_tx_timeout() local
3335 struct mtk_eth *eth = mac->hw; in mtk_tx_timeout()
3343 eth->netdev[mac->id]->stats.tx_errors++; in mtk_tx_timeout()
3444 struct mtk_mac *mac = netdev_priv(dev); in mtk_poll_controller() local
3445 struct mtk_eth *eth = mac->hw; in mtk_poll_controller()
3530 struct mtk_mac *mac = container_of(n, struct mtk_mac, device_notifier); in mtk_device_event() local
3531 struct mtk_eth *eth = mac->hw; in mtk_device_event()
3542 if (netdev_priv(ldev) == mac) in mtk_device_event()
3562 if (mac->speed > 0 && mac->speed <= s.base.speed) in mtk_device_event()
3572 struct mtk_mac *mac = netdev_priv(dev); in mtk_open() local
3573 struct mtk_eth *eth = mac->hw; in mtk_open()
3579 err = phylink_of_phy_connect(mac->phylink, mac->of_node, 0); in mtk_open()
3594 phylink_disconnect_phy(mac->phylink); in mtk_open()
3631 phylink_start(mac->phylink); in mtk_open()
3692 struct mtk_mac *mac = netdev_priv(dev); in mtk_stop() local
3693 struct mtk_eth *eth = mac->hw; in mtk_stop()
3696 phylink_stop(mac->phylink); in mtk_stop()
3700 phylink_disconnect_phy(mac->phylink); in mtk_stop()
3732 struct mtk_mac *mac = netdev_priv(dev); in mtk_xdp_setup() local
3733 struct mtk_eth *eth = mac->hw; in mtk_xdp_setup()
3873 static void mtk_set_mcr_max_rx(struct mtk_mac *mac, u32 val) in mtk_set_mcr_max_rx() argument
3875 struct mtk_eth *eth = mac->hw; in mtk_set_mcr_max_rx()
3881 mcr_cur = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id)); in mtk_set_mcr_max_rx()
3894 mtk_w32(mac->hw, mcr_new, MTK_MAC_MCR(mac->id)); in mtk_set_mcr_max_rx()
4293 struct mtk_mac *mac = netdev_priv(dev); in mtk_uninit() local
4294 struct mtk_eth *eth = mac->hw; in mtk_uninit()
4296 phylink_disconnect_phy(mac->phylink); in mtk_uninit()
4304 struct mtk_mac *mac = netdev_priv(dev); in mtk_change_mtu() local
4305 struct mtk_eth *eth = mac->hw; in mtk_change_mtu()
4313 mtk_set_mcr_max_rx(mac, length); in mtk_change_mtu()
4321 struct mtk_mac *mac = netdev_priv(dev); in mtk_do_ioctl() local
4327 return phylink_mii_ioctl(mac->phylink, ifr, cmd); in mtk_do_ioctl()
4455 struct mtk_mac *mac; in mtk_unreg_dev() local
4458 mac = netdev_priv(eth->netdev[i]); in mtk_unreg_dev()
4460 unregister_netdevice_notifier(&mac->device_notifier); in mtk_unreg_dev()
4489 struct mtk_mac *mac = netdev_priv(ndev); in mtk_get_link_ksettings() local
4491 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_get_link_ksettings()
4494 return phylink_ethtool_ksettings_get(mac->phylink, cmd); in mtk_get_link_ksettings()
4500 struct mtk_mac *mac = netdev_priv(ndev); in mtk_set_link_ksettings() local
4502 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_set_link_ksettings()
4505 return phylink_ethtool_ksettings_set(mac->phylink, cmd); in mtk_set_link_ksettings()
4511 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_drvinfo() local
4513 strscpy(info->driver, mac->hw->dev->driver->name, sizeof(info->driver)); in mtk_get_drvinfo()
4514 strscpy(info->bus_info, dev_name(mac->hw->dev), sizeof(info->bus_info)); in mtk_get_drvinfo()
4520 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_msglevel() local
4522 return mac->hw->msg_enable; in mtk_get_msglevel()
4527 struct mtk_mac *mac = netdev_priv(dev); in mtk_set_msglevel() local
4529 mac->hw->msg_enable = value; in mtk_set_msglevel()
4534 struct mtk_mac *mac = netdev_priv(dev); in mtk_nway_reset() local
4536 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_nway_reset()
4539 if (!mac->phylink) in mtk_nway_reset()
4542 return phylink_ethtool_nway_reset(mac->phylink); in mtk_nway_reset()
4551 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_strings() local
4555 if (mtk_page_pool_enabled(mac->hw)) in mtk_get_strings()
4569 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_sset_count() local
4571 if (mtk_page_pool_enabled(mac->hw)) in mtk_get_sset_count()
4599 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_ethtool_stats() local
4600 struct mtk_hw_stats *hwstats = mac->hw_stats; in mtk_get_ethtool_stats()
4605 if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state))) in mtk_get_ethtool_stats()
4610 mtk_stats_update_mac(mac); in mtk_get_ethtool_stats()
4623 if (mtk_page_pool_enabled(mac->hw)) in mtk_get_ethtool_stats()
4624 mtk_ethtool_pp_stats(mac->hw, data_dst); in mtk_get_ethtool_stats()
4642 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_rxnfc() local
4644 cmd->rule_cnt = mac->hwlro_ip_cnt; in mtk_get_rxnfc()
4686 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_pauseparam() local
4688 phylink_ethtool_get_pauseparam(mac->phylink, pause); in mtk_get_pauseparam()
4693 struct mtk_mac *mac = netdev_priv(dev); in mtk_set_pauseparam() local
4695 return phylink_ethtool_set_pauseparam(mac->phylink, pause); in mtk_set_pauseparam()
4700 struct mtk_mac *mac = netdev_priv(dev); in mtk_get_eee() local
4702 return phylink_ethtool_get_eee(mac->phylink, eee); in mtk_get_eee()
4707 struct mtk_mac *mac = netdev_priv(dev); in mtk_set_eee() local
4709 return phylink_ethtool_set_eee(mac->phylink, eee); in mtk_set_eee()
4715 struct mtk_mac *mac = netdev_priv(dev); in mtk_select_queue() local
4721 queue = mac->id; in mtk_select_queue()
4775 struct mtk_mac *mac; in mtk_add_mac() local
4799 eth->netdev[id] = alloc_etherdev_mqs(sizeof(*mac), txqs, 1); in mtk_add_mac()
4804 mac = netdev_priv(eth->netdev[id]); in mtk_add_mac()
4805 eth->mac[id] = mac; in mtk_add_mac()
4806 mac->id = id; in mtk_add_mac()
4807 mac->hw = eth; in mtk_add_mac()
4808 mac->of_node = np; in mtk_add_mac()
4810 err = of_get_ethdev_address(mac->of_node, eth->netdev[id]); in mtk_add_mac()
4821 memset(mac->hwlro_ip, 0, sizeof(mac->hwlro_ip)); in mtk_add_mac()
4822 mac->hwlro_ip_cnt = 0; in mtk_add_mac()
4824 mac->hw_stats = devm_kzalloc(eth->dev, in mtk_add_mac()
4825 sizeof(*mac->hw_stats), in mtk_add_mac()
4827 if (!mac->hw_stats) { in mtk_add_mac()
4832 spin_lock_init(&mac->hw_stats->stats_lock); in mtk_add_mac()
4833 u64_stats_init(&mac->hw_stats->syncp); in mtk_add_mac()
4836 mac->hw_stats->reg_offset = id * 0x80; in mtk_add_mac()
4838 mac->hw_stats->reg_offset = id * 0x40; in mtk_add_mac()
4848 mac->interface = PHY_INTERFACE_MODE_NA; in mtk_add_mac()
4849 mac->speed = SPEED_UNKNOWN; in mtk_add_mac()
4851 mac->phylink_config.dev = ð->netdev[id]->dev; in mtk_add_mac()
4852 mac->phylink_config.type = PHYLINK_NETDEV; in mtk_add_mac()
4853 mac->phylink_config.mac_capabilities = MAC_ASYM_PAUSE | MAC_SYM_PAUSE | in mtk_add_mac()
4855 mac->phylink_config.lpi_capabilities = MAC_100FD | MAC_1000FD | in mtk_add_mac()
4857 mac->phylink_config.lpi_timer_default = 1000; in mtk_add_mac()
4863 if (!mac->hw->soc->disable_pll_modes || mac->id != 0) { in mtk_add_mac()
4865 mac->phylink_config.supported_interfaces); in mtk_add_mac()
4867 mac->phylink_config.supported_interfaces); in mtk_add_mac()
4869 if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_RGMII)) in mtk_add_mac()
4870 phy_interface_set_rgmii(mac->phylink_config.supported_interfaces); in mtk_add_mac()
4873 if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_TRGMII) && !mac->id) in mtk_add_mac()
4875 mac->phylink_config.supported_interfaces); in mtk_add_mac()
4878 if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_GMAC1_TRGMII) && in mtk_add_mac()
4879 MTK_HAS_CAPS(mac->hw->soc->caps, MTK_TRGMII_MT7621_CLK)) { in mtk_add_mac()
4883 mac->phylink_config.supported_interfaces); in mtk_add_mac()
4886 if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_SGMII)) { in mtk_add_mac()
4888 mac->phylink_config.supported_interfaces); in mtk_add_mac()
4890 mac->phylink_config.supported_interfaces); in mtk_add_mac()
4892 mac->phylink_config.supported_interfaces); in mtk_add_mac()
4895 if (mtk_is_netsys_v3_or_greater(mac->hw) && in mtk_add_mac()
4896 MTK_HAS_CAPS(mac->hw->soc->caps, MTK_ESW) && in mtk_add_mac()
4898 mac->phylink_config.mac_capabilities = MAC_ASYM_PAUSE | in mtk_add_mac()
4901 phy_interface_zero(mac->phylink_config.supported_interfaces); in mtk_add_mac()
4903 mac->phylink_config.supported_interfaces); in mtk_add_mac()
4906 phylink = phylink_create(&mac->phylink_config, in mtk_add_mac()
4907 of_fwnode_handle(mac->of_node), in mtk_add_mac()
4914 mac->phylink = phylink; in mtk_add_mac()
4916 if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_2P5GPHY) && in mtk_add_mac()
4919 mac->phylink_config.supported_interfaces); in mtk_add_mac()
4944 mac->device_notifier.notifier_call = mtk_device_event; in mtk_add_mac()
4945 register_netdevice_notifier(&mac->device_notifier); in mtk_add_mac()
5321 struct mtk_mac *mac; in mtk_remove() local
5329 mac = netdev_priv(eth->netdev[i]); in mtk_remove()
5330 phylink_disconnect_phy(mac->phylink); in mtk_remove()