Tuesday, June 06, 2006, 7:37:35 PM, you wrote:
aj> I guess your 25 bit dma address field will be word alligned, so ur dma engine will be able to index up to 64 MB( 25+2 = 27 bits).
Address not aligned - if I don't do anything driver work incorrect!
*** what do you mean by Address not aligned ??
*** What address you r passing to dma ? u should pass (skb->data >> 2) (if word alligned address is required for dma engine.)
aj> * dont give whole 64 MB to linux, give only Lower 32 MB.
You mean with command line kernel option? If so - I already did so to
get all work!
*** when you do add_memory_region(), give only first 32 MB to linux, so all the skbs will be in lower 32 MB
aj> * Give only upper 32 MB to linux, and give memory to ur dma engine from lower 32 MB, and once you recv any data you copy to skb and submit to linux. ( ofcourse your performance will get hit
aj> in this case.)
How can I do this? I have variant that if addres is upper than 32Mb then copy skbuffer to
previously allocated memory that lower than 32Mb, but perfomance is wery Important. Maybe
you mean this??