phy.c (3c1bcc8614db10803f1f57ef0295363917448cb2) | phy.c (c0ec3c2736774c69bf5c641aea7712132c0f0eba) |
---|---|
1/* Framework for configuring and reading PHY devices 2 * Based on code in sungem_phy.c and gianfar_phy.c 3 * 4 * Author: Andy Fleming 5 * 6 * Copyright (c) 2004 Freescale Semiconductor, Inc. 7 * Copyright (c) 2006, 2007 Maciej W. Rozycki 8 * --- 354 unchanged lines hidden (view full) --- 363} 364EXPORT_SYMBOL(phy_ethtool_ksettings_set); 365 366void phy_ethtool_ksettings_get(struct phy_device *phydev, 367 struct ethtool_link_ksettings *cmd) 368{ 369 linkmode_copy(cmd->link_modes.supported, phydev->supported); 370 linkmode_copy(cmd->link_modes.advertising, phydev->advertising); | 1/* Framework for configuring and reading PHY devices 2 * Based on code in sungem_phy.c and gianfar_phy.c 3 * 4 * Author: Andy Fleming 5 * 6 * Copyright (c) 2004 Freescale Semiconductor, Inc. 7 * Copyright (c) 2006, 2007 Maciej W. Rozycki 8 * --- 354 unchanged lines hidden (view full) --- 363} 364EXPORT_SYMBOL(phy_ethtool_ksettings_set); 365 366void phy_ethtool_ksettings_get(struct phy_device *phydev, 367 struct ethtool_link_ksettings *cmd) 368{ 369 linkmode_copy(cmd->link_modes.supported, phydev->supported); 370 linkmode_copy(cmd->link_modes.advertising, phydev->advertising); |
371 linkmode_copy(cmd->link_modes.lp_advertising, phydev->lp_advertising); |
|
371 | 372 |
372 ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.lp_advertising, 373 phydev->lp_advertising); 374 | |
375 cmd->base.speed = phydev->speed; 376 cmd->base.duplex = phydev->duplex; 377 if (phydev->interface == PHY_INTERFACE_MODE_MOCA) 378 cmd->base.port = PORT_BNC; 379 else 380 cmd->base.port = PORT_MII; 381 cmd->base.transceiver = phy_is_internal(phydev) ? 382 XCVR_INTERNAL : XCVR_EXTERNAL; --- 161 unchanged lines hidden (view full) --- 544 return -EIO; 545 546 mutex_lock(&phydev->lock); 547 548 if (AUTONEG_DISABLE == phydev->autoneg) 549 phy_sanitize_settings(phydev); 550 551 /* Invalidate LP advertising flags */ | 373 cmd->base.speed = phydev->speed; 374 cmd->base.duplex = phydev->duplex; 375 if (phydev->interface == PHY_INTERFACE_MODE_MOCA) 376 cmd->base.port = PORT_BNC; 377 else 378 cmd->base.port = PORT_MII; 379 cmd->base.transceiver = phy_is_internal(phydev) ? 380 XCVR_INTERNAL : XCVR_EXTERNAL; --- 161 unchanged lines hidden (view full) --- 542 return -EIO; 543 544 mutex_lock(&phydev->lock); 545 546 if (AUTONEG_DISABLE == phydev->autoneg) 547 phy_sanitize_settings(phydev); 548 549 /* Invalidate LP advertising flags */ |
552 phydev->lp_advertising = 0; | 550 linkmode_zero(phydev->lp_advertising); |
553 554 err = phy_config_aneg(phydev); 555 if (err < 0) 556 goto out_unlock; 557 558 if (phydev->state != PHY_HALTED) { 559 if (AUTONEG_ENABLE == phydev->autoneg) { 560 err = phy_check_link_status(phydev); --- 44 unchanged lines hidden (view full) --- 605 __ETHTOOL_DECLARE_LINK_MODE_MASK(adv_old); 606 __ETHTOOL_DECLARE_LINK_MODE_MASK(adv); 607 int ret; 608 609 if (phydev->autoneg != AUTONEG_ENABLE) 610 return 0; 611 612 linkmode_copy(adv_old, phydev->advertising); | 551 552 err = phy_config_aneg(phydev); 553 if (err < 0) 554 goto out_unlock; 555 556 if (phydev->state != PHY_HALTED) { 557 if (AUTONEG_ENABLE == phydev->autoneg) { 558 err = phy_check_link_status(phydev); --- 44 unchanged lines hidden (view full) --- 603 __ETHTOOL_DECLARE_LINK_MODE_MASK(adv_old); 604 __ETHTOOL_DECLARE_LINK_MODE_MASK(adv); 605 int ret; 606 607 if (phydev->autoneg != AUTONEG_ENABLE) 608 return 0; 609 610 linkmode_copy(adv_old, phydev->advertising); |
613 ethtool_convert_legacy_u32_to_link_mode(adv, phydev->lp_advertising); | 611 linkmode_copy(adv, phydev->lp_advertising); |
614 linkmode_and(adv, adv, phydev->supported); 615 616 if (linkmode_test_bit(ETHTOOL_LINK_MODE_10baseT_Half_BIT, adv) || 617 linkmode_test_bit(ETHTOOL_LINK_MODE_10baseT_Full_BIT, adv)) { 618 linkmode_clear_bit(ETHTOOL_LINK_MODE_100baseT_Half_BIT, 619 phydev->advertising); 620 linkmode_clear_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT, 621 phydev->advertising); --- 638 unchanged lines hidden --- | 612 linkmode_and(adv, adv, phydev->supported); 613 614 if (linkmode_test_bit(ETHTOOL_LINK_MODE_10baseT_Half_BIT, adv) || 615 linkmode_test_bit(ETHTOOL_LINK_MODE_10baseT_Full_BIT, adv)) { 616 linkmode_clear_bit(ETHTOOL_LINK_MODE_100baseT_Half_BIT, 617 phydev->advertising); 618 linkmode_clear_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT, 619 phydev->advertising); --- 638 unchanged lines hidden --- |