tech-net archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: workqueue in if_bnx: static struct work * seems wrong
On Fri, Mar 02, 2012 at 09:57:00AM -0700, Sverre Froyen wrote:
> Sorry, I was following up to the latest message on the thread and doing a
> poor
> job of quoting.
>
> I was really thinking about the change that prompted this discussion
> (if_bnx.c
> rev 1.44). In particular the replacement of
>
> bnx_alloc_pkts(sc)
>
> with
>
> workqueue_enqueue(sc->bnx_wq, &bnx_wk, NULL);
> SET(sc->bnx_flags, BNX_ALLOC_PKTS_FLAG);
>
> which was made in order to avoid memory allocation in interrupt context.
>
> It seems to me that this could be handled by the pool code instead. Perhaps
> as
> follows:
>
> 1) Create pool_caches of header structures (one per buffer size).
>
> 2) Use a custom allocator that does the bus_dma dance and attaches the
> resulting memory pointers to the header structure.
The problem is actually in bus_dma, so using pool_cache here won't help.
The problematic bus_dma routine (I don't remmeber which one, sorry) could
still be called from interrupt context.
--
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
NetBSD: 26 ans d'experience feront toujours la difference
--
Home |
Main Index |
Thread Index |
Old Index