Garrett D'Amore wrote:
> Steven Stallion wrote:
>   
>> Steven Stallion wrote:
>>   
>>     
>>> Garrett D'Amore wrote:
>>>     
>>>       
>>>> Steven Stallion wrote:
>>>>       
>>>>         
>>>>> Well, I swapped everything over to re and moved over to 16-bit DMA. I'm
>>>>> now seeing the following:
>>>>>
>>>>> Sep  3 22:53:09 devel pcisch: [ID 876218 kern.warning] WARNING: re0 peer
>>>>> only dev 60015ae7e00
>>>>> Sep  3 22:53:09 devel pcisch: [ID 346402 kern.warning] WARNING: re0 peer
>>>>> only device bad attr
>>>>> Sep  3 22:53:09 devel re: [ID 179634 kern.warning] WARNING: re0 failed
>>>>> to allocate DMA resources!
>>>>>
>>>>> re_dma_attr is:
>>>>>   
>>>>>         
>>>>>           
>>>> The attributes you give below are probably horribly wrong.  they
>>>> indicate that the memory has to be 32K aligned, and in the lower 64K. 
>>>> That's probably not what you intended.
>>>>
>>>> My guess is you want to set addr_high to some fairly large value
>>>> (0xffffffff if the device can address the entire 32-bit address space --
>>>> which if it can take a 16-bit segment pointer, and a 16-bit offset,
>>>> should be correct).  The attr_count_max should probably still be set to
>>>> 0xffff though.
>>>>       
>>>>         
>>> Unless I am misreading the DP8390 spec, the device can only address the
>>> lower 64K in dual 16-bit mode. It expects the upper 8 bits of a 16-bit
>>> address to be programmed into the DMA engine (in this case the PSTART,
>>> and PSTOP registers).
>>>     
>>>       
>
> If the device is that limited, then it may be difficult to set up DMA 
> for it, and use of DMA may collide with other resources used in that 
> memory space.  (Recall that x86 platforms don't have an IOMMU, so they 
> cannot relocate physical pages to make room for the device.)  
> Additionally, it sounds like the DMA counter might only be 8 bits? (So 
> you'd need multiple PIOs per packet?)
>
> At this point, I'd probably just opt for PIO.  It may be less efficient, 
> but by the time you involved the bounce buffers, etc., it may actually 
> work better/faster than trying to workaround the DMA limitations.
>   

Furthermore, I can't seem to find any other versions of the driver which 
do DMA ... NetBSD and Linux both do PIO.  And then, reading the Linux 
driver, I saw this comment:

   The NEx000 doesn't share the on-board packet memory -- you have to put
   the packet out through the "remote DMA" dataport using outb.

So, I think again that you should probably just use PIO.

If Parallels wants better performance, then they should emulate a more 
modern NIC device. :-)

    -- Garrett

>     -- Garrett
>
>   
>>> Steve
>>> _______________________________________________
>>> driver-discuss mailing list
>>> [email protected]
>>> http://mail.opensolaris.org/mailman/listinfo/driver-discuss
>>>     
>>>       
>> I should mention that I changed the alignment to 256 from 32768 with the
>> same results (bad conversion from 32-bit).
>>
>>   
>>     
>
> _______________________________________________
> driver-discuss mailing list
> [email protected]
> http://mail.opensolaris.org/mailman/listinfo/driver-discuss
>   

_______________________________________________
driver-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/driver-discuss

Reply via email to