mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-01-23 05:11:06 +02:00
[mcs814x] nuport-mac: properly protect the phy interrupt handler
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@32951 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
ab27b3f74d
commit
6b899d5dea
@ -422,19 +422,25 @@ static irqreturn_t nuport_mac_link_interrupt(int irq, void *dev_id)
|
||||
struct nuport_mac_priv *priv = netdev_priv(dev);
|
||||
u32 reg;
|
||||
u8 phy_addr;
|
||||
unsigned long flags;
|
||||
irqreturn_t ret = IRQ_HANDLED;
|
||||
|
||||
spin_lock_irqsave(&priv->lock, flags);
|
||||
reg = nuport_mac_readl(LINK_INT_CSR);
|
||||
phy_addr = (reg >> LINK_PHY_ADDR_SHIFT) & (PHY_MAX_ADDR - 1);
|
||||
|
||||
if (phy_addr != priv->phydev->addr) {
|
||||
netdev_err(dev, "spurious PHY irq (phy: %d)\n", phy_addr);
|
||||
return IRQ_NONE;
|
||||
ret = IRQ_NONE;
|
||||
goto out;
|
||||
}
|
||||
|
||||
priv->phydev->link = (reg & LINK_UP);
|
||||
nuport_mac_adjust_link(dev);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
out:
|
||||
spin_unlock_irqrestore(&priv->lock, flags);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static irqreturn_t nuport_mac_tx_interrupt(int irq, void *dev_id)
|
||||
|
Loading…
x
Reference in New Issue
Block a user