Lines Matching refs:mac_cb

55 static enum mac_mode hns_get_enet_interface(const struct hns_mac_cb *mac_cb)  in hns_get_enet_interface()  argument
57 switch (mac_cb->max_speed) { in hns_get_enet_interface()
59 return g_mac_mode_100[mac_cb->phy_if]; in hns_get_enet_interface()
61 return g_mac_mode_1000[mac_cb->phy_if]; in hns_get_enet_interface()
69 void hns_mac_get_link_status(struct hns_mac_cb *mac_cb, u32 *link_status) in hns_mac_get_link_status() argument
74 mac_ctrl_drv = hns_mac_get_drv(mac_cb); in hns_mac_get_link_status()
81 if (mac_cb->media_type == HNAE_MEDIA_TYPE_FIBER) { in hns_mac_get_link_status()
82 ret = mac_cb->dsaf_dev->misc_op->get_sfp_prsnt(mac_cb, in hns_mac_get_link_status()
88 mac_cb->link = *link_status; in hns_mac_get_link_status()
91 int hns_mac_get_port_info(struct hns_mac_cb *mac_cb, in hns_mac_get_port_info() argument
97 mac_ctrl_drv = hns_mac_get_drv(mac_cb); in hns_mac_get_port_info()
120 bool hns_mac_need_adjust_link(struct hns_mac_cb *mac_cb, int speed, int duplex) in hns_mac_need_adjust_link() argument
124 mac_ctrl_drv = (struct mac_driver *)(mac_cb->priv.mac); in hns_mac_need_adjust_link()
133 void hns_mac_adjust_link(struct hns_mac_cb *mac_cb, int speed, int duplex) in hns_mac_adjust_link() argument
138 mac_ctrl_drv = (struct mac_driver *)(mac_cb->priv.mac); in hns_mac_adjust_link()
140 mac_cb->speed = speed; in hns_mac_adjust_link()
141 mac_cb->half_duplex = !duplex; in hns_mac_adjust_link()
147 dev_err(mac_cb->dev, in hns_mac_adjust_link()
149 mac_cb->dsaf_dev->ae_dev.name, in hns_mac_adjust_link()
150 mac_cb->mac_id, ret); in hns_mac_adjust_link()
163 int hns_mac_get_inner_port_num(struct hns_mac_cb *mac_cb, u8 vmid, u8 *port_num) in hns_mac_get_inner_port_num() argument
169 if (mac_cb->dsaf_dev->dsaf_mode <= DSAF_MODE_ENABLE) { in hns_mac_get_inner_port_num()
170 if (mac_cb->mac_id != DSAF_MAX_PORT_NUM) { in hns_mac_get_inner_port_num()
171 dev_err(mac_cb->dev, in hns_mac_get_inner_port_num()
173 mac_cb->dsaf_dev->ae_dev.name, in hns_mac_get_inner_port_num()
174 mac_cb->mac_id, vmid); in hns_mac_get_inner_port_num()
177 } else if (mac_cb->dsaf_dev->dsaf_mode < DSAF_MODE_MAX) { in hns_mac_get_inner_port_num()
178 if (mac_cb->mac_id >= DSAF_MAX_PORT_NUM) { in hns_mac_get_inner_port_num()
179 dev_err(mac_cb->dev, in hns_mac_get_inner_port_num()
181 mac_cb->dsaf_dev->ae_dev.name, in hns_mac_get_inner_port_num()
182 mac_cb->mac_id, vmid); in hns_mac_get_inner_port_num()
186 dev_err(mac_cb->dev, "dsaf mode invalid, %s mac%d!\n", in hns_mac_get_inner_port_num()
187 mac_cb->dsaf_dev->ae_dev.name, mac_cb->mac_id); in hns_mac_get_inner_port_num()
191 if (vmid >= mac_cb->dsaf_dev->rcb_common[0]->max_vfn) { in hns_mac_get_inner_port_num()
192 dev_err(mac_cb->dev, "input invalid, %s mac%d vmid%d !\n", in hns_mac_get_inner_port_num()
193 mac_cb->dsaf_dev->ae_dev.name, mac_cb->mac_id, vmid); in hns_mac_get_inner_port_num()
197 q_num_per_vf = mac_cb->dsaf_dev->rcb_common[0]->max_q_per_vf; in hns_mac_get_inner_port_num()
198 vf_num_per_port = mac_cb->dsaf_dev->rcb_common[0]->max_vfn; in hns_mac_get_inner_port_num()
201 vf_num_per_port * q_num_per_vf * mac_cb->mac_id; in hns_mac_get_inner_port_num()
203 switch (mac_cb->dsaf_dev->dsaf_mode) { in hns_mac_get_inner_port_num()
225 dev_err(mac_cb->dev, "dsaf mode invalid, %s mac%d!\n", in hns_mac_get_inner_port_num()
226 mac_cb->dsaf_dev->ae_dev.name, mac_cb->mac_id); in hns_mac_get_inner_port_num()
242 int hns_mac_change_vf_addr(struct hns_mac_cb *mac_cb, in hns_mac_change_vf_addr() argument
246 struct mac_driver *mac_ctrl_drv = hns_mac_get_drv(mac_cb); in hns_mac_change_vf_addr()
247 struct dsaf_device *dsaf_dev = mac_cb->dsaf_dev; in hns_mac_change_vf_addr()
251 old_entry = &mac_cb->addr_entry_idx[vmid]; in hns_mac_change_vf_addr()
255 mac_entry.in_port_num = mac_cb->mac_id; in hns_mac_change_vf_addr()
256 ret = hns_mac_get_inner_port_num(mac_cb, (u8)vmid, in hns_mac_change_vf_addr()
266 mac_cb->mac_id, in hns_mac_change_vf_addr()
278 mac_ctrl_drv->set_mac_addr(mac_cb->priv.mac, addr); in hns_mac_change_vf_addr()
285 int hns_mac_add_uc_addr(struct hns_mac_cb *mac_cb, u8 vf_id, in hns_mac_add_uc_addr() argument
288 struct dsaf_device *dsaf_dev = mac_cb->dsaf_dev; in hns_mac_add_uc_addr()
297 mac_entry.in_port_num = mac_cb->mac_id; in hns_mac_add_uc_addr()
298 ret = hns_mac_get_inner_port_num(mac_cb, vf_id, &mac_entry.port_num); in hns_mac_add_uc_addr()
305 int hns_mac_rm_uc_addr(struct hns_mac_cb *mac_cb, u8 vf_id, in hns_mac_rm_uc_addr() argument
308 struct dsaf_device *dsaf_dev = mac_cb->dsaf_dev; in hns_mac_rm_uc_addr()
317 mac_entry.in_port_num = mac_cb->mac_id; in hns_mac_rm_uc_addr()
318 ret = hns_mac_get_inner_port_num(mac_cb, vf_id, &mac_entry.port_num); in hns_mac_rm_uc_addr()
325 int hns_mac_set_multi(struct hns_mac_cb *mac_cb, in hns_mac_set_multi() argument
329 struct dsaf_device *dsaf_dev = mac_cb->dsaf_dev; in hns_mac_set_multi()
335 mac_entry.in_port_num = mac_cb->mac_id; in hns_mac_set_multi()
345 mac_cb->dsaf_dev->ae_dev.name, in hns_mac_set_multi()
346 mac_cb->mac_id, ret); in hns_mac_set_multi()
354 int hns_mac_clr_multicast(struct hns_mac_cb *mac_cb, int vfn) in hns_mac_clr_multicast() argument
356 struct dsaf_device *dsaf_dev = mac_cb->dsaf_dev; in hns_mac_clr_multicast()
358 int ret = hns_mac_get_inner_port_num(mac_cb, vfn, &port_num); in hns_mac_clr_multicast()
363 return hns_dsaf_clr_mac_mc_port(dsaf_dev, mac_cb->mac_id, port_num); in hns_mac_clr_multicast()
367 struct hns_mac_cb *mac_cb) in hns_mac_param_get() argument
369 param->vaddr = mac_cb->vaddr; in hns_mac_param_get()
370 param->mac_mode = hns_get_enet_interface(mac_cb); in hns_mac_param_get()
371 ether_addr_copy(param->addr, mac_cb->addr_entry_idx[0].addr); in hns_mac_param_get()
372 param->mac_id = mac_cb->mac_id; in hns_mac_param_get()
373 param->dev = mac_cb->dev; in hns_mac_param_get()
384 static int hns_mac_port_config_bc_en(struct hns_mac_cb *mac_cb, in hns_mac_port_config_bc_en() argument
388 struct dsaf_device *dsaf_dev = mac_cb->dsaf_dev; in hns_mac_port_config_bc_en()
392 if (mac_cb->mac_type == HNAE_PORT_DEBUG) in hns_mac_port_config_bc_en()
398 mac_entry.in_port_num = mac_cb->mac_id; in hns_mac_port_config_bc_en()
418 int hns_mac_vm_config_bc_en(struct hns_mac_cb *mac_cb, u32 vmid, bool enable) in hns_mac_vm_config_bc_en() argument
421 struct dsaf_device *dsaf_dev = mac_cb->dsaf_dev; in hns_mac_vm_config_bc_en()
426 if (mac_cb->mac_type == HNAE_PORT_DEBUG) in hns_mac_vm_config_bc_en()
429 uc_mac_entry = &mac_cb->addr_entry_idx[vmid]; in hns_mac_vm_config_bc_en()
434 mac_entry.in_port_num = mac_cb->mac_id; in hns_mac_vm_config_bc_en()
435 ret = hns_mac_get_inner_port_num(mac_cb, vmid, &port_num); in hns_mac_vm_config_bc_en()
450 int hns_mac_wait_fifo_clean(struct hns_mac_cb *mac_cb) in hns_mac_wait_fifo_clean() argument
452 struct mac_driver *drv = hns_mac_get_drv(mac_cb); in hns_mac_wait_fifo_clean()
460 void hns_mac_reset(struct hns_mac_cb *mac_cb) in hns_mac_reset() argument
462 struct mac_driver *drv = hns_mac_get_drv(mac_cb); in hns_mac_reset()
463 bool is_ver1 = AE_IS_VER1(mac_cb->dsaf_dev->dsaf_ver); in hns_mac_reset()
468 drv->config_max_frame_length(drv, mac_cb->max_frm); in hns_mac_reset()
471 drv->set_tx_auto_pause_frames(drv, mac_cb->tx_pause_frm_time); in hns_mac_reset()
477 if (mac_cb->mac_type == HNAE_PORT_DEBUG) in hns_mac_reset()
484 int hns_mac_set_mtu(struct hns_mac_cb *mac_cb, u32 new_mtu, u32 buf_size) in hns_mac_set_mtu() argument
486 struct mac_driver *drv = hns_mac_get_drv(mac_cb); in hns_mac_set_mtu()
501 mac_cb->max_frm = new_frm; in hns_mac_set_mtu()
506 void hns_mac_start(struct hns_mac_cb *mac_cb) in hns_mac_start() argument
508 struct mac_driver *mac_drv = hns_mac_get_drv(mac_cb); in hns_mac_start()
518 mac_drv->mac_enable(mac_cb->priv.mac, MAC_COMM_MODE_RX_AND_TX); in hns_mac_start()
523 void hns_mac_stop(struct hns_mac_cb *mac_cb) in hns_mac_stop() argument
525 struct mac_driver *mac_ctrl_drv = hns_mac_get_drv(mac_cb); in hns_mac_stop()
535 mac_ctrl_drv->mac_disable(mac_cb->priv.mac, in hns_mac_stop()
539 mac_cb->link = 0; in hns_mac_stop()
540 mac_cb->dsaf_dev->misc_op->cpld_reset_led(mac_cb); in hns_mac_stop()
549 void hns_mac_get_autoneg(struct hns_mac_cb *mac_cb, u32 *auto_neg) in hns_mac_get_autoneg() argument
551 struct mac_driver *mac_ctrl_drv = hns_mac_get_drv(mac_cb); in hns_mac_get_autoneg()
566 void hns_mac_get_pauseparam(struct hns_mac_cb *mac_cb, u32 *rx_en, u32 *tx_en) in hns_mac_get_pauseparam() argument
568 struct mac_driver *mac_ctrl_drv = hns_mac_get_drv(mac_cb); in hns_mac_get_pauseparam()
584 int hns_mac_set_autoneg(struct hns_mac_cb *mac_cb, u8 enable) in hns_mac_set_autoneg() argument
586 struct mac_driver *mac_ctrl_drv = hns_mac_get_drv(mac_cb); in hns_mac_set_autoneg()
588 if (mac_cb->phy_if == PHY_INTERFACE_MODE_XGMII && enable) { in hns_mac_set_autoneg()
589 dev_err(mac_cb->dev, "enabling autoneg is not allowed!\n"); in hns_mac_set_autoneg()
606 int hns_mac_set_pauseparam(struct hns_mac_cb *mac_cb, u32 rx_en, u32 tx_en) in hns_mac_set_pauseparam() argument
608 struct mac_driver *mac_ctrl_drv = hns_mac_get_drv(mac_cb); in hns_mac_set_pauseparam()
609 bool is_ver1 = AE_IS_VER1(mac_cb->dsaf_dev->dsaf_ver); in hns_mac_set_pauseparam()
611 if (mac_cb->mac_type == HNAE_PORT_DEBUG) { in hns_mac_set_pauseparam()
613 dev_err(mac_cb->dev, "macv1 can't enable tx/rx_pause!\n"); in hns_mac_set_pauseparam()
629 static int hns_mac_init_ex(struct hns_mac_cb *mac_cb) in hns_mac_init_ex() argument
635 hns_dsaf_fix_mac_mode(mac_cb); in hns_mac_init_ex()
638 hns_mac_param_get(&param, mac_cb); in hns_mac_init_ex()
641 drv = (struct mac_driver *)hns_gmac_config(mac_cb, &param); in hns_mac_init_ex()
643 drv = (struct mac_driver *)hns_xgmac_config(mac_cb, &param); in hns_mac_init_ex()
648 mac_cb->priv.mac = (void *)drv; in hns_mac_init_ex()
649 hns_mac_reset(mac_cb); in hns_mac_init_ex()
651 hns_mac_adjust_link(mac_cb, mac_cb->speed, !mac_cb->half_duplex); in hns_mac_init_ex()
653 ret = hns_mac_port_config_bc_en(mac_cb, mac_cb->mac_id, 0, true); in hns_mac_init_ex()
660 drv->mac_free(mac_cb->priv.mac); in hns_mac_init_ex()
661 mac_cb->priv.mac = NULL; in hns_mac_init_ex()
687 hns_mac_register_phydev(struct mii_bus *mdio, struct hns_mac_cb *mac_cb, in hns_mac_register_phydev() argument
695 rc = fwnode_property_read_string(mac_cb->fw_port, in hns_mac_register_phydev()
724 mac_cb->phy_dev = phy; in hns_mac_register_phydev()
731 static int hns_mac_register_phy(struct hns_mac_cb *mac_cb) in hns_mac_register_phy() argument
740 if (!to_acpi_device_node(mac_cb->fw_port)) in hns_mac_register_phy()
744 mac_cb->fw_port, "mdio-node", 0, &args); in hns_mac_register_phy()
750 addr = hns_mac_phy_parse_addr(mac_cb->dev, mac_cb->fw_port); in hns_mac_register_phy()
757 dev_err(mac_cb->dev, "mac%d mdio pdev is NULL\n", in hns_mac_register_phy()
758 mac_cb->mac_id); in hns_mac_register_phy()
764 dev_err(mac_cb->dev, in hns_mac_register_phy()
766 mac_cb->mac_id); in hns_mac_register_phy()
770 rc = hns_mac_register_phydev(mii_bus, mac_cb, addr); in hns_mac_register_phy()
772 dev_dbg(mac_cb->dev, "mac%d register phy addr:%d\n", in hns_mac_register_phy()
773 mac_cb->mac_id, addr); in hns_mac_register_phy()
778 static void hns_mac_remove_phydev(struct hns_mac_cb *mac_cb) in hns_mac_remove_phydev() argument
780 if (!to_acpi_device_node(mac_cb->fw_port) || !mac_cb->phy_dev) in hns_mac_remove_phydev()
783 phy_device_remove(mac_cb->phy_dev); in hns_mac_remove_phydev()
784 phy_device_free(mac_cb->phy_dev); in hns_mac_remove_phydev()
786 mac_cb->phy_dev = NULL; in hns_mac_remove_phydev()
806 static int hns_mac_get_info(struct hns_mac_cb *mac_cb) in hns_mac_get_info() argument
815 mac_cb->link = false; in hns_mac_get_info()
816 mac_cb->half_duplex = false; in hns_mac_get_info()
817 mac_cb->media_type = HNAE_MEDIA_TYPE_UNKNOWN; in hns_mac_get_info()
818 mac_cb->speed = mac_phy_to_speed[mac_cb->phy_if]; in hns_mac_get_info()
819 mac_cb->max_speed = mac_cb->speed; in hns_mac_get_info()
821 if (mac_cb->phy_if == PHY_INTERFACE_MODE_SGMII) { in hns_mac_get_info()
822 mac_cb->if_support = MAC_GMAC_SUPPORTED; in hns_mac_get_info()
823 mac_cb->if_support |= SUPPORTED_1000baseT_Full; in hns_mac_get_info()
824 } else if (mac_cb->phy_if == PHY_INTERFACE_MODE_XGMII) { in hns_mac_get_info()
825 mac_cb->if_support = SUPPORTED_10000baseR_FEC; in hns_mac_get_info()
826 mac_cb->if_support |= SUPPORTED_10000baseKR_Full; in hns_mac_get_info()
829 mac_cb->max_frm = MAC_DEFAULT_MTU; in hns_mac_get_info()
830 mac_cb->tx_pause_frm_time = MAC_DEFAULT_PAUSE_TIME; in hns_mac_get_info()
831 mac_cb->port_rst_off = mac_cb->mac_id; in hns_mac_get_info()
832 mac_cb->port_mode_off = 0; in hns_mac_get_info()
837 if (!mac_cb->fw_port) { in hns_mac_get_info()
838 np = of_parse_phandle(mac_cb->dev->of_node, "phy-handle", in hns_mac_get_info()
839 mac_cb->mac_id); in hns_mac_get_info()
840 mac_cb->phy_dev = of_phy_find_device(np); in hns_mac_get_info()
841 if (mac_cb->phy_dev) { in hns_mac_get_info()
845 put_device(&mac_cb->phy_dev->mdio.dev); in hns_mac_get_info()
847 dev_dbg(mac_cb->dev, "mac%d phy_node: %pOFn\n", in hns_mac_get_info()
848 mac_cb->mac_id, np); in hns_mac_get_info()
855 if (is_of_node(mac_cb->fw_port)) { in hns_mac_get_info()
857 np = of_parse_phandle(to_of_node(mac_cb->fw_port), in hns_mac_get_info()
859 mac_cb->phy_dev = of_phy_find_device(np); in hns_mac_get_info()
860 if (mac_cb->phy_dev) { in hns_mac_get_info()
864 put_device(&mac_cb->phy_dev->mdio.dev); in hns_mac_get_info()
865 dev_dbg(mac_cb->dev, "mac%d phy_node: %pOFn\n", in hns_mac_get_info()
866 mac_cb->mac_id, np); in hns_mac_get_info()
870 np = of_parse_phandle(to_of_node(mac_cb->fw_port), in hns_mac_get_info()
875 dev_err(mac_cb->dev, "serdes-syscon is needed!\n"); in hns_mac_get_info()
878 mac_cb->serdes_ctrl = syscon; in hns_mac_get_info()
880 ret = fwnode_property_read_u32(mac_cb->fw_port, in hns_mac_get_info()
882 &mac_cb->port_rst_off); in hns_mac_get_info()
884 dev_dbg(mac_cb->dev, in hns_mac_get_info()
886 mac_cb->mac_id); in hns_mac_get_info()
889 ret = fwnode_property_read_u32(mac_cb->fw_port, in hns_mac_get_info()
891 &mac_cb->port_mode_off); in hns_mac_get_info()
893 dev_dbg(mac_cb->dev, in hns_mac_get_info()
895 mac_cb->mac_id); in hns_mac_get_info()
899 to_of_node(mac_cb->fw_port), "cpld-syscon", 1, 0, in hns_mac_get_info()
902 dev_dbg(mac_cb->dev, "mac%d no cpld-syscon found.\n", in hns_mac_get_info()
903 mac_cb->mac_id); in hns_mac_get_info()
904 mac_cb->cpld_ctrl = NULL; in hns_mac_get_info()
908 dev_dbg(mac_cb->dev, "no cpld-syscon found!\n"); in hns_mac_get_info()
909 mac_cb->cpld_ctrl = NULL; in hns_mac_get_info()
911 mac_cb->cpld_ctrl = syscon; in hns_mac_get_info()
912 mac_cb->cpld_ctrl_reg = cpld_args.args[0]; in hns_mac_get_info()
915 } else if (is_acpi_node(mac_cb->fw_port)) { in hns_mac_get_info()
916 ret = hns_mac_register_phy(mac_cb); in hns_mac_get_info()
925 dev_err(mac_cb->dev, "mac%d cannot find phy node\n", in hns_mac_get_info()
926 mac_cb->mac_id); in hns_mac_get_info()
929 if (!fwnode_property_read_string(mac_cb->fw_port, "media-type", in hns_mac_get_info()
934 mac_cb->media_type = media_type_defs[i].value; in hns_mac_get_info()
940 if (fwnode_property_read_u8_array(mac_cb->fw_port, "mc-mac-mask", in hns_mac_get_info()
941 mac_cb->mc_mask, ETH_ALEN)) { in hns_mac_get_info()
942 dev_warn(mac_cb->dev, in hns_mac_get_info()
944 eth_broadcast_addr(mac_cb->mc_mask); in hns_mac_get_info()
969 struct hns_mac_cb *mac_cb, u32 mac_mode_idx) in hns_mac_get_vaddr() argument
972 int mac_id = mac_cb->mac_id; in hns_mac_get_vaddr()
974 if (mac_cb->mac_type == HNAE_PORT_SERVICE) in hns_mac_get_vaddr()
988 hns_mac_get_cfg(struct dsaf_device *dsaf_dev, struct hns_mac_cb *mac_cb) in hns_mac_get_cfg() argument
993 mac_cb->dsaf_dev = dsaf_dev; in hns_mac_get_cfg()
994 mac_cb->dev = dsaf_dev->dev; in hns_mac_get_cfg()
996 mac_cb->sys_ctl_vaddr = dsaf_dev->sc_base; in hns_mac_get_cfg()
997 mac_cb->serdes_vaddr = dsaf_dev->sds_base; in hns_mac_get_cfg()
999 mac_cb->sfp_prsnt = 0; in hns_mac_get_cfg()
1000 mac_cb->txpkt_for_led = 0; in hns_mac_get_cfg()
1001 mac_cb->rxpkt_for_led = 0; in hns_mac_get_cfg()
1004 mac_cb->mac_type = HNAE_PORT_SERVICE; in hns_mac_get_cfg()
1006 mac_cb->mac_type = HNAE_PORT_DEBUG; in hns_mac_get_cfg()
1008 mac_cb->phy_if = dsaf_dev->misc_op->get_phy_if(mac_cb); in hns_mac_get_cfg()
1010 ret = hns_mac_get_mode(mac_cb->phy_if); in hns_mac_get_cfg()
1014 mac_cb->mac_id, ret); in hns_mac_get_cfg()
1019 ret = hns_mac_get_info(mac_cb); in hns_mac_get_cfg()
1023 mac_cb->dsaf_dev->misc_op->cpld_reset_led(mac_cb); in hns_mac_get_cfg()
1024 mac_cb->vaddr = hns_mac_get_vaddr(dsaf_dev, mac_cb, mac_mode_idx); in hns_mac_get_cfg()
1037 void hns_mac_enable(struct hns_mac_cb *mac_cb, enum mac_commom_mode mode) in hns_mac_enable() argument
1039 struct mac_driver *mac_ctrl_drv = hns_mac_get_drv(mac_cb); in hns_mac_enable()
1041 mac_ctrl_drv->mac_enable(mac_cb->priv.mac, mode); in hns_mac_enable()
1044 void hns_mac_disable(struct hns_mac_cb *mac_cb, enum mac_commom_mode mode) in hns_mac_disable() argument
1046 struct mac_driver *mac_ctrl_drv = hns_mac_get_drv(mac_cb); in hns_mac_disable()
1048 mac_ctrl_drv->mac_disable(mac_cb->priv.mac, mode); in hns_mac_disable()
1062 struct hns_mac_cb *mac_cb; in hns_mac_init() local
1079 mac_cb = devm_kzalloc(dsaf_dev->dev, sizeof(*mac_cb), in hns_mac_init()
1081 if (!mac_cb) { in hns_mac_init()
1085 mac_cb->fw_port = child; in hns_mac_init()
1086 mac_cb->mac_id = (u8)port_id; in hns_mac_init()
1087 dsaf_dev->mac_cb[port_id] = mac_cb; in hns_mac_init()
1096 mac_cb = devm_kzalloc(dsaf_dev->dev, sizeof(*mac_cb), in hns_mac_init()
1098 if (!mac_cb) in hns_mac_init()
1101 mac_cb->mac_id = port_id; in hns_mac_init()
1102 dsaf_dev->mac_cb[port_id] = mac_cb; in hns_mac_init()
1108 mac_cb = dsaf_dev->mac_cb[port_id]; in hns_mac_init()
1109 if (!mac_cb) in hns_mac_init()
1112 ret = hns_mac_get_cfg(dsaf_dev, mac_cb); in hns_mac_init()
1116 ret = hns_mac_init_ex(mac_cb); in hns_mac_init()
1130 if (!dsaf_dev->mac_cb[i]) in hns_mac_uninit()
1133 dsaf_dev->misc_op->cpld_reset_led(dsaf_dev->mac_cb[i]); in hns_mac_uninit()
1134 hns_mac_remove_phydev(dsaf_dev->mac_cb[i]); in hns_mac_uninit()
1135 dsaf_dev->mac_cb[i] = NULL; in hns_mac_uninit()
1139 int hns_mac_config_mac_loopback(struct hns_mac_cb *mac_cb, in hns_mac_config_mac_loopback() argument
1143 struct mac_driver *drv = hns_mac_get_drv(mac_cb); in hns_mac_config_mac_loopback()
1153 void hns_mac_update_stats(struct hns_mac_cb *mac_cb) in hns_mac_update_stats() argument
1155 struct mac_driver *mac_ctrl_drv = hns_mac_get_drv(mac_cb); in hns_mac_update_stats()
1160 void hns_mac_get_stats(struct hns_mac_cb *mac_cb, u64 *data) in hns_mac_get_stats() argument
1162 struct mac_driver *mac_ctrl_drv = hns_mac_get_drv(mac_cb); in hns_mac_get_stats()
1167 void hns_mac_get_strings(struct hns_mac_cb *mac_cb, in hns_mac_get_strings() argument
1170 struct mac_driver *mac_ctrl_drv = hns_mac_get_drv(mac_cb); in hns_mac_get_strings()
1175 int hns_mac_get_sset_count(struct hns_mac_cb *mac_cb, int stringset) in hns_mac_get_sset_count() argument
1177 struct mac_driver *mac_ctrl_drv = hns_mac_get_drv(mac_cb); in hns_mac_get_sset_count()
1182 void hns_mac_set_promisc(struct hns_mac_cb *mac_cb, u8 en) in hns_mac_set_promisc() argument
1184 struct mac_driver *mac_ctrl_drv = hns_mac_get_drv(mac_cb); in hns_mac_set_promisc()
1186 hns_dsaf_set_promisc_tcam(mac_cb->dsaf_dev, mac_cb->mac_id, !!en); in hns_mac_set_promisc()
1192 int hns_mac_get_regs_count(struct hns_mac_cb *mac_cb) in hns_mac_get_regs_count() argument
1194 struct mac_driver *mac_ctrl_drv = hns_mac_get_drv(mac_cb); in hns_mac_get_regs_count()
1199 void hns_mac_get_regs(struct hns_mac_cb *mac_cb, void *data) in hns_mac_get_regs() argument
1201 struct mac_driver *mac_ctrl_drv = hns_mac_get_drv(mac_cb); in hns_mac_get_regs()
1206 void hns_set_led_opt(struct hns_mac_cb *mac_cb) in hns_set_led_opt() argument
1211 txpkts = mac_cb->txpkt_for_led - mac_cb->hw_stats.tx_good_pkts; in hns_set_led_opt()
1212 rxpkts = mac_cb->rxpkt_for_led - mac_cb->hw_stats.rx_good_pkts; in hns_set_led_opt()
1217 mac_cb->txpkt_for_led = mac_cb->hw_stats.tx_good_pkts; in hns_set_led_opt()
1218 mac_cb->rxpkt_for_led = mac_cb->hw_stats.rx_good_pkts; in hns_set_led_opt()
1219 mac_cb->dsaf_dev->misc_op->cpld_set_led(mac_cb, (int)mac_cb->link, in hns_set_led_opt()
1220 mac_cb->speed, nic_data); in hns_set_led_opt()
1223 int hns_cpld_led_set_id(struct hns_mac_cb *mac_cb, in hns_cpld_led_set_id() argument
1226 if (!mac_cb) in hns_cpld_led_set_id()
1229 return mac_cb->dsaf_dev->misc_op->cpld_set_led_id(mac_cb, status); in hns_cpld_led_set_id()