mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-19 13:46:46 +07:00
cxgb3: Call dev_kfree/consume_skb_any instead of [dev_]kfree_skb.
Replace kfree_skb with dev_consume_skb_any in free_tx_desc, and write_tx_pkt_wr that can be called in hard irq and other contexts. Replace dev_kfree_skb with dev_kfree_skb_any in t3_eth_xmit that can be called in hard irq and other contexts. dev_kfree_skb is replaced with dev_kfree_skb_any in t3_eth_xmit as that location is a packet drop, while kfree_skb in free_tx_desc, and in write_tx_pkt_wr are places where packets are consumed in a healthy manner. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
This commit is contained in:
parent
f5cf76ba62
commit
f9ec8131bb
@ -298,7 +298,7 @@ static void free_tx_desc(struct adapter *adapter, struct sge_txq *q,
|
|||||||
if (need_unmap)
|
if (need_unmap)
|
||||||
unmap_skb(d->skb, q, cidx, pdev);
|
unmap_skb(d->skb, q, cidx, pdev);
|
||||||
if (d->eop) {
|
if (d->eop) {
|
||||||
kfree_skb(d->skb);
|
dev_consume_skb_any(d->skb);
|
||||||
d->skb = NULL;
|
d->skb = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1188,7 +1188,7 @@ static void write_tx_pkt_wr(struct adapter *adap, struct sk_buff *skb,
|
|||||||
cpl->wr.wr_lo = htonl(V_WR_LEN(flits) | V_WR_GEN(gen) |
|
cpl->wr.wr_lo = htonl(V_WR_LEN(flits) | V_WR_GEN(gen) |
|
||||||
V_WR_TID(q->token));
|
V_WR_TID(q->token));
|
||||||
wr_gen2(d, gen);
|
wr_gen2(d, gen);
|
||||||
kfree_skb(skb);
|
dev_consume_skb_any(skb);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1233,7 +1233,7 @@ netdev_tx_t t3_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)) {
|
||||||
dev_kfree_skb(skb);
|
dev_kfree_skb_any(skb);
|
||||||
return NETDEV_TX_OK;
|
return NETDEV_TX_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user