• Heiner Kallweit's avatar
    net: phy: improve phy state checking · 2b3e88ea
    Heiner Kallweit authored
    Add helpers phy_is_started() and __phy_is_started() to avoid open-coded
    checks whether PHY has been started. To make the check easier move
    PHY_HALTED before PHY_UP in enum phy_state. Further improvements:
    
    phy_start_aneg():
    Return -EBUSY and print warning if function is called from a non-started
    state (DOWN, READY, HALTED). Better check because function is exported
    and drivers may use it incorrectly.
    
    phy_interrupt():
    Return IRQ_NONE also if state is DOWN or READY. We should never receive
    an interrupt in one of these states, but better play safe.
    
    phy_stop():
    Just return and print a warning if PHY is in a non-started state.
    This warning should help to identify drivers with unbalanced calls to
    phy_start() / phy_stop().
    
    phy_state_machine():
    Schedule state machine run only if PHY is in a started state.
    E.g. if state is READY we don't need the state machine, it will be
    started by phy_start().
    
    v2:
    - don't use __func__ within phy_warn_state
    v3:
    - use WARN() instead of printing error message to facilitate debugging
    Signed-off-by: default avatarHeiner Kallweit <hkallweit1@gmail.com>
    Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    2b3e88ea
phy.c 32.7 KB