Messages in this thread | ![/](/images/icornerl.gif) | | Date | Mon, 29 Dec 2003 20:51:57 -0800 | From | "David S. Miller" <> | Subject | Re: Problem with dev_kfree_skb_any() in 2.6.0 |
| |
On Mon, 29 Dec 2003 23:09:14 -0500 Jeff Garzik <jgarzik@pobox.com> wrote:
> Not really... pretty much _all_ TX queue packet freeing occurs inside > an irq handler and inside the driver spinlock. Further, we don't want > to reinvent some sort of "queue skb for freeing" code in every driver.
There is one important detail not mentioned.
If we let the TX free occur in cpu IRQ disabled context, the BH to actually do the work will occur as some indeterminate time in the future after the top level IRQ spinlock release occurs.
Unlike local_bh_enable(), local_irq_enable() does not run softirq work. Similarly when comparing IRQ handler return (which also runs softirq work if pending).
This is the most important reason why the suggested change is wrong. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| ![\](/images/icornerr.gif) |