Skip to content

Commit

Permalink
enic: use spin_lock(wq_lock) instead of spin_lock_irqsave(wq_lock)
Browse files Browse the repository at this point in the history
All the access to wq has been moved out of hardirq context. We no longer need to
use spin_lock_irqsave.

Signed-off-by: Govindarajulu Varadarajan <_govind@gmx.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Govindarajulu Varadarajan authored and David S. Miller committed Nov 23, 2014
1 parent db40b3f commit 78e2045
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions drivers/net/ethernet/cisco/enic/enic_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -529,7 +529,6 @@ static netdev_tx_t enic_hard_start_xmit(struct sk_buff *skb,
{
struct enic *enic = netdev_priv(netdev);
struct vnic_wq *wq;
unsigned long flags;
unsigned int txq_map;
struct netdev_queue *txq;

Expand All @@ -554,14 +553,14 @@ static netdev_tx_t enic_hard_start_xmit(struct sk_buff *skb,
return NETDEV_TX_OK;
}

spin_lock_irqsave(&enic->wq_lock[txq_map], flags);
spin_lock(&enic->wq_lock[txq_map]);

if (vnic_wq_desc_avail(wq) <
skb_shinfo(skb)->nr_frags + ENIC_DESC_MAX_SPLITS) {
netif_tx_stop_queue(txq);
/* This is a hard error, log it */
netdev_err(netdev, "BUG! Tx ring full when queue awake!\n");
spin_unlock_irqrestore(&enic->wq_lock[txq_map], flags);
spin_unlock(&enic->wq_lock[txq_map]);
return NETDEV_TX_BUSY;
}

Expand All @@ -572,7 +571,7 @@ static netdev_tx_t enic_hard_start_xmit(struct sk_buff *skb,
if (!skb->xmit_more || netif_xmit_stopped(txq))
vnic_wq_doorbell(wq);

spin_unlock_irqrestore(&enic->wq_lock[txq_map], flags);
spin_unlock(&enic->wq_lock[txq_map]);

return NETDEV_TX_OK;
}
Expand Down

0 comments on commit 78e2045

Please sign in to comment.