Subject: Re: [PATCH net v2 1/2] net: apple: mace: don't call dev_kfree_skb() under spin_lock_irqsave()

From: Jakub Kicinski <[email-masked]>
Date: Thu, 8 Dec 2022 08:33:55 -0800

On Thu, 8 Dec 2022 16:39:03 +0800 Yang Yingliang wrote:
> >> @@ -846,7 +846,7 @@ static void mace_tx_timeout(struct timer_list *t)
> >>       if (mp->tx_bad_runt) {
> >>   	mp->tx_bad_runt = 0;
> >>       } else if (i != mp->tx_fill) {
> >> -	dev_kfree_skb(mp->tx_bufs[i]);
> >> +	dev_consume_skb_irq(mp->tx_bufs[i]);  
> > Same question, why did you chose dev_consume_skb_irq and not dev_kfree_skb_irq?  
> I chose dev_consume_skb_irq(), because dev_kfree_skb() is consume_skb().

kfree_skb() should be used on error paths, when packet is dropped.
consume_skb() on normal paths, when packet left the system successfully.

dev_kfree* helpers probably default to consume_skb() to avoid spamming
drop monitor, but switching to dev_consume explicitly is not right.