Commit f9ec8131 authored by Eric W. Biederman's avatar Eric W. Biederman
Browse files

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: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
parent f5cf76ba
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -298,7 +298,7 @@ static void free_tx_desc(struct adapter *adapter, struct sge_txq *q,
			if (need_unmap)
				unmap_skb(d->skb, q, cidx, pdev);
			if (d->eop) {
				kfree_skb(d->skb);
				dev_consume_skb_any(d->skb);
				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) |
					      V_WR_TID(q->token));
			wr_gen2(d, gen);
			kfree_skb(skb);
			dev_consume_skb_any(skb);
			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.
	 */
	if (unlikely(skb->len < ETH_HLEN)) {
		dev_kfree_skb(skb);
		dev_kfree_skb_any(skb);
		return NETDEV_TX_OK;
	}