Commit 9d1e5e40 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller

mpc52xx: cleanup locking

commit 1e4e0767 (Fix locking on fec_mpc52xx driver) assumed IRQ are
enabled when an IRQ handler is called.

It is not the case anymore (IRQF_DISABLED is deprecated), so we can use
regular spin_lock(), no need for spin_lock_irqsave().
Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
Tested-by: default avatarJean-Michel Hautbois <jhautbois@gmail.com>
Cc: Asier Llano <a.llano@ziv.es>
Cc: Grant Likely <grant.likely@secretlab.ca>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent b178bb3d
...@@ -366,9 +366,8 @@ static irqreturn_t mpc52xx_fec_tx_interrupt(int irq, void *dev_id) ...@@ -366,9 +366,8 @@ static irqreturn_t mpc52xx_fec_tx_interrupt(int irq, void *dev_id)
{ {
struct net_device *dev = dev_id; struct net_device *dev = dev_id;
struct mpc52xx_fec_priv *priv = netdev_priv(dev); struct mpc52xx_fec_priv *priv = netdev_priv(dev);
unsigned long flags;
spin_lock_irqsave(&priv->lock, flags); spin_lock(&priv->lock);
while (bcom_buffer_done(priv->tx_dmatsk)) { while (bcom_buffer_done(priv->tx_dmatsk)) {
struct sk_buff *skb; struct sk_buff *skb;
struct bcom_fec_bd *bd; struct bcom_fec_bd *bd;
...@@ -379,7 +378,7 @@ static irqreturn_t mpc52xx_fec_tx_interrupt(int irq, void *dev_id) ...@@ -379,7 +378,7 @@ static irqreturn_t mpc52xx_fec_tx_interrupt(int irq, void *dev_id)
dev_kfree_skb_irq(skb); dev_kfree_skb_irq(skb);
} }
spin_unlock_irqrestore(&priv->lock, flags); spin_unlock(&priv->lock);
netif_wake_queue(dev); netif_wake_queue(dev);
...@@ -395,9 +394,8 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id) ...@@ -395,9 +394,8 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id)
struct bcom_fec_bd *bd; struct bcom_fec_bd *bd;
u32 status, physaddr; u32 status, physaddr;
int length; int length;
unsigned long flags;
spin_lock_irqsave(&priv->lock, flags); spin_lock(&priv->lock);
while (bcom_buffer_done(priv->rx_dmatsk)) { while (bcom_buffer_done(priv->rx_dmatsk)) {
...@@ -429,7 +427,7 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id) ...@@ -429,7 +427,7 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id)
/* Process the received skb - Drop the spin lock while /* Process the received skb - Drop the spin lock while
* calling into the network stack */ * calling into the network stack */
spin_unlock_irqrestore(&priv->lock, flags); spin_unlock(&priv->lock);
dma_unmap_single(dev->dev.parent, physaddr, rskb->len, dma_unmap_single(dev->dev.parent, physaddr, rskb->len,
DMA_FROM_DEVICE); DMA_FROM_DEVICE);
...@@ -438,10 +436,10 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id) ...@@ -438,10 +436,10 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id)
rskb->protocol = eth_type_trans(rskb, dev); rskb->protocol = eth_type_trans(rskb, dev);
netif_rx(rskb); netif_rx(rskb);
spin_lock_irqsave(&priv->lock, flags); spin_lock(&priv->lock);
} }
spin_unlock_irqrestore(&priv->lock, flags); spin_unlock(&priv->lock);
return IRQ_HANDLED; return IRQ_HANDLED;
} }
...@@ -452,7 +450,6 @@ static irqreturn_t mpc52xx_fec_interrupt(int irq, void *dev_id) ...@@ -452,7 +450,6 @@ static irqreturn_t mpc52xx_fec_interrupt(int irq, void *dev_id)
struct mpc52xx_fec_priv *priv = netdev_priv(dev); struct mpc52xx_fec_priv *priv = netdev_priv(dev);
struct mpc52xx_fec __iomem *fec = priv->fec; struct mpc52xx_fec __iomem *fec = priv->fec;
u32 ievent; u32 ievent;
unsigned long flags;
ievent = in_be32(&fec->ievent); ievent = in_be32(&fec->ievent);
...@@ -470,9 +467,9 @@ static irqreturn_t mpc52xx_fec_interrupt(int irq, void *dev_id) ...@@ -470,9 +467,9 @@ static irqreturn_t mpc52xx_fec_interrupt(int irq, void *dev_id)
if (net_ratelimit() && (ievent & FEC_IEVENT_XFIFO_ERROR)) if (net_ratelimit() && (ievent & FEC_IEVENT_XFIFO_ERROR))
dev_warn(&dev->dev, "FEC_IEVENT_XFIFO_ERROR\n"); dev_warn(&dev->dev, "FEC_IEVENT_XFIFO_ERROR\n");
spin_lock_irqsave(&priv->lock, flags); spin_lock(&priv->lock);
mpc52xx_fec_reset(dev); mpc52xx_fec_reset(dev);
spin_unlock_irqrestore(&priv->lock, flags); spin_unlock(&priv->lock);
return IRQ_HANDLED; return IRQ_HANDLED;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment