[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Getting/Forcing Greater than 4KB Buffer Allocations
- To: pyunyh_(_at_)_gmail_(_dot_)_com
- Subject: RE: Getting/Forcing Greater than 4KB Buffer Allocations
- From: "David Christensen" <davidch_(_at_)_broadcom_(_dot_)_com>
- Date: Wed, 18 Jul 2007 11:50:02 -0700
- Cc: current_(_at_)_freebsd_(_dot_)_org
- Thread-index: AcfI4iblUTYXTZ6IQHmw4c1o6L2ISQAieC7Q
- Thread-topic: Getting/Forcing Greater than 4KB Buffer Allocations
> On Tue, Jul 17, 2007 at 04:54:31PM -0700, David Christensen wrote:
> > I'm investigating a problem with my bce driver which
> occurs when I ask
> > for a jumbo
> > mbuf cluster (through m_cljget()). When I map the memory for DMA I
> > normally
> > get 3 memory segments (4KB + 4KB + 1KB) on my system, but
> on another
> > user's
> > system he's seeing 2 memory segments (8KB + 1KB). Is there a
> > configuration
> > option that allows this or some other tuning variable
> involved? The
> > system is a
> > Xeon dual-core processor and has 8GB of RAM, running an
> AMD64 version of
> > the kernel.
> I've briefly looked over bus_dma usage on bce(4). It seems that you
> told bus_dma the the dma map could be made up of BCE_MAX_SEGMENTS
> segments, where a dma segment could be MJUM9BYTES bytes. If you want
> just two segments you may have to use 2 instead of BCE_MAX_SEGMENTS.
> If the hardware can support up to BCE_MAX_SEGMENTS dma segments on Rx
> descriptors you should be prepared to handle that number of dma
> segments too(e.g. You don't know how may dma segments would be
> returned by bus_dma, you just know the upper bound as you specified
> in bus_dma_tag_create()).
> If the hardware can handle just up to 4KB for a dma segment you
> should tell bus_dma the restriction of the dma segment.
> If you have to get a single dma segment that covers MJUM9BYTES bytes
> due to the limitation of the hardware you may have to use local
Thanks Pyun but I'm really just looking for a way to test that I can
handle the number of segments I've advertised that I can support. I
believe my code is correct but when all I see are allocations of 3
segments I just can't prove it. I was hoping that running a utility
such as "stress" would help fragment memory and force more variable
responses but that hasn't happened yet.
freebsd-current_(_at_)_freebsd_(_dot_)_org mailing list
To unsubscribe, send any mail to "freebsd-current-unsubscribe_(_at_)_freebsd_(_dot_)_org"