cxfb4vf: Call dev_kfree/consume_skb_any instead of [dev_]kfree_skb.
Replace kfree_skb with dev_consume_skb_any in free_tx_desc that can be called in hard irq and other contexts. dev_consume_skb_any is used as this function consumes successfully transmitted skbs. Replace dev_kfree_skb with dev_kfree_skb_any in t4vf_eth_xmit that can be called in hard irq and other contexts, on paths that drop the skb. Replace dev_kfree_skb with dev_consume_skb_any in t4vf_eth_xmit that can be called in hard irq and other contexts, on paths that successfully transmit the skb. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
This commit is contained in:
parent
a7525198a8
commit
42ffda5fe7
|
@ -401,7 +401,7 @@ static void free_tx_desc(struct adapter *adapter, struct sge_txq *tq,
|
|||
if (sdesc->skb) {
|
||||
if (need_unmap)
|
||||
unmap_sgl(dev, sdesc->skb, sdesc->sgl, tq);
|
||||
kfree_skb(sdesc->skb);
|
||||
dev_consume_skb_any(sdesc->skb);
|
||||
sdesc->skb = NULL;
|
||||
}
|
||||
|
||||
|
@ -1275,7 +1275,7 @@ int t4vf_eth_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||
* need it any longer.
|
||||
*/
|
||||
inline_tx_skb(skb, &txq->q, cpl + 1);
|
||||
dev_kfree_skb(skb);
|
||||
dev_consume_skb_any(skb);
|
||||
} else {
|
||||
/*
|
||||
* Write the skb's Scatter/Gather list into the TX Packet CPL
|
||||
|
@ -1354,7 +1354,7 @@ out_free:
|
|||
* An error of some sort happened. Free the TX skb and tell the
|
||||
* OS that we've "dealt" with the packet ...
|
||||
*/
|
||||
dev_kfree_skb(skb);
|
||||
dev_kfree_skb_any(skb);
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue