mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 23:40:53 +07:00
net: ethernet: Add helper for MACs which support pause
Rather than have the MAC drivers manipulate phydev members, add a helper function for MACs supporting Pause, but not Asym Pause. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
af8d9bb2f2
commit
c306ad3618
@ -890,7 +890,7 @@ static int bcm_enet_open(struct net_device *dev)
|
||||
}
|
||||
|
||||
/* mask with MAC supported features */
|
||||
phydev->supported |= SUPPORTED_Pause;
|
||||
phy_support_sym_pause(phydev);
|
||||
phy_set_max_speed(phydev, SPEED_100);
|
||||
|
||||
if (priv->pause_auto && priv->pause_rx && priv->pause_tx)
|
||||
|
@ -1950,14 +1950,12 @@ static int fec_enet_mii_probe(struct net_device *ndev)
|
||||
phy_remove_link_mode(phy_dev,
|
||||
ETHTOOL_LINK_MODE_1000baseT_Half_BIT);
|
||||
#if !defined(CONFIG_M5272)
|
||||
phy_dev->supported |= SUPPORTED_Pause;
|
||||
phy_support_sym_pause(phy_dev);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
phy_set_max_speed(phy_dev, 100);
|
||||
|
||||
phy_dev->advertising = phy_dev->supported;
|
||||
|
||||
fep->link = 0;
|
||||
fep->full_duplex = 0;
|
||||
|
||||
|
@ -1783,6 +1783,20 @@ void phy_remove_link_mode(struct phy_device *phydev, u32 link_mode)
|
||||
}
|
||||
EXPORT_SYMBOL(phy_remove_link_mode);
|
||||
|
||||
/**
|
||||
* phy_support_sym_pause - Enable support of symmetrical pause
|
||||
* @phydev: target phy_device struct
|
||||
*
|
||||
* Description: Called by the MAC to indicate is supports symmetrical
|
||||
* Pause, but not asym pause.
|
||||
*/
|
||||
void phy_support_sym_pause(struct phy_device *phydev)
|
||||
{
|
||||
phydev->supported |= SUPPORTED_Pause;
|
||||
phydev->advertising = phydev->supported;
|
||||
}
|
||||
EXPORT_SYMBOL(phy_support_sym_pause);
|
||||
|
||||
/**
|
||||
* phy_support_asym_pause - Enable support of asym pause
|
||||
* @phydev: target phy_device struct
|
||||
|
@ -1050,6 +1050,7 @@ int phy_start_interrupts(struct phy_device *phydev);
|
||||
void phy_print_status(struct phy_device *phydev);
|
||||
int phy_set_max_speed(struct phy_device *phydev, u32 max_speed);
|
||||
void phy_remove_link_mode(struct phy_device *phydev, u32 link_mode);
|
||||
void phy_support_sym_pause(struct phy_device *phydev);
|
||||
void phy_support_asym_pause(struct phy_device *phydev);
|
||||
|
||||
int phy_register_fixup(const char *bus_id, u32 phy_uid, u32 phy_uid_mask,
|
||||
|
Loading…
Reference in New Issue
Block a user