Messages in this thread | ![/](/images/icornerl.gif) | | Date | Tue, 30 Dec 2003 00:15:19 -0500 | From | Jeff Garzik <> | Subject | Re: Problem with dev_kfree_skb_any() in 2.6.0 |
| |
On Mon, Dec 29, 2003 at 08:51:57PM -0800, David S. Miller wrote: > 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.
OK, agreed. But fixing it in the driver is still incorrect, also.
We need a single solution in the net stack, not a per-driver solution.
Look at the purpose behind his patch...
Jeff
- 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) |