History

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.

Heiner Kallweit committed 7 years ago

Commit a2fc9d71 parent 39c13312 files · +6 −20Browse files

Unified · Split

2 files
  1. drivers/net/phy/phy.c +5 −6
  2. include/linux/phy.h +1 −14
drivers/net/phy/phy.c+5−6
@@ -553,7 +553,7 @@ int phy_start_aneg(struct phy_device *phydev) · 552 unmodified lines
553 if (err < 0)553 if (err < 0)
554 goto out_unlock;554 goto out_unlock;
555 555
556 if (__phy_is_started(phydev)) {556 if (phy_is_started(phydev)) {
557 if (phydev->autoneg == AUTONEG_ENABLE) {557 if (phydev->autoneg == AUTONEG_ENABLE) {
558 err = phy_check_link_status(phydev);558 err = phy_check_link_status(phydev);
559 } else {559 } else {
@@ -709,7 +709,7 @@ void phy_stop_machine(struct phy_device *phydev) · 149 unmodified lines
709 cancel_delayed_work_sync(&phydev->state_queue);709 cancel_delayed_work_sync(&phydev->state_queue);
710 710
711 mutex_lock(&phydev->lock);711 mutex_lock(&phydev->lock);
712 if (__phy_is_started(phydev))712 if (phy_is_started(phydev))
713 phydev->state = PHY_UP;713 phydev->state = PHY_UP;
714 mutex_unlock(&phydev->lock);714 mutex_unlock(&phydev->lock);
715}715}
@@ -839,15 +839,14 @@ EXPORT_SYMBOL(phy_stop_interrupts); · 123 unmodified lines
839 */839 */
840void phy_stop(struct phy_device *phydev)840void phy_stop(struct phy_device *phydev)
841{841{
842 mutex_lock(&phydev->lock);842 if (!phy_is_started(phydev)) {
843
844 if (!__phy_is_started(phydev)) {
845 WARN(1, "called from state %s\n",843 WARN(1, "called from state %s\n",
846 phy_state_to_str(phydev->state));844 phy_state_to_str(phydev->state));
847 mutex_unlock(&phydev->lock);
848 return;845 return;
849 }846 }
850 847
848 mutex_lock(&phydev->lock);
849
851 if (phy_interrupt_is_valid(phydev))850 if (phy_interrupt_is_valid(phydev))
852 phy_disable_interrupts(phydev);851 phy_disable_interrupts(phydev);
853 852
include/linux/phy.h+1−14
@@ -674,26 +674,13 @@ phy_lookup_setting(int speed, int duplex, const unsigned long *mask, · 673 unmodified lines
674size_t phy_speeds(unsigned int *speeds, size_t size,674size_t phy_speeds(unsigned int *speeds, size_t size,
675 unsigned long *mask);675 unsigned long *mask);
676 676
677static inline bool __phy_is_started(struct phy_device *phydev)
678{
679 WARN_ON(!mutex_is_locked(&phydev->lock));
680
681 return phydev->state >= PHY_UP;
682}
683
684/**677/**
685 * phy_is_started - Convenience function to check whether PHY is started678 * phy_is_started - Convenience function to check whether PHY is started
686 * @phydev: The phy_device struct679 * @phydev: The phy_device struct
687 */680 */
688static inline bool phy_is_started(struct phy_device *phydev)681static inline bool phy_is_started(struct phy_device *phydev)
689{682{
690 bool started;683 return phydev->state >= PHY_UP;
691
692 mutex_lock(&phydev->lock);
693 started = __phy_is_started(phydev);
694 mutex_unlock(&phydev->lock);
695
696 return started;
697}684}
698 685
699void phy_resolve_aneg_linkmode(struct phy_device *phydev);686void phy_resolve_aneg_linkmode(struct phy_device *phydev);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t