[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