diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-05-11 14:44:27 +0200 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-05-11 14:44:31 +0200 | 
| commit | 41fb454ebe6024f5c1e3b3cbc0abc0da762e7b51 (patch) | |
| tree | 51c50bcb67a5039448ddfa1869d7948cab1217e9 /drivers/net/phy/phy.c | |
| parent | 19c1a6f5764d787113fa323ffb18be7991208f82 (diff) | |
| parent | 091bf7624d1c90cec9e578a18529f615213ff847 (diff) | |
Merge commit 'v2.6.30-rc5' into core/iommu
Merge reason: core/iommu was on an .30-rc1 base,
              update it to .30-rc5 to refresh.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/net/phy/phy.c')
| -rw-r--r-- | drivers/net/phy/phy.c | 14 | 
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 3ff1f425f1b..61755cbd978 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -434,7 +434,7 @@ void phy_start_machine(struct phy_device *phydev,  	phydev->adjust_state = handler;  	INIT_DELAYED_WORK(&phydev->state_queue, phy_state_machine); -	schedule_delayed_work(&phydev->state_queue, jiffies + HZ); +	schedule_delayed_work(&phydev->state_queue, HZ);  }  /** @@ -655,6 +655,10 @@ static void phy_change(struct work_struct *work)  	struct phy_device *phydev =  		container_of(work, struct phy_device, phy_queue); +	if (phydev->drv->did_interrupt && +	    !phydev->drv->did_interrupt(phydev)) +		goto ignore; +  	err = phy_disable_interrupts(phydev);  	if (err) @@ -681,6 +685,11 @@ static void phy_change(struct work_struct *work)  	return; +ignore: +	atomic_dec(&phydev->irq_disable); +	enable_irq(phydev->irq); +	return; +  irq_enable_err:  	disable_irq(phydev->irq);  	atomic_inc(&phydev->irq_disable); @@ -937,6 +946,5 @@ static void phy_state_machine(struct work_struct *work)  	if (err < 0)  		phy_error(phydev); -	schedule_delayed_work(&phydev->state_queue, -				jiffies + PHY_STATE_TIME * HZ); +	schedule_delayed_work(&phydev->state_queue, PHY_STATE_TIME * HZ);  }  | 
