net: phy: don't use locking in phy_is_started
Russell suggested to remove the locking from phy_is_started() because the read is atomic anyway and actually the locking may be more misleading. Fixes: 2b3e88ea6528 ("net: phy: improve phy state checking") Suggested-by: Russell King - ARM Linux admin <linux@armlinux.org.uk> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
39c1331962
commit
a2fc9d7e36
@ -553,7 +553,7 @@ int phy_start_aneg(struct phy_device *phydev)
|
||||
if (err < 0)
|
||||
goto out_unlock;
|
||||
|
||||
if (__phy_is_started(phydev)) {
|
||||
if (phy_is_started(phydev)) {
|
||||
if (phydev->autoneg == AUTONEG_ENABLE) {
|
||||
err = phy_check_link_status(phydev);
|
||||
} else {
|
||||
@ -709,7 +709,7 @@ void phy_stop_machine(struct phy_device *phydev)
|
||||
cancel_delayed_work_sync(&phydev->state_queue);
|
||||
|
||||
mutex_lock(&phydev->lock);
|
||||
if (__phy_is_started(phydev))
|
||||
if (phy_is_started(phydev))
|
||||
phydev->state = PHY_UP;
|
||||
mutex_unlock(&phydev->lock);
|
||||
}
|
||||
@ -839,15 +839,14 @@ EXPORT_SYMBOL(phy_stop_interrupts);
|
||||
*/
|
||||
void phy_stop(struct phy_device *phydev)
|
||||
{
|
||||
mutex_lock(&phydev->lock);
|
||||
|
||||
if (!__phy_is_started(phydev)) {
|
||||
if (!phy_is_started(phydev)) {
|
||||
WARN(1, "called from state %s\n",
|
||||
phy_state_to_str(phydev->state));
|
||||
mutex_unlock(&phydev->lock);
|
||||
return;
|
||||
}
|
||||
|
||||
mutex_lock(&phydev->lock);
|
||||
|
||||
if (phy_interrupt_is_valid(phydev))
|
||||
phy_disable_interrupts(phydev);
|
||||
|
||||
|
@ -674,26 +674,13 @@ phy_lookup_setting(int speed, int duplex, const unsigned long *mask,
|
||||
size_t phy_speeds(unsigned int *speeds, size_t size,
|
||||
unsigned long *mask);
|
||||
|
||||
static inline bool __phy_is_started(struct phy_device *phydev)
|
||||
{
|
||||
WARN_ON(!mutex_is_locked(&phydev->lock));
|
||||
|
||||
return phydev->state >= PHY_UP;
|
||||
}
|
||||
|
||||
/**
|
||||
* phy_is_started - Convenience function to check whether PHY is started
|
||||
* @phydev: The phy_device struct
|
||||
*/
|
||||
static inline bool phy_is_started(struct phy_device *phydev)
|
||||
{
|
||||
bool started;
|
||||
|
||||
mutex_lock(&phydev->lock);
|
||||
started = __phy_is_started(phydev);
|
||||
mutex_unlock(&phydev->lock);
|
||||
|
||||
return started;
|
||||
return phydev->state >= PHY_UP;
|
||||
}
|
||||
|
||||
void phy_resolve_aneg_linkmode(struct phy_device *phydev);
|
||||
|
Loading…
x
Reference in New Issue
Block a user