mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
net: phy: Add limkmode equivalents to some of the MII ethtool helpers
Add helpers which take a linkmode rather than a u32 ethtool for advertising settings. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5f991f7bdd
commit
f954a04ea1
1 changed files with 50 additions and 0 deletions
|
@ -132,6 +132,34 @@ static inline u32 ethtool_adv_to_mii_adv_t(u32 ethadv)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* linkmode_adv_to_mii_adv_t
|
||||||
|
* @advertising: the linkmode advertisement settings
|
||||||
|
*
|
||||||
|
* A small helper function that translates linkmode advertisement
|
||||||
|
* settings to phy autonegotiation advertisements for the
|
||||||
|
* MII_ADVERTISE register.
|
||||||
|
*/
|
||||||
|
static inline u32 linkmode_adv_to_mii_adv_t(unsigned long *advertising)
|
||||||
|
{
|
||||||
|
u32 result = 0;
|
||||||
|
|
||||||
|
if (linkmode_test_bit(ETHTOOL_LINK_MODE_10baseT_Half_BIT, advertising))
|
||||||
|
result |= ADVERTISE_10HALF;
|
||||||
|
if (linkmode_test_bit(ETHTOOL_LINK_MODE_10baseT_Full_BIT, advertising))
|
||||||
|
result |= ADVERTISE_10FULL;
|
||||||
|
if (linkmode_test_bit(ETHTOOL_LINK_MODE_100baseT_Half_BIT, advertising))
|
||||||
|
result |= ADVERTISE_100HALF;
|
||||||
|
if (linkmode_test_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT, advertising))
|
||||||
|
result |= ADVERTISE_100FULL;
|
||||||
|
if (linkmode_test_bit(ETHTOOL_LINK_MODE_Pause_BIT, advertising))
|
||||||
|
result |= ADVERTISE_PAUSE_CAP;
|
||||||
|
if (linkmode_test_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT, advertising))
|
||||||
|
result |= ADVERTISE_PAUSE_ASYM;
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mii_adv_to_ethtool_adv_t
|
* mii_adv_to_ethtool_adv_t
|
||||||
* @adv: value of the MII_ADVERTISE register
|
* @adv: value of the MII_ADVERTISE register
|
||||||
|
@ -179,6 +207,28 @@ static inline u32 ethtool_adv_to_mii_ctrl1000_t(u32 ethadv)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* linkmode_adv_to_mii_ctrl1000_t
|
||||||
|
* advertising: the linkmode advertisement settings
|
||||||
|
*
|
||||||
|
* A small helper function that translates linkmode advertisement
|
||||||
|
* settings to phy autonegotiation advertisements for the
|
||||||
|
* MII_CTRL1000 register when in 1000T mode.
|
||||||
|
*/
|
||||||
|
static inline u32 linkmode_adv_to_mii_ctrl1000_t(unsigned long *advertising)
|
||||||
|
{
|
||||||
|
u32 result = 0;
|
||||||
|
|
||||||
|
if (linkmode_test_bit(ETHTOOL_LINK_MODE_1000baseT_Half_BIT,
|
||||||
|
advertising))
|
||||||
|
result |= ADVERTISE_1000HALF;
|
||||||
|
if (linkmode_test_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT,
|
||||||
|
advertising))
|
||||||
|
result |= ADVERTISE_1000FULL;
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mii_ctrl1000_to_ethtool_adv_t
|
* mii_ctrl1000_to_ethtool_adv_t
|
||||||
* @adv: value of the MII_CTRL1000 register
|
* @adv: value of the MII_CTRL1000 register
|
||||||
|
|
Loading…
Add table
Reference in a new issue