mirror of
https://github.com/torvalds/linux.git
synced 2026-05-23 06:31:58 +02:00
net: phylink: simplify phylink_parse_fixedlink()
phylink_parse_fixedlink() wants to preserve the pause, asym_pause and autoneg bits in pl->supported. Rather than reading the bits into separate bools, zeroing pl->supported, and then setting them if they were previously set, use a mask and linkmode_and() to achieve the same result. Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/E1t3Fh5-000aQi-Nk@rmk-PC.armlinux.org.uk Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
6c9c579166
commit
e0e918494c
|
|
@ -764,8 +764,8 @@ static int phylink_validate(struct phylink *pl, unsigned long *supported,
|
|||
static int phylink_parse_fixedlink(struct phylink *pl,
|
||||
const struct fwnode_handle *fwnode)
|
||||
{
|
||||
__ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, };
|
||||
struct fwnode_handle *fixed_node;
|
||||
bool pause, asym_pause, autoneg;
|
||||
const struct phy_setting *s;
|
||||
struct gpio_desc *desc;
|
||||
u32 speed;
|
||||
|
|
@ -838,23 +838,16 @@ static int phylink_parse_fixedlink(struct phylink *pl,
|
|||
linkmode_copy(pl->link_config.advertising, pl->supported);
|
||||
phylink_validate(pl, pl->supported, &pl->link_config);
|
||||
|
||||
pause = phylink_test(pl->supported, Pause);
|
||||
asym_pause = phylink_test(pl->supported, Asym_Pause);
|
||||
autoneg = phylink_test(pl->supported, Autoneg);
|
||||
s = phy_lookup_setting(pl->link_config.speed, pl->link_config.duplex,
|
||||
pl->supported, true);
|
||||
linkmode_zero(pl->supported);
|
||||
|
||||
linkmode_set_bit(ETHTOOL_LINK_MODE_Pause_BIT, mask);
|
||||
linkmode_set_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT, mask);
|
||||
linkmode_set_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, mask);
|
||||
linkmode_and(pl->supported, pl->supported, mask);
|
||||
|
||||
phylink_set(pl->supported, MII);
|
||||
|
||||
if (pause)
|
||||
phylink_set(pl->supported, Pause);
|
||||
|
||||
if (asym_pause)
|
||||
phylink_set(pl->supported, Asym_Pause);
|
||||
|
||||
if (autoneg)
|
||||
phylink_set(pl->supported, Autoneg);
|
||||
|
||||
if (s) {
|
||||
__set_bit(s->bit, pl->supported);
|
||||
__set_bit(s->bit, pl->link_config.lp_advertising);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user