mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-15 09:03:59 +08:00
enic: use spin_lock(wq_lock) instead of spin_lock_irqsave(wq_lock)
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>
This commit is contained in:
parent
db40b3f55a
commit
78e2045d3d
@ -529,7 +529,6 @@ static netdev_tx_t enic_hard_start_xmit(struct sk_buff *skb,
|
|||||||
{
|
{
|
||||||
struct enic *enic = netdev_priv(netdev);
|
struct enic *enic = netdev_priv(netdev);
|
||||||
struct vnic_wq *wq;
|
struct vnic_wq *wq;
|
||||||
unsigned long flags;
|
|
||||||
unsigned int txq_map;
|
unsigned int txq_map;
|
||||||
struct netdev_queue *txq;
|
struct netdev_queue *txq;
|
||||||
|
|
||||||
@ -554,14 +553,14 @@ static netdev_tx_t enic_hard_start_xmit(struct sk_buff *skb,
|
|||||||
return NETDEV_TX_OK;
|
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) <
|
if (vnic_wq_desc_avail(wq) <
|
||||||
skb_shinfo(skb)->nr_frags + ENIC_DESC_MAX_SPLITS) {
|
skb_shinfo(skb)->nr_frags + ENIC_DESC_MAX_SPLITS) {
|
||||||
netif_tx_stop_queue(txq);
|
netif_tx_stop_queue(txq);
|
||||||
/* This is a hard error, log it */
|
/* This is a hard error, log it */
|
||||||
netdev_err(netdev, "BUG! Tx ring full when queue awake!\n");
|
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;
|
return NETDEV_TX_BUSY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -572,7 +571,7 @@ static netdev_tx_t enic_hard_start_xmit(struct sk_buff *skb,
|
|||||||
if (!skb->xmit_more || netif_xmit_stopped(txq))
|
if (!skb->xmit_more || netif_xmit_stopped(txq))
|
||||||
vnic_wq_doorbell(wq);
|
vnic_wq_doorbell(wq);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&enic->wq_lock[txq_map], flags);
|
spin_unlock(&enic->wq_lock[txq_map]);
|
||||||
|
|
||||||
return NETDEV_TX_OK;
|
return NETDEV_TX_OK;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user