tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: BNX driver problem when mbuf clusters run out



On Thu, Apr 19, 2012 at 07:45:35PM -0400, Beverly Schwartz wrote:
> That won't work in this case.  If bnx_get_buf succeeds in getting
> an mbuf cluster, it then puts it in the rx ring.  If we haven't
> removed the mbuf first, there will be no place to put the new mbuf.

That's circular reasoning. There are three places currently using
bnx_get_buf:

bnx_init_rx_chain
bnx_rx_intr
bnx_tick

The last one can be dropped with the changed semantic, since the RX ring
will never be depleted. The rest is solved by properly splitting up the
actions into allocating a mbuf cluster for the RX ring, loading a
cluster into the RX ring and unloading an already mapped entry.
bnx_init_rx_chain wants to the first two in order, bnx_rx_intr wants to
alloc, if that works: unload and load new cluster.

Joerg


Home | Main Index | Thread Index | Old Index