> 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 > allocator. > 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. DaveReceived on Wed Jul 18 2007 - 16:50:15 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:14 UTC