[prev in list] [next in list] [prev in thread] [next in thread]
List: netbsd-tech-kern
Subject: Re: DMA segs and scatter/gather
From: Sam Leffler <sam () errno ! com>
Date: 2003-08-22 15:25:37
[Download RAW message or body]
> Switch gears to FreeBSD code. The hardware in question supports
> ATH_MAX_SCATTER descriptors. This number is passed into
> bus_dma_tag_create, as the "maximum number of discontinuities
> (scatter/gather segments)" supported by the device. bus_dmamap_alloc
> is now called, with that DMA tag. FreeBSD's dmamap_alloc gets most
> of it's parameters by frobbing the DMA tag - so surely it would
> allocate ATH_MAX_SCATTER descriptors?
>
The number of descriptors varies depending on the size and layout of the
object being mapped. ATH_MAX_SCATTER is really only meaningful to the tx
path where the driver has no control over the memory layout. Rx's are
currently always done to a cluster which is known to be physically
contiguous. Likewise the other data structures are known to have a small
enough size to not require more than one segment. I don't think
ATH_MAX_SCATTER is used other than when setting up tx DMA. If it is then
it's a mistake but harmless.
Perhaps you should talk to me directly about this stuff? I can explain why
things are like they are in the FreeBSD code; I just can't cite
chapter+verse on NetBSD specifics w/o looking at that code.
Sam
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic