Lines Matching refs:lmac

45 struct lmac {  struct
72 struct lmac lmac[MAX_LMAC_PER_BGX]; argument
85 static int bgx_xaui_check_link(struct lmac *lmac);
110 static u64 bgx_reg_read(struct bgx *bgx, u8 lmac, u64 offset) in bgx_reg_read() argument
112 void __iomem *addr = bgx->reg_base + ((u32)lmac << 20) + offset; in bgx_reg_read()
117 static void bgx_reg_write(struct bgx *bgx, u8 lmac, u64 offset, u64 val) in bgx_reg_write() argument
119 void __iomem *addr = bgx->reg_base + ((u32)lmac << 20) + offset; in bgx_reg_write()
124 static void bgx_reg_modify(struct bgx *bgx, u8 lmac, u64 offset, u64 val) in bgx_reg_modify() argument
126 void __iomem *addr = bgx->reg_base + ((u32)lmac << 20) + offset; in bgx_reg_modify()
131 static int bgx_poll_reg(struct bgx *bgx, u8 lmac, u64 reg, u64 mask, bool zero) in bgx_poll_reg() argument
137 reg_val = bgx_reg_read(bgx, lmac, reg); in bgx_poll_reg()
212 struct lmac *lmac; in bgx_get_lmac_link_state() local
218 lmac = &bgx->lmac[lmacid]; in bgx_get_lmac_link_state()
219 link->mac_type = lmac->lmac_type; in bgx_get_lmac_link_state()
220 link->link_up = lmac->link_up; in bgx_get_lmac_link_state()
221 link->duplex = lmac->last_duplex; in bgx_get_lmac_link_state()
222 link->speed = lmac->last_speed; in bgx_get_lmac_link_state()
231 return bgx->lmac[lmacid].mac; in bgx_get_lmac_mac()
244 ether_addr_copy(bgx->lmac[lmacid].mac, mac); in bgx_set_lmac_mac()
250 struct lmac *lmac = NULL; in bgx_flush_dmac_cam_filter() local
253 lmac = &bgx->lmac[lmacid]; in bgx_flush_dmac_cam_filter()
255 for (idx = 0; idx < lmac->dmacs_count; idx++) in bgx_flush_dmac_cam_filter()
257 ((lmacid * lmac->dmacs_count) + idx) * in bgx_flush_dmac_cam_filter()
261 static void bgx_lmac_remove_filters(struct lmac *lmac, u8 vf_id) in bgx_lmac_remove_filters() argument
265 if (!lmac) in bgx_lmac_remove_filters()
273 for (i = lmac->dmacs_cfg - 1; i >= 0; i--) { in bgx_lmac_remove_filters()
274 lmac->dmacs[i].vf_map &= ~BIT_ULL(vf_id); in bgx_lmac_remove_filters()
275 if (!lmac->dmacs[i].vf_map) { in bgx_lmac_remove_filters()
276 lmac->dmacs_cfg--; in bgx_lmac_remove_filters()
277 lmac->dmacs[i].dmac = 0; in bgx_lmac_remove_filters()
278 lmac->dmacs[i].vf_map = 0; in bgx_lmac_remove_filters()
283 static int bgx_lmac_save_filter(struct lmac *lmac, u64 dmac, u8 vf_id) in bgx_lmac_save_filter() argument
287 if (!lmac) in bgx_lmac_save_filter()
297 for (i = 0; i < lmac->dmacs_cfg; i++) { in bgx_lmac_save_filter()
298 if (lmac->dmacs[i].dmac == dmac) { in bgx_lmac_save_filter()
299 lmac->dmacs[i].vf_map |= BIT_ULL(vf_id); in bgx_lmac_save_filter()
304 if (!(lmac->dmacs_cfg < lmac->dmacs_count)) in bgx_lmac_save_filter()
308 lmac->dmacs[lmac->dmacs_cfg].dmac = dmac; in bgx_lmac_save_filter()
309 lmac->dmacs[lmac->dmacs_cfg].vf_map = BIT_ULL(vf_id); in bgx_lmac_save_filter()
310 lmac->dmacs_cfg++; in bgx_lmac_save_filter()
317 struct lmac *lmac = NULL; in bgx_set_dmac_cam_filter_mac() local
324 lmac = &bgx->lmac[lmacid]; in bgx_set_dmac_cam_filter_mac()
330 ((lmacid * lmac->dmacs_count) + idx) * sizeof(u64), cfg); in bgx_set_dmac_cam_filter_mac()
338 struct lmac *lmac = NULL; in bgx_set_dmac_cam_filter() local
343 lmac = &bgx->lmac[lmacid]; in bgx_set_dmac_cam_filter()
346 cam_dmac = ether_addr_to_u64(lmac->mac); in bgx_set_dmac_cam_filter()
353 bgx_lmac_save_filter(lmac, cam_dmac, vf_id); in bgx_set_dmac_cam_filter()
360 struct lmac *lmac = NULL; in bgx_set_xcast_mode() local
367 lmac = &bgx->lmac[lmacid]; in bgx_set_xcast_mode()
383 for (i = 0; i < lmac->dmacs_cfg; i++) in bgx_set_xcast_mode()
385 lmac->dmacs[i].dmac, i); in bgx_set_xcast_mode()
398 bgx_lmac_remove_filters(&bgx->lmac[lmacid], vf_id); in bgx_reset_xcast_mode()
408 struct lmac *lmac; in bgx_lmac_rx_tx_enable() local
413 lmac = &bgx->lmac[lmacid]; in bgx_lmac_rx_tx_enable()
423 xcv_setup_link(enable ? lmac->link_up : 0, lmac->last_speed); in bgx_lmac_rx_tx_enable()
431 struct lmac *lmac; in bgx_config_timestamping() local
437 lmac = &bgx->lmac[lmacid]; in bgx_config_timestamping()
439 if (lmac->lmac_type == BGX_MODE_SGMII || in bgx_config_timestamping()
440 lmac->lmac_type == BGX_MODE_QSGMII || in bgx_config_timestamping()
441 lmac->lmac_type == BGX_MODE_RGMII) in bgx_config_timestamping()
460 struct lmac *lmac; in bgx_lmac_get_pfc() local
465 lmac = &bgx->lmac[lmacid]; in bgx_lmac_get_pfc()
466 if (lmac->is_sgmii) in bgx_lmac_get_pfc()
480 struct lmac *lmac; in bgx_lmac_set_pfc() local
485 lmac = &bgx->lmac[lmacid]; in bgx_lmac_set_pfc()
486 if (lmac->is_sgmii) in bgx_lmac_set_pfc()
497 static void bgx_sgmii_change_link_state(struct lmac *lmac) in bgx_sgmii_change_link_state() argument
499 struct bgx *bgx = lmac->bgx; in bgx_sgmii_change_link_state()
505 cmr_cfg = bgx_reg_read(bgx, lmac->lmacid, BGX_CMRX_CFG); in bgx_sgmii_change_link_state()
509 bgx_reg_write(bgx, lmac->lmacid, BGX_CMRX_CFG, cmr_cfg); in bgx_sgmii_change_link_state()
512 if (bgx_poll_reg(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG, in bgx_sgmii_change_link_state()
515 bgx->bgx_id, lmac->lmacid); in bgx_sgmii_change_link_state()
520 if (bgx_poll_reg(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG, in bgx_sgmii_change_link_state()
523 bgx->bgx_id, lmac->lmacid); in bgx_sgmii_change_link_state()
527 port_cfg = bgx_reg_read(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG); in bgx_sgmii_change_link_state()
528 misc_ctl = bgx_reg_read(bgx, lmac->lmacid, BGX_GMP_PCS_MISCX_CTL); in bgx_sgmii_change_link_state()
530 if (lmac->link_up) { in bgx_sgmii_change_link_state()
533 port_cfg |= (lmac->last_duplex << 2); in bgx_sgmii_change_link_state()
538 switch (lmac->last_speed) { in bgx_sgmii_change_link_state()
545 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_SLOT, 64); in bgx_sgmii_change_link_state()
546 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_BURST, 0); in bgx_sgmii_change_link_state()
554 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_SLOT, 64); in bgx_sgmii_change_link_state()
555 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_BURST, 0); in bgx_sgmii_change_link_state()
563 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_SLOT, 512); in bgx_sgmii_change_link_state()
564 if (lmac->last_duplex) in bgx_sgmii_change_link_state()
565 bgx_reg_write(bgx, lmac->lmacid, in bgx_sgmii_change_link_state()
568 bgx_reg_write(bgx, lmac->lmacid, in bgx_sgmii_change_link_state()
574 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_PCS_MISCX_CTL, misc_ctl); in bgx_sgmii_change_link_state()
575 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG, port_cfg); in bgx_sgmii_change_link_state()
579 bgx_reg_write(bgx, lmac->lmacid, BGX_CMRX_CFG, cmr_cfg); in bgx_sgmii_change_link_state()
582 xcv_setup_link(lmac->link_up, lmac->last_speed); in bgx_sgmii_change_link_state()
587 struct lmac *lmac = container_of(netdev, struct lmac, netdev); in bgx_lmac_handler() local
591 if (!lmac) in bgx_lmac_handler()
594 phydev = lmac->phydev; in bgx_lmac_handler()
596 if (!phydev->link && lmac->last_link) in bgx_lmac_handler()
600 (lmac->last_duplex != phydev->duplex || in bgx_lmac_handler()
601 lmac->last_link != phydev->link || in bgx_lmac_handler()
602 lmac->last_speed != phydev->speed)) { in bgx_lmac_handler()
606 lmac->last_link = phydev->link; in bgx_lmac_handler()
607 lmac->last_speed = phydev->speed; in bgx_lmac_handler()
608 lmac->last_duplex = phydev->duplex; in bgx_lmac_handler()
614 lmac->link_up = true; in bgx_lmac_handler()
616 lmac->link_up = false; in bgx_lmac_handler()
618 if (lmac->is_sgmii) in bgx_lmac_handler()
619 bgx_sgmii_change_link_state(lmac); in bgx_lmac_handler()
621 bgx_xaui_check_link(lmac); in bgx_lmac_handler()
624 u64 bgx_get_rx_stats(int node, int bgx_idx, int lmac, int idx) in bgx_get_rx_stats() argument
633 lmac = 0; in bgx_get_rx_stats()
634 return bgx_reg_read(bgx, lmac, BGX_CMRX_RX_STAT0 + (idx * 8)); in bgx_get_rx_stats()
638 u64 bgx_get_tx_stats(int node, int bgx_idx, int lmac, int idx) in bgx_get_tx_stats() argument
646 return bgx_reg_read(bgx, lmac, BGX_CMRX_TX_STAT0 + (idx * 8)); in bgx_get_tx_stats()
655 struct lmac *lmac; in bgx_lmac_internal_loopback() local
662 lmac = &bgx->lmac[lmac_idx]; in bgx_lmac_internal_loopback()
663 if (lmac->is_sgmii) { in bgx_lmac_internal_loopback()
681 static int bgx_lmac_sgmii_init(struct bgx *bgx, struct lmac *lmac) in bgx_lmac_sgmii_init() argument
683 int lmacid = lmac->lmacid; in bgx_lmac_sgmii_init()
710 if (lmac->phydev) { in bgx_lmac_sgmii_init()
718 lmac->autoneg = true; in bgx_lmac_sgmii_init()
722 if (lmac->lmac_type == BGX_MODE_QSGMII) { in bgx_lmac_sgmii_init()
730 if ((lmac->lmac_type == BGX_MODE_SGMII) && lmac->phydev) { in bgx_lmac_sgmii_init()
741 static int bgx_lmac_xaui_init(struct bgx *bgx, struct lmac *lmac) in bgx_lmac_xaui_init() argument
744 int lmacid = lmac->lmacid; in bgx_lmac_xaui_init()
760 if (lmac->lmac_type == BGX_MODE_RXAUI) in bgx_lmac_xaui_init()
777 if (lmac->use_training) { in bgx_lmac_xaui_init()
800 if (lmac->lmac_type == BGX_MODE_10G_KR) in bgx_lmac_xaui_init()
802 else if (lmac->lmac_type == BGX_MODE_40G_KR) in bgx_lmac_xaui_init()
845 static int bgx_xaui_check_link(struct lmac *lmac) in bgx_xaui_check_link() argument
847 struct bgx *bgx = lmac->bgx; in bgx_xaui_check_link()
848 int lmacid = lmac->lmacid; in bgx_xaui_check_link()
849 int lmac_type = lmac->lmac_type; in bgx_xaui_check_link()
852 if (lmac->use_training) { in bgx_xaui_check_link()
893 if (lmac->use_training) { in bgx_xaui_check_link()
931 bgx_lmac_xaui_init(bgx, lmac); in bgx_xaui_check_link()
936 static void bgx_poll_for_sgmii_link(struct lmac *lmac) in bgx_poll_for_sgmii_link() argument
941 pcs_link = bgx_reg_read(lmac->bgx, lmac->lmacid, in bgx_poll_for_sgmii_link()
946 pcs_link = bgx_reg_read(lmac->bgx, lmac->lmacid, in bgx_poll_for_sgmii_link()
949 if (bgx_poll_reg(lmac->bgx, lmac->lmacid, BGX_GMP_PCS_MRX_STATUS, in bgx_poll_for_sgmii_link()
951 lmac->link_up = false; in bgx_poll_for_sgmii_link()
952 lmac->last_speed = SPEED_UNKNOWN; in bgx_poll_for_sgmii_link()
953 lmac->last_duplex = DUPLEX_UNKNOWN; in bgx_poll_for_sgmii_link()
957 lmac->link_up = ((pcs_link & PCS_MRX_STATUS_LINK) != 0) ? true : false; in bgx_poll_for_sgmii_link()
958 an_result = bgx_reg_read(lmac->bgx, lmac->lmacid, in bgx_poll_for_sgmii_link()
962 lmac->last_duplex = (an_result >> 1) & 0x1; in bgx_poll_for_sgmii_link()
965 lmac->last_speed = 10; in bgx_poll_for_sgmii_link()
968 lmac->last_speed = 100; in bgx_poll_for_sgmii_link()
971 lmac->last_speed = 1000; in bgx_poll_for_sgmii_link()
974 lmac->link_up = false; in bgx_poll_for_sgmii_link()
975 lmac->last_speed = SPEED_UNKNOWN; in bgx_poll_for_sgmii_link()
976 lmac->last_duplex = DUPLEX_UNKNOWN; in bgx_poll_for_sgmii_link()
982 if (lmac->last_link != lmac->link_up) { in bgx_poll_for_sgmii_link()
983 if (lmac->link_up) in bgx_poll_for_sgmii_link()
984 bgx_sgmii_change_link_state(lmac); in bgx_poll_for_sgmii_link()
985 lmac->last_link = lmac->link_up; in bgx_poll_for_sgmii_link()
988 queue_delayed_work(lmac->check_link, &lmac->dwork, HZ * 3); in bgx_poll_for_sgmii_link()
993 struct lmac *lmac; in bgx_poll_for_link() local
996 lmac = container_of(work, struct lmac, dwork.work); in bgx_poll_for_link()
997 if (lmac->is_sgmii) { in bgx_poll_for_link()
998 bgx_poll_for_sgmii_link(lmac); in bgx_poll_for_link()
1003 bgx_reg_modify(lmac->bgx, lmac->lmacid, in bgx_poll_for_link()
1005 bgx_poll_reg(lmac->bgx, lmac->lmacid, BGX_SPUX_STATUS1, in bgx_poll_for_link()
1008 spu_link = bgx_reg_read(lmac->bgx, lmac->lmacid, BGX_SPUX_STATUS1); in bgx_poll_for_link()
1009 smu_link = bgx_reg_read(lmac->bgx, lmac->lmacid, BGX_SMUX_RX_CTL); in bgx_poll_for_link()
1013 lmac->link_up = 1; in bgx_poll_for_link()
1014 if (lmac->lmac_type == BGX_MODE_XLAUI) in bgx_poll_for_link()
1015 lmac->last_speed = 40000; in bgx_poll_for_link()
1017 lmac->last_speed = 10000; in bgx_poll_for_link()
1018 lmac->last_duplex = 1; in bgx_poll_for_link()
1020 lmac->link_up = 0; in bgx_poll_for_link()
1021 lmac->last_speed = SPEED_UNKNOWN; in bgx_poll_for_link()
1022 lmac->last_duplex = DUPLEX_UNKNOWN; in bgx_poll_for_link()
1025 if (lmac->last_link != lmac->link_up) { in bgx_poll_for_link()
1026 if (lmac->link_up) { in bgx_poll_for_link()
1027 if (bgx_xaui_check_link(lmac)) { in bgx_poll_for_link()
1029 lmac->link_up = 0; in bgx_poll_for_link()
1030 lmac->last_speed = SPEED_UNKNOWN; in bgx_poll_for_link()
1031 lmac->last_duplex = DUPLEX_UNKNOWN; in bgx_poll_for_link()
1034 lmac->last_link = lmac->link_up; in bgx_poll_for_link()
1037 queue_delayed_work(lmac->check_link, &lmac->dwork, HZ * 2); in bgx_poll_for_link()
1052 struct lmac *lmac; in bgx_lmac_enable() local
1055 lmac = &bgx->lmac[lmacid]; in bgx_lmac_enable()
1056 lmac->bgx = bgx; in bgx_lmac_enable()
1058 if ((lmac->lmac_type == BGX_MODE_SGMII) || in bgx_lmac_enable()
1059 (lmac->lmac_type == BGX_MODE_QSGMII) || in bgx_lmac_enable()
1060 (lmac->lmac_type == BGX_MODE_RGMII)) { in bgx_lmac_enable()
1061 lmac->is_sgmii = 1; in bgx_lmac_enable()
1062 if (bgx_lmac_sgmii_init(bgx, lmac)) in bgx_lmac_enable()
1065 lmac->is_sgmii = 0; in bgx_lmac_enable()
1066 if (bgx_lmac_xaui_init(bgx, lmac)) in bgx_lmac_enable()
1070 if (lmac->is_sgmii) { in bgx_lmac_enable()
1083 lmac->dmacs_count = (RX_DMAC_COUNT / bgx->lmac_count); in bgx_lmac_enable()
1084 lmac->dmacs = kcalloc(lmac->dmacs_count, sizeof(*lmac->dmacs), in bgx_lmac_enable()
1086 if (!lmac->dmacs) in bgx_lmac_enable()
1095 if ((lmac->lmac_type != BGX_MODE_XFI) && in bgx_lmac_enable()
1096 (lmac->lmac_type != BGX_MODE_XLAUI) && in bgx_lmac_enable()
1097 (lmac->lmac_type != BGX_MODE_40G_KR) && in bgx_lmac_enable()
1098 (lmac->lmac_type != BGX_MODE_10G_KR)) { in bgx_lmac_enable()
1099 if (!lmac->phydev) { in bgx_lmac_enable()
1100 if (lmac->autoneg) { in bgx_lmac_enable()
1107 lmac->link_up = true; in bgx_lmac_enable()
1108 lmac->last_speed = 1000; in bgx_lmac_enable()
1109 lmac->last_duplex = 1; in bgx_lmac_enable()
1110 bgx_sgmii_change_link_state(lmac); in bgx_lmac_enable()
1114 lmac->phydev->dev_flags = 0; in bgx_lmac_enable()
1116 if (phy_connect_direct(&lmac->netdev, lmac->phydev, in bgx_lmac_enable()
1118 phy_interface_mode(lmac->lmac_type))) in bgx_lmac_enable()
1121 phy_start_aneg(lmac->phydev); in bgx_lmac_enable()
1126 lmac->check_link = alloc_workqueue("check_link", WQ_UNBOUND | in bgx_lmac_enable()
1128 if (!lmac->check_link) in bgx_lmac_enable()
1130 INIT_DELAYED_WORK(&lmac->dwork, bgx_poll_for_link); in bgx_lmac_enable()
1131 queue_delayed_work(lmac->check_link, &lmac->dwork, 0); in bgx_lmac_enable()
1138 struct lmac *lmac; in bgx_lmac_disable() local
1141 lmac = &bgx->lmac[lmacid]; in bgx_lmac_disable()
1142 if (lmac->check_link) { in bgx_lmac_disable()
1144 cancel_delayed_work_sync(&lmac->dwork); in bgx_lmac_disable()
1145 destroy_workqueue(lmac->check_link); in bgx_lmac_disable()
1163 if (!lmac->is_sgmii) in bgx_lmac_disable()
1176 kfree(lmac->dmacs); in bgx_lmac_disable()
1178 if ((lmac->lmac_type != BGX_MODE_XFI) && in bgx_lmac_disable()
1179 (lmac->lmac_type != BGX_MODE_XLAUI) && in bgx_lmac_disable()
1180 (lmac->lmac_type != BGX_MODE_40G_KR) && in bgx_lmac_disable()
1181 (lmac->lmac_type != BGX_MODE_10G_KR) && lmac->phydev) in bgx_lmac_disable()
1182 phy_disconnect(lmac->phydev); in bgx_lmac_disable()
1184 lmac->phydev = NULL; in bgx_lmac_disable()
1190 struct lmac *lmac; in bgx_init_hw() local
1198 lmac = &bgx->lmac[i]; in bgx_init_hw()
1200 (lmac->lmac_type << 8) | lmac->lane_to_sds); in bgx_init_hw()
1201 bgx->lmac[i].lmacid_bd = lmac_count; in bgx_init_hw()
1223 static u8 bgx_get_lane2sds_cfg(struct bgx *bgx, struct lmac *lmac) in bgx_get_lane2sds_cfg() argument
1225 return (u8)(bgx_reg_read(bgx, lmac->lmacid, BGX_CMRX_CFG) & 0xFF); in bgx_get_lane2sds_cfg()
1231 struct lmac *lmac; in bgx_print_qlm_mode() local
1237 lmac = &bgx->lmac[lmacid]; in bgx_print_qlm_mode()
1243 switch (lmac->lmac_type) { in bgx_print_qlm_mode()
1254 if (!lmac->use_training) in bgx_print_qlm_mode()
1260 if (!lmac->use_training) in bgx_print_qlm_mode()
1277 static void lmac_set_lane2sds(struct bgx *bgx, struct lmac *lmac) in lmac_set_lane2sds() argument
1279 switch (lmac->lmac_type) { in lmac_set_lane2sds()
1282 lmac->lane_to_sds = lmac->lmacid; in lmac_set_lane2sds()
1287 lmac->lane_to_sds = 0xE4; in lmac_set_lane2sds()
1290 lmac->lane_to_sds = (lmac->lmacid) ? 0xE : 0x4; in lmac_set_lane2sds()
1298 lmac->lane_to_sds = bgx_get_lane2sds_cfg(bgx, lmac); in lmac_set_lane2sds()
1301 lmac->lane_to_sds = 0; in lmac_set_lane2sds()
1306 static void lmac_set_training(struct bgx *bgx, struct lmac *lmac, int lmacid) in lmac_set_training() argument
1308 if ((lmac->lmac_type != BGX_MODE_10G_KR) && in lmac_set_training()
1309 (lmac->lmac_type != BGX_MODE_40G_KR)) { in lmac_set_training()
1310 lmac->use_training = 0; in lmac_set_training()
1314 lmac->use_training = bgx_reg_read(bgx, lmacid, BGX_SPUX_BR_PMD_CRTL) & in lmac_set_training()
1320 struct lmac *lmac; in bgx_set_lmac_config() local
1325 lmac = &bgx->lmac[idx]; in bgx_set_lmac_config()
1332 lmac->lmac_type = (cmr_cfg >> 8) & 0x07; in bgx_set_lmac_config()
1334 lmac->lmac_type = BGX_MODE_RGMII; in bgx_set_lmac_config()
1335 lmac_set_training(bgx, lmac, 0); in bgx_set_lmac_config()
1336 lmac_set_lane2sds(bgx, lmac); in bgx_set_lmac_config()
1350 lmac->lmac_type = BGX_MODE_INVALID; in bgx_set_lmac_config()
1352 lmac->lmac_type = lmac_type; in bgx_set_lmac_config()
1353 lmac->lane_to_sds = lane_to_sds; in bgx_set_lmac_config()
1354 lmac_set_training(bgx, lmac, lmac->lmacid); in bgx_set_lmac_config()
1359 struct lmac *lmac; in bgx_get_qlm_mode() local
1364 lmac = &bgx->lmac[idx]; in bgx_get_qlm_mode()
1365 lmac->lmacid = idx; in bgx_get_qlm_mode()
1366 lmac->lmac_type = BGX_MODE_INVALID; in bgx_get_qlm_mode()
1367 lmac->use_training = false; in bgx_get_qlm_mode()
1418 acpi_get_mac_address(dev, adev, bgx->lmac[bgx->acpi_lmac_idx].mac); in bgx_acpi_register_phy()
1420 SET_NETDEV_DEV(&bgx->lmac[bgx->acpi_lmac_idx].netdev, dev); in bgx_acpi_register_phy()
1422 bgx->lmac[bgx->acpi_lmac_idx].lmacid = bgx->acpi_lmac_idx; in bgx_acpi_register_phy()
1472 u8 lmac = 0; in bgx_init_of_phy() local
1488 ether_addr_copy(bgx->lmac[lmac].mac, mac); in bgx_init_of_phy()
1490 SET_NETDEV_DEV(&bgx->lmac[lmac].netdev, &bgx->pdev->dev); in bgx_init_of_phy()
1491 bgx->lmac[lmac].lmacid = lmac; in bgx_init_of_phy()
1504 bgx->lmac[lmac].phydev = pd; in bgx_init_of_phy()
1507 lmac++; in bgx_init_of_phy()
1508 if (lmac == bgx->max_lmac) { in bgx_init_of_phy()
1519 while (lmac) { in bgx_init_of_phy()
1520 if (bgx->lmac[lmac].phydev) { in bgx_init_of_phy()
1521 put_device(&bgx->lmac[lmac].phydev->mdio.dev); in bgx_init_of_phy()
1522 bgx->lmac[lmac].phydev = NULL; in bgx_init_of_phy()
1524 lmac--; in bgx_init_of_phy()
1552 u8 lmac; in bgx_probe() local
1617 for (lmac = 0; lmac < bgx->lmac_count; lmac++) { in bgx_probe()
1618 err = bgx_lmac_enable(bgx, lmac); in bgx_probe()
1621 bgx->bgx_id, lmac); in bgx_probe()
1622 while (lmac) in bgx_probe()
1623 bgx_lmac_disable(bgx, --lmac); in bgx_probe()
1643 u8 lmac; in bgx_remove() local
1646 for (lmac = 0; lmac < bgx->lmac_count; lmac++) in bgx_remove()
1647 bgx_lmac_disable(bgx, lmac); in bgx_remove()