Lines Matching defs:ph

305 	phy_handle_t	*ph;
308 ph = mh->m_phy;
309 ph->phy_cap_pause = mh->m_cap_pause = pauseable;
310 ph->phy_cap_asmpause = mh->m_cap_asmpause = asymetric;
439 phy_handle_t *ph = mh->m_phy;
441 return (ph->phy_speed);
447 phy_handle_t *ph = mh->m_phy;
449 return (ph->phy_duplex);
455 phy_handle_t *ph = mh->m_phy;
457 return (ph->phy_link);
463 phy_handle_t *ph = mh->m_phy;
465 return (ph->phy_flowctrl);
471 phy_handle_t *ph = mh->m_phy;
480 if (ph->phy_cap_1000_fdx ||
481 ph->phy_cap_100_fdx ||
482 ph->phy_cap_10_fdx) {
491 if (ph->phy_cap_1000_fdx) {
499 if (ph->phy_cap_100_fdx) {
507 if (ph->phy_cap_10_fdx) {
525 phy_handle_t *ph = mh->m_phy;
527 return (ph->phy_loopback);
533 phy_handle_t *ph;
537 ph = mh->m_phy;
539 if ((!mh->m_started) || (!ph->phy_present) ||
544 ph->phy_loopback = loop;
558 phy_handle_t *ph = mh->m_phy;
560 return (ph->phy_id);
655 phy_handle_t *ph;
665 ph = mh->m_phy;
669 *(uint8_t *)val = ph->phy_adv_##VAR; \
673 *(uint8_t *)val = ph->phy_en_##VAR; \
679 bcopy(&ph->phy_duplex, val, sizeof (link_duplex_t));
683 uint64_t speed = ph->phy_speed * 1000000ull;
690 *(uint8_t *)val = ph->phy_adv_aneg;
695 bcopy(&ph->phy_flowctrl, val, sizeof (link_flowctrl_t));
720 phy_handle_t *ph;
726 ph = mh->m_phy;
735 mac_prop_info_set_default_uint8(prh, ph->phy_cap_aneg);
741 mac_prop_info_set_default_uint8(prh, ph->phy_cap_##VAR); \
745 if (!ph->phy_cap_##VAR) \
747 mac_prop_info_set_default_uint8(prh, ph->phy_cap_##VAR); \
766 phy_handle_t *ph;
779 ph = mh->m_phy;
782 if (ph->phy_loopback != PHY_LB_NONE) {
799 capp = &ph->phy_cap_1000_fdx;
800 advp = &ph->phy_en_1000_fdx;
804 capp = &ph->phy_cap_1000_hdx;
805 advp = &ph->phy_en_1000_hdx;
809 capp = &ph->phy_cap_100_fdx;
810 advp = &ph->phy_en_100_fdx;
814 capp = &ph->phy_cap_100_hdx;
815 advp = &ph->phy_en_100_hdx;
819 capp = &ph->phy_cap_100_t4;
820 advp = &ph->phy_en_100_t4;
824 capp = &ph->phy_cap_10_fdx;
825 advp = &ph->phy_en_10_fdx;
829 capp = &ph->phy_cap_10_hdx;
830 advp = &ph->phy_en_10_hdx;
834 capp = &ph->phy_cap_aneg;
835 advp = &ph->phy_en_aneg;
845 chg = fc == ph->phy_en_flowctrl ? B_FALSE : B_TRUE;
848 ph->phy_en_pause = B_FALSE;
849 ph->phy_en_asmpause = B_FALSE;
850 ph->phy_en_flowctrl = fc;
861 if (ph->phy_cap_pause) {
862 ph->phy_en_pause = B_TRUE;
863 ph->phy_en_asmpause = B_TRUE;
864 ph->phy_en_flowctrl = fc;
875 if (ph->phy_cap_asmpause) {
876 ph->phy_en_pause = B_FALSE;
877 ph->phy_en_flowctrl = fc;
878 ph->phy_en_asmpause = B_TRUE;
922 phy_handle_t *ph;
927 ph = mh->m_phy;
931 *val = ph->phy_speed * 1000000ull;
934 *val = ph->phy_duplex;
937 *val = !!(ph->phy_adv_aneg && ph->phy_lp_aneg);
940 *val = ph->phy_id;
943 *val = ph->phy_type;
946 *val = ph->phy_addr;
949 *val = ph->phy_adv_asmpause && ph->phy_lp_asmpause &&
950 ph->phy_adv_pause != ph->phy_lp_pause;
953 *val = (ph->phy_flowctrl == LINK_FLOWCTRL_BI) ||
954 (ph->phy_flowctrl == LINK_FLOWCTRL_RX);
957 *val = ph->phy_cap_1000_fdx;
960 *val = ph->phy_cap_1000_hdx;
963 *val = ph->phy_cap_100_fdx;
966 *val = ph->phy_cap_100_hdx;
969 *val = ph->phy_cap_10_fdx;
972 *val = ph->phy_cap_10_hdx;
975 *val = ph->phy_cap_100_t4;
978 *val = ph->phy_cap_aneg;
981 *val = ph->phy_cap_pause;
984 *val = ph->phy_cap_asmpause;
988 *val = ph->phy_lp_1000_fdx;
991 *val = ph->phy_lp_1000_hdx;
994 *val = ph->phy_lp_100_fdx;
997 *val = ph->phy_lp_100_hdx;
1000 *val = ph->phy_lp_10_fdx;
1003 *val = ph->phy_lp_10_hdx;
1006 *val = ph->phy_lp_100_t4;
1009 *val = ph->phy_lp_aneg;
1012 *val = ph->phy_lp_pause;
1015 *val = ph->phy_lp_asmpause;
1019 *val = ph->phy_adv_1000_fdx;
1022 *val = ph->phy_adv_1000_hdx;
1025 *val = ph->phy_adv_100_fdx;
1028 *val = ph->phy_adv_100_hdx;
1031 *val = ph->phy_adv_10_fdx;
1034 *val = ph->phy_adv_10_hdx;
1037 *val = ph->phy_adv_100_t4;
1040 *val = ph->phy_adv_aneg;
1043 *val = ph->phy_adv_pause;
1046 *val = ph->phy_adv_asmpause;
1063 phy_read(phy_handle_t *ph, uint8_t reg)
1065 mii_handle_t mh = ph->phy_mii;
1067 return ((*mh->m_ops.mii_read)(mh->m_private, ph->phy_addr, reg));
1071 phy_write(phy_handle_t *ph, uint8_t reg, uint16_t val)
1073 mii_handle_t mh = ph->phy_mii;
1075 (*mh->m_ops.mii_write)(mh->m_private, ph->phy_addr, reg, val);
1079 phy_reset(phy_handle_t *ph)
1081 ASSERT(mutex_owned(&ph->phy_mii->m_lock));
1086 PHY_CLR(ph, MII_CONTROL,
1092 PHY_SET(ph, MII_CONTROL, MII_CONTROL_RESET);
1111 if ((phy_read(ph, MII_CONTROL) & MII_CONTROL_RESET) == 0) {
1122 phy_stop(phy_handle_t *ph)
1124 phy_write(ph, MII_CONTROL, MII_CONTROL_ISOLATE);
1130 phy_loop(phy_handle_t *ph)
1134 ASSERT(mutex_owned(&ph->phy_mii->m_lock));
1139 ph->phy_adv_aneg = B_FALSE;
1140 ph->phy_adv_1000_fdx = B_FALSE;
1141 ph->phy_adv_1000_hdx = B_FALSE;
1142 ph->phy_adv_100_fdx = B_FALSE;
1143 ph->phy_adv_100_t4 = B_FALSE;
1144 ph->phy_adv_100_hdx = B_FALSE;
1145 ph->phy_adv_10_fdx = B_FALSE;
1146 ph->phy_adv_10_hdx = B_FALSE;
1147 ph->phy_adv_pause = B_FALSE;
1148 ph->phy_adv_asmpause = B_FALSE;
1153 switch (ph->phy_loopback) {
1161 ph->phy_duplex = LINK_DUPLEX_FULL;
1162 if (ph->phy_cap_1000_fdx) {
1164 ph->phy_speed = 1000;
1165 } else if (ph->phy_cap_100_fdx) {
1167 ph->phy_speed = 100;
1168 } else if (ph->phy_cap_10_fdx) {
1170 ph->phy_speed = 10;
1176 ph->phy_speed = 10;
1177 ph->phy_duplex = LINK_DUPLEX_FULL;
1182 ph->phy_speed = 100;
1183 ph->phy_duplex = LINK_DUPLEX_FULL;
1188 ph->phy_speed = 1000;
1189 ph->phy_duplex = LINK_DUPLEX_FULL;
1193 ph->phy_link = LINK_STATE_UP; /* force up for loopback */
1194 ph->phy_flowctrl = LINK_FLOWCTRL_NONE;
1196 switch (ph->phy_type) {
1200 phy_write(ph, MII_MSCONTROL, gtcr);
1204 phy_write(ph, MII_CONTROL, bmcr);
1210 phy_start(phy_handle_t *ph)
1213 ASSERT(mutex_owned(&ph->phy_mii->m_lock));
1215 ASSERT(ph->phy_loopback == PHY_LB_NONE);
1221 ph->phy_adv_aneg = ph->phy_en_aneg;
1222 ph->phy_adv_1000_fdx = ph->phy_en_1000_fdx;
1223 ph->phy_adv_1000_hdx = ph->phy_en_1000_hdx;
1224 ph->phy_adv_100_fdx = ph->phy_en_100_fdx;
1225 ph->phy_adv_100_t4 = ph->phy_en_100_t4;
1226 ph->phy_adv_100_hdx = ph->phy_en_100_hdx;
1227 ph->phy_adv_10_fdx = ph->phy_en_10_fdx;
1228 ph->phy_adv_10_hdx = ph->phy_en_10_hdx;
1229 ph->phy_adv_pause = ph->phy_en_pause;
1230 ph->phy_adv_asmpause = ph->phy_en_asmpause;
1236 if (!ph->phy_cap_##CAP) \
1237 ph->phy_adv_##CAP = 0
1255 if ((!ph->phy_adv_1000_fdx) &&
1256 (!ph->phy_adv_1000_hdx) &&
1257 (!ph->phy_adv_100_t4) &&
1258 (!ph->phy_adv_100_fdx) &&
1259 (!ph->phy_adv_100_hdx) &&
1260 (!ph->phy_adv_10_fdx) &&
1261 (!ph->phy_adv_10_hdx)) {
1263 phy_warn(ph,
1266 PHY_SET(ph, MII_CONTROL, MII_CONTROL_PWRDN);
1268 ph->phy_link = LINK_STATE_DOWN;
1275 if (ph->phy_adv_aneg) {
1279 if ((ph->phy_adv_1000_fdx) || (ph->phy_adv_1000_hdx)) {
1282 } else if (ph->phy_adv_100_fdx || ph->phy_adv_100_hdx ||
1283 ph->phy_adv_100_t4) {
1287 if (ph->phy_adv_1000_fdx || ph->phy_adv_100_fdx || ph->phy_adv_10_fdx) {
1291 if (ph->phy_type == XCVR_1000X) {
1294 if (ph->phy_adv_1000_fdx) {
1297 if (ph->phy_adv_1000_hdx) {
1300 if (ph->phy_adv_pause) {
1303 if (ph->phy_adv_asmpause) {
1307 } else if (ph->phy_type == XCVR_100T2) {
1310 if (ph->phy_adv_100_fdx) {
1313 if (ph->phy_adv_100_hdx) {
1321 if (ph->phy_adv_1000_fdx) {
1324 if (ph->phy_adv_1000_hdx) {
1327 if (ph->phy_adv_100_fdx) {
1330 if (ph->phy_adv_100_hdx) {
1333 if (ph->phy_adv_100_t4) {
1336 if (ph->phy_adv_10_fdx) {
1339 if (ph->phy_adv_10_hdx) {
1342 if (ph->phy_adv_pause) {
1345 if (ph->phy_adv_asmpause) {
1350 ph->phy_link = LINK_STATE_DOWN;
1351 ph->phy_duplex = LINK_DUPLEX_UNKNOWN;
1352 ph->phy_speed = 0;
1354 phy_write(ph, MII_AN_ADVERT, anar);
1355 phy_write(ph, MII_CONTROL, bmcr & ~(MII_CONTROL_RSAN));
1357 switch (ph->phy_type) {
1361 phy_write(ph, MII_MSCONTROL, gtcr);
1368 phy_write(ph, MII_CONTROL, bmcr);
1375 phy_check(phy_handle_t *ph)
1380 ASSERT(mutex_owned(&ph->phy_mii->m_lock));
1383 status = phy_read(ph, MII_STATUS);
1384 control = phy_read(ph, MII_CONTROL);
1387 lpar = phy_read(ph, MII_AN_LPABLE);
1388 anexp = phy_read(ph, MII_AN_EXPANSION);
1399 if ((status != phy_read(ph, MII_STATUS)) && debounces) {
1410 ph->phy_speed = 0;
1411 ph->phy_duplex = LINK_DUPLEX_UNKNOWN;
1412 ph->phy_link = LINK_STATE_UNKNOWN;
1413 ph->phy_present = B_FALSE;
1418 if ((ph->phy_loopback != PHY_LB_INT_PHY) &&
1420 ph->phy_speed = 0;
1421 ph->phy_duplex = LINK_DUPLEX_UNKNOWN;
1422 ph->phy_link = LINK_STATE_DOWN;
1426 ph->phy_link = LINK_STATE_UP;
1430 ph->phy_lp_aneg = B_FALSE;
1431 ph->phy_lp_10_hdx = B_FALSE;
1432 ph->phy_lp_10_fdx = B_FALSE;
1433 ph->phy_lp_100_t4 = B_FALSE;
1434 ph->phy_lp_100_hdx = B_FALSE;
1435 ph->phy_lp_100_fdx = B_FALSE;
1436 ph->phy_lp_1000_hdx = B_FALSE;
1437 ph->phy_lp_1000_fdx = B_FALSE;
1445 ph->phy_speed = 1000;
1447 ph->phy_speed = 100;
1449 ph->phy_speed = 10;
1451 ph->phy_duplex = control & MII_CONTROL_FDUPLEX ?
1457 if (ph->phy_type == XCVR_1000X) {
1459 ph->phy_lp_10_hdx = B_FALSE;
1460 ph->phy_lp_10_fdx = B_FALSE;
1461 ph->phy_lp_100_t4 = B_FALSE;
1462 ph->phy_lp_100_hdx = B_FALSE;
1463 ph->phy_lp_100_fdx = B_FALSE;
1466 ph->phy_lp_aneg = B_TRUE;
1467 ph->phy_lp_1000_fdx = !!(lpar & MII_ABILITY_X_FD);
1468 ph->phy_lp_1000_hdx = !!(lpar & MII_ABILITY_X_HD);
1469 ph->phy_lp_pause = !!(lpar & MII_ABILITY_X_PAUSE);
1470 ph->phy_lp_asmpause = !!(lpar & MII_ABILITY_X_ASMPAUSE);
1472 } else if (ph->phy_type == XCVR_100T2) {
1473 ph->phy_lp_10_hdx = B_FALSE;
1474 ph->phy_lp_10_fdx = B_FALSE;
1475 ph->phy_lp_100_t4 = B_FALSE;
1476 ph->phy_lp_1000_hdx = B_FALSE;
1477 ph->phy_lp_1000_fdx = B_FALSE;
1478 ph->phy_lp_pause = B_FALSE;
1479 ph->phy_lp_asmpause = B_FALSE;
1482 ph->phy_lp_aneg = B_TRUE;
1483 ph->phy_lp_100_fdx = !!(lpar & MII_ABILITY_T2_FD);
1484 ph->phy_lp_100_hdx = !!(lpar & MII_ABILITY_T2_HD);
1497 phy_warn(ph, "Parallel detection fault!");
1499 ph->phy_lp_10_hdx = B_FALSE;
1500 ph->phy_lp_10_fdx = B_FALSE;
1501 ph->phy_lp_100_t4 = B_FALSE;
1502 ph->phy_lp_100_hdx = B_FALSE;
1503 ph->phy_lp_100_fdx = B_FALSE;
1504 ph->phy_lp_1000_hdx = B_FALSE;
1505 ph->phy_lp_1000_fdx = B_FALSE;
1506 ph->phy_lp_pause = B_FALSE;
1507 ph->phy_lp_asmpause = B_FALSE;
1508 ph->phy_speed = 0;
1509 ph->phy_duplex = LINK_DUPLEX_UNKNOWN;
1513 ph->phy_lp_aneg = !!(anexp & MII_AN_EXP_LPCANAN);
1522 if ((ph->phy_type == XCVR_1000T) &
1526 msstat = phy_read(ph, MII_MSSTATUS);
1528 ph->phy_lp_1000_hdx =
1531 ph->phy_lp_1000_fdx =
1535 ph->phy_lp_100_fdx = !!(lpar & MII_ABILITY_100BASE_TX_FD);
1536 ph->phy_lp_100_hdx = !!(lpar & MII_ABILITY_100BASE_TX);
1537 ph->phy_lp_100_t4 = !!(lpar & MII_ABILITY_100BASE_T4);
1538 ph->phy_lp_10_fdx = !!(lpar & MII_ABILITY_10BASE_T_FD);
1539 ph->phy_lp_10_hdx = !!(lpar & MII_ABILITY_10BASE_T);
1540 ph->phy_lp_pause = !!(lpar & MII_ABILITY_PAUSE);
1541 ph->phy_lp_asmpause = !!(lpar & MII_ABILITY_ASMPAUSE);
1545 if ((ph->phy_en_flowctrl == LINK_FLOWCTRL_BI) &&
1546 (ph->phy_lp_pause)) {
1547 ph->phy_flowctrl = LINK_FLOWCTRL_BI;
1548 } else if ((ph->phy_en_flowctrl == LINK_FLOWCTRL_RX) &&
1549 (ph->phy_lp_pause || ph->phy_lp_asmpause)) {
1550 ph->phy_flowctrl = LINK_FLOWCTRL_RX;
1551 } else if ((ph->phy_en_flowctrl == LINK_FLOWCTRL_TX) &&
1552 (ph->phy_lp_pause)) {
1553 ph->phy_flowctrl = LINK_FLOWCTRL_TX;
1555 ph->phy_flowctrl = LINK_FLOWCTRL_NONE;
1558 if (ph->phy_adv_1000_fdx && ph->phy_lp_1000_fdx) {
1559 ph->phy_speed = 1000;
1560 ph->phy_duplex = LINK_DUPLEX_FULL;
1562 } else if (ph->phy_adv_1000_hdx && ph->phy_lp_1000_hdx) {
1563 ph->phy_speed = 1000;
1564 ph->phy_duplex = LINK_DUPLEX_HALF;
1566 } else if (ph->phy_adv_100_fdx && ph->phy_lp_100_fdx) {
1567 ph->phy_speed = 100;
1568 ph->phy_duplex = LINK_DUPLEX_FULL;
1570 } else if (ph->phy_adv_100_t4 && ph->phy_lp_100_t4) {
1571 ph->phy_speed = 100;
1572 ph->phy_duplex = LINK_DUPLEX_HALF;
1574 } else if (ph->phy_adv_100_hdx && ph->phy_lp_100_hdx) {
1575 ph->phy_speed = 100;
1576 ph->phy_duplex = LINK_DUPLEX_HALF;
1578 } else if (ph->phy_adv_10_fdx && ph->phy_lp_10_fdx) {
1579 ph->phy_speed = 10;
1580 ph->phy_duplex = LINK_DUPLEX_FULL;
1582 } else if (ph->phy_adv_10_hdx && ph->phy_lp_10_hdx) {
1583 ph->phy_speed = 10;
1584 ph->phy_duplex = LINK_DUPLEX_HALF;
1588 phy_warn(ph, "No common abilities.");
1590 ph->phy_speed = 0;
1591 ph->phy_duplex = LINK_DUPLEX_UNKNOWN;
1598 phy_get_prop(phy_handle_t *ph, char *prop, int dflt)
1600 mii_handle_t mh = ph->phy_mii;
1606 phy_get_name(phy_handle_t *ph)
1608 mii_handle_t mh = ph->phy_mii;
1614 phy_get_driver(phy_handle_t *ph)
1616 mii_handle_t mh = ph->phy_mii;
1622 phy_warn(phy_handle_t *ph, const char *fmt, ...)
1627 (void) snprintf(buf, sizeof (buf), "%s: %s", phy_get_name(ph), fmt);
1647 _mii_probe_phy(phy_handle_t *ph)
1651 mii_handle_t mh = ph->phy_mii;
1663 ph->phy_id = 0;
1664 ph->phy_model = "PHY";
1665 ph->phy_vendor = "Unknown Vendor";
1668 bmsr = phy_read(ph, MII_STATUS);
1669 bmsr = phy_read(ph, MII_STATUS);
1671 ph->phy_present = B_FALSE;
1676 extsr = phy_read(ph, MII_EXTSTATUS);
1681 ph->phy_present = B_TRUE;
1682 ph->phy_id = ((uint32_t)phy_read(ph, MII_PHYIDH) << 16) |
1683 phy_read(ph, MII_PHYIDL);
1686 ph->phy_reset = phy_reset;
1687 ph->phy_start = phy_start;
1688 ph->phy_stop = phy_stop;
1689 ph->phy_check = phy_check;
1690 ph->phy_loop = phy_loop;
1696 ph->phy_cap_aneg = !!(bmsr & MII_STATUS_CANAUTONEG);
1697 ph->phy_cap_100_t4 = !!(bmsr & MII_STATUS_100_BASE_T4);
1698 ph->phy_cap_100_fdx = !!(bmsr & MII_STATUS_100_BASEX_FD);
1699 ph->phy_cap_100_hdx = !!(bmsr & MII_STATUS_100_BASEX);
1700 ph->phy_cap_10_fdx = !!(bmsr & MII_STATUS_10_FD);
1701 ph->phy_cap_10_hdx = !!(bmsr & MII_STATUS_10);
1702 ph->phy_cap_1000_fdx =
1704 ph->phy_cap_1000_hdx =
1706 ph->phy_cap_pause = mh->m_cap_pause;
1707 ph->phy_cap_asmpause = mh->m_cap_asmpause;
1710 ph->phy_cap_10_hdx = B_TRUE;
1711 ph->phy_type = XCVR_10;
1714 ph->phy_cap_10_fdx = B_TRUE;
1715 ph->phy_type = XCVR_10;
1718 ph->phy_cap_100_hdx = B_TRUE;
1719 ph->phy_type = XCVR_100T2;
1722 ph->phy_cap_100_fdx = B_TRUE;
1723 ph->phy_type = XCVR_100T2;
1726 ph->phy_cap_100_hdx = B_TRUE;
1727 ph->phy_type = XCVR_100T4;
1730 ph->phy_cap_100_hdx = B_TRUE;
1731 ph->phy_type = XCVR_100X;
1734 ph->phy_cap_100_fdx = B_TRUE;
1735 ph->phy_type = XCVR_100X;
1738 ph->phy_cap_1000_hdx = B_TRUE;
1739 ph->phy_type = XCVR_1000X;
1742 ph->phy_cap_1000_fdx = B_TRUE;
1743 ph->phy_type = XCVR_1000X;
1746 ph->phy_cap_1000_hdx = B_TRUE;
1747 ph->phy_type = XCVR_1000T;
1750 ph->phy_cap_1000_fdx = B_TRUE;
1751 ph->phy_type = XCVR_1000T;
1755 if ((*_phy_probes[j])(ph)) {
1761 ph->phy_en_##CAP = (mh->m_en_##CAP > 0) ? \
1762 mh->m_en_##CAP : ph->phy_cap_##CAP
1774 ph->phy_en_flowctrl = mh->m_en_flowctrl;
1775 switch (ph->phy_en_flowctrl) {
1778 ph->phy_en_pause = B_TRUE;
1779 ph->phy_en_asmpause = B_TRUE;
1782 ph->phy_en_pause = B_FALSE;
1783 ph->phy_en_asmpause = B_TRUE;
1786 ph->phy_en_pause = B_FALSE;
1787 ph->phy_en_asmpause = B_FALSE;
1799 phy_handle_t *ph;
1834 ph = &mh->m_phys[curr_addr];
1836 bzero(ph, sizeof (*ph));
1837 ph->phy_addr = curr_addr;
1838 ph->phy_mii = mh;
1840 _mii_probe_phy(ph);
1842 if (!ph->phy_present)
1855 if ((phy_read(ph, MII_STATUS) & MII_STATUS_LINKUP) &&
1856 (phy_read(ph, MII_STATUS) & MII_STATUS_LINKUP) &&
1904 phy_handle_t *ph;
1914 ph = &mh->m_phys[i];
1916 if (!ph->phy_present)
1920 if (ph == mh->m_phy)
1923 ph->phy_stop(ph);
1926 ph = mh->m_phy;
1928 ASSERT(ph->phy_present);
1933 ph->phy_link = LINK_STATE_DOWN;
1934 ph->phy_speed = 0;
1935 ph->phy_duplex = LINK_DUPLEX_UNKNOWN;
1937 if (ph->phy_reset(ph) != DDI_SUCCESS) {
1957 phy_handle_t *ph;
1961 ph = mh->m_phy;
1966 if (ph->phy_loopback == PHY_LB_NONE) {
1970 if (ph->phy_loop(ph) != DDI_SUCCESS) {
1976 mh->m_link = ph->phy_link = LINK_STATE_UP;
1985 phy_handle_t *ph;
1987 ph = mh->m_phy;
1990 ASSERT(ph->phy_present);
1991 ASSERT(ph->phy_loopback == PHY_LB_NONE);
1993 if (ph->phy_start(ph) != DDI_SUCCESS) {
2009 phy_handle_t *ph;
2011 ph = mh->m_phy;
2014 ospeed = ph->phy_speed;
2015 oduplex = ph->phy_duplex;
2016 ofctrl = ph->phy_flowctrl;
2018 ASSERT(ph->phy_present);
2020 if (ph->phy_check(ph) == DDI_FAILURE) {
2027 mh->m_link = ph->phy_link;
2031 (ph->phy_speed != ospeed) ||
2032 (ph->phy_duplex != oduplex) ||
2033 (ph->phy_flowctrl != ofctrl)) {
2044 phy_handle_t *ph;
2057 ph = mh->m_phy;
2082 ph = mh->m_phy;
2083 if (!ph->phy_present) {