mirror of
https://github.com/torvalds/linux.git
synced 2024-11-01 01:31:44 +00:00
cxgb4: 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 t4_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 t4_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
f9ec8131bb
commit
a7525198a8
@ -383,7 +383,7 @@ static void free_tx_desc(struct adapter *adap, struct sge_txq *q,
|
|||||||
if (d->skb) { /* an SGL is present */
|
if (d->skb) { /* an SGL is present */
|
||||||
if (unmap)
|
if (unmap)
|
||||||
unmap_sgl(dev, d->skb, d->sgl, q);
|
unmap_sgl(dev, d->skb, d->sgl, q);
|
||||||
kfree_skb(d->skb);
|
dev_consume_skb_any(d->skb);
|
||||||
d->skb = NULL;
|
d->skb = NULL;
|
||||||
}
|
}
|
||||||
++d;
|
++d;
|
||||||
@ -1009,7 +1009,7 @@ netdev_tx_t t4_eth_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||||||
* anything shorter than an Ethernet header.
|
* anything shorter than an Ethernet header.
|
||||||
*/
|
*/
|
||||||
if (unlikely(skb->len < ETH_HLEN)) {
|
if (unlikely(skb->len < ETH_HLEN)) {
|
||||||
out_free: dev_kfree_skb(skb);
|
out_free: dev_kfree_skb_any(skb);
|
||||||
return NETDEV_TX_OK;
|
return NETDEV_TX_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1104,7 +1104,7 @@ out_free: dev_kfree_skb(skb);
|
|||||||
|
|
||||||
if (immediate) {
|
if (immediate) {
|
||||||
inline_tx_skb(skb, &q->q, cpl + 1);
|
inline_tx_skb(skb, &q->q, cpl + 1);
|
||||||
dev_kfree_skb(skb);
|
dev_consume_skb_any(skb);
|
||||||
} else {
|
} else {
|
||||||
int last_desc;
|
int last_desc;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user