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

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
Loading
Loading
Loading
Loading
+8 −11
Original line number Diff line number Diff line
@@ -366,9 +366,8 @@ static irqreturn_t mpc52xx_fec_tx_interrupt(int irq, void *dev_id)
{
	struct net_device *dev = dev_id;
	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)) {
		struct sk_buff *skb;
		struct bcom_fec_bd *bd;
@@ -379,7 +378,7 @@ static irqreturn_t mpc52xx_fec_tx_interrupt(int irq, void *dev_id)

		dev_kfree_skb_irq(skb);
	}
	spin_unlock_irqrestore(&priv->lock, flags);
	spin_unlock(&priv->lock);

	netif_wake_queue(dev);

@@ -395,9 +394,8 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id)
	struct bcom_fec_bd *bd;
	u32 status, physaddr;
	int length;
	unsigned long flags;

	spin_lock_irqsave(&priv->lock, flags);
	spin_lock(&priv->lock);

	while (bcom_buffer_done(priv->rx_dmatsk)) {

@@ -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
		 * 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_FROM_DEVICE);
@@ -438,10 +436,10 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id)
		rskb->protocol = eth_type_trans(rskb, dev);
		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;
}
@@ -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 __iomem *fec = priv->fec;
	u32 ievent;
	unsigned long flags;

	ievent = in_be32(&fec->ievent);

@@ -470,9 +467,9 @@ static irqreturn_t mpc52xx_fec_interrupt(int irq, void *dev_id)
		if (net_ratelimit() && (ievent & FEC_IEVENT_XFIFO_ERROR))
			dev_warn(&dev->dev, "FEC_IEVENT_XFIFO_ERROR\n");

		spin_lock_irqsave(&priv->lock, flags);
		spin_lock(&priv->lock);
		mpc52xx_fec_reset(dev);
		spin_unlock_irqrestore(&priv->lock, flags);
		spin_unlock(&priv->lock);

		return IRQ_HANDLED;
	}